axidio-styleguide-library1-v2 0.5.50 → 0.5.51

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"axidio-styleguide-library1-v2.mjs","sources":["../../../projects/axidio-styleguide-library/src/lib/axidio-styleguide-library.service.ts","../../../projects/axidio-styleguide-library/src/lib/axidio-styleguide-library.component.ts","../../../projects/axidio-styleguide-library/src/lib/unique-id.ts","../../../projects/axidio-styleguide-library/src/lib/chart-helper.ts","../../../projects/axidio-styleguide-library/src/lib/header-config.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header/chart-header.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header/chart-header.component.html","../../../projects/axidio-styleguide-library/src/lib/area-chart/area-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/area-chart/area-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/pie-chart/pie-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/pie-chart/pie-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-stacked-chart/horizontal-stacked-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-stacked-chart/horizontal-stacked-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-bar-chart/horizontal-bar-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-bar-chart/horizontal-bar-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/line-chart/line-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/line-chart/line-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/donut-chart/donut-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/donut-chart/donut-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/vertical-stacked-chart/vertical-stacked-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/vertical-stacked-chart/vertical-stacked-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/multi-ring-chart/multi-ring-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/multi-ring-chart/multi-ring-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-header-v1/chart-header-v1.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header-v1/chart-header-v1.component.html","../../../projects/axidio-styleguide-library/src/lib/header-alt/header-alt.component.ts","../../../projects/axidio-styleguide-library/src/lib/header-alt/header-alt.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-header-v2/chart-header-v2.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header-v2/chart-header-v2.component.html","../../../projects/axidio-styleguide-library/src/lib/guage-chart/guage-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/guage-chart/guage-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-header-v3/chart-header-v3.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header-v3/chart-header-v3.component.html","../../../projects/axidio-styleguide-library/src/lib/group-chart/group-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/group-chart/group-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/ax-table/ax-table.component.ts","../../../projects/axidio-styleguide-library/src/lib/ax-table/ax-table.component.html","../../../projects/axidio-styleguide-library/src/lib/waterfall-chart/waterfall-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/waterfall-chart/waterfall-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/sunburst-chart/sunburst-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/sunburst-chart/sunburst-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/progress-bar/progress-bar.component.ts","../../../projects/axidio-styleguide-library/src/lib/progress-bar/progress-bar.component.html","../../../projects/axidio-styleguide-library/src/lib/radar-chart/radar-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/radar-chart/radar-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/line-chart-card/line-chart-card.component.ts","../../../projects/axidio-styleguide-library/src/lib/line-chart-card/line-chart-card.component.html","../../../projects/axidio-styleguide-library/src/lib/multiple-line-chart/multiple-line-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/multiple-line-chart/multiple-line-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/suggestions/suggestions.component.ts","../../../projects/axidio-styleguide-library/src/lib/suggestions/suggestions.component.html","../../../projects/axidio-styleguide-library/src/lib/table-chart/table-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/table-chart/table-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/multiple-progressbar/multiple-progressbar.component.ts","../../../projects/axidio-styleguide-library/src/lib/multiple-progressbar/multiple-progressbar.component.html","../../../projects/axidio-styleguide-library/src/lib/multichart-footer/multichart-footer.component.ts","../../../projects/axidio-styleguide-library/src/lib/multichart-footer/multichart-footer.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-alert-header/chart-alert-header.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-alert-header/chart-alert-header.component.html","../../../projects/axidio-styleguide-library/src/lib/dropdown/dropdown.component.ts","../../../projects/axidio-styleguide-library/src/lib/dropdown/dropdown.component.html","../../../projects/axidio-styleguide-library/src/lib/plain-trend/plain-trend.component.ts","../../../projects/axidio-styleguide-library/src/lib/plain-trend/plain-trend.component.html","../../../projects/axidio-styleguide-library/src/lib/axidio-styleguide-library.module.ts","../../../projects/axidio-styleguide-library/src/public-api.ts","../../../projects/axidio-styleguide-library/src/axidio-styleguide-library1-v2.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AxidioStyleguideLibraryService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-axidio-styleguide-library',\r\n template: `\r\n <p>\r\n axidio-styleguide-library works!\r\n </p>\r\n `,\r\n styles: []\r\n})\r\nexport class AxidioStyleguideLibraryComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class ComponentUniqueId {\r\n protected getUniqueId(id: number | string = _.uniqueId()): string {\r\n return _.lowerFirst(this.constructor.name) + \"_\" + id;\r\n }\r\n}\r\n","// @dynamic\r\nimport * as d3 from \"d3\";\r\n\r\nexport default class ChartHelper {\r\n static getValueByConfigurationType(\r\n configType: any,\r\n defaultConfig: any,\r\n customConfig: any\r\n ) {\r\n if (customConfig && (customConfig[configType] || customConfig[configType] == \"\")) {\r\n return customConfig[configType];\r\n } else {\r\n return defaultConfig[configType];\r\n }\r\n }\r\n\r\n static getMaxValue(data: any[]) {\r\n const result = data.reduce(\r\n (max, d) => (d.value > max ? d.value : max),\r\n data[0].value\r\n );\r\n return result;\r\n }\r\n\r\n static getMinValue(data: any[]) {\r\n const result = data.reduce(\r\n (min, d) => (d.value < min ? d.value : min),\r\n data[0].value\r\n );\r\n return result;\r\n }\r\n\r\n static responsivefy(svg: any) {\r\n // container will be the DOM element\r\n // that the svg is appended to\r\n // we then measure the container\r\n // and find its aspect ratio\r\n const container = d3.select(svg.node().parentNode),\r\n width = parseInt(svg.style(\"width\"), 10),\r\n height = parseInt(svg.style(\"height\"), 10),\r\n aspect = width / height;\r\n\r\n // set viewBox attribute to the initial size\r\n // control scaling with preserveAspectRatio\r\n // resize svg on inital page load\r\n svg\r\n .attr(\"viewBox\", `0 0 ${width} ${height}`)\r\n .attr(\"preserveAspectRatio\", \"xMinYMid\")\r\n .call(resize);\r\n\r\n // add a listener so the chart will be resized\r\n // when the window resizes\r\n // multiple listeners for the same event type\r\n // requires a namespace, i.e., 'click.foo'\r\n // api docs: https://goo.gl/F3ZCFr\r\n d3.select(window).on(\"resize.\" + container.attr(\"id\"), resize);\r\n\r\n // this is the code that resizes the chart\r\n // it will be called on load\r\n // and in response to window resizes\r\n // gets the width of the container\r\n // and resizes the svg to fill it\r\n // while maintaining a consistent aspect ratio\r\n function resize() {\r\n const w = parseInt(container.style(\"width\"));\r\n svg.attr(\"width\", w);\r\n svg.attr(\"height\", Math.round(w / aspect));\r\n }\r\n }\r\n\r\n static defaultFormatter(text: any) {\r\n return text;\r\n }\r\n\r\n static onmouseoverHandler(d: any) {\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n var div = d3\r\n .select(\"body\")\r\n .append(\"div\")\r\n .attr(\"class\", \"axidio-tooltip\")\r\n .style(\"opacity\", 0);\r\n\r\n div\r\n .transition()\r\n .duration(200)\r\n .style(\"opacity\", 0.9);\r\n div\r\n .html(this.constructTooltip(d.toolTipData))\r\n .style(\"left\", d3.event.pageX + \"px\")\r\n .style(\"top\", d3.event.pageY - 28 + \"px\");\r\n }\r\n\r\n static onmouseoutHandler() {\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n }\r\n\r\n static constructTooltip(d: any) {\r\n var htmlString = \"\";\r\n if (d && d.data) {\r\n let dataSet = d.data;\r\n for (var i in dataSet) {\r\n var newString = \"\";\r\n newString =\r\n \"<div class='tooltip-data'>\" + i + \":\" + dataSet[i] + \"</div>\";\r\n htmlString += newString;\r\n }\r\n }\r\n return htmlString;\r\n }\r\n static getColumnValue(count: number) {\r\n switch (count) {\r\n case 1: return { child: \"col-6\", parent: \"col-6\" };\r\n case 2: return { child: \"col-4\", parent: \"col-4\" };\r\n case 3: return { child: \"col-3\", parent: \"col-3\" };\r\n case 4: return { child: \"col-2\", parent: \"col-4\" };\r\n case 5: return { child: \"col-2\", parent: \"col-2\" };\r\n default: return { child: \"col-2\", parent: \"col-2\" }\r\n }\r\n }\r\n static dataValueFormatter(format:string){\r\n return d3.format(format);\r\n }\r\n}\r\n","export default class HeaderConfigHelper {\r\n static headerConfig = {\r\n headerMenuOptions: [\r\n { name: \"Instant Collaboration\", id: \"instantCollab\" },\r\n // { name: \"Email\", id: \"email\" },\r\n { name: \"Set Alert\", id: \"setAlert\" }\r\n ]\r\n };\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n ElementRef,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\n@Component({\r\n selector: 'lib-chart-header',\r\n templateUrl: './chart-header.component.html',\r\n styleUrls: ['./chart-header.component.less'],\r\n})\r\nexport class ChartHeaderComponent implements OnInit {\r\n @Input() title: string = '';\r\n @Input() menuOptions: any;\r\n @Input()\r\n hasDrillDown: boolean = false;\r\n @ViewChild('menu', { read: ElementRef, static: false })\r\n eRef!: ElementRef;\r\n @Output() menuOptionClickEvent = new EventEmitter<any>();\r\n\r\n @Input() weightage: any;\r\n @Input() customChartConfiguration: any;\r\n chartConfiguration: any = {};\r\n\r\n resetBackgroundColor: boolean = false;\r\n changedBackgroundColor: any = '#052340';\r\n flagForMultiChart: boolean = false;\r\n\r\n hideTooltip: boolean = true;\r\n showIcon: boolean = false;\r\n increasePadding: boolean = false;\r\n defaultConfiguration: any = {\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: '#052340',\r\n showIcon: false,\r\n };\r\n @Input() isFromMultiProgressBar: any;\r\n constructor() {}\r\n\r\n @HostListener('document:click', ['$event'])\r\n clickout() {\r\n console.log('clickout');\r\n // !this.eRef.nativeElement.contains(event.target)\r\n if (!this.hideTooltip) {\r\n this.hideTooltip = true;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.customChartConfiguration) {\r\n this.initialise();\r\n }\r\n }\r\n initialise() {\r\n for (var j in this.defaultConfiguration) {\r\n this.chartConfiguration[j] = ChartHelper.getValueByConfigurationType(\r\n j,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.resetBackgroundColor = this.chartConfiguration.resetBackgroundColor;\r\n this.flagForMultiChart = this.chartConfiguration.flagForMultiChart;\r\n this.changedBackgroundColor = this.chartConfiguration.backgroundColor;\r\n this.showIcon = this.chartConfiguration.showIcon;\r\n }\r\n showTooltip(event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n }\r\n\r\n handleMenuOptionClick(id, event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n this.menuOptionClickEvent.emit(id);\r\n }\r\n}\r\n","<div class=\"chart-header-wrapper\" [ngClass]=\"{ hasDrillDown: hasDrillDown }\">\r\n <i *ngIf=\"hasDrillDown\" class=\"fa fa-paperclip paperclip\"></i>\r\n <div\r\n [ngClass]=\"{\r\n 'chart-header': !resetBackgroundColor,\r\n paddings: !isFromMultiProgressBar,\r\n paddings__lesser: isFromMultiProgressBar,\r\n 'chart-header-wo-bc-color': resetBackgroundColor\r\n }\"\r\n [style.background-color]=\"changedBackgroundColor\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div\r\n class=\"center chart-title\"\r\n [ngClass]=\"\r\n isFromMultiProgressBar ? 'chart-title-multiprogressbar' : ''\r\n \"\r\n >\r\n <!-- <div class=\"inline-block\" *ngIf=\"showIcon\">\r\n <>\r\n </div> -->\r\n <!-- <div class=\"inline-block\"> -->\r\n <span *ngIf=\"showIcon\"\r\n ><img class=\"img-fluid img-styling\" src=\"/assets/ria_logo.png\"\r\n /></span>\r\n <span class=\"\" [ngClass]=\"{ 'padding-right-6': showIcon }\">\r\n {{ title }}\r\n </span>\r\n <!-- </div> -->\r\n\r\n <span\r\n #menu\r\n *ngIf=\"menuOptions && !isFromMultiProgressBar\"\r\n (click)=\"showTooltip($event)\"\r\n class=\"header-menu\"\r\n >\r\n <span\r\n *ngIf=\"!flagForMultiChart\"\r\n [ngClass]=\"{ 'hide-tooltip': resetBackgroundColor }\"\r\n >&#8942;</span\r\n >\r\n <span *ngIf=\"flagForMultiChart\" class=\"font-size\">&#x2b;</span>\r\n </span>\r\n </div>\r\n <!--down class=\"float-right\" -->\r\n <!-- <div> -->\r\n\r\n <!-- </div> -->\r\n </div>\r\n </div>\r\n <div class=\"row margin-top\" *ngIf=\"weightage\">\r\n <div class=\"col-12 weightage-styling\">\r\n [{{ weightage.name }} {{ weightage.value }}]\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [ngClass]=\"{\r\n 'chart-tooltip tip-head': !flagForMultiChart,\r\n 'chart-tooltip-multichart tip-head-multichart': flagForMultiChart,\r\n 'hide-tooltip': hideTooltip\r\n }\"\r\n >\r\n <div *ngFor=\"let menu of menuOptions\">\r\n <div\r\n class=\"border-bottom\"\r\n (click)=\"handleMenuOptionClick(menu.id, $event)\"\r\n >\r\n <div class=\"row margin-reset\">\r\n <div *ngIf=\"!menu.performance\" class=\"col-12\">\r\n {{ menu.name }}\r\n </div>\r\n <div *ngIf=\"menu.performance\" class=\"col-6 border-right-style\">\r\n {{ menu.name }}\r\n </div>\r\n <div *ngIf=\"menu.performance\" class=\"col-6\">\r\n {{ menu.performance }} ({{ menu.progress }})\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport * as d3 from 'd3';\r\nimport ChartHelper from '../chart-helper';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'app-area-chart',\r\n templateUrl: './area-chart.component.html',\r\n styleUrls: ['./area-chart.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AreaChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild('areachartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('areacontainer', { static: true })\r\n areacontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n color: 'green',\r\n margin: { top: 20, right: 10, bottom: 40, left: 50 },\r\n svgHeight: 90,\r\n yAxisLabelFontSize: '.9em',\r\n xAxisLabelFontSize: '.9em',\r\n numberOfYTicks: 5,\r\n numberOfXTicks: 5,\r\n yAxisCustomlabelStyles: '',\r\n xAxisCustomlabelStyles: '',\r\n yAxisCustomTextStyles: '',\r\n xAxisCustomTextStyles: '',\r\n labelFontSize: '.9em',\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n d3.selectAll('.axidio-tooltip').remove();\r\n this.initializeAreaChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n d3.selectAll('.axidio-tooltip').remove();\r\n this.initializeAreaChart();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n initializeAreaChart() {\r\n var self = this;\r\n let data = [];\r\n let metaData: any = null;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var areacontainer = d3.select(this.areacontainerElt.nativeElement);\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n var height =\r\n parseInt(areacontainer.style('height')) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append('svg')\r\n .attr('id', self.uniqueId)\r\n .attr('width', width + margin.left + margin.right)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\r\n\r\n var x = d3\r\n .scaleBand()\r\n .rangeRound([0, width])\r\n .domain(\r\n data.map(function (d: any) {\r\n return d.name;\r\n })\r\n );\r\n\r\n var div = d3\r\n .select('body')\r\n .append('div')\r\n .attr('class', 'axidio-tooltip')\r\n .style('opacity', 0);\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'axis area-axis--x')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n // .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n )\r\n .call(g => g.select('.domain').remove())\r\n .selectAll(\"text\")\r\n .attr('y', function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n });\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .rangeRound([height, 0])\r\n .domain([\r\n 0,\r\n d3.max(data, function (d) {\r\n return d.value;\r\n })\r\n ]);\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'axis area-axis--y')\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n );\r\n\r\n svg\r\n .append('path')\r\n .datum(data)\r\n .attr('fill', self.chartConfiguration.color)\r\n .attr('fill-opacity', 0.3)\r\n .attr('stroke', 'none')\r\n .attr(\r\n 'd',\r\n d3\r\n .area()\r\n .x(function (d) {\r\n return x(d.name) + x.bandwidth() / 2;\r\n })\r\n .y0(height)\r\n .y1(function (d) {\r\n return y(d.value);\r\n })\r\n );\r\n\r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(data)\r\n .enter()\r\n .append('g');\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', 'red')\r\n .attr('stroke', 'none')\r\n .attr('cx', function (d) {\r\n return x(d.name) + x.bandwidth() / 2;\r\n })\r\n .attr('cy', function (d) {\r\n return y(d.value);\r\n })\r\n .attr('r', 3)/**0 changed to 3 */\r\n // .on('mouseover', d => {\r\n // div\r\n // .transition()\r\n // .duration(200)\r\n // .style('opacity', 0.9);\r\n // div\r\n // .html(self.constructTooltip(d))\r\n // .style('left', d3.event.pageX + 'px')\r\n // .style('top', d3.event.pageY - 28 + 'px');\r\n // })\r\n // .on('mouseout', () => {\r\n // div\r\n // .transition()\r\n // .duration(500)\r\n // .style('opacity', 0);\r\n // })\r\n .style(\"cursor\", \"pointer\")\r\n .append(\"svg:title\") // TITLE APPENDED HERE\r\n .text(function (d) {\r\n console.log(\"my log\", d)\r\n return (d.value);\r\n });;\r\n //following was uncommented\r\n // dot\r\n // .append('text')\r\n // .attr('class', 'dot')\r\n // .attr('color', self.chartConfiguration.labelColor)\r\n // .attr('font-size', self.chartConfiguration.labelFontSize)\r\n // .attr('x', function(d, i) {\r\n // return x(d.name) + x.bandwidth() / 2;\r\n // })\r\n // .attr('y', function(d) {\r\n // return y(d.value);\r\n // })\r\n // .attr('dy', '-.5em')\r\n // .text(function(d) {\r\n // return self.chartConfiguration.labelFormatter(d.value);\r\n // //return d.value;\r\n // });\r\n \r\n svg\r\n .append('text')\r\n .attr('class', 'area-x-axis-label')\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr('transform', 'translate(' + width / 2 + ' ,' + 0 + ')')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', self.chartConfiguration.xAxisLabelFontSize)\r\n .text(metaData.xLabel);\r\n \r\n\r\n\r\n\r\n if (metaData.yLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'area-y-axis-label')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', 0 - margin.left)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', self.chartConfiguration.yAxisLabelFontSize)\r\n .text(metaData.yLabel.toLowerCase());\r\n }\r\n\r\n\r\n if (metaData.dataType) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-waterfall-label')\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + (height + margin.top + 30) + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .text(metaData.dataType);\r\n }\r\n\r\n // svg\r\n // .append(\"path\")\r\n // .datum(data)\r\n // .attr(\"fill\", \"none\")\r\n // .attr(\"stroke\", \"#69b3a2\")\r\n // .attr(\"stroke-width\", 2)\r\n // .attr(\r\n // \"d\",\r\n // d3\r\n // .line()\r\n // .x(function(d) {\r\n // return x(d.name) + x.bandwidth() / 2;\r\n // })\r\n // .y(function(d) {\r\n // return y(d.value);\r\n // })\r\n // );\r\n }\r\n\r\n constructTooltip(d: any): any {\r\n var htmlString = '';\r\n // if (d && d.data) {\r\n // let dataSet = d.data;\r\n // for (var i in dataSet) {\r\n // var newString = \"\";\r\n // newString =\r\n // \"<div class='tooltip-data'>\" + i + \":\" + dataSet[i] + \"</div>\";\r\n // htmlString += newString;\r\n // }\r\n // }\r\n return htmlString;\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #areacontainer \r\n class=\"lib-chart-wrapper\"\r\n (resized)=\"onResized($event)\">\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"areachartcontainer\"\r\n #areachartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ElementRef,\r\n ViewChild,\r\n Input,Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: \"app-pie-chart\",\r\n templateUrl: \"./pie-chart.component.html\",\r\n styleUrls: [\"./pie-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class PieChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild(\"piechartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"piecontainer\", { static: true })\r\n piecontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 20 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n legendJustified: true,\r\n svgHeight: 90,\r\n hasLabel2: true,\r\n hasLabel1: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeDonutChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeDonutChart() {\r\n var self = this;\r\n let rawData :any= null;\r\n let data = {};\r\n let metaData :any= null;\r\n let colorMap = {};\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n rawData = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n colorMap = metaData.colors;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var piecontainer = d3.select(this.piecontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(piecontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" +\r\n (width / 2 + margin.left) +\r\n \",\" +\r\n (height / 2 + margin.top) +\r\n \")\"\r\n );\r\n\r\n rawData.map(function(unit) {\r\n data[unit.name] = unit.value;\r\n });\r\n\r\n var radius = Math.min(width, height) / 2;\r\n var pie = d3\r\n .pie()\r\n .sort(null)\r\n .value(function(d) {\r\n return d.value;\r\n });\r\n var data_ready = pie(d3.entries(data));\r\n\r\n var arc = d3\r\n .arc()\r\n .innerRadius(0)\r\n .outerRadius(radius * 0.75);\r\n\r\n var outerArc = d3\r\n .arc()\r\n .innerRadius(radius * 0.95)\r\n .outerRadius(radius * 0.95);\r\n\r\n var innerArc = d3\r\n .arc()\r\n .innerRadius(radius * 0.5)\r\n .outerRadius(radius * 0.5);\r\n\r\n svg\r\n .selectAll(\"allSlices\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", arc)\r\n .attr(\"fill\", function(d) {\r\n return metaData.colorMap[d.data.key];\r\n });\r\n\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .style(\"font-color\", \"white\")\r\n .style(\"font-size\", \".7em\")\r\n .text(function(d) {\r\n return self.chartConfiguration.labelFormatter(d.data.value);\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = innerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n });\r\n\r\n if (self.chartConfiguration.hasLabel1) {\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .text(function(d) {\r\n return metaData.labelMap[d.data.key].label1;\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"start\" : \"end\";\r\n })\r\n .attr(\"dx\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"6px\" : \"-6px\";\r\n });\r\n\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"circle\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .attr(\"r\", 3)\r\n .attr(\"cy\", \"-4px\")\r\n .attr(\"fill\", function(d) {\r\n var key = metaData.labelMap[d.data.key].label1;\r\n return metaData.colorMap[key];\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n });\r\n }\r\n\r\n if (self.chartConfiguration.hasLabel2) {\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .attr(\"dy\", \"15px\")\r\n .text(function(d) {\r\n return metaData.labelMap[d.data.key].label2;\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"start\" : \"end\";\r\n })\r\n .attr(\"dx\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"6px\" : \"-6px\";\r\n });\r\n }\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #piecontainer class=\"lib-chart-wrapper\">\r\n <!-- <div class=\"lib-chart-header\">{{ chartData.metaData.title }}</div> -->\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"piechartcontainer\"\r\n #piechartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, ViewChild, ElementRef, Input } from \"@angular/core\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport * as d3 from \"d3\";\r\nimport ChartHelper from \"../chart-helper\";\r\n\r\n@Component({\r\n selector: \"lib-horizontal-stacked-chart\",\r\n templateUrl: \"./horizontal-stacked-chart.component.html\",\r\n styleUrls: [\"./horizontal-stacked-chart.component.less\", \"../common-styles.less\"]\r\n})\r\nexport class HorizontalStackedChartComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"stackedcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n colorRange: [\"#98abc5\", \"#8a89a6\", \"#7b6888\"],\r\n margin: { top: 20, right: 20, bottom: 30, left: 70 }\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeStackedChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeStackedChart() {\r\n var self = this;\r\n let data :any= [];\r\n let metaData:any = null;\r\n let keyList = null;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n keyList = metaData.keyList;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(chartContainer.style(\"height\")) - margin.top - margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n let stackKey = keyList;\r\n let xScale = d3.scaleLinear().rangeRound([0, width]);\r\n var yScale = d3\r\n .scaleBand()\r\n .rangeRound([height, 0])\r\n .padding(0.1);\r\n let color = d3.scaleOrdinal().range(self.chartConfiguration.colorRange);\r\n let xAxis = d3.axisBottom(xScale).tickSize(0);\r\n let yAxis = d3.axisLeft(yScale).tickSize(0);\r\n\r\n var stack = d3\r\n .stack()\r\n .keys(stackKey)\r\n /*.order(d3.stackOrder)*/\r\n .offset(d3.stackOffsetNone);\r\n\r\n var layers = stack(data);\r\n data.sort(function(a, b) {\r\n return b.total - a.total;\r\n });\r\n yScale.domain(\r\n data.map(function(d) {\r\n return d.name;\r\n })\r\n );\r\n\r\n xScale.domain([0, d3.max(layers, d => d3.max(d, d => d[1]))]).nice();\r\n\r\n var layer = svg\r\n .selectAll(\".layer\")\r\n .data(layers)\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"layer\")\r\n .style(\"fill\", function(d, i) {\r\n return metaData.colors[d.key];\r\n });\r\n\r\n layer\r\n .selectAll(\"rect\")\r\n .data(function(d) {\r\n return d;\r\n })\r\n .enter()\r\n .append(\"rect\")\r\n .attr(\"y\", function(d) {\r\n return yScale(d.data.name);\r\n })\r\n .attr(\"x\", function(d) {\r\n return xScale(d[0]);\r\n })\r\n .attr(\"height\", yScale.bandwidth())\r\n .attr(\"width\", function(d) {\r\n return xScale(d[1]) - xScale(d[0]);\r\n });\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--x\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(xAxis)\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--y\")\r\n .attr(\"transform\", \"translate(0,0)\")\r\n .call(yAxis)\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"y-axis-label\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.yLabel);\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"x-axis-label\")\r\n .attr(\"transform\", \"translate(\" + width / 2 + \" ,\" + 0 + \")\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.xLabel);\r\n }\r\n}\r\n","<div id=\"stackedcontainer\" #stackedcontainer></div>","import { Component, OnInit, ViewChild, ElementRef, Input } from \"@angular/core\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport * as d3 from \"d3\";\r\nimport ChartHelper from \"../chart-helper\";\r\n\r\n@Component({\r\n selector: \"lib-horizontal-bar-chart\",\r\n templateUrl: \"./horizontal-bar-chart.component.html\",\r\n styleUrls: [\"./horizontal-bar-chart.component.less\"]\r\n})\r\nexport class HorizontalBarChartComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"horizontalbarchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n color: \"yellow\",\r\n margin: { top: 20, right: 50, bottom: 30, left: 130 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeHorizontalBArchartChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeHorizontalBArchartChart() {\r\n var self = this;\r\n let data:any = [];\r\n let metaData :any= null;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(chartContainer.style(\"height\")) - margin.top - margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n var y = d3\r\n .scaleBand()\r\n .rangeRound([height, 0])\r\n .padding(0.1)\r\n .domain(\r\n data.map(function(d) {\r\n return d.name;\r\n })\r\n );\r\n\r\n var x = d3\r\n .scaleLinear()\r\n .range([0, width])\r\n .domain([\r\n 0,\r\n d3.max(data, function(d) {\r\n return d.value;\r\n })\r\n ])\r\n .nice();\r\n\r\n var yAxis = d3\r\n .axisLeft()\r\n .scale(y)\r\n .tickSize(0);\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--y\")\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n )\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--x\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n )\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n var div = d3\r\n .select(\"body\")\r\n .append(\"div\")\r\n .attr(\"class\", \"axidio-tooltip\")\r\n .style(\"opacity\", 0);\r\n\r\n var bars = svg\r\n .selectAll(\".bar\")\r\n .data(data)\r\n .enter()\r\n .append(\"g\");\r\n\r\n bars\r\n .append(\"rect\")\r\n .attr(\"class\", \"bar\")\r\n .attr(\"y\", function(d) {\r\n return y(d.name);\r\n })\r\n .attr(\"height\", function() {\r\n return y.bandwidth();\r\n })\r\n .attr(\"x\", 0)\r\n .attr(\"width\", function(d) {\r\n return x(d.value);\r\n })\r\n .attr(\"fill\", self.chartConfiguration.color);\r\n\r\n bars\r\n .append(\"text\")\r\n .attr(\"class\", \"label\")\r\n .attr(\"y\", function(d) {\r\n return y(d.name) + y.bandwidth() / 2;\r\n })\r\n .attr(\"x\", function(d) {\r\n return x(d.value) + 3;\r\n })\r\n .style(\"font-size\", width * 0.0015 + \"em\")\r\n .text(function(d) {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n });\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"y-axis-label\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.yLabel);\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"x-axis-label\")\r\n .attr(\"transform\", \"translate(\" + width / 2 + \" ,\" + 0 + \")\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.xLabel);\r\n }\r\n}\r\n","<div id=\"horizontalbarchartcontainer\" #horizontalbarchartcontainer></div>","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport { ResizedEvent } from \"angular-resize-event\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\nimport * as ss from 'simple-statistics'\r\n\r\n@Component({\r\n selector: \"lib-line-chart\",\r\n templateUrl: \"./line-chart.component.html\",\r\n styleUrls: [\"./line-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class LineChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild(\"linechartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"linecontainer\", { static: true })\r\n linecontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n categoryStatus: boolean = false;\r\n uniqueId: any = this.getUniqueId();\r\n isHeaderVisible: boolean = true;\r\n isTransparentBackground: boolean = false;\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 50, bottom: 0, left: 50 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFontSize: \".7em\",\r\n numberOfYTicks: 5,\r\n yAxisCustomlabelStyles: \"\",\r\n yAxisCustomTextStyles: \"\",\r\n xAxisCustomTextStyles: \"\",\r\n svgHeight: 80,\r\n legendHeight: \"10%\",\r\n xAxisGrid: true,\r\n yAxisGrid: true,\r\n showXaxis: true,\r\n showYaxis: true,\r\n showValues: true,\r\n showLabel: false,\r\n showXaxisTop: false,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n hideLegendOnTop: undefined,\r\n isFullScreen: undefined,\r\n isMultiChartGridLine: undefined,\r\n customYscale: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: undefined,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n isXaxisColor: undefined,\r\n textFormatter: undefined,\r\n labelOverlapMinorFix: undefined,\r\n noHoverEffect: undefined,\r\n isXgridBetweenLabels: undefined,\r\n noHoverDisplayData: undefined,\r\n isLinearLineVisible:undefined,\r\n ticksBetweenLabels:undefined,\r\n isSingledWeeklyChart:undefined\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeLineChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeLineChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeLineChart() {\r\n var self = this;\r\n let data: any = [];\r\n let metaData: any = null;\r\n let colorMap = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n /**\r\n * longer tick length needed for weekly charts\r\n */\r\n var short_tick_length_bg = 15;\r\n var long_tick_length_bg = 25;\r\n var formatFromBackend;\r\n var formatForHugeNumbers;\r\n var datewiseGroupedData: any = [];\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n colorMap = metaData.colorMap;\r\n var len = Object.keys(colorMap).length;\r\n if (len > 1 || this.chartConfiguration.showLabel == true) {\r\n this.categoryStatus = true;\r\n } else {\r\n this.categoryStatus = false;\r\n }\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var lineContainer = d3.select(this.linecontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(lineContainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n /**\r\n * entire height used in weekly charts as x axis needed to be displayed at the bottom of the chart\r\n */\r\n if (\r\n this.chartConfiguration.isFullScreen != undefined &&\r\n this.chartConfiguration.isFullScreen\r\n ) {\r\n height = this.chartConfiguration.svgHeight != 80 ?this.chartConfiguration.svgHeight : parseInt(lineContainer.style(\"height\"));\r\n }\r\n /**\r\n * for hiding header\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isHeaderVisible != undefined)\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n /**\r\n * for hiding legends\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.hideLegendOnTop != undefined &&\r\n this.chartConfiguration.hideLegendOnTop\r\n ) {\r\n this.categoryStatus = false;\r\n }\r\n /**\r\n * for removing background color so that it can take parents color\r\n *\r\n */\r\n if (this.chartConfiguration.isTransparentBackground != undefined) {\r\n this.isTransparentBackground =\r\n this.chartConfiguration.isTransparentBackground;\r\n }\r\n /**\r\n * format data values based on configuration received\r\n */\r\n if (this.chartConfiguration.textFormatter != undefined) {\r\n formatFromBackend = ChartHelper.dataValueFormatter(\r\n this.chartConfiguration.textFormatter\r\n );\r\n formatForHugeNumbers = ChartHelper.dataValueFormatter(\".2s\");\r\n }\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n var sumstat = d3\r\n .nest() // nest function allows to group the calculation per level of a factor\r\n .key(function (d) {\r\n return d.category;\r\n })\r\n .entries(data);\r\n\r\n // Add X axis --> it is a date format\r\n var x = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name.toLowerCase();\r\n })\r\n );\r\n /**\r\n * xScale for weekly charts does not need padding as this padding affects spacing between the dot and y axis\r\n */\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n x.padding(0.5);\r\n } else {\r\n x.align(0.5);\r\n }\r\n /**\r\n * based on the following flag, x axis visibility is selected\r\n */\r\n if (self.chartConfiguration.showXaxis) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-x-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n );\r\n /**\r\n * used by weekly charts\r\n */\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg.selectAll(\".lib-line-x-axis-text\").attr(\"class\", \"x-axis\");\r\n }\r\n }\r\n /**\r\n * draw second x axis on top\r\n */\r\n if (self.chartConfiguration.showXaxisTop) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"transform\", \"\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-x-axis-text x-axis\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n );\r\n }\r\n if(self.chartConfiguration.ticksBetweenLabels){\r\n svg\r\n .selectAll(\".lib-line-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSizeOuter(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n \r\n )\r\n .call(g => g.select('.domain'))\r\n .selectAll(\"text\")\r\n .attr(\"class\",\"lib-xaxis-labels-texts-weeklycharts\")\r\n .attr('y', function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length_bg;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg;\r\n }\r\n \r\n });\r\n\r\n /**\r\n * tick line size in alternate fashion\r\n */\r\n svg.selectAll(\".lib-line-axis-text > .tick > line\").attr(\"y2\", function () {\r\n if (\r\n alternate_text &&\r\n self.chartConfiguration.isNoAlternateXaxisText == undefined\r\n ) {\r\n alternate_text = false;\r\n return long_tick_length_bg - 7;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg - 4;\r\n }\r\n });\r\n }\r\n\r\n // Add Y axis\r\n var y = d3.scaleLinear().range([height, 0]);\r\n /**\r\n * update max vakues so that the vakue wont exceed the max limit\r\n * used by weekly charts\r\n */\r\n var maxValue = d3.max(data, function (d) {\r\n return d.value;\r\n });\r\n if(maxValue == 0){\r\n maxValue = 100;\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue* this.chartConfiguration.customYscale;\r\n } \r\n y.domain([\r\n 0,\r\n maxValue,\r\n ]).nice();\r\n /**\r\n * get y-axis tick values\r\n * used by weekly charts\r\n */\r\n var finalTickList = y.ticks().filter(function (v, i) {\r\n // check the index is even\r\n return i % 2 == 0;\r\n });\r\n /**\r\n * following logic check if two data values of same group present in same grid or not\r\n * if present inside same grid, change y values\r\n * else leave as it is\r\n */\r\n if (self.chartConfiguration.labelOverlapMinorFix != undefined) {\r\n if (data && data.length) {\r\n let temp = JSON.parse(JSON.stringify(data));\r\n /*\r\n * group all the elements by date\r\n */\r\n datewiseGroupedData = temp.reduce((group, category) => {\r\n const { name } = category;\r\n group[name] = group[name] || [];\r\n group[name].push(category);\r\n return group;\r\n }, {});\r\n /**\r\n * sort child array based on values: descending order\r\n */\r\n for (var key in datewiseGroupedData) {\r\n datewiseGroupedData[key].sort((a, b) => (a.value > b.value ? 1 : -1));\r\n }\r\n const keys = Object.keys(datewiseGroupedData);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n /**\r\n * get child array of the group\r\n */\r\n var tempChildArray = datewiseGroupedData[key];\r\n var tempRangeHolder: any = {};\r\n /**\r\n * for all child element in the array\r\n */\r\n for (var j = 0; j < tempChildArray.length; j++) {\r\n /**\r\n * iterate over the ticklist array\r\n */\r\n for (var k = 0; k < finalTickList.length; k++) {\r\n /**\r\n * when ticklist value greater than specific array element value\r\n * => we got the required range\r\n */\r\n if (finalTickList[k] > tempChildArray[j].value) {\r\n /**\r\n * if rangeholder doesnt contain that range\r\n */\r\n tempRangeHolder[finalTickList[k]] = tempRangeHolder[\r\n finalTickList[k]\r\n ]\r\n ? tempRangeHolder[finalTickList[k]] + 0.9\r\n : 0.9;\r\n tempChildArray[j].desiredPosition =\r\n tempRangeHolder[finalTickList[k]] + \"em\";\r\n break;\r\n }\r\n }\r\n }\r\n tempRangeHolder = {};\r\n }\r\n }\r\n }\r\n /**\r\n * style guide has two types of grids=>\r\n * 1) center to x-axis label used by dashboard charts\r\n * 2) between x-axis label used by weekly charts\r\n * isXgridBetweenLabels will be undefined for dashboard charts\r\n */\r\n if (self.chartConfiguration.xAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(d3.axisBottom(x).ticks(3).tickSize(-height).tickFormat(\"\"))\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .call((g) => g.select(\".domain\").remove());\r\n }\r\n if (self.chartConfiguration.isXgridBetweenLabels) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + x.bandwidth() / 2 + \",\" + height + \")\"\r\n )\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n // .ticks(3)\r\n .tickSize(-height)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .call((g) => g.select(\".domain\").remove());\r\n }\r\n /**\r\n * draw y axis grid\r\n */\r\n if (self.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .call((g) => g.select(\".domain\").remove());\r\n }\r\n /**\r\n * draw y axis\r\n */\r\n if (self.chartConfiguration.showYaxis) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-y-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n );\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll(\".lib-line-y-axis-text\")\r\n .attr(\"class\", \"yaxis-dashed y-axis\");\r\n }\r\n //need to be refactored\r\n d3.selectAll(\"g.lib-line-x-axis-text g.tick text\").attr(\"y\", function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n });\r\n }\r\n /**\r\n * hide x axis labels\r\n * config is there for future use\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isXaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isXaxisLabelHidden\r\n ) {\r\n d3.selectAll(\".x-axis > g > text\").attr(\"class\", \"lib-display-hidden\");\r\n }\r\n /**\r\n * hide y axis labels\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isYaxisLabelHidden\r\n ) {\r\n d3.selectAll(\".y-axis > g > text\").attr(\"class\", \"lib-display-hidden\");\r\n }\r\n /**\r\n * hide y axis labels\r\n * config is there for future use\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisHidden != undefined &&\r\n this.chartConfiguration.isYaxisHidden\r\n ) {\r\n d3.selectAll(\".y-axis\").attr(\"class\", \"lib-display-hidden\");\r\n }\r\n /**\r\n * dashed y axis\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisDashed != undefined &&\r\n this.chartConfiguration.isYaxisDashed\r\n ) {\r\n d3.selectAll(\".yaxis-dashed\")\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\");\r\n }\r\n /**\r\n * x axis color\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isXaxisColor != undefined) {\r\n d3.selectAll(\".x-axis\").style(\r\n \"color\",\r\n this.chartConfiguration.isXaxisColor\r\n );\r\n }\r\n // Draw the line\r\n svg\r\n .selectAll(\".line\")\r\n .data(sumstat)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", function (d) {\r\n return colorMap[d.key];\r\n })\r\n .attr(\"stroke-width\", 1.5)\r\n .attr(\"d\", function (d) {\r\n return d3\r\n .line()\r\n .x(function (d) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n })\r\n .y(function (d) {\r\n return d.value != undefined? y(d.value):\"0\";\r\n })(d.values);\r\n });\r\n\r\n var dot = svg\r\n .selectAll(\"myCircles\")\r\n .data(data)\r\n .enter()\r\n .append(\"g\")\r\n .on(\"click\", function (d) {\r\n self.handleClick(d);\r\n })\r\n .on(\"mouseover\", handleMouseOver)\r\n .on(\"mouseout\", handleMouseOut);\r\n\r\n dot\r\n .append(\"circle\")\r\n .attr(\"fill\", function (d) {\r\n return d.value != undefined?colorMap[d.category]:\"none\";\r\n })\r\n .attr(\"stroke\", \"rgb(0 0 255 / 0%)\")\r\n .attr(\"stroke-width\", !self.chartConfiguration.noHoverEffect?\"6%\":\"1%\")\r\n .attr(\"cx\", function (d) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n })\r\n .attr(\"cy\", function (d) {\r\n return y(d.value);\r\n })\r\n .attr(\"r\", 3)\r\n .style(\"cursor\", \"pointer\")\r\n .on(\"mouseover\", (d) => {\r\n dot\r\n .selectAll(\"circle\")\r\n .filter(function (data) {\r\n return data == d;\r\n })\r\n /**\r\n * prevent dot zoom in if the flag is set\r\n */\r\n .attr(\r\n \"r\",\r\n !self.chartConfiguration.noHoverEffect ? 5 : 3\r\n );\r\n })\r\n .on(\"mouseleave\", (d) => {\r\n dot\r\n .selectAll(\"circle\")\r\n .filter(function (data) {\r\n return data == d;\r\n })\r\n .attr(\"r\", 3);\r\n });\r\n\r\n function handleMouseOver(d, i) {\r\n if (\r\n // len > 1 &&\r\n self.chartConfiguration.noHoverDisplayData == undefined &&\r\n !self.chartConfiguration.showValues\r\n ) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n .attr(\"fill\", colorMap[d.category])\r\n .attr(\"style\", \"font-size: \" + \".75em\")\r\n .attr(\"x\", function () {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 4;\r\n })\r\n .attr(\"y\", function () {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\")\r\n .text(function () {\r\n if (self.chartConfiguration.textFormatter != undefined) {\r\n metaData.unit=metaData.unit?metaData.unit:\"\";\r\n return (\r\n (d.value <= 999 &&\r\n d.value > 0 \r\n ? formatFromBackend(d.value)\r\n : (d.value == 0? d.value : formatForHugeNumbers(d.value)))\r\n +\r\n \"\" +\r\n metaData.unit\r\n );\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n }\r\n });\r\n }\r\n }\r\n function handleMouseOut(d, i) {\r\n if (\r\n // len > 1 &&\r\n self.chartConfiguration.noHoverDisplayData == undefined &&\r\n !self.chartConfiguration.showValues\r\n ) {\r\n dot.selectAll(\".dot\").remove();\r\n }\r\n }\r\n if (self.chartConfiguration.showValues) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot lib-line-dot-text\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"fill\", function (d) {\r\n return d.value != undefined? colorMap[d.category]:\"none\";\r\n })\r\n .attr(\"x\", function (d, i) {\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n } else {\r\n /**\r\n * to display data values starting from the begining of the grid\r\n */\r\n return x(d.name.toLowerCase());\r\n }\r\n })\r\n .attr(\"y\", function (d) {\r\n return d.value != undefined? y(d.value):\"0\";\r\n })\r\n .attr(\"dy\", function (d, i) {\r\n if (self.chartConfiguration.labelOverlapMinorFix == undefined) {\r\n var lineNo = Math.trunc(i / 4);\r\n if (lineNo % 2 == 0) {\r\n return \"1em\";\r\n } else {\r\n return \"-1em\";\r\n }\r\n } else {\r\n /**\r\n * from the previously computed array, fetch the desired position\r\n */\r\n var dataArrayForThisXvalue = datewiseGroupedData[d.name];\r\n if (\r\n dataArrayForThisXvalue.length &&\r\n dataArrayForThisXvalue.length > 1\r\n ) {\r\n for (var j = 0; j < dataArrayForThisXvalue.length; j++) {\r\n if (\r\n dataArrayForThisXvalue[j].value == d.value &&\r\n dataArrayForThisXvalue[j].category == d.category\r\n ) {\r\n if(dataArrayForThisXvalue[j].desiredPosition)\r\n return \"-\" + dataArrayForThisXvalue[j].desiredPosition;\r\n }\r\n }\r\n }\r\n return \"-1em\";\r\n }\r\n })\r\n .attr(\"dx\", function (d, i) {\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined\r\n && self.chartConfiguration.labelOverlapMinorFix == undefined) {\r\n var lineNo = Math.trunc(i / 4);\r\n if (lineNo % 2 == 0) {\r\n return \"1em\";\r\n } else {\r\n return \"-1em\";\r\n }\r\n } else {\r\n return \"1em\";\r\n }\r\n })\r\n .text(function (d) {\r\n if (self.chartConfiguration.textFormatter != undefined) {\r\n metaData.unit=metaData.unit?metaData.unit:\"\";\r\n return (\r\n (d.value <= 999 &&\r\n d.value > 0 \r\n ? formatFromBackend(d.value)\r\n : (d.value == 0? d.value : formatForHugeNumbers(d.value)))\r\n +\r\n \" \" +\r\n metaData.unit\r\n );\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n }\r\n });\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll(\".lib-line-dot-text\")\r\n .attr(\"class\", \"lib-line-dot-text-weeklycharts\")\r\n .append(\"svg:title\") \r\n .attr(\"stroke\", function (d) {\r\n return colorMap[d.key];\r\n })\r\n .text(function (d) {\r\n return d.value +\" \" + metaData.unit\r\n });\r\n }\r\n }\r\n\r\n if (metaData.yLabel) {\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-y-axis-line-label lib-line-axis\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\");\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll(\".lib-y-axis-line-label\")\r\n .attr(\"class\", \"lib-ylabel-weeklyCharts\")\r\n .text(metaData.yLabel.toLowerCase());\r\n }else if(self.chartConfiguration.isSingledWeeklyChart != undefined){\r\n svg\r\n .selectAll(\".lib-y-axis-line-label\")\r\n .attr(\"class\", \"lib-ylabel-larger-weeklyCharts\")\r\n .text(metaData.yLabel.toLowerCase());\r\n } else {\r\n svg.selectAll(\".lib-y-axis-line-label\").text(metaData.yLabel);\r\n }\r\n }\r\n if(self.chartConfiguration.isLinearLineVisible){\r\n var straightLine = d3\r\n .line()\r\n .x(function (d) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n })\r\n .y(function (d) {\r\n return y(d.close);\r\n }); \r\n drawGraph(sumstat,);\r\n function drawGraph(data) {\r\n // format the data \r\n data.forEach(function (dd) {\r\n var regression ;\r\n var lineDatas:any=[];\r\n // Derive a linear regression\r\n regression = ss.linearRegression(\r\n dd.values.map(function (ds) {\r\n return [+new Date(ds.date), ds.close];\r\n })\r\n );\r\n // adding strarting and ending data in to lineDatas\r\n lineDatas.push(dd.values[0],dd.values[dd.values.length-1]);\r\n\r\n // draw the regression line\r\n svg\r\n .append(\"path\")\r\n .data([lineDatas])\r\n .attr(\"stroke\", \r\n colorMap[dd.key])\r\n .attr(\"class\", \"lib-line-regression\")\r\n .attr(\"d\", straightLine); \r\n }) \r\n } \r\n }\r\n }\r\n\r\n getCategoryValue(category: any) {\r\n let filteredResults = this.chartData.data.filter((element) => {\r\n return element.category === category && element.name === \"MID WEST\";\r\n });\r\n\r\n return new Intl.NumberFormat(\"en-GB\", {\r\n //@ts-ignore\r\n notation: \"compact\",\r\n compactDisplay: \"short\",\r\n }).format(filteredResults[0].value);\r\n }\r\n\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #linecontainer class=\"lib-chart-wrapper\"\r\n[ngClass]=\"{'lib-no-background': isTransparentBackground}\"\r\n(resized)=\"onResized($event)\">\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n *ngIf=\"isHeaderVisible\"\r\n ></lib-chart-header>\r\n <div\r\n *ngIf=\"chartData && chartData.metaData\"\r\n [style.height]=\"chartConfiguration.legendHeight\"\r\n class=\"lib-line-chart-legend-wrapper\"\r\n >\r\n <div *ngIf=\"categoryStatus\" class=\"lib-line-label-wrapper\">\r\n <div\r\n class=\"lib-line-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colorMap | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-line-legend-label-text\"\r\n [ngStyle]=\"{ border: '1px solid ' + item.value }\"\r\n [style.color]=\"item.value\"\r\n >{{ item.key }}</span\r\n > <br>\r\n <!-- <span [ngStyle]=\"{ color: item.value }\">{{ getCategoryValue(item.key) }}</span> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n \r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"linechartcontainer\"\r\n #linechartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport * as d3 from \"d3\";\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: \"lib-donut-chart\",\r\n templateUrl: \"./donut-chart.component.html\",\r\n styleUrls: [\"./donut-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DonutChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild(\"donutchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"donutcontainer\", { static: true })\r\n donutcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n isCC:any;\r\n defaultConfiguration: any = {\r\n margin: { top: 10, right: 20, bottom:10, left: 20 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n legendJustified: false,\r\n centeralign:false,\r\n footerHeight: \"34%\",\r\n svgHeight: 60,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeDonutChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeDonutChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeDonutChart() {\r\n var self = this;\r\n let rawData :any= null;\r\n let data = {};\r\n let metaData :any= null;\r\n let colorMap = {};\r\n let datatype = null;\r\n var alternate_text = false;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n rawData = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n this.isCC=this.chartData.metaData.isCC;\r\n colorMap = metaData.colors;\r\n if(metaData.dataType){\r\n datatype = metaData.dataType;\r\n }\r\n \r\n var total: number = 0;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var donutContainer = d3.select(this.donutcontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var innerRadius = 0.5;\r\n if (\r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.innerRadius != undefined &&\r\n this.customChartConfiguration.innerRadius.value != undefined\r\n ) {\r\n innerRadius = this.customChartConfiguration.innerRadius.value;\r\n }\r\n if (\r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.svgHeightUI != undefined &&\r\n this.customChartConfiguration.svgHeightUI.value != undefined\r\n ) {\r\n self.chartConfiguration.svgHeight = this.customChartConfiguration.svgHeightUI.value;\r\n }\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(donutContainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" +\r\n (width / 2 + margin.left) +\r\n \",\" +\r\n (height / 2 + margin.top) +\r\n \")\"\r\n );\r\n rawData.map(function(unit) {\r\n data[unit.name] = unit.value;\r\n });\r\n\r\n var radius = Math.min(width, height) / 2;\r\n var pie = d3\r\n .pie()\r\n .sort(null)\r\n .value(function(d) {\r\n return d.value;\r\n });\r\n var data_ready = pie(d3.entries(data));\r\n var arc = d3\r\n .arc()\r\n .innerRadius(radius * innerRadius)\r\n .outerRadius(radius * 0.8);\r\n\r\n var outerArc = d3\r\n .arc()\r\n .innerRadius(radius * 0.9)\r\n .outerRadius(radius * 0.9);\r\n\r\n svg\r\n .selectAll(\"allSlices\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"path\")\r\n .on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr(\"d\", arc)\r\n .style(\"cursor\", \"pointer\")\r\n .attr(\"id\", function(d) {\r\n return colorMap[d.data.key];\r\n })\r\n .attr(\"fill\", function(d) {\r\n return colorMap[d.data.key];\r\n });\r\n\r\n svg\r\n .selectAll(\"allPolylines\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"polyline\")\r\n .attr(\"stroke\", function(d) {\r\n return colorMap[d.data.key];\r\n })\r\n .style(\"fill\", \"none\")\r\n .attr(\"stroke-width\", 1)\r\n .attr(\"points\", function(d) {\r\n var posA = arc.centroid(d);\r\n var posB = outerArc.centroid(d);\r\n var posC = outerArc.centroid(d);\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n posC[0] = radius * 0.95 * (midangle < Math.PI ? 1 : -1);\r\n if(d.value<5){\r\n if (alternate_text) {\r\n alternate_text = false;\r\n posB[1]= posB[1] - 18;\r\n posC[1]= posC[1] - 18;\r\n } else {\r\n alternate_text = true;\r\n }\r\n }\r\n return [posA, posB, posC];\r\n });\r\n var isCC = this.isCC;\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .text(function(d) {\r\n if(isCC){\r\n console.log(\"aaa=>\",d.data);\r\n \r\n return self.chartConfiguration.labelFormatter(d.data.value)+\" Hr\";\r\n }\r\n if (datatype != \"%\" && datatype!= null) {\r\n total = 0;\r\n var len = Object.keys(data_ready).length;\r\n\r\n for (var j = 0; j < len; j++) {\r\n total += data_ready[j].data.value;\r\n }\r\n return total>0 ? self.chartConfiguration.labelFormatter(\r\n d.data.value + \"(\" + Math.round((d.data.value / total) * 100) + \"%)\"\r\n ) : self.chartConfiguration.labelFormatter(d.data.value);\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.data.value);\r\n }\r\n })\r\n // .append('text')\r\n // .text(function(d) { return \"as\"; })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n if(d.value<5){\r\n if (alternate_text && !isCC) {\r\n alternate_text = false;\r\n pos[1]= pos[1] - 18; \r\n } else {\r\n alternate_text = true;\r\n }\r\n }\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n pos[0] = radius * 0.99 * (midangle < Math.PI ? 1 : -1);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"start\" : \"end\";\r\n });\r\n if(this.isCC){\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .text(function(d) {\r\n if(isCC){\r\n return d.data.key;\r\n }\r\n if (datatype != \"%\" && datatype!= null) {\r\n total = 0;\r\n var len = Object.keys(data_ready).length;\r\n\r\n for (var j = 0; j < len; j++) {\r\n total += data_ready[j].data.value;\r\n }\r\n return total>0 ? self.chartConfiguration.labelFormatter(\r\n d.data.value + \"(\" + Math.round((d.data.value / total) * 100) + \"%)\"\r\n ) : self.chartConfiguration.labelFormatter(d.data.value);\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.data.value);\r\n }\r\n })\r\n // .append('text')\r\n // .text(function(d) { return \"as\"; })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n if(d.value<5){\r\n // if (alternate_text) {\r\n // alternate_text = false;\r\n // pos[1]= pos[1] - 18; \r\n // } else {\r\n // alternate_text = true;\r\n // }\r\n }\r\n pos[1]= pos[1] + 18; \r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n pos[0] = radius * 0.99 * (midangle < Math.PI ? 1 : -1);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n return \"middle\";\r\n });\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n getHighlightedString(){\r\n if(this.chartData && this.chartData.data.length){\r\n for(var i=0; i < this.chartData.data.length; i++){\r\n if(this.chartData.data[i].name.toLowerCase() == \"completed\"){\r\n return this.chartData.data[i].value + this.chartData.metaData.dataType;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n getHighlightedStringPercentage(){\r\n let temp=0;\r\n if(this.chartData && this.chartData.data.length){\r\n let temp1=0;\r\n for(var i=0; i < this.chartData.data.length; i++){\r\n if(this.chartData.data[i].name.toLowerCase() == \"completed\"){\r\n temp1= this.chartData.data[i].value;\r\n if(temp1 == 0){\r\n return \"0% Completed\"\r\n }\r\n }\r\n temp=temp+this.chartData.data[i].value;\r\n }\r\n if(temp){\r\n return ((temp1/temp)*100) +\"% Completed\"\r\n }\r\n }\r\n return \"\";\r\n }\r\n}\r\n","<div #donutcontainer class=\"lib-chart-wrapper\"\r\n (resized)=\"onResized($event)\">\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isFromMultiProgressBar]=\"isCC\"\r\n ></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"donutchartcontainer\"\r\n #donutchartcontainer\r\n [ngClass]=\"isCC?'lib-chart-svg__cc':'lib-chart-svg'\"\r\n ></div>\r\n <div *ngIf=\"isCC\" class=\"text__highlighter\">\r\n <span class=\"text__highlightedText\">{{getHighlightedString()}}</span>\r\n <span class=\"text__highlightedTextPercentage\">{{getHighlightedStringPercentage()}}</span>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n *ngIf=\"\r\n chartData && chartData.metaData && !chartConfiguration.legendJustified\r\n && !isCC\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n >\r\n <div class=\"lib-donut-label-wrapper\" [ngClass]=\"isCC?'cc__design': chartConfiguration.centeralign ? 'lib-donut-label-align' : ''\">\r\n <div\r\n class=\"lib-donut-label-item donut-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </div>\r\n </div>\r\n <div class=\"text-center small\">{{ chartData.metaData.dataDuration }}</div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n chartData && chartData.metaData && chartConfiguration.legendJustified\r\n && !isCC\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n >\r\n <ul class=\"lib-donut-justified-label-wrapper\">\r\n <li\r\n class=\"lib-donut-justified-label-item donut-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n <div class=\"text-center small\">{{ chartData.metaData.dataDuration }}</div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-vertical-stacked-chart',\r\n templateUrl: './vertical-stacked-chart.component.html',\r\n styleUrls: [\r\n './vertical-stacked-chart.component.less',\r\n '../common-styles.less',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class VerticalStackedChartComponent\r\n extends ComponentUniqueId\r\n implements OnInit\r\n{\r\n @ViewChild('verticalstackedchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('verticalstackedcontainer', { static: true })\r\n verticalstackedcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n isHeaderVisible: boolean = true;\r\n isTopCaptionVisible: boolean = true;\r\n uniqueId: any = this.getUniqueId();\r\n isTransparentBackground: boolean = false;\r\n defaultConfiguration: any = {\r\n margin: { top: 30, right: 30, bottom: 50, left: 60 },\r\n svgHeight: 80,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showLegend: false,\r\n forComparison: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n xAxisGrid: false,\r\n yAxisGrid: false,\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n isTopCaptionVisible: undefined,\r\n isMultiChartGridLine: undefined,\r\n isFullScreen: undefined,\r\n customYscale: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: undefined,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n isXaxisColor: undefined,\r\n textFormatter: undefined,\r\n showTotalOnTop: undefined,\r\n showAngledLabels: undefined,\r\n isNoAlternateXaxisText: undefined,\r\n isXgridBetweenLabels: undefined,\r\n };\r\n isCC: boolean = false;\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeStackedChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeStackedChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeStackedChart() {\r\n var self = this;\r\n let data: any = [];\r\n let metaData: any = null;\r\n let keyList = null;\r\n let lineData = null;\r\n let colors: any = null;\r\n var alternate_text = false;\r\n var alternate_label = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var short_tick_length_bg = 15;\r\n var long_tick_length_bg = 25;\r\n var formatFromBackend;\r\n var formatForHugeNumbers;\r\n var tempObjectHolder = {};\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n if (metaData.unit == undefined) metaData.unit = '';\r\n if (metaData.isCC) {\r\n this.isCC = metaData.isCC;\r\n }\r\n lineData = this.chartData.lineData;\r\n colors = metaData.colors;\r\n\r\n keyList = metaData.keyList;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var verticalstackedcontainer = d3.select(\r\n this.verticalstackedcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n var height =\r\n parseInt(verticalstackedcontainer.style('height')) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n /**\r\n * entire height used in weekly charts as x axis needed to be displayed at the bottom of the chart\r\n */\r\n if (\r\n this.chartConfiguration.isFullScreen != undefined &&\r\n this.chartConfiguration.isFullScreen\r\n ) {\r\n height =\r\n this.chartConfiguration.svgHeight != 80\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n /**\r\n * for hiding header\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isHeaderVisible != undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n /**\r\n * for hiding legends\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isTopCaptionVisible != undefined) {\r\n //UPDATENAME\r\n this.isTopCaptionVisible = this.chartConfiguration.isTopCaptionVisible;\r\n }\r\n /**\r\n * for removing background color so that it can take parents color\r\n *\r\n */\r\n if (this.chartConfiguration.isTransparentBackground != undefined) {\r\n this.isTransparentBackground =\r\n this.chartConfiguration.isTransparentBackground;\r\n }\r\n /**\r\n * format data values based on configuration received\r\n */\r\n if (this.chartConfiguration.textFormatter != undefined) {\r\n formatFromBackend = ChartHelper.dataValueFormatter(\r\n this.chartConfiguration.textFormatter\r\n );\r\n formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n }\r\n var svg = chartContainer\r\n .append('svg')\r\n .attr('id', self.uniqueId)\r\n .attr('width', width + margin.left + margin.right)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\r\n\r\n let stackKey = keyList;\r\n var stack: any = d3\r\n .stack()\r\n .keys(stackKey)\r\n /*.order(d3.stackOrder)*/\r\n .offset(d3.stackOffsetNone);\r\n var layers: any = stack(data);\r\n data.sort(function (a, b) {\r\n return b.total - a.total;\r\n });\r\n let lineYscale;\r\n if (lineData != null) {\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([\r\n 0,\r\n d3.max(lineData, function (d) {\r\n return +d.value;\r\n }),\r\n ])\r\n .range([height, 0]);\r\n }\r\n\r\n var xScale = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name;\r\n })\r\n );\r\n /**\r\n * xScale for weekly charts does not need padding as this padding affects spacing between the dot and y axis\r\n */\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n xScale.padding(0.5);\r\n } else {\r\n xScale.align(0.5);\r\n }\r\n let yScale = d3.scaleLinear().rangeRound([height, 0]);\r\n /**\r\n * update max vakues so that the vakue wont exceed the max limit\r\n * used by weekly charts\r\n */\r\n var maxValue = d3.max(layers, (d) => d3.max(d, (d) => d[1]));\r\n if (maxValue == 0) {\r\n maxValue = 100;\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n yScale.domain([0, maxValue]).nice();\r\n let xAxis = d3\r\n .axisBottom(xScale)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter);\r\n\r\n let yAxis = d3\r\n .axisLeft(yScale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter);\r\n\r\n let yLineAxis;\r\n if (lineYscale != null) {\r\n yLineAxis = d3\r\n .axisRight(lineYscale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yLineAxisLabelFomatter);\r\n }\r\n /**\r\n * between x-axis label used by weekly charts\r\n * isXgridBetweenLabels will be undefined for dashboard charts\r\n */\r\n if (self.chartConfiguration.isXgridBetweenLabels) {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid')\r\n .attr(\r\n 'transform',\r\n 'translate(' + xScale.bandwidth() / 2 + ',' + height + ')'\r\n )\r\n .call(d3.axisBottom(xScale).tickSize(-height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999')\r\n // .style(\"opacity\", \"0.5\")\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n /**\r\n * used to draw y-axis grid\r\n */\r\n if (self.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid')\r\n .call(\r\n d3\r\n .axisLeft(yScale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat('')\r\n )\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n var layer = svg\r\n .selectAll('.layer')\r\n .data(layers)\r\n .enter()\r\n .append('g')\r\n .attr('class', 'layer')\r\n .style('fill', function (d, i) {\r\n return metaData.colors[d.key];\r\n });\r\n\r\n var rect = layer\r\n .selectAll('rect')\r\n .data(function (d) {\r\n return d;\r\n })\r\n .enter();\r\n rect\r\n .append('rect')\r\n .on('click', function (d) {\r\n if (!lineData || self.chartConfiguration.forComparison) {\r\n self.handleClick(d);\r\n }\r\n })\r\n .attr('y', function (d) {\r\n return yScale(d[1]);\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined) {\r\n return xScale(d.data.name);\r\n } else {\r\n return xScale(d.data.name) + xScale.bandwidth() / 4;\r\n }\r\n })\r\n .attr('height', function (d) {\r\n return yScale(d[0]) - yScale(d[1]);\r\n })\r\n /**\r\n * width of the rect\r\n * for weekly charts, there is no paddings; hence we use hald of bandwidth as width of the bars\r\n */\r\n .attr(\r\n 'width',\r\n self.chartConfiguration.isMultiChartGridLine == undefined\r\n ? xScale.bandwidth()\r\n : xScale.bandwidth() / 2\r\n )\r\n .style('cursor', 'pointer');\r\n /**\r\n * do not show valus on hover as its alreay dislayed\r\n */\r\n if (!this.isCC && !self.chartConfiguration.isMultiChartGridLine) {\r\n rect\r\n .append('svg:title') // TITLE APPENDED HERE\r\n .text(function (d) {\r\n return d[1] - d[0];\r\n });\r\n }\r\n if (this.isCC) {\r\n rect\r\n .append('text')\r\n .attr('x', function (d) {\r\n return xScale(d.data.name);\r\n })\r\n .attr('text-anchor', function (d) {\r\n if (!d[0]) {\r\n return 'end';\r\n } else {\r\n return 'start';\r\n }\r\n })\r\n .attr('class', 'verticalbar__text')\r\n .attr('y', function (d) {\r\n if (!d[0]) {\r\n return yScale(d[1]);\r\n } else {\r\n return yScale(d[1]) - 7;\r\n }\r\n })\r\n // .attr(\"y\", function (d) { return yScale(d[0]) - yScale(d[1]); })\r\n .attr('dy', function (d) {\r\n return d.class;\r\n })\r\n .text(function (d) {\r\n console.log('d==>>', d);\r\n if (!d[0]) {\r\n if (!isNaN(d[1] - d[0])) {\r\n return Math.round((d[1] - d[0]) * 100) / 100;\r\n } else return;\r\n } else {\r\n if (!isNaN(d[1])) {\r\n return Math.round(d[1] * 100) / 100;\r\n } else return;\r\n }\r\n });\r\n }\r\n /**\r\n * used to show value on top of the bars\r\n * need to be used by bar charts only(one bar should contain one value)\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.showTotalOnTop != undefined) {\r\n rect\r\n .append('text')\r\n .attr('x', function (d) {\r\n return xScale(d.data.name) + xScale.bandwidth() / 2;\r\n })\r\n .attr('class', 'lib-verticalstack-labels-ontop-weklycharts')\r\n .attr('y', function (d) {\r\n return yScale(d[1]) - 3;\r\n })\r\n .attr('dy', function (d) {\r\n return d.class;\r\n })\r\n .text(function (d) {\r\n if (!isNaN(d[1] - d[0])) {\r\n if (d[1] - d[0] <= 999)\r\n return metaData.unit\r\n ? metaData.unit + formatFromBackend(d[1] - d[0])\r\n : formatFromBackend(d[1] - d[0]);\r\n else\r\n return metaData.unit\r\n ? metaData.unit + formatForHugeNumbers(d[1] - d[0])\r\n : formatForHugeNumbers(d[1] - d[0]);\r\n } else return;\r\n });\r\n }\r\n /**\r\n * used to show angled values on top of the bars\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.showAngledLabels != undefined) {\r\n rect\r\n .append('text')\r\n .attr('x', 0)\r\n .attr('fill', function (d, i) {\r\n return metaData.colors[d.key];\r\n })\r\n .attr('class', 'lib-data-labels-angled-weeklycharts')\r\n .attr('y', 0)\r\n .attr('dy', function (d) {\r\n return d.class;\r\n })\r\n .text(function (d) {\r\n if (!isNaN(d[1] - d[0]) && d[1] - d[0] > 0) {\r\n if (d[1] - d[0] <= 999)\r\n return metaData.unit\r\n ? metaData.unit + formatFromBackend(d[1] - d[0])\r\n : formatFromBackend(d[1] - d[0]);\r\n else return metaData.unit + formatForHugeNumbers(d[1] - d[0]);\r\n } else return;\r\n })\r\n .attr('transform', function (d) {\r\n if (!isNaN(d[1] - d[0]) && d[1] - d[0] > 0) {\r\n var total = 0;\r\n var incrementer: number = 1;\r\n metaData.keyList.forEach((key) => {\r\n if (d.data[key]) total = total + d.data[key];\r\n else incrementer = 2;\r\n });\r\n if (tempObjectHolder[d.data.name] == undefined) {\r\n tempObjectHolder[d.data.name] = 1;\r\n } else {\r\n tempObjectHolder[d.data.name] =\r\n tempObjectHolder[d.data.name] + incrementer;\r\n }\r\n switch (tempObjectHolder[d.data.name]) {\r\n case 1:\r\n return (\r\n 'translate(' +\r\n (xScale(d.data.name) + xScale.bandwidth() / 3) +\r\n ',' +\r\n (yScale(total) - 3) +\r\n ') rotate(270)'\r\n );\r\n case 2:\r\n return (\r\n 'translate(' +\r\n (xScale(d.data.name) + xScale.bandwidth() / 2 + 2) +\r\n ',' +\r\n (yScale(total) - 3) +\r\n ') rotate(270)'\r\n );\r\n default:\r\n return (\r\n 'translate(' +\r\n (xScale(d.data.name) + (xScale.bandwidth() * 3) / 4) +\r\n ',' +\r\n (yScale(total) - 3) +\r\n ') rotate(270)'\r\n );\r\n }\r\n }\r\n return 'rotate(0)';\r\n });\r\n }\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n svg\r\n .append('g')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .attr('class', 'lib-stacked-x-axis-text')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(xAxis);\r\n // .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis);\r\n } else {\r\n svg\r\n .append('g')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .attr('class', 'lib-stacked-x-axis-text multichart')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(xAxis);\r\n // .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis);\r\n }\r\n /**\r\n * for existing charts, place xaxis labels nearer to xaxis\r\n * used by existing charts\r\n */\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n d3.selectAll('g.lib-stacked-x-axis-text g.tick text').attr(\r\n 'y',\r\n function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n }\r\n );\r\n } else {\r\n d3.selectAll('.multichart > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\r\n }\r\n /**\r\n * based of the flag, hide or show xaxis texts\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isXaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isXaxisLabelHidden\r\n ) {\r\n d3.selectAll('.multichart > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\r\n } else if (this.chartConfiguration.isXaxisLabelHidden != undefined) {\r\n svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n\r\n .call(d3.axisBottom(xScale).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').attr('y2', function () {\r\n /**\r\n * isNoAlternateXaxisText is used to prevent x-axis label to be displayed in alternate fashion\r\n * for future use\r\n */\r\n if (\r\n alternate_text &&\r\n self.chartConfiguration.isNoAlternateXaxisText == undefined\r\n ) {\r\n alternate_text = false;\r\n return long_tick_length_bg - 7;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg - 4;\r\n }\r\n });\r\n /**\r\n * reset the flag so that texts also follow the pattern of ticks\r\n * used by weekly charts\r\n */\r\n alternate_text = false;\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-weeklycharts')\r\n .attr('y', function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length_bg;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg;\r\n }\r\n });\r\n }\r\n /**\r\n * hide yaxis values\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isYaxisLabelHidden\r\n ) {\r\n svg\r\n .selectAll('.yaxis-dashed > g > text')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n /** hide y axis labels\r\n * config is there for future use\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisHidden != undefined &&\r\n this.chartConfiguration.isYaxisHidden\r\n ) {\r\n d3.selectAll('.yaxis-dashed').attr('class', 'lib-display-hidden');\r\n }\r\n /**\r\n * dashed y axis\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisDashed != undefined &&\r\n this.chartConfiguration.isYaxisDashed\r\n ) {\r\n d3.selectAll('.yaxis-dashed')\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999');\r\n }\r\n /**\r\n * x axis color\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isXaxisColor != undefined) {\r\n d3.selectAll('.multichart').style(\r\n 'color',\r\n this.chartConfiguration.isXaxisColor\r\n );\r\n }\r\n /**\r\n * used to display y label\r\n */\r\n if (metaData.yLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-waterfall-label')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', 0 - margin.left)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .text(metaData.yLabel.toLowerCase())\r\n .style('text-transform', 'capitalize');\r\n if (this.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll('.lib-axis-waterfall-label')\r\n .attr('class', 'lib-ylabel-weeklyCharts');\r\n }\r\n }\r\n if (metaData.lineyLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-group-label lib-line-axis')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'translate(' + (width - 20) + ',0) rotate(90)')\r\n .attr('y', 0 - margin.right * 3)\r\n .attr('x', height / 2)\r\n .attr('dy', '5em')\r\n .style('text-anchor', 'middle')\r\n .text(metaData.lineyLabel);\r\n }\r\n if (metaData.xLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-waterfall-label')\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + (height + margin.top + 20) + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .text(metaData.xLabel.toLowerCase())\r\n .style('text-transform', 'capitalize');\r\n }\r\n\r\n if (yLineAxis != null) {\r\n if (lineData && self.chartConfiguration.showLineChartAxis) {\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(' + width + ',0)')\r\n .call(yLineAxis);\r\n }\r\n }\r\n if (lineData && colors) {\r\n var dataGroup = d3\r\n .nest()\r\n .key(function (d) {\r\n return d.category;\r\n })\r\n .entries(lineData);\r\n\r\n // console.log(dataGroup);\r\n\r\n var lineGen = d3\r\n .line()\r\n .x(function (d) {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n })\r\n .y(function (d) {\r\n return lineYscale(d.value);\r\n });\r\n\r\n var calculateCX = (d) => {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n };\r\n\r\n var calculateCY = (d) => {\r\n return lineYscale(d.value);\r\n };\r\n\r\n dataGroup.forEach(function (d, i) {\r\n svg\r\n .append('path')\r\n .datum(d.values)\r\n .attr('fill', 'none')\r\n .attr('stroke', function (d) {\r\n if ('category' in d[0]) {\r\n return colors[d[0].category];\r\n } else {\r\n return self.chartConfiguration.lineGraphColor;\r\n }\r\n })\r\n .attr('stroke-width', 2.5) /**line thinkness */\r\n .attr('d', lineGen(d.values));\r\n\r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(d.values)\r\n .enter()\r\n .append('g')\r\n .on('click', function (d) {\r\n self.handleClick(d);\r\n });\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', function (d) {\r\n if ('category' in d) {\r\n return colors[d.category];\r\n } else {\r\n return self.chartConfiguration.lineGraphColor;\r\n }\r\n })\r\n .attr('stroke', 'none')\r\n .attr('cx', function (d, i) {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n })\r\n .attr('cy', function (d, i) {\r\n return lineYscale(d.value);\r\n })\r\n .attr('r', 3) /**radius of circle=5 */\r\n .style('cursor', 'pointer');\r\n\r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dots')\r\n .attr('fill', self.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: ' + '.85em;' + 'font-weight:' + 'bold')\r\n .attr('x', function (d, i) {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n })\r\n .attr('y', function (d, i) {\r\n return lineYscale(d.value);\r\n })\r\n .attr('dy', '-1em')\r\n .text(function (d, i) {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div\r\n #verticalstackedcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n (resized)=\"onResized($event)\"\r\n>\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isFromMultiProgressBar]=\"isCC\"\r\n *ngIf=\"isHeaderVisible\"\r\n ></lib-chart-header>\r\n <div\r\n *ngIf=\"chartData && chartData.metaData && chartConfiguration.showLegend\"\r\n [style.height]=\"chartConfiguration.legendHeight\"\r\n class=\"lib-line-chart-legend-wrapper\"\r\n [ngClass]=\"isCC ? 'bottom__text' : ''\"\r\n >\r\n <div\r\n class=\"lib-line-label-wrapper-vertical\"\r\n [ngClass]=\"isCC ? 'inline__display' : ''\"\r\n *ngIf=\"isTopCaptionVisible\"\r\n >\r\n <div\r\n [ngClass]=\"isCC ? 'label__text' : 'lib-line-label-item'\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <div\r\n class=\"lib-line-legend-label-text box__heightwidth marginright-2\"\r\n [style.backgroundColor]=\"item.value\"\r\n *ngIf=\"isCC && item.key != 'Remaining'\"\r\n ></div>\r\n <span\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"item.value\"\r\n *ngIf=\"isCC && item.key != 'Remaining'\"\r\n >{{ item.key }}</span\r\n >\r\n <span\r\n class=\"lib-line-legend-label-text\"\r\n [ngStyle]=\"{ border: '1px solid ' + item.value }\"\r\n [style.color]=\"item.value\"\r\n *ngIf=\"!isCC\"\r\n >{{ item.key }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"verticalstackedchartcontainer\"\r\n #verticalstackedchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ViewChild,\r\n ElementRef,\r\n Input,Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n\r\n@Component({\r\n selector: \"lib-multi-ring-chart\",\r\n templateUrl: \"./multi-ring-chart.component.html\",\r\n styleUrls: [\"./multi-ring-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MultiRingChartComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"multiringchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"multiringcontainer\", { static: true })\r\n multiringcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 30, right: 30, bottom: 30, left: 30 },\r\n footerHeight: \"20%\",\r\n svgHeight: 70,\r\n legendJustified: false,\r\n thickness: 15,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeDonutChart();\r\n }\r\n onResized(event: ResizedEvent){\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeDonutChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeDonutChart() {\r\n var self = this;\r\n let rawData:any = null;\r\n let data = {};\r\n let metaData:any = null;\r\n let colorMap = {};\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n rawData = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n colorMap = metaData.colors;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var multiringcontainer = d3.select(\r\n this.multiringcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(multiringcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" +\r\n (width / 2 + margin.left) +\r\n \",\" +\r\n (height / 2 + margin.top) +\r\n \")\"\r\n );\r\n\r\n rawData.map(function(unit) {\r\n data[unit.name] = unit.value;\r\n });\r\n\r\n var radius = Math.min(width, height) / 2;\r\n var pie = d3\r\n .pie()\r\n .sort(null)\r\n .value(function(d) {\r\n return d.value;\r\n });\r\n var data_ready = pie(d3.entries(data));\r\n\r\n let tau = 2 * Math.PI;\r\n\r\n var arcs = svg\r\n .selectAll(\"allSlices\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"path\").on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr(\"d\", function(d, i) {\r\n var endAngle = (d.value / 100) * tau;\r\n var arc = d3.arc();\r\n arc\r\n .innerRadius(radius * 0.7 + i * self.chartConfiguration.thickness)\r\n .outerRadius(\r\n radius * 0.7 + (i + 1) * self.chartConfiguration.thickness\r\n )\r\n .startAngle(0)\r\n .endAngle(endAngle);\r\n d.arcFn = arc;\r\n return arc();\r\n })\r\n .attr(\"fill\", function(d) {\r\n return colorMap[d.data.key];\r\n });\r\n\r\n var texts = svg\r\n .append(\"text\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"alignment-baseline\", \"middle\")\r\n .style(\"font-size\", \"20px\")\r\n .style(\"font-weight\", \"bold\")\r\n .attr(\"fill\", \"black\")\r\n .text(d => metaData.labelText);\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #multiringcontainer class=\"lib-chart-wrapper\"\r\n (resized)=\"onResized($event)\" >\r\n <!-- <div class=\"lib-chart-header\">{{ chartData.metaData.title }}</div> -->\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"multiringchartcontainer\"\r\n #multiringchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n *ngIf=\"\r\n chartData && chartData.metaData && !chartConfiguration.legendJustified\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n>\r\n <div class=\"lib-donut-label-wrapper\">\r\n <div\r\n class=\"lib-donut-label-item multiring-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div\r\n *ngIf=\"\r\n chartData && chartData.metaData && chartConfiguration.legendJustified\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n>\r\n <ul class=\"lib-donut-justified-label-wrapper\">\r\n <li\r\n class=\"lib-donut-justified-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n</div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-header-v1',\r\n templateUrl: './chart-header-v1.component.html',\r\n styleUrls: [\"./chart-header-v1.component.less\",\"../common-styles.less\"],\r\n})\r\nexport class ChartHeaderV1Component implements OnChanges{\r\n\r\n @Input() isAlertEnabled: any;\r\n\r\n\r\n @Input() title: string = '';\r\n @Input() menuOptions: any;\r\n @Input() isEditEnabled: any;\r\n\r\n @Input() isria: boolean = false;\r\n @Input() hasDrillDown: boolean = false;\r\n @Output() menuOptionClickEvent = new EventEmitter<any>();\r\n @Input() selectedKpiTooltop: string = '';\r\n \r\n hideTooltip: boolean = true;\r\n isEllipsisHovered: boolean = false;\r\n isRefreshHovered: boolean = false;\r\n isTrashHovered: boolean = false;\r\n hoveredMenuItem: string | null = null;\r\n\r\n constructor() {}\r\n \r\n @HostListener('document:click', ['$event'])\r\n clickout() {\r\n if (!this.hideTooltip) {\r\n this.hideTooltip = true;\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n \r\n showTooltip(event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n // this.menuOptionClickEvent.emit({ selectedKpiTooltip: this.title });\r\n }\r\n\r\ngetIconClass(id: string): string {\r\n switch (id) {\r\n case 'setAlert':\r\n return 'bi bi-bell'\r\n case 'editAlert':\r\n return 'bi bi-bell-fill';\r\n case 'deleteKpi':\r\n return 'bi bi-trash';\r\n case 'replaceKpi':\r\n return 'fa fa-exchange';\r\n default:\r\n return 'fa fa-cog';\r\n }\r\n}\r\n\r\n\r\n\r\n handleMenuOptionClick(id: string, event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n // if (id == 'replace-kpi' || id == 'delete-kpi') {\r\n // this.hideTooltip = true;\r\n // }\r\n this.menuOptionClickEvent.emit(id);\r\n }\r\n}","<div class=\"chart-header-v1\" [ngClass]=\"{ 'header-no-background': isria }\">\r\n <span class=\"chart-title\">\r\n {{ title }}\r\n </span>\r\n\r\n <div class=\"header_right\" *ngIf=\"!isria\">\r\n <span class=\"chart-alert-header\" *ngIf=\"isAlertEnabled\">\r\n <i class=\"bi bi-bell-fill\"></i>\r\n </span>\r\n\r\n <span class=\"ellipsis\" (click)=\"showTooltip($event)\"\r\n [ngClass]=\"{'ellipsis-hover': isEllipsisHovered}\" (mouseenter)=\"isEllipsisHovered = true\"\r\n (mouseleave)=\"isEllipsisHovered = false\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </span>\r\n </div>\r\n\r\n <div class=\"chart-tooltip tip-head\" [ngClass]=\"{ 'hide-tooltip': hideTooltip }\">\r\n <div *ngFor=\"let menu of menuOptions\">\r\n <div class=\"tooltip-item\" [ngClass]=\"{'tooltip-item-hover': hoveredMenuItem === menu.id}\"\r\n (mouseenter)=\"hoveredMenuItem = menu.id\" (mouseleave)=\"hoveredMenuItem = null\"\r\n (click)=\"handleMenuOptionClick(menu.id, $event)\">\r\n <div class=\"row\">\r\n <div class=\"col-12 ellipse-items\">\r\n <i [ngClass]=\"getIconClass(menu.id)\" style=\"margin-right: 5px;\"></i>\r\n {{ menu.name }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-header-alt',\r\n templateUrl: './header-alt.component.html',\r\n styleUrls: ['./header-alt.component.less'],\r\n})\r\nexport class HeaderAltComponent implements OnInit {\r\n @Input() title: string = '';\r\n @Input() isria: boolean = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div \r\n class=\"header-alt-title\" \r\n [class.ria]=\"isria\">\r\n {{ title }}\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-header-v2',\r\n templateUrl: './chart-header-v2.component.html',\r\n styleUrl: './chart-header-v2.component.less',\r\n})\r\nexport class ChartHeaderV2Component {\r\n @Input() chartData: any;\r\n @Input() chartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() zoomInZoomOutClick = new EventEmitter<any>();\r\n\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n isZoomOutSelected(isZoomOut, event) {\r\n this.zoomInZoomOutClick.emit({ isZoomOut: isZoomOut, event: event });\r\n }\r\n handleGaugeChartVisibility() {\r\n if (\r\n parseFloat(this.chartData?.metaData?.currentValue) > 0 ||\r\n parseFloat(this.chartData?.data?.value) > 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","<div\r\n class=\"headerv2 lib-display-flex header-title-styles\"\r\n [ngClass]=\"\r\n !chartConfiguration.isTitleHidden\r\n ? 'lib-justify-content-space-between'\r\n : 'lib-justify-content-end'\r\n \"\r\n>\r\n <span [ngClass]=\"!chartConfiguration.isTitleHidden ? '' : 'hidden'\">\r\n <lib-header-alt [title]=\"chartData.metaData.title\"></lib-header-alt>\r\n </span>\r\n <span\r\n *ngIf=\"\r\n (chartData.dropdownData1 &&\r\n chartData.metaData.breadcrumbLength &&\r\n chartData.metaData.breadcrumbLength == 1 &&\r\n (chartConfiguration?.isToggleVisible ||\r\n chartData.metaData.isToggleVisible)) ||\r\n (chartData.metaData.breadcrumbLength > 1 &&\r\n !chartData.dropdownData1 &&\r\n (chartConfiguration?.isToggleVisible ||\r\n chartData.metaData.isToggleVisible)) ||\r\n (chartData.dropdownData2 &&\r\n !chartData.dropdownData1 &&\r\n chartData.metaData.breadcrumbLength == 1 &&\r\n (chartConfiguration?.isToggleVisible ||\r\n chartData.metaData.isToggleVisible)) ||\r\n ((chartData.metaData.type == 'GAUGE' ||\r\n chartData.metaData.type == 'NUMBERCHART') &&\r\n chartConfiguration.isToggleVisible &&\r\n handleGaugeChartVisibility())\r\n \"\r\n class=\"marginLeft-20 flex-inline marginRight-15\"\r\n >\r\n <span class=\"font-size-2\">Trending</span>\r\n <span\r\n class=\"switch\"\r\n (click)=\"\r\n handleClick(\r\n chartData.metaData.type == 'NUMBERCHART'\r\n ? { toggleFrom: 'plainTrend' }\r\n : chartData.metaData.type == 'GAUGE'\r\n ? { toggleFrom: 'gauge' }\r\n : chartData.metaData.toggleVersion\r\n ? { toggleFrom: 'groupchart-v1' }\r\n : { toggleFrom: 'groupchart' }\r\n )\r\n \"\r\n >\r\n <input type=\"checkbox\" />\r\n <span\r\n [ngClass]=\"{\r\n 'slider1 round1': chartData && chartData.metaData.isToggled,\r\n 'slider round': chartData && !chartData.metaData.isToggled\r\n }\"\r\n ></span>\r\n </span>\r\n <span class=\"font-size-2\">Average</span>\r\n </span>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport * as d3 from 'd3';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\ninterface ChartData {\r\n data: number[];\r\n metaData: ChartMetadata;\r\n}\r\n\r\ninterface ChartMetadata {\r\n title?: string;\r\n colorType: 'low' | 'high';\r\n dataType?: string;\r\n currentValue: number;\r\n status?: string;\r\n dateRange?: string;\r\n hasDrillDown?: boolean;\r\n isEditEnabled?: boolean;\r\n}\r\n\r\ninterface ChartConfiguration {\r\n margin: { top: number; right: number; bottom: number; left: number };\r\n minAngle: number;\r\n maxAngle: number;\r\n ringInset: number;\r\n ringWidth: number;\r\n majorTicks: number;\r\n svgHeight: number;\r\n low_colorMap: string[];\r\n high_colorMap: string[];\r\n isHeaderVisible?: boolean;\r\n pointerWidth: number;\r\n pointerTailLength: number;\r\n pointerHeadLengthPercent: number;\r\n labelInset: number;\r\n legendJustified: boolean;\r\n backgroundColor: string;\r\n isDrilldownChart?: boolean;\r\n ringScaleFactor: number;\r\n textsAtCenterScaleFactor: number;\r\n currentValueWidthScaleFactor: number;\r\n currentValueHeightScaleFactor: number;\r\n pointerColor: string;\r\n isToggleVisible?: boolean;\r\n selectedKpiTooltop?: any;\r\n isValueLableAdjust?: boolean;\r\n isTitleHidden?: boolean;\r\n headerMenuOptions: any[];\r\n isRia?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-guage-chart',\r\n templateUrl: './guage-chart.component.html',\r\n styleUrls: ['./guage-chart.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class GuageChartComponent extends ComponentUniqueId implements OnInit, OnChanges {\r\n @ViewChild('guagechartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('guagecontainer', { static: true })\r\n guagecontainerElt!: ElementRef;\r\n\r\n @Input() chartData!: ChartData;\r\n @Input() customChartConfiguration: Partial<ChartConfiguration> = {};\r\n @Output() clickEvent = new EventEmitter<string>();\r\n @Output() headerMenuclickEvent = new EventEmitter<string>();\r\n\r\n chartConfiguration: ChartConfiguration = {} as ChartConfiguration;\r\n dataType = '';\r\n datatype_status = false;\r\n uniqueId = this.getUniqueId();\r\n isHeaderVisible = true;\r\n\r\n private readonly CHART_HEADER_HEIGHT = 56;\r\n private readonly LARGE_SCREEN_WIDTH = 1400;\r\n private readonly XLARGE_SCREEN_WIDTH = 1500;\r\n\r\n private readonly defaultConfiguration: ChartConfiguration = {\r\n margin: { top: 40, right: 20, bottom: 20, left: 20 },\r\n minAngle: -90,\r\n maxAngle: 90,\r\n ringInset: 20,\r\n ringWidth: 20,\r\n majorTicks: 3,\r\n svgHeight: 80,\r\n low_colorMap: ['#43CC00', '#FFEF0C', '#FF4E0C'],\r\n high_colorMap: ['#FF4E0C', '#FFEF0C', '#43CC00'],\r\n isHeaderVisible: undefined,\r\n pointerWidth: 10,\r\n pointerTailLength: 5,\r\n pointerHeadLengthPercent: 0.7,\r\n labelInset: 10,\r\n legendJustified: false,\r\n backgroundColor: '#FFFFFF',\r\n isDrilldownChart: undefined,\r\n ringScaleFactor: 0,\r\n textsAtCenterScaleFactor: 0,\r\n currentValueWidthScaleFactor: 60,\r\n currentValueHeightScaleFactor: 30,\r\n pointerColor: '#686868',\r\n isToggleVisible: undefined,\r\n selectedKpiTooltop: undefined,\r\n isValueLableAdjust: undefined,\r\n isTitleHidden: undefined,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n ) ?? false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initializeChart();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['chartData'] || changes['customChartConfiguration']) {\r\n this.removeExistingChart();\r\n this.initializeChart();\r\n }\r\n }\r\n\r\n onResized(event: ResizedEvent): void {\r\n this.removeExistingChart();\r\n this.initializeChart();\r\n }\r\n\r\n private removeExistingChart(): void {\r\n d3.select(`#${this.uniqueId}`).remove();\r\n }\r\n\r\n private initializeChart(): void {\r\n if (!this.chartData) return;\r\n\r\n this.mergeConfiguration();\r\n this.setupDataType();\r\n \r\n const { data, metaData } = this.chartData;\r\n const colorMaps = this.getColorMaps(metaData.colorType);\r\n const dataSegments = this.calculateDataSegments(data);\r\n const angleValues = this.calculateAngles(dataSegments);\r\n \r\n const dimensions = this.calculateDimensions();\r\n const svg = this.createSVG(dimensions);\r\n const radius = Math.min(dimensions.width, dimensions.height) / 2;\r\n\r\n this.adjustScaleFactors(radius);\r\n \r\n const labelArray = this.createLabelArray(data, dataSegments);\r\n \r\n this.renderArcs(svg, dataSegments, angleValues, colorMaps, metaData, radius);\r\n this.renderPointer(svg, data, metaData, radius);\r\n this.renderLabels(svg, labelArray, data, metaData, radius);\r\n this.renderCenterTexts(svg, metaData, radius, dimensions);\r\n \r\n this.centerSVG(svg, dimensions);\r\n }\r\n\r\n private mergeConfiguration(): void {\r\n Object.keys(this.defaultConfiguration).forEach((key) => {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n });\r\n }\r\n\r\n private setupDataType(): void {\r\n const dataType = this.chartData.metaData.dataType;\r\n if (dataType) {\r\n this.dataType = dataType === 'USD' ? '$ ' : dataType;\r\n this.datatype_status = dataType === 'USD';\r\n }\r\n }\r\n\r\n private getColorMaps(colorType: 'low' | 'high'): string[] {\r\n return colorType === 'low'\r\n ? this.chartConfiguration.low_colorMap\r\n : this.chartConfiguration.high_colorMap;\r\n }\r\n\r\n private calculateDataSegments(data: number[]): number[] {\r\n return data.slice(0, -1).map((value, i) => data[i + 1] - value);\r\n }\r\n\r\n private calculateAngles(dataSegments: number[]): number[] {\r\n const total = dataSegments.reduce((sum, value) => sum + value, 0);\r\n const angles: number[] = [];\r\n \r\n dataSegments.forEach((segment, i) => {\r\n const angle = (segment / total) * 180;\r\n angles.push(i === 0 ? angle : angles[i - 1] + angle);\r\n });\r\n \r\n return angles;\r\n }\r\n\r\n private calculateDimensions() {\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const guageContainer = d3.select(this.guagecontainerElt.nativeElement);\r\n const margin = this.chartConfiguration.margin;\r\n\r\n const width = parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n const height = parseInt(guageContainer.style('height')) - margin.top - margin.bottom - this.CHART_HEADER_HEIGHT;\r\n\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n\r\n return { width, height, margin, chartContainer };\r\n }\r\n\r\n private createSVG(dimensions: any): d3.Selection<SVGGElement, unknown, null, undefined> {\r\n const { width, height, margin, chartContainer } = dimensions;\r\n\r\n return chartContainer\r\n .append('svg')\r\n .attr('id', this.uniqueId)\r\n .attr('width', width + margin.left + margin.right)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append('g');\r\n }\r\n\r\n private adjustScaleFactors(radius: number): void {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n this.chartConfiguration.currentValueWidthScaleFactor += 40;\r\n this.chartConfiguration.currentValueHeightScaleFactor += 20;\r\n } else if (window.innerWidth > this.LARGE_SCREEN_WIDTH) {\r\n this.chartConfiguration.currentValueHeightScaleFactor += 15;\r\n this.chartConfiguration.currentValueWidthScaleFactor *= 2;\r\n }\r\n }\r\n\r\n private createLabelArray(data: number[], dataSegments: number[]) {\r\n const labelArray = [{ name: data[0], value: 0 }];\r\n let cumulative = 0;\r\n\r\n dataSegments.forEach((segment, i) => {\r\n cumulative += segment;\r\n labelArray.push({ name: data[i + 1], value: cumulative });\r\n });\r\n\r\n return labelArray;\r\n }\r\n\r\n private renderArcs(\r\n svg: any,\r\n dataSegments: number[],\r\n angleValues: number[],\r\n colorMaps: string[],\r\n metaData: ChartMetadata,\r\n radius: number\r\n ): void {\r\n const isRia = this.customChartConfiguration.isRia;\r\n const centerTx = this.getCenterTranslation(radius);\r\n const arc = this.createArcGenerator(dataSegments, angleValues, radius);\r\n\r\n const arcs = svg.append('g').attr('class', 'arc').attr('transform', centerTx);\r\n\r\n arcs\r\n .selectAll('path')\r\n .data(dataSegments)\r\n .enter()\r\n .append('path')\r\n .attr('fill', (d: any, i: number) => colorMaps[i])\r\n .attr('id', (d: any, i: number) => colorMaps[i])\r\n .attr('d', arc)\r\n .style('cursor', () => {\r\n return metaData.currentValue > 0 && metaData.hasDrillDown && !isRia\r\n ? 'pointer'\r\n : 'default';\r\n })\r\n .on('click', (event: any, d: any) => {\r\n if (!metaData.hasDrillDown || metaData.currentValue === 0) return;\r\n this.handleClick(this.getRange(this.chartData.data));\r\n });\r\n }\r\n\r\n private createArcGenerator(dataSegments: number[], angleValues: number[], radius: number): any {\r\n return d3\r\n .arc()\r\n .innerRadius(radius - this.chartConfiguration.ringWidth - this.chartConfiguration.ringInset)\r\n .outerRadius(radius)\r\n .startAngle((d: any, i: number) => {\r\n const ratio = i === 0\r\n ? this.chartConfiguration.minAngle\r\n : this.chartConfiguration.minAngle + angleValues[i - 1];\r\n return this.deg2rad(ratio);\r\n })\r\n .endAngle((d: any, i: number) => {\r\n const ratio = i === dataSegments.length - 1\r\n ? this.chartConfiguration.maxAngle\r\n : this.chartConfiguration.minAngle + angleValues[i];\r\n return this.deg2rad(ratio);\r\n });\r\n }\r\n\r\n private renderPointer(svg: any, data: number[], metaData: ChartMetadata, radius: number): void {\r\n const centerTx = this.getCenterTranslation(radius);\r\n const pointerHeadLength = Math.round(radius * this.chartConfiguration.pointerHeadLengthPercent);\r\n\r\n const lineData = [\r\n [this.chartConfiguration.pointerWidth / 2, 0],\r\n [0, -pointerHeadLength],\r\n [-(this.chartConfiguration.pointerWidth / 2), 0],\r\n [0, this.chartConfiguration.pointerTailLength],\r\n [this.chartConfiguration.pointerWidth / 2, 0],\r\n ];\r\n\r\n const pointerLine = d3.line();\r\n const pg = svg\r\n .append('g')\r\n .data([lineData])\r\n .attr('class', 'pointer')\r\n .attr('transform', centerTx);\r\n\r\n const range = data[data.length - 1] - data[0];\r\n const pointerValue = metaData.currentValue - data[0];\r\n const pointerAngle = this.chartConfiguration.minAngle + (pointerValue / range) * 180;\r\n\r\n pg.append('path')\r\n .attr('d', pointerLine)\r\n .attr('fill', this.chartConfiguration.pointerColor)\r\n .attr(\r\n 'transform',\r\n `rotate(${pointerAngle}) translate(0, ${-radius + this.chartConfiguration.ringWidth + pointerHeadLength})`\r\n );\r\n }\r\n\r\n private renderLabels(svg: any, labelArray: any[], data: number[], metaData: ChartMetadata, radius: number): void {\r\n const centerTx = this.getCenterTranslation(radius);\r\n const range = data[data.length - 1] - data[0];\r\n const lg = svg.append('g').attr('class', 'label').attr('transform', centerTx);\r\n\r\n lg.selectAll('.bubble')\r\n .data(labelArray)\r\n .enter()\r\n .append('g')\r\n .attr('transform', (d: any) => {\r\n const newAngle = this.chartConfiguration.minAngle + (d.value / range) * 180;\r\n return `rotate(${newAngle}) translate(0, ${this.chartConfiguration.labelInset - radius - 20})`;\r\n })\r\n .append('g')\r\n .attr('transform', (d: any, i: number) => {\r\n const newAngle = this.chartConfiguration.minAngle + (d.value / range) * 180;\r\n let xOffset = -17;\r\n \r\n if (i === 0 && this.chartConfiguration.isValueLableAdjust) {\r\n xOffset = -27;\r\n } else if (i === labelArray.length - 1 && this.chartConfiguration.isValueLableAdjust) {\r\n xOffset = -15;\r\n }\r\n \r\n return `rotate(${-newAngle}) translate(${xOffset}, 0)`;\r\n })\r\n .append('text')\r\n .attr('style', () => {\r\n const fontSize = window.innerWidth < this.LARGE_SCREEN_WIDTH ? '12px' : '14px';\r\n return `font-size: ${fontSize}; font-weight: 600;`;\r\n })\r\n .attr('fill', 'var(--chart-text-color)')\r\n .text((d: any) => {\r\n return metaData.dataType ? `${d.name}${metaData.dataType}` : d.name;\r\n });\r\n }\r\n\r\n private renderCenterTexts(svg: any, metaData: ChartMetadata, radius: number, dimensions: any): void {\r\n const topTextPosition = radius / 2 - 10;\r\n const midTextPosition = topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n const bottomTextPosition = midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n\r\n // Current Value\r\n this.addForeignObject(\r\n svg,\r\n radius - this.chartConfiguration.currentValueWidthScaleFactor / 2,\r\n topTextPosition,\r\n this.chartConfiguration.currentValueWidthScaleFactor + 8,\r\n this.chartConfiguration.currentValueHeightScaleFactor,\r\n 'value-display',\r\n `${metaData.currentValue}${metaData.dataType || ''}`\r\n );\r\n\r\n // Status\r\n if (metaData.status) {\r\n const statusWidth = metaData.status.length > 4 ? 210 : 120;\r\n this.addForeignObject(\r\n svg,\r\n radius - statusWidth / 2,\r\n midTextPosition,\r\n statusWidth,\r\n this.chartConfiguration.currentValueHeightScaleFactor + 10,\r\n 'status-display',\r\n metaData.status\r\n );\r\n }\r\n\r\n // Date Range\r\n const dateRangeHtml = metaData.dateRange\r\n ? `<span class=\"marginright-3\"><i class=\"fa fa-calendar\"></i></span><span>${metaData.dateRange}</span>`\r\n : '';\r\n \r\n this.addForeignObject(\r\n svg,\r\n radius - 105,\r\n bottomTextPosition,\r\n 210,\r\n this.chartConfiguration.currentValueHeightScaleFactor,\r\n 'daterange-display',\r\n dateRangeHtml\r\n );\r\n }\r\n\r\n private addForeignObject(\r\n svg: any,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n className: string,\r\n content: string\r\n ): void {\r\n const fontSize = this.getFontSize();\r\n \r\n svg\r\n .append('foreignObject')\r\n .attr('transform', `translate(${x}, ${y})`)\r\n .attr('width', width)\r\n .attr('height', height)\r\n .append('xhtml:div')\r\n .attr('class', className)\r\n .style('height', `${height + 10}px`)\r\n .style('font-size', fontSize)\r\n .html(content);\r\n }\r\n\r\n private getFontSize(): string {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return window.innerWidth < this.LARGE_SCREEN_WIDTH ? '14px' : '18px';\r\n }\r\n return window.innerWidth < this.LARGE_SCREEN_WIDTH ? '14px' : '18px';\r\n }\r\n\r\n private centerSVG(svg: any, dimensions: any): void {\r\n const { margin, chartContainer } = dimensions;\r\n const containerMidWidth = parseInt(chartContainer.style('width')) / 2;\r\n const nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;\r\n const updatedStartingPoint = containerMidWidth - nodeHalfWidth;\r\n\r\n svg.attr('transform', `translate(${updatedStartingPoint + margin.left}, ${margin.top})`);\r\n }\r\n\r\n private getCenterTranslation(radius: number): string {\r\n return `translate(${radius}, ${radius})`;\r\n }\r\n\r\n private deg2rad(deg: number): number {\r\n return (deg * Math.PI) / 180;\r\n }\r\n\r\n private getRange(data: number[]): string {\r\n return `${data[0]} and ${data[data.length - 1]}`;\r\n }\r\n\r\n handleClick(range: string): void {\r\n this.clickEvent.emit(range);\r\n }\r\n\r\n handleHeaderMenuClick(id: string): void {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}","<div #guagecontainer class=\"lib-chart-wrapper\" \r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n \r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 \r\n [chartData]=\"chartData\" \r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\">\r\n </lib-chart-header-v2>\r\n </div>\r\n \r\n <lib-chart-header-v1 \r\n *ngIf=\"isHeaderVisible\"\r\n [title]=\"chartData.metaData.title\" \r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" \r\n [isria]=\"customChartConfiguration.isRia\" \r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" \r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\">\r\n </lib-chart-header-v1>\r\n \r\n <div #guagechartcontainer\r\n id=\"guagechartcontainer\"\r\n class=\"lib-chart-svg guagecontainer\"\r\n [style.height.%]=\"chartConfiguration.svgHeight\">\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-header-v3',\r\n templateUrl: './chart-header-v3.component.html',\r\n styleUrl: './chart-header-v3.component.less',\r\n})\r\nexport class ChartHeaderV3Component {\r\n @Input() chartData: any;\r\n @Input() chartConfiguration: any;\r\n @Output() compareByFilterSelection = new EventEmitter<any>();\r\n @Output() zoomInZoomOutClick = new EventEmitter<any>();\r\n\r\n isDD1Open: boolean = false;\r\n isDD2Open: boolean = false;\r\n isZoomedOut: boolean = true;\r\n\r\n isLegendVisible() {\r\n if (\r\n this.chartData &&\r\n this.chartData.metaData.colors &&\r\n Object.keys(this.chartData.metaData.colors).length > 1\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n handleDD1Click() {\r\n this.isDD1Open = true;\r\n this.isDD2Open = false;\r\n }\r\n handleDD2Click() {\r\n this.isDD2Open = true;\r\n this.isDD1Open = false;\r\n }\r\n handleCompareByFilterSelection(event) {\r\n this.compareByFilterSelection.emit(event);\r\n }\r\n isZoomOutSelected(isZoomOut, event) {\r\n this.isZoomedOut = isZoomOut; \r\n this.zoomInZoomOutClick.emit({ isZoomOut: this.isZoomedOut, event: event });\r\n }\r\n keepOrder = (a, b) => {\r\n return a;\r\n };\r\n}\r\n","<div class=\"lib-display-flex header-title-styles\" [ngClass]=\"\r\n !chartData.dropdownData2 &&\r\n !chartData.dropdownData1 &&\r\n chartData.data.length <= 8\r\n ? 'lib-justify-content-start'\r\n : 'lib-justify-content-space-between'\r\n \">\r\n <span class=\"legend-latest-holder\" *ngIf=\"\r\n chartData.data &&\r\n chartData.metaData.default_dept &&\r\n (chartConfiguration.isToggleVisible || chartData.metaData.isToggleVisible)\r\n \">\r\n <span *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"><span class=\"legends-latest\"\r\n *ngIf=\"chartData.metaData.default_dept == item.key\" [style.background-color]=\"item.value\"></span></span>\r\n <span class=\"marginRight-30 legend-style font-size-2\" *ngIf=\"chartData.metaData.default_dept\">\r\n Default Dept: {{ chartData.metaData.default_dept }}\r\n </span>\r\n <span *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"><span *ngIf=\"\r\n item.key != chartData.metaData.default_dept &&\r\n chartData.metaData.default_dept\r\n \" class=\"legends-latest\" [style.background-color]=\"item.value\"></span></span>\r\n <span class=\"legend-style font-size-2\" *ngIf=\"isLegendVisible() && chartData.metaData.default_dept\">Cross Train\r\n Dept</span>\r\n </span>\r\n <span class=\"legend-latest-holder legend-width\"\r\n [ngClass]=\"chartData.metaData.colorLegendVisibleOnTopLeft ? '' : 'invisible'\"\r\n *ngIf=\"chartData.data && !chartData.metaData.default_dept\">\r\n <span class=\"lib-display-flex lib-align-items-center\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"><span class=\"legends-latest\"\r\n [style.background-color]=\"item.value\"></span>\r\n <span class=\"marginRight-20 legend-style font-size-1 lib-white-space-nowrap\">\r\n {{ item.key }}\r\n </span>\r\n </span>\r\n </span>\r\n <span class=\"display-flex\">\r\n <!-- <span *ngIf=\"\r\n chartData.dropdownData1 &&\r\n chartData.metaData.breadcrumbLength &&\r\n chartData.metaData.breadcrumbLength == 1\r\n \">\r\n <lib-dropdown [dropdownData]=\"chartData.dropdownData1\" [isDropdownOpen]=\"this.isDD1Open\"\r\n (ddClicked)=\"handleDD1Click()\" (selectedFromDropdown)=\"handleCompareByFilterSelection($event)\"></lib-dropdown>\r\n </span>\r\n <span *ngIf=\"\r\n chartData.dropdownData2 &&\r\n chartData.metaData.breadcrumbLength &&\r\n chartData.metaData.breadcrumbLength == 1\r\n \">\r\n <lib-dropdown [dropdownData]=\"chartData.dropdownData2\" [isDropdownOpen]=\"this.isDD2Open\"\r\n (ddClicked)=\"handleDD2Click()\" (selectedFromDropdown)=\"handleCompareByFilterSelection($event)\"\r\n [isCheckboxVisible]=\"chartData.metaData.isCheckboxVisible\"\r\n [dropdownHeaderName]=\"chartData.metaData.dropdownHeaderName\"></lib-dropdown>\r\n </span> -->\r\n <span class=\"zoomIcons-holder\" *ngIf=\"chartData.data && chartData.data.length > 8\">\r\n <span class=\"zoomIcons\" title=\"Zoom In\" [ngClass]=\"!isZoomedOut ? 'zoom-active' : 'zoom-inactive'\"\r\n (click)=\"isZoomOutSelected(false, $event)\">\r\n <i class=\"fa fa-search-plus\"></i>\r\n </span>\r\n <span class=\"zoomIcons\" title=\"Zoom Out\" [ngClass]=\"isZoomedOut ? 'zoom-active' : 'zoom-inactive'\"\r\n (click)=\"isZoomOutSelected(true, $event)\">\r\n <i class=\"fa fa-search-minus\"></i>\r\n </span>\r\n </span>\r\n </span>\r\n</div>","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\ninterface ChartMetaData {\r\n colors: { [key: string]: string };\r\n colorAboveTarget?: { [key: string]: string };\r\n keyList: string[];\r\n hasDrillDown?: boolean;\r\n barWithoutClick?: string[];\r\n dataType?: string;\r\n yLabel?: string;\r\n xLabel?: string;\r\n lineyLabel?: string;\r\n}\r\n\r\ninterface TargetLineData {\r\n target: number;\r\n color: string;\r\n targetName?: string;\r\n}\r\n\r\ninterface ChartConfiguration {\r\n margin: { top: number; right: number; bottom: number; left: number };\r\n labelFormatter: (value: any) => string;\r\n svgHeight: number;\r\n numberOfYTicks: number;\r\n legendJustified: boolean;\r\n yLineAxisLabelFomatter: (value: any) => string;\r\n yAxisLabelFomatter: (value: any) => string;\r\n lineGraphColor: string;\r\n showLineChartAxis: boolean;\r\n showValues: boolean;\r\n headerMenuOptions: any[];\r\n xAxisGrid?: boolean;\r\n yAxisGrid: boolean;\r\n legendVisible: boolean;\r\n isHeaderVisible?: boolean;\r\n isTransparentBackground?: boolean;\r\n isMultiChartGridLine?: boolean;\r\n isFullScreen?: boolean;\r\n customYscale?: number;\r\n textsOnBar?: boolean;\r\n isXaxisLabelHidden?: boolean;\r\n isYaxisLabelHidden: boolean;\r\n isYaxisHidden?: boolean;\r\n isYaxisDashed?: boolean;\r\n textFormatter?: string;\r\n isNoAlternateXaxisText?: boolean;\r\n isXgridBetweenLabels?: boolean;\r\n backgroundColor: string;\r\n hideLegendOnTop: boolean;\r\n isXaxisColor: string;\r\n labelOverlapMinorFix: boolean;\r\n noHoverEffect: boolean;\r\n noHoverDisplayData: boolean;\r\n showXaxisTop: boolean;\r\n displayYaxisLabels?: boolean;\r\n xLabelsOnSameLine?: boolean;\r\n textAlwaysHorizontal?: boolean;\r\n legendAtTopRight?: boolean;\r\n isDrilldownChart?: boolean;\r\n displayTitleOnTop?: boolean;\r\n isToggleVisible?: boolean;\r\n isTitleHidden?: boolean;\r\n isDisplayBarDetailsAtBottom?: boolean;\r\n howmanyBarDetailsToDisplay: number;\r\n barVauleColor?: string;\r\n yAxisCustomTextStyles?: string;\r\n yAxisCustomlabelStyles?: string;\r\n xAxisCustomlabelStyles?: string;\r\n isRia?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-group-chart',\r\n templateUrl: './group-chart.component.html',\r\n styleUrls: ['./group-chart.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class GroupChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild('groupchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('groupcontainer', { static: true })\r\n groupcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n isHeaderVisible = true;\r\n legendVisible = true;\r\n isTransparentBackground = false;\r\n chartConfiguration: ChartConfiguration = {} as ChartConfiguration;\r\n objectKeys = Object.keys;\r\n\r\nprivate readonly defaultConfiguration: Partial<ChartConfiguration> = {\r\n \"margin\": {\r\n \"top\": 30,\r\n \"left\": 110,\r\n \"right\": 40,\r\n \"bottom\": 50\r\n },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n svgHeight: 70,\r\n numberOfYTicks: 5,\r\n legendJustified: true,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showValues: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n yAxisGrid: true,\r\n legendVisible: true,\r\n isYaxisLabelHidden: false,\r\n backgroundColor: '#FFFFFF',\r\n hideLegendOnTop: true,\r\n isXaxisColor: '#999999',\r\n labelOverlapMinorFix: true,\r\n noHoverEffect: true,\r\n noHoverDisplayData: true,\r\n showXaxisTop: true,\r\n howmanyBarDetailsToDisplay: 0,\r\n };\r\n\r\n uniqueId: any = this.getUniqueId();\r\n isZoomedOut = false;\r\n isDD1Open = false;\r\n isDD2Open = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n );\r\n }\r\n\r\n onResized(event: ResizedEvent): void {\r\n setTimeout(() => {\r\n d3.select('#' + this.uniqueId).remove();\r\n this.initializegroupChart();\r\n }, 10);\r\n }\r\n\r\n isZoomOutSelected(isZoomOut: boolean, event: any): void {\r\n this.isZoomedOut = isZoomOut;\r\n this.onResized(event);\r\n }\r\n\r\n handleZoominZoomoutClick({ isZoomOut, event }): void {\r\n this.isZoomOutSelected(isZoomOut, event);\r\n }\r\n\r\n isLegendVisible(): boolean {\r\n return !!(\r\n this.chartData?.metaData?.colors &&\r\n Object.keys(this.chartData.metaData.colors).length > 1\r\n );\r\n }\r\n\r\n keepOrder = (a, b) => a;\r\n\r\n initializegroupChart(): void {\r\n this.mergeConfigurations();\r\n const chartContext = this.prepareChartData();\r\n const dimensions = this.calculateDimensions(chartContext);\r\n const scales = this.createScales(chartContext, dimensions);\r\n const svgElements = this.createSVGStructure(dimensions);\r\n\r\n this.renderAxes(svgElements, scales, chartContext, dimensions);\r\n this.renderBars(svgElements.svg, chartContext, scales, dimensions);\r\n this.renderLabels(svgElements, scales, chartContext, dimensions);\r\n this.renderTargetLine(svgElements, scales, chartContext, dimensions);\r\n this.renderLineGraph(svgElements.svg, chartContext, scales);\r\n }\r\n\r\n private mergeConfigurations(): void {\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n if (this.chartConfiguration.legendVisible !== undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\r\n if (this.chartConfiguration.isTransparentBackground !== undefined) {\r\n this.isTransparentBackground = this.chartConfiguration.isTransparentBackground;\r\n }\r\n }\r\n\r\n private prepareChartData() {\r\n const data = this.chartData.data;\r\n const metaData: ChartMetaData = this.chartData.metaData;\r\n const lineData = this.chartData.lineData;\r\n\r\n if (!metaData.colorAboveTarget) {\r\n metaData.colorAboveTarget = metaData.colors;\r\n }\r\n\r\n return {\r\n data,\r\n metaData,\r\n lineData,\r\n keyList: metaData.keyList,\r\n colorMap: metaData.colors,\r\n isRia: this.customChartConfiguration?.isRia || false,\r\n };\r\n }\r\n\r\n private calculateDimensions(chartContext: any) {\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const verticalstackedcontainer = d3.select(this.groupcontainerElt.nativeElement);\r\n const margin = this.chartConfiguration.margin;\r\n\r\n let width = this.calculateWidth(chartContainer, margin);\r\n let height = this.calculateHeight(verticalstackedcontainer, margin);\r\n\r\n const minHeight = 155;\r\n height = Math.max(height, minHeight);\r\n\r\n return { width, height, margin, chartContainer, verticalstackedcontainer };\r\n }\r\n\r\n private calculateWidth(chartContainer: any, margin: any): number {\r\n const containerWidth = parseInt(chartContainer.style('width'));\r\n const leftSvgWidth = margin.left + 20;\r\n const rightSvgWidth = 60;\r\n const baseWidth = containerWidth - leftSvgWidth - rightSvgWidth;\r\n const dataLength = this.chartData.data.length;\r\n let width = baseWidth;\r\n\r\n if (dataLength > 30 && this.isZoomedOut) {\r\n const multiplier = this.chartData.dropdownData1 ? 60 : 40;\r\n width = Math.max(width, dataLength * multiplier);\r\n }\r\n\r\n if (this.chartData.dropdownData2 && width < dataLength * 120 && this.isZoomedOut) {\r\n width = dataLength * 120;\r\n }\r\n\r\n if (dataLength > 8 && !this.isZoomedOut) {\r\n if (this.chartData.dropdownData2 && width < dataLength * 250) {\r\n width = dataLength * 250;\r\n } else {\r\n width = dataLength * 160;\r\n }\r\n }\r\n\r\n return width;\r\n }\r\n\r\nprivate calculateHeight(verticalstackedcontainer: any, margin: any): number {\r\n const containerHeight = parseInt(verticalstackedcontainer.style('height')) || 400;\r\n let height;\r\n\r\n if (this.chartConfiguration.isFullScreen) {\r\n height = this.chartConfiguration.svgHeight || containerHeight;\r\n } else {\r\n // FIXED: Use percentage of container height more reliably\r\n const svgHeightPercentage = this.chartConfiguration.svgHeight || 70;\r\n height = (containerHeight * svgHeightPercentage) / 100;\r\n }\r\n\r\n // FIXED: Apply margin adjustments consistently\r\n height = height - margin.top - margin.bottom;\r\n\r\n // FIXED: Additional adjustments for headers\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n height -= 130;\r\n } else if (this.isHeaderVisible) {\r\n height -= 100;\r\n }\r\n\r\n // FIXED: Add the extra 50px you wanted\r\n height += 50;\r\n\r\n return Math.max(height, 150); // Ensure minimum height\r\n}\r\n\r\nprivate createScales(chartContext: any, dimensions: any) {\r\n const { data, metaData, lineData, keyList } = chartContext;\r\n const { width, height, margin } = dimensions;\r\n const leftAndRightSpaces = 50;\r\n const rightSvgWidth = 60;\r\n\r\n const groups = d3.map(data, (d) => d.name).keys();\r\n\r\n let x: any;\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n x = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .align(0.5)\r\n .padding(0.5)\r\n .domain(data.map((d: any) => d.name.toLowerCase()));\r\n } else {\r\n x = d3\r\n .scaleBand()\r\n .domain(groups)\r\n .range([leftAndRightSpaces, width - rightSvgWidth - leftAndRightSpaces])\r\n .padding(0.3);\r\n }\r\n\r\n const xScaleFromOrigin = d3.scaleBand().domain(groups).range([0, width - rightSvgWidth]);\r\n\r\n const xSubgroup = d3.scaleBand().domain(keyList).range([0, x.bandwidth()]);\r\n\r\n // FIXED: Improved max value calculation that considers height\r\n const maxValue = this.calculateMaxValue(data, keyList, height);\r\n const y = d3.scaleLinear().domain([0, maxValue]).nice().rangeRound([height, 0]);\r\n\r\n let lineYscale = null;\r\n if (lineData) {\r\n lineYscale = this.createLineYScale(lineData, height);\r\n }\r\n\r\n const color = d3.scaleOrdinal().domain(keyList).range(Object.values(metaData.colors));\r\n\r\n return {\r\n x,\r\n xScaleFromOrigin,\r\n xSubgroup,\r\n y,\r\n lineYscale,\r\n color,\r\n leftAndRightSpaces,\r\n rightSvgWidth,\r\n };\r\n}\r\n\r\nprivate calculateMaxValue(data: any[], keyList: string[], height: number): number {\r\n let maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key])) || 0;\r\n\r\n // FIXED: Better handling for zero values\r\n if (maxValue === 0) {\r\n maxValue = this.chartData.targetLineData\r\n ? this.chartData.targetLineData.target + 20\r\n : 100;\r\n }\r\n\r\n // FIXED: Scale based on available height\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue *= this.chartConfiguration.customYscale;\r\n } else if (height > 400) {\r\n // Auto-scale for larger heights\r\n maxValue *= 1.2;\r\n }\r\n\r\n if (this.chartData.targetLineData && maxValue < this.chartData.targetLineData.target) {\r\n const target = this.chartData.targetLineData.target;\r\n maxValue = maxValue < 10 && target < 10 ? target + 3 : target + (target * 0.2); // 20% buffer\r\n }\r\n\r\n return maxValue;\r\n}\r\n\r\n private createLineYScale(lineData: any[], height: number) {\r\n let maxLineValue = d3.max(lineData, (d) => +d.value) || 0;\r\n maxLineValue *= this.chartConfiguration.customYscale || 1;\r\n\r\n let minLineValue = d3.min(lineData, (d) => +d.value) || 0;\r\n if (maxLineValue > 0) minLineValue -= 3;\r\n if (minLineValue > 0) minLineValue = 0;\r\n\r\n return d3.scaleLinear().domain([minLineValue, maxLineValue]).range([height, minLineValue]);\r\n }\r\n\r\nprivate createSVGStructure(dimensions: any) {\r\n const { chartContainer, height, margin } = dimensions;\r\n const rightSvgWidth = 60;\r\n \r\n // FIXED: Calculate total height including margins and extra space\r\n const totalHeight = height + margin.top + margin.bottom; // Added extra 60px\r\n\r\n const outerContainer = chartContainer\r\n .append('div')\r\n .attr('id', this.uniqueId)\r\n .attr('class', 'outer-container')\r\n .style('width', '100%')\r\n .style('height', `${totalHeight}px`)\r\n .style('overflow', 'hidden')\r\n .style('padding-left', '0') // Remove left padding from outer container\r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left', '0') // Remove left margin\r\n .style('position', 'relative');\r\n\r\n const leftSvgWidth = margin.left + 20;\r\n\r\n // FIXED: Y-axis SVG with proper height\r\n const svgYAxisLeft = outerContainer\r\n .append('svg')\r\n .attr('width', leftSvgWidth)\r\n .attr('height', totalHeight)\r\n .style('position', 'absolute')\r\n .style('left', '0')\r\n .style('top', '0')\r\n .style('z-index', 2) // Increased z-index to ensure it stays above\r\n .append('g')\r\n .attr('transform', `translate(${margin.left + 5},${margin.top})`);\r\n\r\n const svgYAxisRight = outerContainer\r\n .append('svg')\r\n .attr('width', rightSvgWidth)\r\n .attr('height', totalHeight)\r\n .style('position', 'absolute')\r\n .style('right', '40px')\r\n .style('top', '0')\r\n .style('z-index', 2) // Increased z-index\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n // FIXED: Inner container starts AFTER the y-axis labels\r\nconst innerContainer = outerContainer\r\n .append('div')\r\n .attr('class', 'inner-container')\r\n .style('width', `calc(100% - ${leftSvgWidth}px)`)\r\n .style('height', `${totalHeight}px`)\r\n .style('margin-left', `${leftSvgWidth - 15}px`) // Good adjustment for the 15px offset\r\n .style('overflow-x', 'auto')\r\n .style('overflow-y', 'hidden')\r\n .style('position', 'relative'); // Add this for better positioning context\r\n\r\n // FIXED: Main SVG with increased height and proper positioning\r\n const svg = innerContainer\r\n .append('svg')\r\n .attr('width', dimensions.width)\r\n .attr('height', totalHeight)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n return { outerContainer, svgYAxisLeft, svgYAxisRight, svg, totalHeight };\r\n}\r\n\r\n private renderAxes(svgElements: any, scales: any, chartContext: any, dimensions: any): void {\r\n const { svg, svgYAxisLeft, svgYAxisRight } = svgElements;\r\n const { x, xScaleFromOrigin, y, lineYscale } = scales;\r\n const { height } = dimensions;\r\n const { metaData, lineData, keyList } = chartContext;\r\n\r\n this.renderXAxis(svg, x, xScaleFromOrigin, height, chartContext, keyList);\r\n this.renderYAxis(svg, svgYAxisLeft, svgYAxisRight, y, dimensions);\r\n\r\n if (this.chartConfiguration.yAxisGrid) {\r\n this.renderYAxisGrid(svg, y, dimensions.width);\r\n }\r\n\r\n if (this.chartConfiguration.isXgridBetweenLabels) {\r\n this.renderXAxisGrid(svg, x, height);\r\n }\r\n\r\n if (lineData && this.chartConfiguration.showLineChartAxis && lineYscale) {\r\n this.renderLineYAxis(svgYAxisRight, lineYscale);\r\n }\r\n }\r\n\r\nprivate renderXAxis(\r\n svg: any,\r\n x: any,\r\n xScaleFromOrigin: any,\r\n height: number,\r\n chartContext: any,\r\n keyList: string[]\r\n ): void {\r\n const { data, metaData } = chartContext;\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n const xAxis = svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${height})`)\r\n .call(d3.axisBottom(x).tickSize(0));\r\n\r\n // FIXED: Show X-axis line\r\n xAxis\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color, #000000)')\r\n .style('stroke-width', '1px')\r\n .style('display', 'block');\r\n\r\n xAxis.selectAll('g.tick line').remove();\r\n\r\n const textClass = 'lib-xaxis-labels-texts-drilldown';\r\n const textSelection = xAxis\r\n .selectAll('g.tick text')\r\n .attr('class', textClass)\r\n .style('fill', 'var(--chart-text-color, #666666)')\r\n .style('font-size', '11px');\r\n } else {\r\n this.renderMultiChartXAxis(svg, x, height, data, metaData);\r\n }\r\n\r\n if (this.chartConfiguration.xLabelsOnSameLine) {\r\n this.renderXLabelsOnSameLine(svg, data, metaData);\r\n }\r\n\r\n // Bottom x-axis\r\n const xAxis2 = svg\r\n .append('g')\r\n .attr('class', 'x2 axis2')\r\n .attr('transform', `translate(0,${height})`)\r\n .style('color', '#000')\r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0));\r\n\r\n xAxis2\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color, #000000)')\r\n .style('stroke-width', '1px')\r\n .attr('fill', 'none');\r\n\r\n svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\r\n\r\n if (this.isZoomedOut) {\r\n svg.selectAll('.lib-xaxis-labels-texts-drilldown').attr('class', 'lib-display-hidden');\r\n }\r\n }\r\n\r\n private renderMultiChartXAxis(svg: any, x: any, height: number, data: any[], metaData: any): void {\r\n let alternate_text = false;\r\n const short_tick_length_bg = 5;\r\n const long_tick_length_bg = 30;\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${height})`)\r\n .call(d3.axisBottom(x).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').attr('y2', () => {\r\n if (alternate_text && !this.chartConfiguration.isNoAlternateXaxisText) {\r\n alternate_text = false;\r\n return long_tick_length_bg - 7;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg - 4;\r\n }\r\n });\r\n\r\n alternate_text = false;\r\n svg.selectAll('g.x1.axis1 g.tick text').attr('class', 'lib-xaxis-labels-texts-weeklycharts').attr('y', () => {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length_bg;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg;\r\n }\r\n });\r\n }\r\n\r\n private renderXLabelsOnSameLine(svg: any, data: any[], metaData: any): void {\r\n const short_tick_length_bg = 5;\r\n const long_tick_length_bg = 30;\r\n\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', short_tick_length_bg)\r\n .text((d) => {\r\n const isValueToBeIgnored = data.some(\r\n (indiv: any) =>\r\n indiv.name.toLowerCase() === d.trim().toLowerCase() &&\r\n indiv[metaData.keyList[0]] === -1\r\n );\r\n if (isValueToBeIgnored) return '';\r\n\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(0, d.indexOf(' ')).toLowerCase();\r\n }\r\n return d.toLowerCase();\r\n });\r\n\r\n svg\r\n .selectAll('g.x1.axis1 g.tick')\r\n .append('text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', long_tick_length_bg)\r\n .attr('fill', 'currentColor')\r\n .text((d) => {\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(d.indexOf(' ')).toLowerCase();\r\n }\r\n return '';\r\n });\r\n }\r\n\r\n private renderYAxis(svg: any, svgYAxisLeft: any, svgYAxisRight: any, y: any, dimensions: any): void {\r\n // Main Y-axis in chart area (hidden)\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n // FIXED: Left Y-axis with visible line\r\n const yAxisLeft = d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickFormat(this.chartConfiguration.yAxisLabelFomatter);\r\n\r\n const yAxisGroup = svgYAxisLeft\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxisLeft);\r\n\r\n // FIXED: Show Y-axis vertical line\r\n yAxisGroup\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color, #000000)')\r\n .style('stroke-width', '1px')\r\n .style('display', 'block');\r\n\r\n // FIXED: Position Y-axis values with proper spacing\r\n yAxisGroup\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color, #666666)')\r\n .style('font-size', '11px')\r\n .style('font-weight', '400')\r\n .attr('x', -6) // FIXED: Small gap from axis line\r\n .attr('text-anchor', 'end')\r\n .attr('dy', '0.32em');\r\n\r\n // Right Y-axis (hidden)\r\n svgYAxisRight\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n this.applyAxisVisibilitySettings();\r\n }\r\n\r\nprivate applyAxisVisibilitySettings(): void {\r\n if (this.chartConfiguration.isXaxisLabelHidden) {\r\n d3.selectAll('g.lib-line-x-axis-text > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n if (this.chartConfiguration.isYaxisLabelHidden) {\r\n d3.selectAll('.yaxis-dashed > g > text').attr('class', 'lib-display-hidden');\r\n // FIXED: Don't hide the Y-axis label element\r\n d3.selectAll('.lib-ylabel-visible').style('display', 'block');\r\n }\r\n if (this.chartConfiguration.isYaxisHidden) {\r\n d3.selectAll('.yaxis-dashed').attr('class', 'lib-display-hidden');\r\n // FIXED: Keep Y-axis label visible\r\n d3.selectAll('.lib-ylabel-visible').style('display', 'block');\r\n }\r\n if (this.chartConfiguration.isYaxisDashed) {\r\n d3.selectAll('.yaxis-dashed .domain').style('stroke-dasharray', '5 5').style('color', '#999999');\r\n }\r\n }\r\n\r\nprivate renderYAxisGrid(svg: any, y: any, width: number): void {\r\n svg\r\n .append('g')\r\n .attr('class', 'y-axis-grid')\r\n .call(\r\n d3.axisLeft(y)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat('')\r\n )\r\n .style('color', '#535353ff') // FIXED: Lighter grid\r\n .style('opacity', '0.7')\r\n .style('stroke-dasharray', 'none')\r\n .call((g) => g.select('.domain').remove())\r\n .selectAll('line')\r\n .style('stroke-width', '0.5px');\r\n }\r\n\r\n private renderXAxisGrid(svg: any, x: any, height: number): void {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid')\r\n .attr('transform', `translate(${x.bandwidth() / 2},${height})`)\r\n .call(d3.axisBottom(x).tickSize(-height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-grid-color, #999999)')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n private renderLineYAxis(svgYAxisRight: any, lineYscale: any): void {\r\n const yLineAxis = d3\r\n .axisRight(lineYscale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.yLineAxisLabelFomatter);\r\n\r\n svgYAxisRight\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text1')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yLineAxis);\r\n }\r\n\r\n private renderBars(svg: any, chartContext: any, scales: any, dimensions: any): void {\r\n const { data, metaData, keyList, isRia } = chartContext;\r\n const { x, xSubgroup, y } = scales;\r\n const { height } = dimensions;\r\n\r\n const state = svg\r\n .append('g')\r\n .selectAll('.state')\r\n .data(data)\r\n .enter()\r\n .append('g')\r\n .attr('transform', (d) => `translate(${x(d.name)},0)`);\r\n\r\n state\r\n .selectAll('rect')\r\n .data((d) => this.prepareBarData(d, keyList))\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', (d) => this.handleBarClick(d, metaData))\r\n .attr('x', (d) => {\r\n const barWidth = this.getBarWidth(d, data, x, xSubgroup);\r\n const bandWidth = x.bandwidth();\r\n return (bandWidth - barWidth) / 2;\r\n })\r\n .attr('y', (d) => {\r\n const value = d.value === -1 ? 0 : d.value;\r\n return y(value);\r\n })\r\n .attr('width', (d) => this.getBarWidth(d, data, x, xSubgroup))\r\n .attr('height', (d) => {\r\n const value = d.value === -1 ? 0 : d.value;\r\n return height - y(value);\r\n })\r\n .style('cursor', (d) => (metaData.hasDrillDown && !isRia ? 'pointer' : 'default'))\r\n .attr('fill', (d) => this.getBarColor(d, metaData));\r\n\r\n if (!isRia && (this.chartConfiguration.displayTitleOnTop || (!this.chartConfiguration.textsOnBar && !this.chartConfiguration.displayTitleOnTop))) {\r\n state.selectAll('rect').on('mouseout', (d, i) => this.handleMouseOut(svg)).on('mouseover', (d, i) => this.handleMouseOver(svg, d, data, metaData, x, y, scales.leftAndRightSpaces));\r\n }\r\n\r\n if (this.chartConfiguration.textsOnBar && !this.isZoomedOut) {\r\n this.renderBarTexts(state, data, metaData, keyList, x, xSubgroup, y, isRia, svg);\r\n }\r\n\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n }\r\n\r\n private prepareBarData(d: any, keyList: string[]): any[] {\r\n return keyList.map((key) => ({ key, value: d[key], name: d.name }));\r\n }\r\n\r\n private handleBarClick(d: any, metaData: any): void {\r\n if (d.key === 'Target') return;\r\n if (\r\n !metaData.barWithoutClick?.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) && !metaData.barWithoutClick.includes(d?.key))\r\n ) {\r\n this.handleClick(d);\r\n }\r\n }\r\n\r\n private calculateDrilldownBarX(d: any, data: any[], x: any): number {\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n return tempScale ? tempScale(d.key) : 0;\r\n }\r\n\r\n private adjustDrilldownScale(tempScale: any, data: any[], x: any): any {\r\n if (this.chartData.data.length === 1) {\r\n const keysLength = Object.keys(this.chartData.data[0]).length;\r\n const offset = keysLength === 2 ? 200 : 300;\r\n tempScale.range([\r\n 0 + (x.bandwidth() - offset) / 2,\r\n x.bandwidth() - (x.bandwidth() - offset) / 2,\r\n ]);\r\n } else {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 125) / 2,\r\n x.bandwidth() - (x.bandwidth() - 125) / 2,\r\n ]);\r\n }\r\n return tempScale;\r\n }\r\n\r\n private getBarWidth(d: any, data: any[], x: any, xSubgroup: any): number {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n return tempScale ? tempScale.bandwidth() : 0;\r\n }\r\n return xSubgroup.bandwidth();\r\n }\r\n\r\n private getBarHeight(d: any, y: any, height: number): number {\r\n if (d.value === -1) return height - y(0);\r\n if (d.value) return height - y(d.value);\r\n return height - y(0);\r\n }\r\n\r\n private getBarColor(d: any, metaData: any): string {\r\n if (\r\n d.value &&\r\n this.chartData.targetLineData &&\r\n d.value >= parseInt(this.chartData.targetLineData.target) &&\r\n this.chartData.metaData.colorAboveTarget\r\n ) {\r\n return this.chartData.metaData.colorAboveTarget[d.key];\r\n }\r\n return this.chartData.metaData.colors[d.key];\r\n }\r\n\r\n private renderBarTexts(\r\n state: any,\r\n data: any[],\r\n metaData: any,\r\n keyList: string[],\r\n x: any,\r\n xSubgroup: any,\r\n y: any,\r\n isRia: boolean,\r\n svg: any\r\n ): void {\r\n state\r\n .selectAll('text')\r\n .data((d) => this.prepareBarData(d, keyList))\r\n .enter()\r\n .append('text')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text((d) => this.getBarTextLabel(d))\r\n .style('fill', '#000')\r\n .style('font-weight', 'bold')\r\n .style('font-size', () => this.getBarTextFontSize())\r\n .attr('transform', (d) => this.getBarTextTransform(d, data, x, xSubgroup, y))\r\n .on('click', (d) => this.handleBarClick(d, metaData));\r\n\r\n if (!isRia) {\r\n state\r\n .selectAll('.lib-data-labels-weeklycharts')\r\n .on('mouseout', (d, i) => this.handleMouseOut(svg))\r\n .on('mouseover', (d, i) =>\r\n this.handleMouseOver(svg, d, data, metaData, x, y, x.bandwidth())\r\n );\r\n }\r\n }\r\n\r\n private getBarTextLabel(d: any): string {\r\n if (!d.key || !d.value) return '';\r\n return d.key.length > 20 ? d.key.substring(0, 17) + '...' : d.key;\r\n }\r\n\r\n private getBarTextFontSize(): string {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) return '18px';\r\n if (window.innerWidth < 1400) return '10px';\r\n return '14px';\r\n }\r\n return '14px';\r\n }\r\n\r\n private getBarTextTransform(d: any, data: any[], x: any, xSubgroup: any, y: any): string {\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n\r\n if (this.chartConfiguration.textAlwaysHorizontal) {\r\n return `translate(${xSubgroup(d.key)},${y(d.value) - 3})`;\r\n }\r\n\r\n if (tempScale && !isNaN(tempScale(d.key))) {\r\n return `translate(${tempScale(d.key) + tempScale.bandwidth() * 0.55},${y(0) - 10}) rotate(270)`;\r\n }\r\n return 'translate(0,0)';\r\n }\r\n\r\n private handleMouseOver(\r\n svg: any,\r\n d: any,\r\n data: any[],\r\n metaData: any,\r\n x: any,\r\n y: any,\r\n leftAndRightSpaces: number\r\n ): void {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n\r\n const foreignObject = svg\r\n .append('foreignObject')\r\n .attr('x', () => this.calculateTooltipX(d, x, tempScale, metaData, leftAndRightSpaces))\r\n .attr('y', () => y(d.value) - 43)\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('width', () => this.calculateTooltipWidth(tempScale, metaData, leftAndRightSpaces))\r\n .attr('height', 40);\r\n\r\n foreignObject\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(() => this.getTooltipHTML(d, metaData));\r\n }\r\n\r\n private calculateTooltipX(\r\n d: any,\r\n x: any,\r\n tempScale: any,\r\n metaData: any,\r\n leftAndRightSpaces: number\r\n ): number {\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return x(d.name) + tempScale(d.key) + tempScale.bandwidth() / 2 - 90;\r\n }\r\n return (\r\n x(d.name) +\r\n tempScale(d.key) -\r\n (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 +\r\n tempScale.bandwidth() / 2\r\n );\r\n }\r\n return (\r\n x(d.name) +\r\n tempScale(d.key) -\r\n (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 +\r\n tempScale.bandwidth() / 2\r\n );\r\n }\r\n\r\n private calculateTooltipWidth(tempScale: any, metaData: any, leftAndRightSpaces: number): string {\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return '180px';\r\n }\r\n return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n }\r\n return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n }\r\n\r\n private getTooltipHTML(d: any, metaData: any): string {\r\n const dataType = metaData.dataType || '';\r\n if (!this.isZoomedOut) {\r\n return `<span class=\"title-bar-name\">${d.name}</span><span class=\"title-bar-value\"><span>${d.value}</span>${dataType}</span>`;\r\n } else {\r\n const tempKey = d.name.length <= 8 ? d.name : d.name.substring(0, 5) + '...';\r\n return `<span class=\"title-bar-name\">${tempKey}:${d.value}${dataType}</span><span class=\"title-bar-value\">${d.name}</span>`;\r\n }\r\n }\r\n\r\n private handleMouseOut(svg: any): void {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n\r\n private renderLabels(svgElements: any, scales: any, chartContext: any, dimensions: any): void {\r\n const { svg, svgYAxisLeft, svgYAxisRight } = svgElements;\r\n const { metaData } = chartContext;\r\n const { width, height, margin } = dimensions;\r\n\r\n if (metaData.yLabel) {\r\n this.renderYAxisLabel(svgYAxisLeft, metaData.yLabel, height, margin);\r\n }\r\n\r\n if (metaData.xLabel) {\r\n this.renderXAxisLabel(svg, metaData.xLabel, width, height, margin);\r\n }\r\n\r\n if (metaData.lineyLabel) {\r\n this.renderLineYAxisLabel(svgYAxisRight, metaData.lineyLabel);\r\n }\r\n }\r\n\r\nprivate renderYAxisLabel(svgYAxisLeft: any, yLabel: string, height: number, margin: any): void {\r\n // FIXED: Proper Y-axis label with correct positioning\r\n svgYAxisLeft\r\n .append('text')\r\n .attr('class', 'lib-axis-group-label lib-ylabel-visible')\r\n .attr('style', this.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', -margin.left)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', '13px')\r\n .style('fill', 'var(--chart-text-color, #666666)');\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n svgYAxisLeft.selectAll('.lib-axis-group-label').text(yLabel);\r\n } else {\r\n svgYAxisLeft\r\n .selectAll('.lib-axis-group-label')\r\n .attr('class', 'lib-ylabel-weeklyCharts lib-ylabel-visible')\r\n .text(yLabel.toLowerCase());\r\n }\r\n }\r\n\r\nprivate renderXAxisLabel(svg: any, xLabel: string, width: number, height: number, margin: any): void {\r\n const isAcronym = this.isAcronym(xLabel.replace(/[^A-Za-z]/g, ''));\r\n\r\n let baseClass = 'lib-axis-group-label';\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n baseClass += ' lib-xlabel-drilldowncharts';\r\n } else if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n baseClass += ' lib-xlabel-weeklyCharts';\r\n } else {\r\n baseClass += ' lib-axis-waterfall-label';\r\n }\r\n\r\n svg\r\n .append('text')\r\n .attr('class', baseClass)\r\n .attr('style', this.chartConfiguration.xAxisCustomlabelStyles)\r\n // FIXED: Adjusted for reduced bottom margin\r\n .attr('transform', `translate(${width / 2},${height + 32})`)\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color, #666666)')\r\n .style('font-size', '13px')\r\n .text(isAcronym ? xLabel.toUpperCase() : xLabel.toLowerCase())\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize');\r\n }\r\n\r\n private isAcronym(label: string): boolean {\r\n return (\r\n (label.length <= 4 && /^[A-Z]+$/.test(label)) ||\r\n (label === label.toUpperCase() && /[A-Z]/.test(label))\r\n );\r\n }\r\n\r\n private renderLineYAxisLabel(svgYAxisRight: any, lineyLabel: string): void {\r\n svgYAxisRight\r\n .append('text')\r\n .attr('class', 'lib-axis-group-label lib-line-axis')\r\n .attr('style', this.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'translate(0,0) rotate(90)')\r\n .attr('y', -100)\r\n .attr('x', 100)\r\n .attr('dy', '5em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', 'smaller')\r\n .text(lineyLabel);\r\n }\r\n\r\n private renderTargetLine(svgElements: any, scales: any, chartContext: any, dimensions: any): void {\r\n if (!this.chartData.targetLineData) return;\r\n\r\n const { svg, svgYAxisRight } = svgElements;\r\n const { y } = scales;\r\n const { width } = dimensions;\r\n const { metaData } = chartContext;\r\n const targetData: TargetLineData = this.chartData.targetLineData;\r\n\r\n const yZero = y(targetData.target);\r\n\r\n svg\r\n .append('line')\r\n .attr('x1', 0)\r\n .attr('x2', width)\r\n .attr('y1', yZero)\r\n .attr('y2', yZero)\r\n .style('stroke-dasharray', '5 5')\r\n .style('stroke', targetData.color);\r\n\r\n const rightSvgWidth = 60;\r\n svgYAxisRight\r\n .append('foreignObject')\r\n .attr('transform', `translate(0,${yZero - 30})`)\r\n .attr('width', rightSvgWidth)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'target-display')\r\n .style('color', 'var(--chart-text-color)')\r\n .html(() => {\r\n const dataType = metaData.dataType || '';\r\n const targetName = targetData.targetName || 'target';\r\n return `<div>${targetName}</div><div>${targetData.target}${dataType}</div>`;\r\n });\r\n }\r\n\r\n private renderLineGraph(svg: any, chartContext: any, scales: any): void {\r\n const { lineData, metaData } = chartContext;\r\n if (!lineData) return;\r\n\r\n const { x, lineYscale } = scales;\r\n\r\n svg\r\n .append('path')\r\n .datum(lineData)\r\n .attr('fill', 'none')\r\n .attr('stroke', this.chartConfiguration.lineGraphColor)\r\n .attr('stroke-width', 1.5)\r\n .attr(\r\n 'd',\r\n d3\r\n .line()\r\n .x((d: any) => x(d.name) + x.bandwidth() / 2)\r\n .y((d: any) => lineYscale(d.value))\r\n );\r\n\r\n const dot = svg\r\n .selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', (d) => this.handleBarClick(d, metaData));\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', this.chartConfiguration.lineGraphColor)\r\n .attr('stroke', 'none')\r\n .attr('cx', (d: any) => x(d.name) + x.bandwidth() / 2)\r\n .attr('cy', (d: any) => lineYscale(d.value))\r\n .style('cursor', 'pointer')\r\n .attr('r', 3);\r\n\r\n if (this.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dot')\r\n .attr('color', this.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: .85em')\r\n .attr('x', (d: any) => x(d.name) + x.bandwidth() / 2)\r\n .attr('y', (d: any) => lineYscale(d.value))\r\n .attr('dy', '-1em')\r\n .text((d: any) => this.chartConfiguration.labelFormatter(d.value));\r\n }\r\n }\r\n\r\n handleClick(d: any): void {\r\n if (this.chartData.metaData.hasDrillDown || d?.toggleFrom) {\r\n this.clickEvent.emit(d);\r\n }\r\n }\r\n\r\n handleHeaderMenuClick(id: string): void {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n handleDD1Click(event: any): void {\r\n this.isDD1Open = true;\r\n this.isDD2Open = false;\r\n }\r\n\r\n handleDD2Click(event: any): void {\r\n this.isDD2Open = true;\r\n this.isDD1Open = false;\r\n }\r\n\r\n handleCompareByFilterSelection(event: any): void {\r\n this.clickEvent.emit(event);\r\n }\r\n}","<div\r\n #groupcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\"\r\n>\r\n\r\n<div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n <lib-chart-header-v3\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (compareByFilterSelection)=\"handleCompareByFilterSelection($event)\"\r\n (zoomInZoomOutClick)=\"handleZoominZoomoutClick($event)\"\r\n ></lib-chart-header-v3>\r\n</div>\r\n\r\n <lib-chart-header-v1\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [isria]=\"customChartConfiguration.isRia\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n *ngIf=\"isHeaderVisible\"\r\n></lib-chart-header-v1>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"groupchartcontainer\"\r\n #groupchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\ninterface TableMetaData {\r\n title?: string;\r\n isPaginationHidden?: boolean;\r\n isHeaderVisible?: boolean;\r\n isSearchHidden?: boolean;\r\n isHeaderAlignedToCenter?: boolean;\r\n isHeaderSortHidden?: boolean;\r\n isFirstColumnHeaderHidden?: boolean;\r\n isAllAlignedToRight?: boolean;\r\n hasDrillDown?: boolean;\r\n headerColor?: string;\r\n headerTextColor?: string;\r\n}\r\n\r\ninterface TableData {\r\n data: any[];\r\n metaData: TableMetaData;\r\n highlightedTexts?: string[];\r\n}\r\n\r\ntype SortDirection = 'asc' | 'desc';\r\n\r\n@Component({\r\n selector: 'lib-ax-table',\r\n templateUrl: './ax-table.component.html',\r\n styleUrls: ['./ax-table.component.less', '../common-styles.less'],\r\n})\r\nexport class AxTableComponent implements OnInit {\r\n @Input() tableData!: TableData;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n\r\n isHeaderVisible = true;\r\n isUserSort = false;\r\n\r\n tableHeadList: string[] = [];\r\n itemList: any[] = [];\r\n masterList: any[] = [];\r\n currentList: any[] = [];\r\n\r\n readonly DEFAULT_PAGE_SIZE = 10;\r\n readonly MAX_PAGES_TO_SHOW = 5;\r\n \r\n currentPage = 1;\r\n pageSize = this.DEFAULT_PAGE_SIZE;\r\n totalItems = 0;\r\n totalPages = 1;\r\n goToPageNumber = 1;\r\n pagesToShow: number[] = [];\r\n\r\n sortDirection: SortDirection = 'asc';\r\n sortColumn = '';\r\n\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {};\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.initializeComponent();\r\n }\r\n\r\n private initializeComponent(): void {\r\n this.extractTableHeaders();\r\n this.mergeConfigurations();\r\n this.initializeData();\r\n this.updateHeaderVisibility();\r\n }\r\n\r\n private extractTableHeaders(): void {\r\n if (this.tableData?.data?.length > 0) {\r\n this.tableHeadList = Object.keys(this.tableData.data[0]);\r\n }\r\n }\r\n\r\n private mergeConfigurations(): void {\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n }\r\n\r\n private initializeData(): void {\r\n this.masterList = [...this.tableData.data];\r\n this.itemList = [...this.masterList];\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n\r\n if (this.tableData.metaData.isPaginationHidden) {\r\n this.currentList = this.itemList;\r\n } else {\r\n this.loadPage();\r\n }\r\n }\r\n\r\n private updateHeaderVisibility(): void {\r\n if (this.tableData.metaData.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.tableData.metaData.isHeaderVisible;\r\n }\r\n }\r\n\r\n private loadPage(): void {\r\n const startIndex = (this.currentPage - 1) * this.pageSize;\r\n const endIndex = startIndex + this.pageSize;\r\n this.currentList = this.itemList.slice(startIndex, endIndex);\r\n }\r\n\r\n private calculateTotalPages(): void {\r\n this.totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n this.goToPageNumber = this.currentPage;\r\n }\r\n\r\n private generatePagesToShow(): void {\r\n this.pagesToShow = [];\r\n \r\n let startPage = Math.max(\r\n 1,\r\n this.currentPage - Math.floor(this.MAX_PAGES_TO_SHOW / 2)\r\n );\r\n let endPage = Math.min(\r\n this.totalPages,\r\n startPage + this.MAX_PAGES_TO_SHOW - 1\r\n );\r\n\r\n if (endPage - startPage + 1 < this.MAX_PAGES_TO_SHOW) {\r\n startPage = Math.max(1, endPage - this.MAX_PAGES_TO_SHOW + 1);\r\n }\r\n\r\n for (let i = startPage; i <= endPage; i++) {\r\n this.pagesToShow.push(i);\r\n }\r\n }\r\n\r\n private onPaginationChange(): void {\r\n this.loadPage();\r\n this.goToPageNumber = this.currentPage;\r\n this.generatePagesToShow();\r\n }\r\n\r\n goToFirstPage(): void {\r\n if (this.currentPage !== 1) {\r\n this.currentPage = 1;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToPreviousPage(): void {\r\n if (this.currentPage > 1) {\r\n this.currentPage--;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToNextPage(): void {\r\n if (this.currentPage < this.totalPages) {\r\n this.currentPage++;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToLastPage(): void {\r\n if (this.currentPage !== this.totalPages) {\r\n this.currentPage = this.totalPages;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToPage(page: number): void {\r\n if (page >= 1 && page <= this.totalPages && page !== this.currentPage) {\r\n this.currentPage = page;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToSpecificPage(): void {\r\n if (this.goToPageNumber == null) {\r\n this.goToPageNumber = this.currentPage;\r\n return;\r\n }\r\n\r\n const pageNum = parseInt(this.goToPageNumber.toString(), 10);\r\n\r\n if (isNaN(pageNum) || pageNum < 1) {\r\n this.goToPageNumber = 1;\r\n } else if (pageNum > this.totalPages) {\r\n this.goToPageNumber = this.totalPages;\r\n }\r\n\r\n this.currentPage = this.goToPageNumber;\r\n this.onPaginationChange();\r\n }\r\n\r\n sortByColumn(columnId: string): void {\r\n if (columnId === 'viewDetails' || this.tableData.metaData.isHeaderSortHidden) {\r\n return;\r\n }\r\n\r\n this.isUserSort = true;\r\n\r\n if (columnId !== this.sortColumn) {\r\n this.sortColumn = columnId;\r\n this.sortDirection = 'asc';\r\n } else {\r\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\r\n }\r\n\r\n this.performSort(columnId);\r\n this.resetPaginationAfterSort();\r\n }\r\n\r\n private performSort(columnId: string): void {\r\n this.itemList.sort((a, b) => {\r\n const comparison = this.compareValues(a[columnId], b[columnId]);\r\n return this.sortDirection === 'asc' ? comparison : -comparison;\r\n });\r\n }\r\n\r\n private compareValues(v1: any, v2: any): number {\r\n const num1 = parseFloat(v1);\r\n const num2 = parseFloat(v2);\r\n\r\n if (!isNaN(num1) && !isNaN(num2)) {\r\n return num1 - num2;\r\n }\r\n\r\n return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\r\n }\r\n\r\n private resetPaginationAfterSort(): void {\r\n this.currentPage = 1;\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n this.loadPage();\r\n }\r\n\r\n checkIfColumnCurrentlyBeingSorted(columnId: string): boolean {\r\n return this.sortColumn === columnId;\r\n }\r\n\r\n getSortDirection(): string {\r\n return this.sortDirection === 'asc' ? 'arrow-up' : 'arrow-down';\r\n }\r\n\r\n onEnter(event: Event): void {\r\n const searchText = (event.target as HTMLInputElement).value;\r\n \r\n this.itemList = this.filterItems(searchText);\r\n this.resetPaginationAfterSearch();\r\n }\r\n\r\n private filterItems(searchText: string): any[] {\r\n if (!searchText) {\r\n return [...this.masterList];\r\n }\r\n\r\n const lowerSearchText = searchText.toLowerCase();\r\n\r\n return this.masterList.filter(item => \r\n this.tableHeadList.some(header => {\r\n const value = item[header];\r\n if (value == null) return false;\r\n \r\n const searchableString = String(value).toLowerCase();\r\n return searchableString.includes(lowerSearchText);\r\n })\r\n );\r\n }\r\n\r\n private resetPaginationAfterSearch(): void {\r\n this.currentPage = 1;\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n this.loadPage();\r\n }\r\n\r\n getWidthById(columnId: string, index: number): string {\r\n if (index === 0) {\r\n return '10%'; // or '80px' for fixed width\r\n }\r\n \r\n if (this.tableHeadList.length === 3) {\r\n return index === 1 ? '60%' : '20%';\r\n }\r\n \r\n const width = 100 / this.tableHeadList.length;\r\n return `${width}%`;\r\n }\r\n\r\n preventNegative(event: KeyboardEvent): void {\r\n const invalidKeys = ['-', '+', 'e', 'E'];\r\n if (invalidKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n validateNumberInput(event: KeyboardEvent): boolean {\r\n const charCode = event.which || event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n handleClick(data: any): void {\r\n this.clickEvent.emit(data);\r\n }\r\ngetCellAlignment(value: any, index: number): string {\r\n // If all columns should be right aligned globally\r\n // if (this.tableData.metaData.isAllAlignedToRight) {\r\n // return 'textalign-right';\r\n // }\r\n\r\n if (this.isColumnNumeric(value)) {\r\n return 'textalign-right';\r\n }\r\n if (value === null || value === undefined) {\r\n return 'textalign-left';\r\n }\r\n \r\n\r\n const strValue = String(value).trim();\r\n\r\n // Detect numeric, date, or alphanumeric ending with numbers\r\n const isNumber = !isNaN(Number(strValue));\r\n const isDate = !isNaN(Date.parse(strValue));\r\n const isAlphaNumericWithTrailingNumber = /^[A-Za-z]*\\d+[A-Za-z0-9]*$/.test(strValue);\r\n\r\n if (isNumber || isDate) {\r\n return 'textalign-right';\r\n }\r\n return 'textalign-left';\r\n}\r\n\r\ngetHeaderAlignment(header: string, index: number): string {\r\n if (this.isColumnNumeric(header)) {\r\n return 'textalign-right';\r\n }\r\n return 'textalign-left';\r\n}\r\nisColumnNumeric(header: string): boolean {\r\n return this.currentList.some(row => {\r\n const value = row[header];\r\n\r\n if (value === null || value === undefined) return false;\r\n\r\n const str = String(value).trim();\r\n\r\n // numeric values like 1, 23, 93.55\r\n if (!isNaN(Number(str))) return true;\r\n\r\n return false;\r\n });\r\n}\r\n\r\n\r\n shouldShowPagination(): boolean {\r\n return !this.tableData?.metaData?.isPaginationHidden;\r\n }\r\n}","<div class=\"d-flex align-items-center justify-content-between w-100\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <lib-header-alt [title]=\"tableData.metaData.title\" [isria]=\"tableData?.featureInfo?.uiConfiguration?.customChartConfiguration?.isRia\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input type=\"text\" *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\" id=\"exampleInputEmail1\" autocomplete=\"off\"\r\n placeholder=\" Search \" aria-describedby=\"emailHelp\" (keyup)=\"onEnter($event)\" />\r\n</div>\r\n\r\n<div class=\"popup-body-for-scroll\">\r\n <div class=\"table-wrapper\">\r\n <div class=\"table-responsive border\">\r\n <table class=\"table table-bordered table-hover align-middle mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr class=\"table-header\">\r\n <th *ngFor=\"let header of tableHeadList; index as i\" [ngClass]=\"getHeaderAlignment(header, i)\" [style.width]=\"getWidthById(header, i)\" [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\" (click)=\"sortByColumn(header)\">\r\n <span *ngIf=\"\r\n (!tableData.metaData.isFirstColumnHeaderHidden && i == 0) || i > 0\r\n \" [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden\r\n ? 'cursor-pointer'\r\n : 'cursor-default'\r\n \">{{ header }}</span>\r\n <i *ngIf=\"\r\n (!isUserSort || checkIfColumnCurrentlyBeingSorted(header)) &&\r\n !tableData.metaData.isHeaderSortHidden\r\n \" class=\"sort-icons fa\" [ngClass]=\"\r\n !isUserSort\r\n ? 'fa-sort'\r\n : sortDirection == 'asc'\r\n ? 'fa-sort-asc'\r\n : 'fa-sort-desc'\r\n \"></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let store of currentList\" [ngClass]=\"\r\n tableData?.highlightedTexts?.includes(store[tableHeadList[0]])\r\n ? 'font-weight-bold'\r\n : ''\r\n \">\r\n <td (click)=\"handleClick(store)\" class=\"table-cell\" *ngFor=\"let header of tableHeadList; index as i\"\r\n [style.width]=\"getWidthById(header, i)\" \r\n [ngClass]=\"getCellAlignment(store[header], i)\"\r\n [style.cursor]=\"\r\n tableData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n \">\r\n <span>{{ store[header] }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"pagination-bar mt-0\" *ngIf=\"shouldShowPagination()\">\r\n <span>Go To</span>\r\n <input type=\"number\" class=\"page-input\" min=\"1\" [max]=\"totalPages\" (keyup.enter)=\"goToSpecificPage()\" [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n >\r\n\r\n <span> {{ (currentList.length > 0 ? ((currentPage - 1) * pageSize + 1) : 0) }} -\r\n {{ ((currentPage - 1) * pageSize + currentList.length) }} of\r\n {{ totalItems | number }}</span>\r\n\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToFirstPage()\" class=\"pagination-btn\" title=\"First Page\">\r\n <i class=\"bi bi-chevron-double-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToPreviousPage()\" class=\"pagination-btn\" title=\"Previous Page\">\r\n <i class=\"bi bi-chevron-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToNextPage()\" class=\"pagination-btn\" title=\"Next Page\">\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToLastPage()\" class=\"pagination-btn\" title=\"Last Page\">\r\n <i class=\"bi bi-chevron-double-right\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, Input ,Output, EventEmitter } from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from \"d3\";\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-waterfall-chart',\r\n templateUrl: './waterfall-chart.component.html',\r\n styleUrls: ['./waterfall-chart.component.less', \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class WaterfallChartComponent extends ComponentUniqueId implements OnInit {\r\n\r\n @ViewChild(\"waterfallchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"waterfallchartcontainer\", { static: true })\r\n waterfallcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 15, right: 30, bottom: 40, left: 40 },\r\n svgHeight: 80,\r\n legendHeight: \"10%\",\r\n numberOfYTicks: 5,\r\n padding :0.3,\r\n\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: \"#F6D283\",\r\n showLineChartAxis: true,\r\n yAxisCustomlabelStyles: \"\",\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() { }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeWaterfallChart();\r\n }\r\n initializeWaterfallChart() {\r\n var self = this;\r\n let rawData = null;\r\n let data :any= [];\r\n let metaData:any = null;\r\n let colors = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var positive_val:any=[];\r\n var maxSum=0;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n // data = data = [\r\n // {\"name\":\"Product Revenue\",\"value\":420000},\r\n // {\"name\":\"Services Revenue\",\"value\":210000},\r\n // {\"name\":\"Employee Revenue\",\"value\":190000},\r\n // {\"name\":\"Fixed Costs\",\"value\":-170000},\r\n // {\"name\":\"Variable Costs\",\"value\":-140000}\r\n\r\n // ];\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n colors = metaData.colors;\r\n\r\n \r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var waterfallcontainer = d3.select(\r\n this.waterfallcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(waterfallcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + margin.left + \",\" + margin.top + \")\"\r\n );\r\n\r\n let yScale = d3\r\n .scaleLinear()\r\n .range([height, 0]);\r\n var xScale = d3\r\n .scaleBand()\r\n .rangeRound([0, width])\r\n .padding(0.5);\r\n let xAxis = d3\r\n .axisBottom(xScale)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter);\r\n let yAxis = d3\r\n .axisLeft(yScale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter);\r\n\r\n\r\n\r\n\r\n //function to find all the positive values\r\n // var positive_val = this.data.filter(function (d) { return d.value > 0; });\r\n positive_val = data.filter(function (d:any) { return d.value > 0; });\r\n \r\n\r\n //function to calculate the sum of all the positive values\r\n maxSum = positive_val.reduce(function (sum, d) {\r\n return sum + d.value;\r\n }, 0);\r\n \r\n\r\n //to calculate the new Domain by adding 120\r\n var yaxisRange = maxSum + 120;\r\n\r\n var newDomain = percentage(yaxisRange);\r\n \r\n // var newDomain=yaxisRange;\r\n var newDomain = newDomain.replace(/[!@#$%^&*]/g, \"\");\r\n\r\n\r\n\r\n\r\n // Transform data (i.e., finding cumulative values and total) for easier charting\r\n var cumulative = 0;\r\n for (let i = 0; i < data.length; i++) {\r\n if(data[i].name !=\"Total\"){\r\n data[i].start = cumulative;\r\n cumulative += data[i].value;\r\n data[i].end = cumulative;\r\n\r\n data[i].class = (data[i].value >= 0) ? 'positive' : 'negative'\r\n }\r\n }\r\n\r\n data.push({\r\n name: 'Total',\r\n end: cumulative,\r\n start: 0,\r\n class: 'total',\r\n value: cumulative\r\n });\r\n \r\n xScale.domain(data.map(function (d) { return d.name; }));\r\n yScale.domain([0, d3.max(data, function (d) { return d.end; })]);\r\n\r\n //var y_domain = ([0, d3.max(data, function(d) { return d.end; })]);\r\n // y.domain( y_domain);\r\n\r\n svg.append(\"g\")\r\n .attr(\"class\", \"x axis waterfall-x-axis\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(xAxis);\r\n\r\n svg.append(\"g\")\r\n .attr(\"class\", \"y axis\")\r\n .call(yAxis);\r\n\r\n d3.selectAll(\"g.x.axis g.tick text\")\r\n .attr(\"y\", function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n });\r\n var bar = svg.selectAll(\".bar\")\r\n .data(data)\r\n .enter().append(\"g\").on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .style(\"cursor\", \"pointer\")\r\n .attr(\"class\", \"bar \") .attr(\"fill\", function(d) {\r\n\r\n return colors[d.class];\r\n })\r\n .attr(\"transform\", function (d) { return \"translate(\" + xScale(d.name) + \",0)\"; });\r\n\r\n bar.append(\"rect\")\r\n //.attr(\"y\", function(d) { return y(d.value); })\r\n .attr(\"y\", function (d) { return yScale(Math.max(d.start, d.end)); })\r\n .attr(\"height\", function (d) { return Math.abs(yScale(d.start) - yScale(d.end)); })\r\n //function to draw the tooltip\r\n .attr(\"width\", xScale.bandwidth())\r\n\r\n bar.append(\"text\")\r\n .attr(\"x\", xScale.bandwidth() / 2)\r\n .attr(\"y\", function (d) { return yScale(d.end); })\r\n .attr(\"dy\", function (d) { return ((d.class == 'negative') ? '-' : '') })\r\n .text(function (d) { return d.end - d.start; });\r\n\r\n\r\n bar.filter(function (d) { return d.class != \"total\" }).append(\"line\")\r\n .attr(\"class\", \"connector\")\r\n .attr(\"x1\", xScale.bandwidth() + 10)\r\n .attr(\"y1\", function (d) { return yScale(d.end) })\r\n .attr(\"x2\", xScale.bandwidth() / (1 - 0.5) - 5)\r\n .attr(\"y2\", function (d) { return yScale(d.end) })\r\n if (metaData.yLabel) {\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-axis-waterfall-label\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(metaData.yLabel);\r\n }\r\n if(metaData.xLabel){\r\n svg.append(\"text\")\r\n .attr(\"class\", \"lib-axis-waterfall-label\")\r\n .attr(\"transform\",\r\n \"translate(\" + (width/2) + \" ,\" +\r\n (height + margin.top + 20) + \")\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(metaData.xLabel);\r\n }\r\n\r\n function type(d) {\r\n d.value = +d.value;\r\n return d;\r\n }\r\n\r\n function percentage(n) {\r\n n = Math.round(n);\r\n var result = n;\r\n if (Math.abs(n) > 100) {\r\n result = Math.round(n / 100) + '%';\r\n }\r\n return result;\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n}\r\n","<div #waterfallchartcontainer class=\"lib-chart-wrapper\"\r\n(resized)=\"onResized($event)\">\r\n<lib-chart-header\r\n[title]=\"chartData.metaData.title\"\r\n[hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n[menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n(menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"waterfallchartcontainer\"\r\n #waterfallchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, Input,Output,\r\n EventEmitter } from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-sunburst-chart',\r\n templateUrl: './sunburst-chart.component.html',\r\n styleUrls: ['./sunburst-chart.component.less'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SunburstChartComponent extends ComponentUniqueId implements OnInit {\r\n\r\n @ViewChild('sunburstchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('sunburstchartcontainer', { static: true })\r\n sunburstcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 30, bottom: 40, left: 40 },\r\n svgHeight: 80,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n padding: 0.3,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() { }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeSunburstChart();\r\n }\r\n initializeSunburstChart() {\r\n var self = this;\r\n let rawData:any = null;\r\n let data = {};\r\n let metaData = null;\r\n let colorMap = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var color = d3.scaleOrdinal(d3.schemeCategory10);\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n // data = data = [\r\n // {\"name\":\"Product Revenue\",\"value\":420000},\r\n // {\"name\":\"Services Revenue\",\"value\":210000},\r\n // {\"name\":\"Employee Revenue\",\"value\":190000},\r\n // {\"name\":\"Fixed Costs\",\"value\":-170000},\r\n // {\"name\":\"Variable Costs\",\"value\":-140000}\r\n\r\n // ];\r\n rawData = this.chartData.data;\r\n colorMap = this.chartData.metaData.colors;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var sunburstcontainer = d3.select(\r\n this.sunburstcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(sunburstcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n 'transform',\r\n 'translate(' +\r\n (width / 2 + margin.left) +\r\n ',' +\r\n (height / 2 + margin.top) +\r\n ')'\r\n );\r\n var radius = Math.min(width, height) / 2;\r\n var partition = d3.partition()\r\n .size([2 * Math.PI, radius]);\r\n\r\n var root = d3.hierarchy(rawData[0])\r\n .sum(function (d) { return d.size });\r\n\r\n\r\n partition(root);\r\n var arc = d3.arc()\r\n .startAngle(function (d) { return d.x0 })\r\n .endAngle(function (d) { return d.x1 })\r\n .innerRadius(function (d) { return d.y0 })\r\n .outerRadius(function (d) { return d.y1 });\r\n\r\n\r\n svg.selectAll('g')\r\n .data(root.descendants())\r\n .enter().append('g').on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr('class', 'node').append('path')\r\n .attr('display', function (d) { return d.depth ? null : 'none'; })\r\n .attr('d', arc)\r\n .style('stroke', '#fff')\r\n .style('fill', function (d) {\r\n let id = colorMap[(d.children ? d : d.parent).data.id];\r\n\r\n if (id == undefined) {\r\n return colorMap[(d.children ? d : d.parent).data.vid];\r\n } else {\r\n return colorMap[(d.children ? d : d.parent).data.id];\r\n }\r\n });\r\n\r\n svg.selectAll(\".node\")\r\n .append(\"text\")\r\n .attr(\"fill\", \"white\")\r\n .style(\"font-size\", \"5px\")\r\n .attr(\"transform\", function (d) {\r\n return \"translate(\" + arc.centroid(d) + \")rotate(\" + computeTextRotation(d) + \")\";\r\n })\r\n .attr(\"dx\", \"-9\") // radius margin\r\n .attr(\"dy\", \".3em\") // rotation align\r\n .text(function (d) { return d.parent ? d.data.name : \"\" });\r\n\r\n\r\n function computeTextRotation(d) {\r\n var thetaDeg = (180 / Math.PI * (arc.startAngle()(d) + arc.endAngle()(d)) / 2 - 90);\r\n return (thetaDeg > 90) ? thetaDeg - 180 : thetaDeg;\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n\r\n}\r\n","<div #sunburstchartcontainer class=\"lib-chart-wrapper\"\r\n(resized)=\"onResized($event)\">\r\n<lib-chart-header\r\n[title]=\"chartData.metaData.title\"\r\n[hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n[menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n(menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"sunburstchartcontainer\"\r\n #sunburstchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n// import { type } from 'os';\r\n\r\n@Component({\r\n selector: \"lib-progress-bar\",\r\n templateUrl: \"./progress-bar.component.html\",\r\n styleUrls: [\"./progress-bar.component.less\"]\r\n})\r\nexport class ProgressBarComponent implements OnInit {\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n resetBackgroundColor: boolean = false;\r\n parentChartConfigurations: any;\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 20 },\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: \"#052340\"\r\n };\r\n progressvalue = 0;\r\n metaData;\r\n data = [];\r\n currentvalue: any;\r\n color_type: any;\r\n type: any = \"\";\r\n datatype: any;\r\n progress_style: any;\r\n first: any;\r\n lasts: any;\r\n diff: any;\r\n per_value: any;\r\n width: number=0;\r\n datatype_status:boolean=false;\r\n value_status:boolean=false;\r\n hasDrillDownData:boolean=false;\r\n featureId:any;\r\n indexType:any=\"\";\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.resetBackgroundColor = this.customChartConfiguration.resetBackgroundColor;\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.customChartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.customChartConfiguration.flagForMultiChart,\r\n hideShadow: this.customChartConfiguration.hideShadow,\r\n backgroundColor: this.customChartConfiguration.resetBackgroundColor\r\n ? \"\"\r\n : \"#052340\"\r\n };\r\n let data = [];\r\n // let type:any;\r\n\r\n this.data = this.chartData.data;\r\n\r\n this.first = this.data[0];\r\n\r\n var len = this.data.length;\r\n\r\n this.lasts = this.data[len - 1];\r\n this.metaData = this.chartData.metaData;\r\n this.featureId=this.metaData.featureId;\r\n //this.resetBackgroundColor=true;\r\n this.datatype = this.metaData.datatype;\r\n this.currentvalue = this.metaData.currentValue;\r\n this.indexType=this.metaData.type?this.metaData.type:\"\";\r\n if(this.currentvalue>1){\r\n this.value_status=true;\r\n }\r\n this.color_type = this.metaData.colorType;\r\n this.hasDrillDownData = this.metaData.hasDrillDown;\r\n if((this.datatype==\"Hr\" || this.datatype==\"Hours\") && this.currentvalue<2){\r\n this.currentvalue=(this.currentvalue*60).toFixed(2);\r\n\r\n this.datatype=\" Minutes\"\r\n }\r\n if(this.datatype==\"USD\"){\r\n this.datatype_status=true;\r\n this.datatype=\"$ \";\r\n }\r\n if (this.datatype == \"%\" || this.datatype == \" %\") {\r\n this.type = \"%\";\r\n } else {\r\n this.type = \"\";\r\n }\r\n this.diff = (100 - this.lasts) / 4;\r\n if (this.diff > 0) {\r\n this.per_value = this.currentvalue * this.currentvalue + this.diff;\r\n this.progress_style = {\r\n width: this.per_value + \"%\"\r\n };\r\n } else {\r\n if(this.currentvalue<=0 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 0 + \"%\"\r\n };\r\n this.currentvalue=0;\r\n }\r\n else if(this.currentvalue>=100 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 100 + \"%\"\r\n };\r\n this.currentvalue=100;\r\n }\r\n else{\r\n this.progress_style = {\r\n width: this.metaData.currentValue + \"%\"\r\n };\r\n }\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div [ngClass]=\"{'lib-chart-wrapper progressbar': !resetBackgroundColor,\r\n 'lib-chart-wrapper-wo-shadow':resetBackgroundColor}\">\r\n\r\n <lib-chart-header [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [customChartConfiguration]=\"parentChartConfigurations\"></lib-chart-header>\r\n <div class=\"lib-chart-svg\" (click)=\"handleClick(currentvalue)\" [ngClass]=\"chartConfiguration.hideShadow ? 'slidecontainer' : 'slidewidth'\">\r\n\r\n <p *ngIf=\"chartConfiguration.hideShadow\" [ngStyle]=\"progress_style\" [attr.data-value]=\"currentvalue + datatype\"></p>\r\n <input *ngIf=\"value_status\" type=\"range\" min=\"{{first}}\" max=\"{{lasts}}\" [value]=\"currentvalue\" class=\"slider\" [class]=\"color_type\" [ngClass]=\"{'cursor-style': hasDrillDownData}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n <input *ngIf=\"!value_status\" type=\"range\" max=\"{{lasts}}\" [attr.value]=\"currentvalue\" class=\"slider\" [class]=\"color_type\" [ngClass]=\"{'cursor-style': hasDrillDownData}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n <div class=\"ranges\">\r\n <div class=\"ran\"></div>\r\n <div class=\"ran\"></div>\r\n <div class=\"ran\"></div>\r\n <div class=\"ran\"></div>\r\n\r\n <div *ngFor=\"let d of data; let l=last; let i=index\" [ngClass]=\"{'ran_p' : i!=data.length}\" [class.ran_pl]=\"l\">\r\n {{d + type}}</div>\r\n\r\n </div>\r\n </div>\r\n <div \r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n class=\"lib-donut-chart-footer\"\r\n>\r\n <div [ngClass]=\"chartData.metaData.target ? 'lib-progressbar-label-style' : 'lib-progressbar-label-wrapper'\">\r\n <div class=\"lib-donut-label-item progress-label-item\">\r\n <span *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n ><span *ngIf=\"!datatype_status\"\r\n >Current value is {{currentvalue + datatype}}</span\r\n >\r\n <span *ngIf=\"datatype_status\"\r\n >Current value is {{datatype + currentvalue}}</span\r\n >\r\n <!-- <span\r\n >Current value is {{currentvalue + datatype}}</span\r\n > -->\r\n </div>\r\n <div *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-item\">\r\n <span class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n ><span\r\n >Target: {{chartData.metaData.target}}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n</div>","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, Input,Output,\r\n EventEmitter } from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-radar-chart',\r\n templateUrl: './radar-chart.component.html',\r\n styleUrls: ['./radar-chart.component.less']\r\n})\r\nexport class RadarChartComponent extends ComponentUniqueId implements OnInit {\r\n\r\n @ViewChild('radarchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('radarchartcontainer', { static: true })\r\n radarchartcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 30, bottom: 40, left: 40 },\r\n svgHeight:150,\r\n svgWidth: 190,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n padding: 0.3,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n\r\n // labelFormatter: ChartHelper.defaultFormatter,\r\n // xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n // yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n // lineGraphColor: '#F6D283',\r\n // showLineChartAxis: true,\r\n // yAxisCustomlabelStyles: '',\r\n };\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() { }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeSunburstChart();\r\n }\r\n initializeSunburstChart() {\r\n var self = this;\r\n let data = [];\r\n let colors=[];\r\n let metaData:any={};\r\n // let hasDrillDown;\r\n \r\n // var data = [\r\n // { name: 'Vendor 1',\r\n\t\t// \t\t\taxes: [\r\n\t\t// \t\t\t\t{axis: 'Less than 1 day', value: 42},\r\n\t\t// \t\t\t\t{axis: '1 to 2 day', value: 20},\r\n\t\t// \t\t\t\t{axis: '2 to 3 day', value: 60},\r\n\r\n\t\t// \t\t\t\t{axis: '3 to 4 day', value: 35},\r\n\t\t// \t\t\t\t{axis: 'Beyond 4 days', value: 20}\r\n\t\t// \t\t\t],\r\n // color: '#26AF32'\r\n\t\t// \t\t},\r\n\t\t// \t\t{ name: 'Vendor 2',\r\n\t\t// \t\t\taxes: [\r\n\t\t// \t\t\t\t{axis: 'Less than 1 day', value: 50},\r\n\t\t// \t\t\t\t{axis: '1 to 2 day', value: 45},\r\n\t\t// \t\t\t\t{axis: '2 to 3 day', value: 20},\r\n\r\n\t\t// \t\t\t\t{axis: '3 to 4 day', value: 25},\r\n\t\t// \t\t\t\t{axis: 'Beyond 4 days', value: 23}\r\n\t\t// \t\t\t],\r\n // color: '#762712'\r\n\t\t// \t\t},\r\n // { name: 'Vendor 3',\r\n\t\t// \t\t\taxes: [\r\n\t\t// \t\t\t\t{axis: 'Less than 1 day', value: 32},\r\n\t\t// \t\t\t\t{axis: '1 to 2 day', value: 62},\r\n\t\t// \t\t\t\t{axis: '2 to 3 day', value: 35},\r\n\r\n\t\t// \t\t\t\t{axis: '3 to 4 day', value: 20},\r\n\t\t// \t\t\t\t{axis: 'Beyond 4 days', value: 28}\r\n\t\t// \t\t\t],\r\n // color: '#2a2fd4'\r\n\t\t// \t\t}\r\n // ];\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n // hasDrillDown=metaData.hasDrillDown;\r\n colors=metaData.colors;\r\n \r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var radarchartcontainer = d3.select(\r\n this.radarchartcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(radarchartcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var radarChartOptions = {\r\n w: 280,\r\n h: 220,\r\n margin: margin,\r\n levels: 5,\r\n roundStrokes: true,\r\n color: d3.scaleOrdinal().range(colors),\r\n format: '.0f'\r\n };\r\n\r\n let svg_radar1 = RadarChart(\".radarChart\", data, radarChartOptions);\r\n if (\r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.svgHeight != undefined &&\r\n this.customChartConfiguration.svgHeight.value != undefined && \r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.svgWidth != undefined &&\r\n this.customChartConfiguration.svgWidth.value != undefined\r\n ) {\r\n self.chartConfiguration.svgHeight = this.customChartConfiguration.svgHeight.value;\r\n self.chartConfiguration.svgWidth = this.customChartConfiguration.svgWidth.value;\r\n }\r\n var radarChartOptions2 = {\r\n \r\n w: self.chartConfiguration.svgWidth,\r\n h: self.chartConfiguration.svgHeight,\r\n margin: margin,\r\n maxValue: 4,\r\n levels: 4,\r\n roundStrokes: false,\r\n color: d3.scaleOrdinal().range(colors),\r\n format: '.0f',\r\n legend: { title: '', translateX: 100, translateY: 40 },\r\n unit: ''\r\n };\r\n\r\n let svg_radar2 = RadarChart(\".radarChart2\", data, radarChartOptions2);\r\n\r\n\r\n function RadarChart(parent_selector, data, options) {\r\n //Wraps SVG text - Taken from http://bl.ocks.org/mbostock/7555321\r\n const wrap = (text, width) => {\r\n text.each(function () {\r\n var text = d3.select(self),\r\n words = text.text().split(/\\s+/).reverse(),\r\n word,\r\n line :any= [],\r\n lineNumber = 0,\r\n lineHeight = 1.4, // ems\r\n y = text.attr(\"y\"),\r\n x = text.attr(\"x\"),\r\n dy = parseFloat(text.attr(\"dy\")),\r\n tspan = text.text(null).append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", dy + \"em\");\r\n\r\n while (word = words.pop()) {\r\n line.push(word);\r\n tspan.text(line.join(\" \"));\r\n if (tspan.node().getComputedTextLength() > width) {\r\n line.pop();\r\n tspan.text(line.join(\" \"));\r\n line = [word];\r\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\r\n }\r\n }\r\n });\r\n }//wrap\r\n\r\n const cfg = {\r\n w: 100,\t\t\t\t//Width of the circle\r\n h: 100,\t\t\t\t//Height of the circle\r\n margin: { top: 20, right: 200, bottom: 40, left: 100 }, //The margins of the SVG\r\n levels: 3,\t\t\t\t//How many levels or inner circles should there be drawn\r\n maxValue: 0, \t\t\t//What is the value that the biggest circle will represent\r\n labelFactor: 1.25, \t//How much farther than the radius of the outer circle should the labels be placed\r\n wrapWidth: 60, \t\t//The number of pixels after which a label needs to be given a new line\r\n opacityArea: 0.35, \t//The opacity of the area of the blob\r\n dotRadius: 2, \t\t\t//The size of the colored circles of each blog\r\n opacityCircles: 0.1, \t//The opacity of the circles of each blob\r\n strokeWidth: 2, \t\t//The width of the stroke around each blob\r\n roundStrokes: false,\t//If true the area and stroke will follow a round path (cardinal-closed)\r\n color: d3.scaleOrdinal(d3.schemeCategory10),\t//Color function,\r\n format: '.2%',\r\n unit: '',\r\n legend: false\r\n };\r\n\r\n //Put all of the options into a variable called cfg\r\n if ('undefined' !== typeof options) {\r\n for (var i in options) {\r\n if ('undefined' !== typeof options[i]) { cfg[i] = options[i]; }\r\n }//for i\r\n }//if\r\n\r\n //If the supplied maxValue is smaller than the actual one, replace by the max in the data\r\n // var maxValue = max(cfg.maxValue, d3.max(data, function(i){return d3.max(i.map(function(o){return o.value;}))}));\r\n let maxValue = 0;\r\n for (let j = 0; j < data.length; j++) {\r\n for (let i = 0; i < data[j].axes.length; i++) {\r\n data[j].axes[i]['id'] = data[j].name;\r\n if (data[j].axes[i]['value'] > maxValue) {\r\n maxValue = data[j].axes[i]['value'];\r\n }\r\n }\r\n }\r\n maxValue = Math.max(cfg.maxValue, maxValue);\r\n\r\n const allAxis = data[0].axes.map((i, j) => i.axis),\t//Names of each axis\r\n total = allAxis.length,\t\t\t\t\t//The number of different axes\r\n radius = Math.min(cfg.w / 2, cfg.h / 2), \t//Radius of the outermost circle\r\n Format = d3.format(cfg.format),\t\t\t \t//Formatting\r\n angleSlice = Math.PI * 2 / total;\t\t//The width in radians of each \"slice\"\r\n\r\n //Scale for the radius\r\n const rScale = d3.scaleLinear()\r\n .range([0, radius])\r\n .domain([0, maxValue]);\r\n\r\n /////////////////////////////////////////////////////////\r\n //////////// Create the container SVG and g /////////////\r\n /////////////////////////////////////////////////////////\r\n const parent = chartContainer;\r\n\r\n //Remove whatever chart with the same id/class was present before\r\n parent.select(\"svg\").remove();\r\n\r\n //Initiate the radar chart SVG\r\n let svg = parent.append(\"svg\")\r\n .attr(\"width\", cfg.w + cfg.margin.left + cfg.margin.right)\r\n .attr(\"height\", cfg.h + cfg.margin.top + cfg.margin.bottom)\r\n .attr(\"class\", \"radar\");\r\n\r\n //Append a g element\r\n let g = svg.append(\"g\")\r\n .attr(\"transform\", \"translate(\" + (cfg.w/2 + cfg.margin.left) + \",\" + (cfg.h/2 + cfg.margin.top) + \")\");\r\n\r\n /////////////////////////////////////////////////////////\r\n ////////// Glow filter for some extra pizzazz ///////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Filter for the outside glow\r\n let filter = g.append('defs').append('filter').attr('id', 'glow'),\r\n feGaussianBlur = filter.append('feGaussianBlur').attr('stdDeviation', '2.5').attr('result', 'coloredBlur'),\r\n feMerge = filter.append('feMerge'),\r\n feMergeNode_1 = feMerge.append('feMergeNode').attr('in', 'coloredBlur'),\r\n feMergeNode_2 = feMerge.append('feMergeNode').attr('in', 'SourceGraphic');\r\n\r\n /////////////////////////////////////////////////////////\r\n /////////////// Draw the Circular grid //////////////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Wrapper for the grid & axes\r\n let axisGrid = g.append(\"g\").attr(\"class\", \"axisWrapper\");\r\n\r\n //Draw the background circles\r\n axisGrid.selectAll(\".levels\")\r\n .data(d3.range(1, (cfg.levels + 1)).reverse())\r\n .enter()\r\n .append(\"circle\")\r\n .attr(\"class\", \"gridCircle\")\r\n .attr(\"r\", d => radius / cfg.levels * d)\r\n .style(\"fill\", \"#CDCDCD\")\r\n .style(\"stroke\", \"#CDCDCD\")\r\n .style(\"fill-opacity\", cfg.opacityCircles)\r\n .style(\"filter\", \"url(#glow)\");\r\n\r\n //Text indicating at what % each level is\r\n axisGrid.selectAll(\".axisLabel\")\r\n .data(d3.range(1, (cfg.levels + 1)).reverse())\r\n .enter().append(\"text\")\r\n .attr(\"class\", \"axisLabel\")\r\n .attr(\"x\", 4)\r\n .attr(\"y\", d => -d * radius / cfg.levels)\r\n .attr(\"dy\", \"0.4em\")\r\n .style(\"font-size\", \"10px\")\r\n .attr(\"fill\", \"#737373\")\r\n .text(d => Format(maxValue * d / cfg.levels) + cfg.unit);\r\n\r\n /////////////////////////////////////////////////////////\r\n //////////////////// Draw the axes //////////////////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Create the straight lines radiating outward from the center\r\n var axis = axisGrid.selectAll(\".axis\")\r\n .data(allAxis)\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"axis\");\r\n //Append the lines\r\n axis.append(\"line\")\r\n .attr(\"x1\", 0)\r\n .attr(\"y1\", 0)\r\n .attr(\"x2\", (d, i) => rScale(maxValue * 1.1) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"y2\", (d, i) => rScale(maxValue * 1.1) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"class\", \"line\")\r\n .style(\"stroke\", \"white\")\r\n .style(\"stroke-width\", \"2px\");\r\n\r\n //Append the labels at each axis\r\n axis.append(\"text\")\r\n .attr(\"class\", \"legend\")\r\n .style(\"font-size\", \"11px\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"dy\", \"0.35em\")\r\n .attr(\"x\", (d, i) => rScale(maxValue * cfg.labelFactor) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"y\", (d, i) => rScale(maxValue * cfg.labelFactor) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .text(d => d)\r\n .call(wrap, cfg.wrapWidth);\r\n\r\n /////////////////////////////////////////////////////////\r\n ///////////// Draw the radar chart blobs ////////////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //The radial line function\r\n const radarLine = d3.radialLine()\r\n .curve(d3.curveLinearClosed)\r\n .radius(d => rScale(d.value))\r\n .angle((d, i) => i * angleSlice);\r\n\r\n if (cfg.roundStrokes) {\r\n radarLine.curve(d3.curveCardinalClosed)\r\n }\r\n\r\n //Create a wrapper for the blobs\r\n const blobWrapper = g.selectAll(\".radarWrapper\")\r\n .data(data)\r\n .enter().append(\"g\").on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr(\"class\", \"radarWrapper\");\r\n\r\n //Append the backgrounds\r\n blobWrapper\r\n .append(\"path\")\r\n .attr(\"class\", \"radarArea\")\r\n .attr(\"d\", d => radarLine(d.axes))\r\n .style(\"fill\", (d, i) => cfg.color(i))\r\n .style(\"fill-opacity\", cfg.opacityArea)\r\n .on('mouseover', function (d, i) {\r\n //Dim all blobs\r\n parent.selectAll(\".radarArea\")\r\n .transition().duration(200)\r\n .style(\"fill-opacity\", 0.1);\r\n //Bring back the hovered over blob\r\n d3.select(self)\r\n .transition().duration(200)\r\n .style(\"fill-opacity\", 0.7);\r\n })\r\n .on('mouseout', () => {\r\n //Bring back all blobs\r\n parent.selectAll(\".radarArea\")\r\n .transition().duration(200)\r\n .style(\"fill-opacity\", cfg.opacityArea);\r\n });\r\n\r\n //Create the outlines\r\n blobWrapper.append(\"path\")\r\n .attr(\"class\", \"radarStroke\")\r\n .attr(\"d\", function (d, i) { return radarLine(d.axes); })\r\n .style(\"stroke-width\", cfg.strokeWidth + \"px\")\r\n .style(\"stroke\", (d, i) => cfg.color(i))\r\n .style(\"fill\", \"none\")\r\n .style(\"filter\", \"url(#glow)\");\r\n\r\n //Append the circles\r\n blobWrapper.selectAll(\".radarCircle\")\r\n .data(d => d.axes)\r\n .enter()\r\n .append(\"circle\")\r\n .attr(\"class\", \"radarCircle\")\r\n .attr(\"r\", cfg.dotRadius)\r\n .attr(\"cx\", (d, i) => rScale(d.value) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"cy\", (d, i) => rScale(d.value) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .style(\"fill\", (d,i) => cfg.color(d.id))\r\n .style(\"fill-opacity\", 0.8);\r\n\r\n /////////////////////////////////////////////////////////\r\n //////// Append invisible circles for tooltip ///////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Wrapper for the invisible circles on top\r\n const blobCircleWrapper = g.selectAll(\".radarCircleWrapper\")\r\n .data(data)\r\n .enter().append(\"g\")\r\n .attr(\"class\", \"radarCircleWrapper\");\r\n\r\n //Append a set of invisible circles on top for the mouseover pop-up\r\n blobCircleWrapper.selectAll(\".radarInvisibleCircle\")\r\n .data(d => d.axes)\r\n .enter().append(\"circle\")\r\n .attr(\"class\", \"radarInvisibleCircle\")\r\n .attr(\"r\", cfg.dotRadius * 1.5)\r\n .attr(\"cx\", (d, i) => rScale(d.value) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"cy\", (d, i) => rScale(d.value) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .style(\"fill\", \"none\")\r\n .style(\"pointer-events\", \"all\")\r\n .on(\"mouseover\", function(self, d, i) {\r\n tooltip\r\n .attr('x', self.cx.baseVal.value - 10)\r\n .attr('y', self.cy.baseVal.value - 10)\r\n .transition()\r\n .style('display', 'block')\r\n .text(Format(d.value) + cfg.unit);\r\n })\r\n .on(\"mouseout\", function () {\r\n tooltip.transition()\r\n .style('display', 'none').text('');\r\n });\r\n\r\n const tooltip = g.append(\"text\")\r\n .attr(\"class\", \"tooltip\")\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .style(\"font-size\", \"12px\")\r\n .style('display', 'none')\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"dy\", \"0.35em\");\r\n\r\n if (cfg.legend !== false && typeof cfg.legend === \"object\") {\r\n let legendZone = svg.append('g');\r\n let names = data.map(el => el.name);\r\n // if (cfg.legend.title) {\r\n // let title = legendZone.append(\"text\")\r\n // .attr(\"class\", \"title\")\r\n // .attr('transform', 'translate(100,40)')\r\n // .attr(\"x\", cfg.w - 70)\r\n // .attr(\"y\", 10)\r\n // .attr(\"font-size\", \"12px\")\r\n // .attr(\"fill\", \"#404040\")\r\n // .text(\"Organization XYZ\");\r\n // }\r\n let legend = legendZone.append(\"g\")\r\n .attr(\"class\", \"legend\")\r\n .attr(\"height\", 100)\r\n .attr(\"width\", 200)\r\n .attr('transform', 'translate(50,250)');\r\n // Create rectangles markers\r\n legend.selectAll('rect')\r\n .data(names)\r\n .enter()\r\n .append(\"rect\")\r\n .attr(\"x\", cfg.w - 65)\r\n .attr(\"y\", (d,i) => i * 20)\r\n .attr(\"width\", 10)\r\n .attr(\"height\", 10)\r\n .style(\"fill\", (d,i) => cfg.color(i));\r\n // Create labels\r\n legend.selectAll('text')\r\n .data(names)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"x\", cfg.w - 52)\r\n .attr(\"y\", (d,i) => i * 20 + 9)\r\n .attr(\"font-size\", \"11px\")\r\n .attr(\"fill\", \"#737373\")\r\n .text(d => d);\r\n }\r\n return svg;\r\n }\r\n\r\n\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #radarchartcontainer class=\"lib-chart-wrapper\"\r\n(resized)=\"onResized($event)\">\r\n<lib-chart-header\r\n[title]=\"chartData.metaData.title\"\r\n[hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n[menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n(menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"radarchartcontainer\"\r\n #radarchartcontainer\r\n class=\"lib-chart-svg radarChart2\"\r\n ></div>\r\n\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport { ResizedEvent } from \"angular-resize-event\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: \"lib-line-chart-card\",\r\n templateUrl: \"./line-chart-card.component.html\",\r\n styleUrls: [\"./line-chart-card.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class LineChartCardComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"linechartcardcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"linecardcontainer\", { static: true })\r\n linecardcontainerElt!: ElementRef;\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n chartValue: any;\r\n hideShadow: boolean = false;\r\n resetBackgroundColor: boolean = false;\r\n uniqueId: any = this.getUniqueId();\r\n\r\n \r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 27, right: 50, bottom: 0, left: 50 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFontSize: \".7em\",\r\n numberOfYTicks: 4,\r\n yAxisCustomlabelStyles: \"\",\r\n yAxisCustomTextStyles: \"\",\r\n xAxisCustomTextStyles: \"\",\r\n svgHeight: 60,\r\n footerHeight: \"34%\",\r\n legendHeight: \"20%\",\r\n xAxisGrid: true,\r\n yAxisGrid: true,\r\n showXaxis: true,\r\n showYaxis: true,\r\n showValues: true,\r\n hideShadow: false,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n backgroundColor: \"#052340\",\r\n showDataPointValues: false,\r\n showSlider:false,\r\n window_count:3,\r\n refresh:3,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n hour: any;\r\n overtime: any = 0;\r\n percentage: any = \"\";\r\n dataType: any;\r\n parentChartConfigurations: any;\r\n category: string = \"\";\r\n show_legend: any = false;\r\n overtime_value:boolean=false;\r\n overtime_staus:boolean=false;\r\n datatype_status:boolean=false;\r\n itemList: any;\r\n itemsPerPage: number=0;\r\n totalItems: any;\r\n currentPage: any;\r\n pageSize: any;\r\n currentList: any;\r\n next:boolean=false;\r\n prev:boolean=false;\r\n refresh_status:boolean=false;\r\n pages:any;\r\n\r\n\r\n\r\n constructor() {\r\n super();\r\n } \r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n self.chartConfiguration.showSlider ? this.sliderRefresh() : this.initializeLineChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n self.chartConfiguration.showSlider ? this.sliderRefresh() : this.initializeLineChart();\r\n }\r\n ngOnInit() {\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n if(this.chartData.metaData.value && this.chartData.metaData.format){\r\n this.chartValue =\r\n this.chartData.metaData.value + this.chartData.metaData.format;\r\n }\r\n self.chartConfiguration.showSlider ? this.sliderRefresh() : this.initializeLineChart();\r\n }\r\n \r\n sliderRefresh(){\r\n let self = this;\r\n let metaData:any = null;\r\n metaData = this.chartData.metaData;\r\n let refresh=self.chartConfiguration.refresh;\r\n let cat_count = Object.keys(metaData.colorMap).length;\r\n this.pageSize= (cat_count) * 5;\r\n this.itemList = this.chartData.data;\r\n this.pages=Math.ceil(this.itemList.length/this.pageSize);\r\n // let window=self.chartConfiguration.window_count;\r\n this.currentPage=this.pages;\r\nif(refresh>0){\r\n let interval=setInterval(()=>{ \r\n this.refresh_status=true;\r\n this.loadPage();\r\n }, refresh*1000);\r\n setTimeout(()=> {\r\n this.prev=false;\r\n this.next=false;\r\n this.currentPage=this.pages;\r\n this.refresh_status=false;\r\n clearInterval(interval);\r\n \r\n }, \r\n refresh*2*10000);\r\n }\r\n else{\r\n this.loadPage();\r\n }\r\n }\r\n loadPage() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n let metaData:any = null;\r\n metaData = this.chartData.metaData;\r\n let window=self.chartConfiguration.window_count;\r\n this.itemList = this.chartData.data;\r\n let cat_count = Object.keys(metaData.colorMap).length;\r\n this.pageSize= (cat_count) * 5;\r\n this.pages=Math.ceil(this.itemList.length/this.pageSize);\r\n if(this.refresh_status){\r\n if(window>this.pages){\r\n window=this.pages;\r\n }\r\n if(this.next==false){\r\n if(this.currentPage>=window-1){\r\n this.prev=true;\r\n this.currentPage--;\r\n }\r\n if(this.currentPage==1){\r\n this.prev=false;\r\n this.next=true;\r\n }\r\n }\r\n else if(this.prev==false){\r\n if(this.currentPage<=window){\r\n this.next=true;\r\n this.currentPage++;\r\n }\r\n if(this.currentPage==window){\r\n this.next=false;\r\n this.prev=true;\r\n }\r\n } \r\n }\r\n this.currentList = this.itemList.slice(\r\n (this.pages - this.currentPage ) * this.pageSize ,\r\n (this.pages- this.currentPage ) * this.pageSize + this.pageSize\r\n ); \r\n this.initializeLineChart();\r\n }\r\n\r\n initializeLineChart() {\r\n var self = this;\r\n let data :any= [];\r\n let metaData :any= null;\r\n let colorMap = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 18;\r\n let result:any = [];\r\n let sum: any = 0;\r\n\r\n var tick_length = 7;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.chartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.chartConfiguration.flagForMultiChart,\r\n hideShadow: this.chartConfiguration.hideShadow,\r\n backgroundColor: this.customChartConfiguration.backgroundColor\r\n };\r\n this.hideShadow = this.chartConfiguration.hideShadow;\r\n if(self.chartConfiguration.showSlider){\r\n this.itemList = this.chartData.data;\r\n this.totalItems = this.itemList.length;\r\n data = this.currentList;\r\n\r\n }\r\n else{\r\n data = this.chartData.data; \r\n } \r\n metaData = this.chartData.metaData;\r\n colorMap = metaData.colorMap;\r\n this.dataType = metaData.dataType;\r\n var formatValue = d3.format(\".3s\");\r\n \r\n for (var k = 0; k < data.length; k++) {\r\n if (!data[k][\"category\"]) {\r\n data[k][\"category\"] = Object.keys(colorMap)[\r\n Object.keys(colorMap).length - 1\r\n ];\r\n }\r\n }\r\n this.hour = data[0][\"hours\"];\r\n if (this.hour == undefined) {\r\n this.hour = data[0][\"week\"];\r\n }\r\n data.reduce(function(res:any, value:any) {\r\n if (!res[value.category]) {\r\n res[value.category] = {\r\n week: value.week,\r\n value: value.value,\r\n category: value.category\r\n };\r\n result.push(res[value.category]);\r\n }\r\n return res;\r\n }, {});\r\n for (var j = 0; j < result.length; j++) {\r\n if (result[j].category.toLowerCase() != \"threshold\") {\r\n sum += result[j].value;\r\n }\r\n if(result.length>1 && result[j].category.toLowerCase() == \"threshold\"){\r\n this.overtime_staus=true;\r\n }\r\n \r\n }\r\n // if(result.length>1 && this.overtime_value==false){\r\n // this.overtime_value=true;\r\n // }\r\n if(result.length>1) {\r\n this.show_legend = true;\r\n }\r\n if(this.overtime_staus==true){\r\n this.overtime_value=false;\r\n } \r\n this.overtime = sum;\r\n if (this.hour) {\r\n this.percentage = Math.ceil((this.overtime / this.hour) * 100);\r\n this.percentage = Number.isNaN(this.percentage) || this.percentage< 100 ? this.percentage :formatValue(this.percentage);\r\n }\r\n if((this.dataType==\"Days\" || this.dataType==\" Days\") && this.overtime<2){\r\n this.overtime=this.overtime*24;\r\n this.dataType=\" Hours\";\r\n }\r\n\r\n this.overtime=this.overtime>1 ? self.chartConfiguration.labelFormatter(this.overtime) : this.overtime;\r\n if(this.dataType==\" USD\"){\r\n this.datatype_status=true;\r\n this.dataType=\"$ \";\r\n }\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var linecardcontainer = d3.select(this.linecardcontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(linecardcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n var sumstat = d3\r\n .nest() // nest function allows to group the calculation per level of a factor\r\n .key(function(d) {\r\n return d.category;\r\n })\r\n .entries(data);\r\n\r\n // Add X axis --> it is a date format\r\n // add condition\r\n // if(self.chartConfiguration.showSlider){\r\n // var x = d3\r\n // .scaleBand()\r\n // .rangeRound([width, 0])\r\n // .domain(\r\n // data.map(function(d) {\r\n // return d.week;\r\n // })\r\n // );\r\n // }\r\n // else{\r\n var x = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(\r\n data.map(function(d) {\r\n return d.week;\r\n })\r\n );\r\n // }\r\n if (this.customChartConfiguration.showYaxis != undefined) {\r\n self.chartConfiguration.showYaxis = this.customChartConfiguration.showYaxis;\r\n }\r\n\r\n if (self.chartConfiguration.showYaxis) {\r\n //self.chartConfiguration.showYaxis\r\n var xAxis = svg\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-card-x-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n );\r\n d3.selectAll(\"g.lib-line-card-x-axis-text g.tick text\")\r\n // .attr(\"y\", function() {\r\n // return tick_length;\r\n // });\r\n // d3.selectAll(\"g.lib-line-card-x-axis-text g.tick text\")\r\n // .style(\"font-size\", \"10px\")\r\n \r\n // .attr(\"y\", function (d) {\r\n // return 7\r\n // })\r\n // .attr(\"transform\", \"rotate(10)\")\r\n .attr(\"y\", function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n })\r\n }\r\n\r\n // Add Y axis\r\n var y = d3\r\n .scaleLinear()\r\n .domain([\r\n 0,\r\n d3.max(data, function(d) {\r\n return d.value;\r\n })\r\n ])\r\n .range([height, 0])\r\n .nice();\r\n\r\n if (self.chartConfiguration.xAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .ticks(3)\r\n .tickSize(-height)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .style(\"opacity\", \"0\")\r\n .call(g => g.select(\".domain\").remove());\r\n }\r\n\r\n if (self.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .style(\"opacity\", \"0\")\r\n .call(g => g.select(\".domain\").remove());\r\n }\r\n\r\n if (self.chartConfiguration.showYaxis) {\r\n //self.chartConfiguration.showYaxis\r\n var yAxis = svg\r\n .append(\"g\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-y-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomTextStyles)\r\n\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n );\r\n // .call(g => g.select(\".domain\").remove());\r\n }\r\n\r\n // Draw the line\r\n if (this.customChartConfiguration.showYaxis != undefined) {\r\n svg\r\n .selectAll(\".line\")\r\n .data(sumstat)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", function(d) {\r\n return colorMap[d.key];\r\n })\r\n .attr(\"stroke-width\", 1.5)\r\n .attr(\"d\", function(d) {\r\n return d3\r\n .line()\r\n .x(function(d) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .y(function(d) {\r\n return y(d.value);\r\n })\r\n .curve(d3.curveMonotoneX)(d.values);\r\n });\r\n } else {\r\n svg\r\n .selectAll(\".line\")\r\n .data(sumstat)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", function(d) {\r\n return colorMap[d.key];\r\n })\r\n .attr(\"stroke-width\", 1.5) \r\n .attr(\"d\", function(d) {\r\n return d3\r\n .line()\r\n .x(function(d) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .y(function(d) {\r\n return y(d.value);\r\n })(d.values);\r\n }); \r\n }\r\n var dot = svg\r\n .selectAll(\"myCircles\")\r\n .data(data)\r\n .enter()\r\n .append(\"g\")\r\n .on(\"click\", function(d) {\r\n if(d.category.toLowerCase()!=\"threshold\"){\r\n self.handleClick(d);\r\n }\r\n });\r\n\r\n dot\r\n .append(\"circle\")\r\n .attr(\"fill\", function(d) {\r\n return colorMap[d.category];\r\n })\r\n .attr(\"id\", function(d) {\r\n return d.value + colorMap[d.category];\r\n })\r\n .attr(\"stroke\", \"rgb(0 0 255 / 0%)\")\r\n .attr(\"stroke-width\", \"6%\")\r\n .attr(\"cx\", function(d) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"cy\", function(d) {\r\n return y(d.value);\r\n })\r\n .attr(\"r\", 3)\r\n .style(\"cursor\", \"pointer\")\r\n .on('mouseover', d=> {\r\n dot.selectAll('circle').filter(function(data){\r\n return data==d\r\n }).attr(\"r\", 5); \r\n })\r\n .on('mouseleave', d=> {\r\n dot.selectAll('circle').filter(function(data){\r\n return data==d\r\n }).attr(\"r\", 3); \r\n })\r\n .on('mouseenter',handleMouseOver )\r\n .on('mouseout',handleMouseOut );\r\n \r\n function handleMouseOver(d, i) { \r\n if(!self.chartConfiguration.showValues){\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n // .style(\"display\", \"none\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"style\", \"font-size: \" + \".75em\")\r\n .attr(\"x\", function() {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"y\", function() {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\")\r\n .text(function() {\r\n if(self.chartData.metaData.value && self.chartData.metaData.format){\r\n return self.chartConfiguration.labelFormatter(d.value)+ self.chartData.metaData.format;\r\n }\r\n else{\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n }\r\n \r\n })\r\n }\r\n }\r\n function handleMouseOut(d, i){\r\n if(!self.chartConfiguration.showValues){\r\n dot.selectAll(\".dot\").remove();\r\n }\r\n }\r\n\r\n if (\r\n self.chartConfiguration.showValues &&\r\n !self.chartConfiguration.showDataPointValues\r\n ) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n .style(\"display\", \"none\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"style\", \"font-size: \" + \".85em\")\r\n .attr(\"x\", function(d, i) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"y\", function(d) {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\");\r\n // if (self.chartConfiguration.showDataPointValues) {\r\n // dot.text(function (d) {\r\n // return self.chartConfiguration.labelFormatter(d.value);\r\n // });\r\n // }\r\n } else if (\r\n self.chartConfiguration.showValues &&\r\n self.chartConfiguration.showDataPointValues\r\n ) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n .style(\"display\", \"none\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"style\", \"font-size: \" + \".85em\")\r\n .attr(\"x\", function(d, i) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"y\", function(d) {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\")\r\n .text(function(d) {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n });\r\n }\r\n\r\n if (metaData.yLabel) {\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-y-axis-line-label lib-line-axis\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - (margin.left+3))\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(metaData.yLabel);\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #linecardcontainer [ngClass]=\"{'lib-chart-wrapper': !hideShadow,\r\n 'lib-chart-wrapper-wo-shadow':hideShadow}\"\r\n (resized)=\"onResized($event)\">\r\n <!-- <div class=\"lib-chart-header\">{{ chartData.metaData.title }}</div> -->\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [customChartConfiguration]=\"parentChartConfigurations\"\r\n\r\n></lib-chart-header>\r\n <div\r\n *ngIf=\"chartData && chartData.metaData\"\r\n [style.height]=\"chartConfiguration.legendHeight\"\r\n class=\"lib-line-chart-legend-wrapper\"\r\n >\r\n <div class=\"lib-line-label-wrapper\">\r\n \r\n <div class=\"line-card-legend-label\" *ngIf=\"show_legend\">\r\n <div class=\"lib-line-card-label-items\" *ngFor=\"let item of chartData.metaData.colorMap | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-line-legend-label-text small\"\r\n [ngStyle]=\"{ border: '1px solid ' + item.value }\"\r\n [style.color]=\"item.value\"\r\n >{{ item.key }}</span\r\n ></div>\r\n </div>\r\n <div\r\n class=\"lib-line-card-label-item\">\r\n <span *ngIf=\"percentage && !chartValue && !chartData.metaData.percentageDescription\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{overtime + dataType}} ({{percentage+\" %\"}})</span>\r\n <span *ngIf=\"percentage && !chartValue && chartData.metaData.percentageDescription\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{overtime + dataType}}<div class=\"small\"> ({{percentage+\" %\" + chartData.metaData.percentageDescription}})</div></span> \r\n \r\n <span *ngIf=\"!percentage && !chartValue && !datatype_status && !overtime_value\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{overtime + dataType}}</span>\r\n <span *ngIf=\"!percentage && !chartValue && datatype_status && !overtime_value\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{dataType + overtime}}</span>\r\n <span *ngIf=\"chartValue\"\r\n class=\"lib-line-legend-label-text\"\r\n >{{chartValue}}</span>\r\n </div>\r\n <!-- <div\r\n class=\"lib-line-label-item\"\r\n\r\n >\r\n\r\n </div> -->\r\n </div>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"linechartcardcontainer\"\r\n #linechartcardcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n <div *ngIf=\"chartConfiguration.showSlider\" [style.height]=\"chartConfiguration.footerHeight\" class=\"lib-line-chart-footer\">\r\n <ngb-pagination *ngIf=\"itemList && itemList.length > pageSize\" [collectionSize]=\"totalItems\" [(page)]=\"currentPage\"\r\n [pageSize]=\"pageSize\" [maxSize]=\"5\" [rotate]=\"true\" [boundaryLinks]=\"true\" (pageChange)=\"loadPage()\"\r\n class=\"sb-pagination\">\r\n \r\n </ngb-pagination>\r\n \r\n </div>\r\n</div>\r\n","import { Component, OnInit, ViewChild, ViewContainerRef, ComponentFactoryResolver, Input, EventEmitter, Output } from '@angular/core';\r\nimport { LineChartCardComponent } from '../line-chart-card/line-chart-card.component';\r\nimport ChartHelper from '../chart-helper';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-multiple-line-chart',\r\n templateUrl: './multiple-line-chart.component.html',\r\n styleUrls: ['./multiple-line-chart.component.less'],\r\n //encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class MultipleLineChartComponent implements OnInit {\r\n\r\n @ViewChild(\"kpicontainer\", { static: true, read: ViewContainerRef })\r\n VCR!: ViewContainerRef;\r\n @ViewChild(\"kpicontainer2\", { static: true, read: ViewContainerRef })\r\n VCR2!: ViewContainerRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n @Output() cardClickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n weightage: any;\r\n chartTitle: any;\r\n menuItems: any;\r\n nodeId:any;\r\n dataDuration:any;\r\n parentChartConfigurations: any;\r\n defaultConfiguration: any = {\r\n showYaxis: false,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: \"#052340\",\r\n showDataPointValues: true\r\n };\r\n uiConfiguration: any;\r\n\r\n constructor(private CFR: ComponentFactoryResolver) { }\r\n\r\n ngOnInit() {\r\n this.initialiseParentChartData();\r\n this.displayChart1();\r\n this.displayChart2();\r\n }\r\n ngOnChanges() {\r\n if (this.chartData) {\r\n this.initialiseParentChartData();\r\n this.displayChart1();\r\n this.displayChart2();\r\n }\r\n }\r\n initialiseParentChartData() {\r\n this.chartTitle = this.chartData.parentChartData.metaData.title;\r\n this.nodeId = this.chartData.parentChartData.metaData.nodeId;\r\n this.weightage = this.chartData.parentChartData.metaData.weightage;\r\n this.dataDuration=this.chartData.parentChartData.metaData.dataDuration;\r\n if (this.weightage.format)\r\n this.weightage.value = this.weightage.value + this.weightage.format;\r\n let temp :any= [];\r\n for (var i = 0; i < this.chartData.parentChartData.data.length; i++) {\r\n temp[i] = {\r\n name: this.chartData.parentChartData.data[i].kpiName,\r\n performance: this.chartData.parentChartData.data[i].performance.match(/^[+-]?\\d+(\\.\\d+)?$/)? this.chartData.parentChartData.data[i].performance+ \"%\": this.chartData.parentChartData.data[i].performance,\r\n progress: this.chartData.parentChartData.data[i].progress.match(/^[+-]?\\d+(\\.\\d+)?$/)? this.chartData.parentChartData.data[i].progress+ \"%\": this.chartData.parentChartData.data[i].progress\r\n };\r\n }\r\n this.menuItems = temp;\r\n\r\n for (var j in this.defaultConfiguration) {\r\n this.chartConfiguration[j] = ChartHelper.getValueByConfigurationType(\r\n j,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration.parentUIData.uiConfiguration.customChartConfiguration\r\n );\r\n }\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.chartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.chartConfiguration.flagForMultiChart,\r\n hideShadow: this.chartConfiguration.hideShadow,\r\n backgroundColor: this.chartConfiguration.backgroundColor\r\n }\r\n // this.uiConfiguration = {\r\n // resetBackgroundColor: this.customChartConfiguration.parentUIData.uiConfiguration.customChartConfiguration.resetBackgroundColor,\r\n // flagForMultiChart: this.customChartConfiguration.parentUIData.uiConfiguration.customChartConfiguration.flagForMultiChart\r\n // }\r\n }\r\n\r\n displayChart1() {\r\n let self = this;\r\n let componentFactory = self.CFR.resolveComponentFactory(\r\n LineChartCardComponent\r\n );\r\n let componentRef = self.VCR.createComponent(componentFactory);\r\n componentRef.instance.chartData = this.chartData.childChartData[0];\r\n componentRef.instance.customChartConfiguration = this.customChartConfiguration.childUIData[0].childUIConfigurations.customChartConfiguration;\r\n }\r\n\r\n displayChart2() {\r\n let self = this;\r\n let componentFactory = self.CFR.resolveComponentFactory(\r\n LineChartCardComponent\r\n );\r\n let componentRef = self.VCR2.createComponent(componentFactory);\r\n componentRef.instance.chartData = this.chartData.childChartData[1];\r\n componentRef.instance.customChartConfiguration = this.customChartConfiguration.childUIData[1].childUIConfigurations.customChartConfiguration;\r\n }\r\n cardClick(value)\r\n {\r\n this.cardClickEvent.emit(value);\r\n }\r\n\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div class=\"lib-chart-wrapper\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <lib-chart-header [title]=\"chartTitle\" [menuOptions]=\"menuItems\"\r\n [customChartConfiguration]=\"parentChartConfigurations\" [weightage]=\"weightage\"></lib-chart-header>\r\n </div>\r\n </div>\r\n <div class=\"row container-height reset-margin\" (click)=\"cardClick(nodeId)\">\r\n <div class=\"col-6 container-height padding-left-0 padding-right-0 background-color\">\r\n <div class=\"container-height\">\r\n <ng-template #kpicontainer></ng-template> \r\n <div class=\"text-center duration\" *ngIf=\"dataDuration\">{{dataDuration}}</div> \r\n \r\n </div>\r\n </div>\r\n <div class=\"col-6 container-height padding-right-0 padding-left-0\">\r\n <div class=\"container-height\">\r\n <ng-template #kpicontainer2></ng-template>\r\n <div class=\"text-center duration\" *ngIf=\"dataDuration\">{{dataDuration}}</div> \r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\n@Component({\r\n selector: 'lib-suggestions',\r\n templateUrl: './suggestions.component.html',\r\n styleUrls: ['./suggestions.component.less']\r\n})\r\nexport class SuggestionsComponent implements OnInit {\r\n\r\n @Input() chartData:any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartTitle:string=\"\";\r\n parentChartConfigurations: any;\r\n chartConfiguration: any = {};\r\n menuItems: any;\r\n data:any;\r\n defaultConfiguration: any = {\r\n showYaxis: false,\r\n resetBackgroundColor:false,\r\n flagForMultiChart:false,\r\n hideShadow: false,\r\n backgroundColor: \"#1BCCD3\",\r\n showIcon:true\r\n };\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.initialise();\r\n }\r\n\r\n initialise(){\r\n this.chartTitle = this.chartData.metaData.title;\r\n this.data = this.chartData.data;\r\n for (var j in this.defaultConfiguration) {\r\n this.chartConfiguration[j] = ChartHelper.getValueByConfigurationType(\r\n j,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.parentChartConfigurations={\r\n resetBackgroundColor: this.chartConfiguration.resetBackgroundColor,\r\n flagForMultiChart:this.chartConfiguration.flagForMultiChart,\r\n hideShadow: this.chartConfiguration.hideShadow,\r\n backgroundColor: this.chartConfiguration.backgroundColor,\r\n showIcon: this.chartConfiguration.showIcon\r\n }\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div class=\"lib-chart-wrapper\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <lib-chart-header [title]=\"chartTitle\" [menuOptions]=\"menuItems\"\r\n [customChartConfiguration]=\"parentChartConfigurations\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"></lib-chart-header>\r\n </div>\r\n </div>\r\n <div class=\"row container-height reset-margin\">\r\n <div class=\"col-12 container-styling center\">\r\n <div class=\"\">\r\n <div *ngFor=\"let row of data; let index=index; let odd=odd; let even=even;\">\r\n <div class=\"row reset-margin\" [ngClass]=\"{ odd: odd, even: even }\">\r\n <div class=\"col-1 text-padding center\">&#128161;</div>\r\n <div class=\"col-10 text-padding center\"> {{row.text}}</div>\r\n <div class=\"col-1 text-padding center status-symbol\"> &#x26A0;</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input, EventEmitter, Output, HostListener,ElementRef} from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\n@Component({\r\n selector: 'lib-table-chart',\r\n templateUrl: './table-chart.component.html',\r\n styleUrls: ['./table-chart.component.less']\r\n})\r\nexport class TableChartComponent implements OnInit {\r\n //chartData: any = { \"metaData\": { \"title\": \"\", \"headers\": [{ \"name\": \"cost\", \"children\": [\"cost per case\", \"cost per pallet\", \"overtime %\"] }, { \"name\": \"inventory\", \"children\": [\"invt b\", \"invt a\", \"invt c%\"] }, { \"name\": \"productivity\", \"children\": [\"prod a\", \"prod b\", \"prod c%\"] }] }, \"data\": [{ \"metaData\": { \"title\": \"DC1\" }, \"data\": [{ \"name\": \"cost\", \"value\": \"88%\", \"children\": [{ \"name\": \"cost per case\", \"value\": \"10%\" }, { \"name\": \"cost per pallet\", \"value\": \"1%\" }, { \"name\": \"overtime %\", \"value\": \"13%\" }] }, { \"name\": \"inventory\", \"value\": \"74%\", \"children\": [{ \"name\": \"invt a\", \"value\": \"20%\" }, { \"name\": \"invt b\", \"value\": \"41%\" }, { \"name\": \"invt c%\", \"value\": \"23%\" }] }, { \"name\": \"productivity\", \"value\": \"91%\", \"children\": [{ \"name\": \"prod a\", \"value\": \"59%\" }, { \"name\": \"prod b\", \"value\": \"41%\" }, { \"name\": \"prod c%\", \"value\": \"13%\" }] }] }, { \"metaData\": { \"title\": \"DC2\" }, \"data\": [{ \"name\": \"cost\", \"value\": \"90%\", \"children\": [{ \"name\": \"cost per case\", \"value\": \"20%\" }, { \"name\": \"cost per pallet\", \"value\": \"31%\" }, { \"name\": \"overtime %\", \"value\": \"10%\" }] }, { \"name\": \"inventory\", \"value\": \"64%\", \"children\": [{ \"name\": \"invt a\", \"value\": \"20%\" }, { \"name\": \"invt b\", \"value\": \"11%\" }, { \"name\": \"invt c%\", \"value\": \"43%\" }] }, { \"name\": \"productivity\", \"value\": \"81%\", \"children\": [{ \"name\": \"prod a\", \"value\": \"79%\" }, { \"name\": \"prod b\", \"value\": \"51%\" }, { \"name\": \"prod c%\", \"value\": \"33%\" }] }] }] };\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n @Output() dropdownChangeEvent = new EventEmitter<any>();\r\n @Output() cardClickEvent = new EventEmitter<any>();\r\n labelFormatter: any = ChartHelper.defaultFormatter;\r\n\r\n headers: any = [];\r\n title: string = '';\r\n data1: any;\r\n data: any;\r\n showChildren: boolean = false;\r\n children: any;\r\n activeParent: any;\r\n dropdownData: any = [];\r\n childClassName: string=\"\";\r\n parentClassName: string=\"\";\r\n dataCounter: number =0;\r\n payloadType:string=\"\";\r\n addButton:boolean=false;\r\n selectedDcs:any=[];\r\n hideDropDown:boolean=true\r\n checkedDcs:any=[];\r\n // changeCheckbox:boolean=false;\r\n // addButtonStatus:boolean=true;\r\n\r\n constructor() {}\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickout() {\r\n if(!this.hideDropDown) {\r\n this.hideDropDown=true;\r\n } \r\n }\r\n\r\n ngOnInit() {\r\n this.getHeaderData();\r\n this.getDcData();\r\n }\r\n getHeaderData() {\r\n this.headers = this.chartData.metaData.headers;\r\n this.dropdownData = this.chartData.metaData.dcs;\r\n this.title = this.chartData.metaData.title;\r\n this.payloadType = this.chartData.metaData.payloadType\r\n ? this.chartData.metaData.payloadType\r\n : 'DC';\r\n }\r\n getDcData() {\r\n this.data1 = this.chartData.data;\r\n for (var i = 0; i < this.data1.length; i++) {\r\n for (var j = 0; j < this.data1[i].data.length; j++) {\r\n let results: any = [];\r\n this.headers.map(data => {\r\n let checkcategory = this.data1[i].data.some(\r\n obj => obj.kpiName == data.kpiName\r\n );\r\n if (!checkcategory) {\r\n this.data1[i].data.push({\r\n kpiName: data.kpiName,\r\n value: 'NA',\r\n children: []\r\n });\r\n }\r\n var founds = false;\r\n this.data1[i].data = this.data1[i].data.filter(function(item) {\r\n if (!founds && item.kpiName == data.kpiName) {\r\n results.push(item);\r\n founds = true;\r\n return false;\r\n } else return true;\r\n });\r\n });\r\n this.data1[i].data = results;\r\n }\r\n if(!this.checkedDcs.includes(this.data1[i].metaData.nodeId)){\r\n this.checkedDcs.push(this.data1[i].metaData.nodeId);\r\n }\r\n }\r\n\r\n this.dataCounter = this.chartData.data.length;\r\n let className: any = ChartHelper.getColumnValue(this.dataCounter);\r\n this.childClassName = className.child;\r\n this.parentClassName = className.parent;\r\n }\r\n\r\n hideShowClick(parent: string) {\r\n if (!this.showChildren) {\r\n for (var i = 0; i < this.headers.length; i++) {\r\n if (this.headers[i].kpiName == parent) {\r\n this.activeParent = parent;\r\n this.children = this.headers[i].children;\r\n this.showChildren = true;\r\n break;\r\n }\r\n }\r\n for (var i = 0; i < this.data1.length; i++) {\r\n for (var j = 0; j < this.data1[i].data.length; j++) {\r\n if (this.data1[i].data[j].kpiName == this.activeParent) {\r\n let kpichild = this.data1[i].data[j].children;\r\n let result: any = [];\r\n let len = this.children.length;\r\n this.children.map(data => {\r\n let checkdata = kpichild.some(\r\n (obj, index) =>\r\n kpichild.indexOf(obj.kpiName) == index && obj.kpiName == data\r\n );\r\n if (!checkdata) {\r\n this.data1[i].data[j].children.push({\r\n kpiName: data,\r\n performance: 'NA'\r\n });\r\n }\r\n var found = false;\r\n this.data1[i].data[j].children = this.data1[i].data[\r\n j\r\n ].children.filter(function(item) {\r\n if (!found && item.kpiName == data) {\r\n result.push(item);\r\n found = true;\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n });\r\n });\r\n this.data1[i].data[j].children = result;\r\n }\r\n }\r\n }\r\n } else {\r\n this.activeParent = '';\r\n this.showChildren = false;\r\n }\r\n }\r\n showDropdown(event: Event) {\r\n event.stopPropagation();\r\n this.hideDropDown = !this.hideDropDown;\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n onOptionsSelected(dcs) {\r\n console.log(dcs)\r\n let optionClicked=\"\";\r\n if( Array.isArray(dcs)){\r\n dcs.map((node, index) => {\r\n optionClicked += (index === 0 ? \"\" : \",\") + node;\r\n });\r\n }\r\n else{\r\n optionClicked=dcs;\r\n }\r\n this.dropdownChangeEvent.emit(optionClicked);\r\n this.hideDropDown = true;\r\n }\r\n delete(dcSelected: string) {\r\n for (var i = 0; i < this.dropdownData.length; i++) {\r\n if (\r\n this.dropdownData[i].value.toLowerCase() == dcSelected.toLowerCase()\r\n ) {\r\n this.onOptionsSelected({ remove: this.dropdownData[i].id });\r\n const index: number = this.checkedDcs.indexOf(this.dropdownData[i].id);\r\n if (index !== -1) {\r\n this.checkedDcs.splice(index, 1);\r\n } \r\n break;\r\n }\r\n }\r\n }\r\n cardClick(value) {\r\n this.cardClickEvent.emit({ value: value, type: this.payloadType });\r\n }\r\n selectedValue(event: Event,value, isChecked: boolean){\r\n event.stopPropagation();\r\n this.hideDropDown = false;\r\n if(isChecked){\r\n this.addButton=true;\r\n this.selectedDcs.push(value);\r\n if(!this.checkedDcs.includes(value)){\r\n this.checkedDcs.push(value);\r\n }\r\n }else{\r\n const index: number = this.selectedDcs.indexOf(value);\r\n if (index !== -1) {\r\n this.selectedDcs.splice(index, 1);\r\n } \r\n }\r\n }\r\n addClicked(event: Event){\r\n event.stopPropagation();\r\n if(this.addButton){\r\n this.onOptionsSelected(this.selectedDcs)\r\n }\r\n }\r\n}\r\n","<div class=\"row box-shadow\">\r\n <div class=\"col-12\">\r\n <div class=\"row selectbox-styling\">\r\n <div class=\" align-left padding-right-0 padding-top px-0\">\r\n <label for=\"selectDc\">Add {{payloadType}}s to Compare</label>\r\n </div>\r\n <div class=\"col-10 align-left pl-0\">\r\n <!-- <select class=\"form-control\" id=\"selectDc\" #selectDc (change)='onOptionsSelected(selectDc.value)'>\r\n <option [value]=\"\" disabled>Select {{payloadType}}s</option>\r\n <option *ngFor=\"let row of dropdownData\" [value]=\"row.id\">{{row.value}}</option>\r\n </select> -->\r\n <div>\r\n <button class=\"drop-toggle btn flat col-7 \" (click)=\"showDropdown($event)\">\r\n <span>Select {{payloadType}}s</span>\r\n <i class=\"fa fa-angle-down\"></i>\r\n </button>\r\n <div class=\"drop-show\" [ngClass]=\"{'hide-dropdown': hideDropDown}\">\r\n <label *ngFor=\"let row of dropdownData\">\r\n <input type=\"checkbox\" class=\"checkbox-styling\" [checked]=\"checkedDcs.includes(row.id)\" (change)=\"selectedValue($event,row.id,$event.target.checked)\"\r\n />\r\n <span class=\"pl-3\">{{row.value}}</span>\r\n </label> <div *ngIf=\"addButton\" class=\"d-flex justify-content-end\"><button class=\"btn btn-primary btn-sm \" (click)=\"addClicked($event)\">ADD</button></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row table-styling\">\r\n <div class=\"align-left\" [ngClass]=\"parentClassName\">\r\n <div class=\"row border-bottom-styling padding\">\r\n <div class=\"col-12\">\r\n <!-- <div class=\"pencil\">\r\n &#9998;\r\n Performance Category\r\n </div> -->\r\n <span class=\"performance-bold overflow\">\r\n {{title}}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let parent of headers\">\r\n <div class=\"row header-background padding\">\r\n <div class=\"col-12\">\r\n <span class=\"bold overflow data-styling\">\r\n {{parent.kpiName}}\r\n </span>\r\n <span class=\"cursor float-right bold\" (click)=\"hideShowClick(parent.kpiName)\">\r\n <span *ngIf=\"!(showChildren && parent.kpiName == activeParent)\">\r\n &#x2b;\r\n </span>\r\n <span *ngIf=\"showChildren && parent.kpiName == activeParent\">\r\n &#x2212;\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showChildren && parent.kpiName == activeParent\">\r\n <div class=\"row padding-left header-background\" *ngFor=\"let child of children\">\r\n <div class=\"col-12\">\r\n <div class=\"padding-sub overflow\">\r\n {{child}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"border-left-style\" [ngClass]=\"childClassName\" *ngFor=\"let parent of data1\">\r\n <div class=\"row dc-backgtound border-bottom-styling align-center padding\">\r\n <div class=\"col-12\">\r\n <div class=\"overflow title-styling lh-24\" (click)=\"cardClick(parent.metaData.nodeId)\">\r\n {{parent.metaData.title}}\r\n </div>\r\n </div>\r\n <div class=\"top-corner\" *ngIf=\"dataCounter>2\" (click)=\"delete(parent.metaData.title)\">\r\n &#10062;\r\n </div>\r\n </div>\r\n <div *ngFor=\"let item of parent.data\">\r\n <div class=\"row align-center bold data-styling p-19\">\r\n <div class=\"col-12\">\r\n <div class=\"overflow\">\r\n {{item.value}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showChildren && item.kpiName == activeParent\">\r\n <div class=\"row align-center\" *ngFor=\"let child of item.children\">\r\n <div class=\"col-12\">\r\n <div class=\"padding-sub overflow\">\r\n {{child.performance}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-multiple-progressbar',\r\n templateUrl: './multiple-progressbar.component.html',\r\n styleUrls: ['./multiple-progressbar.component.less']\r\n})\r\nexport class MultipleProgressbarComponent implements OnInit {\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n resetBackgroundColor: boolean = false;\r\n parentChartConfigurations: any;\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 20 },\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: \"#052340\"\r\n };\r\n progressvalue = 0;\r\n metaData;\r\n data = [];\r\n currentvalue1: any;\r\n currentvalue2: any;\r\n currentname1: any;\r\n currentname2: any;\r\n footerText:any;\r\n\r\n color_type: any;\r\n type: any = \"\";\r\n datatype: any;\r\n progress_style: any;\r\n first: any;\r\n lasts: any;\r\n diff: any;\r\n per_value: any;\r\n width: number=0;\r\n datatype_status:boolean=false;\r\n value_status:boolean=false;\r\n hasDrillDownData:boolean=false;\r\n featureId:any;\r\n indexType:any=\"\";\r\n isFromMultiProgressBar:boolean=true;\r\n color11:any; \r\n per11:any;\r\n color12:any; \r\n per12:any;\r\n color21:any; \r\n per21:any;\r\n color22:any; \r\n per22:any;\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.resetBackgroundColor = this.customChartConfiguration.resetBackgroundColor;\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.customChartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.customChartConfiguration.flagForMultiChart,\r\n hideShadow: this.customChartConfiguration.hideShadow,\r\n backgroundColor: this.customChartConfiguration.resetBackgroundColor\r\n ? \"\"\r\n : \"#052340\"\r\n };\r\n let data = [];\r\n // let type:any;\r\n\r\n this.data = this.chartData.data;\r\n\r\n this.first = this.data[0];\r\n\r\n var len = this.data.length;\r\n\r\n this.lasts = this.data[len - 1];\r\n this.metaData = this.chartData.metaData;\r\n this.featureId=this.metaData.featureId;\r\n //this.resetBackgroundColor=true;\r\n this.datatype = this.metaData.datatype;\r\n this.currentvalue1 = this.metaData.currentValue1.value;\r\n this.currentname1=this.metaData.currentValue1.name;\r\n this.footerText=this.metaData.currentValue1.footerText;\r\n if(this.metaData.currentValue1.color && this.metaData.currentValue1.color.length>0){\r\n this.color11=this.metaData.currentValue1.color[0].colorCode; \r\n this.per11=this.metaData.currentValue1.color[0].range; \r\n this.color12=this.metaData.currentValue1.color[1].colorCode; \r\n this.per12=this.metaData.currentValue1.color[1].range;\r\n }if(this.metaData.currentValue2 && this.metaData.currentValue2.color && this.metaData.currentValue2.color.length>0){\r\n this.color21=this.metaData.currentValue2.color[0].colorCode; \r\n this.per21=this.metaData.currentValue2.color[0].range; \r\n this.color22=this.metaData.currentValue2.color[1].colorCode; \r\n this.per22=this.metaData.currentValue2.color[1].range;\r\n }\r\n\r\n if(this.metaData.currentValue2 && this.metaData.currentValue2.name){\r\n this.currentname2=this.metaData.currentValue2.name;\r\n this.currentvalue2 = this.metaData.currentValue2.value;\r\n }\r\n this.color_type = this.metaData.colorType;\r\n if(!this.metaData.currentValue2){\r\n this.color_type=this.color_type+\"__thick\";\r\n }\r\n this.indexType=this.metaData.type?this.metaData.type:\"\";\r\n if(this.currentvalue1>1){\r\n this.value_status=true;\r\n }\r\n if(this.currentvalue2>1){\r\n this.value_status=true;\r\n }\r\n this.hasDrillDownData = this.metaData.hasDrillDown;\r\n if((this.datatype==\"Hr\" || this.datatype==\"Hours\") && this.currentvalue1<2){\r\n this.currentvalue1=(this.currentvalue1*60).toFixed(2);\r\n\r\n this.datatype=\" Minutes\"\r\n }\r\n if((this.datatype==\"Hr\" || this.datatype==\"Hours\") && this.currentvalue2<2){\r\n this.currentvalue2=(this.currentvalue2*60).toFixed(2);\r\n\r\n this.datatype=\" Minutes\"\r\n }\r\n if(this.datatype==\"USD\"){\r\n this.datatype_status=true;\r\n this.datatype=\"$ \";\r\n }\r\n if (this.datatype == \"%\" || this.datatype == \" %\") {\r\n this.type = \"%\";\r\n } else {\r\n this.type = \"\";\r\n }\r\n this.diff = (100 - this.lasts) / 4;\r\n if (this.diff > 0) {\r\n this.per_value = this.currentvalue1 * this.currentvalue1 + this.diff;\r\n this.progress_style = {\r\n width: this.per_value + \"%\"\r\n };\r\n } else {\r\n if(this.currentvalue1<=0 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 0 + \"%\"\r\n };\r\n this.currentvalue1=0;\r\n }\r\n else if(this.currentvalue1>=100 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 100 + \"%\"\r\n };\r\n this.currentvalue1=100;\r\n }\r\n else{\r\n this.progress_style = {\r\n width: this.metaData.currentValue + \"%\"\r\n };\r\n }\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n getBackgroundColor(c1, p1, c2, p2){\r\n if(c1 && p1 && c2 && p2){\r\n return \"linear-gradient(to right, \"+c1+\" \"+ p1+\"%, \"+c2+\" \"+p2+\"% )\";\r\n }\r\n else{ \r\n return \"linear-gradient(to right, #04CBCC 90%, #04CBCC 10%)\";\r\n }\r\n\r\n }\r\n}\r\n","<div [ngClass]=\"{'lib-chart-wrapper progressbar': !resetBackgroundColor,\r\n 'lib-chart-wrapper-wo-shadow':resetBackgroundColor}\">\r\n <lib-chart-header [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\" [menuOptions]=\"undefined\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\" [customChartConfiguration]=\"parentChartConfigurations\" [isFromMultiProgressBar]=\"isFromMultiProgressBar\"></lib-chart-header>\r\n <div class=\"lib-chart-svg\" *ngIf=\"currentname1\" [ngClass]=\"chartConfiguration.hideShadow ? 'slidecontainer' : 'slidewidth'\">\r\n <p *ngIf=\"chartConfiguration.hideShadow\" [ngStyle]=\"progress_style\" [attr.data-value]=\"currentvalue1 + datatype\"></p>\r\n \r\n \r\n <!-- <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5\" *ngIf=\"currentname1\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n \r\n </div>\r\n </div> -->\r\n\r\n\r\n\r\n <!-- <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5 mt-12\" *ngIf=\"currentname2\" [ngClass]=\"{' mt-12':currentname2,\r\n 'mt-25':!currentname2}\"></span>\r\n <div [style.margin-left.%]=\"currentvalue1\"\r\n [ngClass]=\"{'w-80':!currentname2,\r\n ' w-65':currentname2}\">\r\n {{currentvalue1}}{{datatype}}\r\n </div>\r\n </div> -->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5\" *ngIf=\"currentname2\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <!-- <div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div> -->\r\n <div \r\n class=\"fw-900\"\r\n [ngClass]=\"{'mt-27 w-80':!currentname2,\r\n 'mt-20 w-65':currentname2}\">\r\n <span [style.margin-left.%]=\"(currentvalue1/lasts)*100\">{{currentvalue1}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <!-- <span class=\"pr-5 mt-12\" style=\"visibility: none;\" *ngIf=\"currentname2\" [ngClass]=\"{' mt-12':currentname2,\r\n 'mt-25':!currentname2}\">{{currentname1}}</span> -->\r\n <!-- <output class=\"fw-900 p-a actual__value\" [ngClass]=\"{\r\n 'w-80':!currentname2,\r\n 'w-65':currentname2}\" [style.margin-left.%]=\"currentvalue1\">{{currentvalue1}}{{datatype}}</output> -->\r\n <span class=\"pr-5 mt-12\" *ngIf=\"currentname2\" [ngClass]=\"{' mt-m7':currentname2,\r\n 'mt-25':!currentname2}\">{{currentname1}}</span>\r\n\r\n <input *ngIf=\"value_status\" \r\n type=\"range\" min=\"{{first}}\" max=\"{{lasts}}\" \r\n [value]=\"currentvalue1\" class=\"slider\" \r\n [class]=\"color_type\"\r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n ' w-80':!currentname2,\r\n ' w-65':currentname2}\" \r\n [ngStyle]=\"{'background': getBackgroundColor(color11, per11,color12,per12)}\"\r\n\r\n id=\"{{featureId}}\" \r\n disabled name=\"rangeInput\">\r\n <input *ngIf=\"!value_status\" type=\"range\" max=\"{{lasts}}\" [attr.value]=\"currentvalue1\" class=\"slider\" [class]=\"color_type\" \r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n ' w-80':!currentname2,\r\n ' w-65':currentname2}\" \r\n [ngStyle]=\"{'background': getBackgroundColor(color11, per11,color12,per12)}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n </div>\r\n </div>\r\n <div class=\"lib-chart-svg \" [ngClass]=\"chartConfiguration.hideShadow ? 'slidecontainer' : 'slidewidth'\">\r\n <p *ngIf=\"chartConfiguration.hideShadow\" [ngStyle]=\"progress_style\" [attr.data-value]=\"currentvalue2 + datatype\"></p>\r\n <!-- <output [ngClass]=\"\" class=\"fw-900 mt-3\">{{currentvalue2}}{{datatype}}</output> -->\r\n \r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\" *ngIf=\"currentvalue2\">\r\n <span class=\"pr-5\" *ngIf=\"currentname2\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <!-- <div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div> -->\r\n <div class=\"mt-10\"\r\n class=\"fw-900\"\r\n [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <span [style.margin-left.%]=\"(currentvalue2/lasts)*100\">{{currentvalue2}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"chart__holder\" *ngIf=\"currentname2\">\r\n <span class=\"pr-5 mt-m7\">{{currentname2}}</span>\r\n <input *ngIf=\"value_status\" type=\"range\" min=\"{{first}}\" max=\"{{lasts}}\" [value]=\"currentvalue2\" class=\"slider\" \r\n [class]=\"color_type\"\r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n 'w-80':!currentname2,\r\n 'w-65':currentname2}\" \r\n [ngStyle]=\"{'background':getBackgroundColor(color21, per21,color22,per22)}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n <input *ngIf=\"!value_status\" type=\"range\" max=\"{{lasts}}\" [attr.value]=\"currentvalue2\" class=\"slider\" \r\n [class]=\"color_type\" \r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n 'w-80':!currentname2,\r\n 'w-65':currentname2}\" \r\n [ngStyle]=\"{'background': getBackgroundColor(color21, per21,color22,per22)}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n </div>\r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5\" *ngIf=\"currentname2\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <!-- <div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div> -->\r\n <div *ngFor=\"let d of data; let l=last; let i=index\" [ngClass]=\"{'ran_p' : i!=data.length}\" [class.ran_pl]=\"l\">\r\n {{d + type}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [style.height]=\"chartConfiguration.footerHeight\" class=\"lib-multiprogressbar-chart-footer\" [ngClass]=\"currentname2 ?'ml-25':footerText? '': 'ml-40'\">\r\n <div [ngClass]=\"chartData.metaData.target ? 'lib-progressbar-label-style' : ''\">\r\n <div class=\"lib-donut-label-item mt-20\">\r\n <!-- <span *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n > -->\r\n <!-- <span class=\"mr-10\">{{currentname1}} : <span class=\"fw-b\">{{currentvalue1 + datatype}}</span>\r\n </span>\r\n <span *ngIf=\"currentname2\" class=\"ml-10\">{{currentname2}} : <span class=\"fw-b\">{{currentvalue2 + datatype}}</span>\r\n </span> -->\r\n <span *ngIf=\"footerText\" class=\"\">\r\n <span class=\"footer__text\">{{footerText}}</span>\r\n </span>\r\n <!-- <span\r\n >Current value is {{currentvalue + datatype}}</span\r\n > -->\r\n </div>\r\n <!-- <div *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-item\"><span class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n ><span\r\n >Target: {{chartData.metaData.target}}</span\r\n ></div> -->\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-multichart-footer',\r\n templateUrl: './multichart-footer.component.html',\r\n styleUrls: ['./multichart-footer.component.less']\r\n})\r\nexport class MultichartFooterComponent implements OnInit {\r\n @Input() multiChartFooter:any=[];\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"width-100 textalign-center margintop-5\" *ngIf=\"multiChartFooter && multiChartFooter.length\">\r\n <span class=\"footer__holder\" *ngFor=\"let item of multiChartFooter\">\r\n <span class=\"footer\">\r\n <span class=\"circle\" *ngIf=\"!item.isRegressionLine\" [style.background-color]=\"item.color\">\r\n <span class=\"link\" *ngIf=\"item.isLine\" [style.border-top-color]=\"item.color\"></span>\r\n </span>\r\n <span class=\"dottedlink\" *ngIf=\"item.isRegressionLine\" [style.border-top-color]=\"item.color\"></span>\r\n <span class=\"footer__text\">{{item.category}}</span>\r\n </span>\r\n </span>\r\n</div>","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n// Types\r\ninterface ChartData {\r\n data: any[];\r\n metaData: ChartMetaData;\r\n lineData?: any[];\r\n targetLineData?: TargetLineData;\r\n}\r\n\r\ninterface ChartMetaData {\r\n unit?: string;\r\n isCC?: boolean;\r\n barWithoutClick?: string[];\r\n colors: { [key: string]: string };\r\n keyList: string[];\r\n dataType?: string;\r\n hasDrillDown?: boolean;\r\n hoverColor?: string;\r\n yLabel?: string;\r\n xLabel?: string;\r\n lineyLabel?: string;\r\n}\r\n\r\ninterface TargetLineData {\r\n target: string | number;\r\n color: string;\r\n targetName?: string;\r\n barAboveTargetColor?: string;\r\n barAboveTargetHoverColor?: string;\r\n}\r\n\r\ninterface Dimensions {\r\n width: number;\r\n height: number;\r\n containerWidth: number;\r\n containerHeight: number;\r\n barWidth: number;\r\n barPadding: number;\r\n requiredSvgWidth: number;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-horizontal-bars-with-scroll-zoom',\r\n templateUrl: './horizontal-bars-with-scroll-zoom.component.html',\r\n styleUrls: [\r\n './horizontal-bars-with-scroll-zoom.component.less',\r\n '../common-styles.less',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HorizontalBarsWithScrollZoomComponent\r\n extends ComponentUniqueId\r\n implements OnChanges {\r\n \r\n @ViewChild('verticalstackedchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('verticalstackedcontainer', { static: true })\r\n verticalstackedcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: ChartData | any ;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n isHeaderVisible = true;\r\n isTopCaptionVisible = true;\r\n uniqueId = this.getUniqueId();\r\n isTransparentBackground = false;\r\n isCC = false;\r\n isZoomedOut = true;\r\n\r\n private readonly CONSTANTS = {\r\n RIGHT_SVG_WIDTH: 60,\r\n LEFT_RIGHT_SPACES: 50,\r\n SHORT_TICK_LENGTH: 4,\r\n LONG_TICK_LENGTH: 16,\r\n SHORT_TICK_LENGTH_BG: 5,\r\n LONG_TICK_LENGTH_BG: 30,\r\n DESKTOP_BAR_WIDTH: 40, // Desktop bar width\r\n MOBILE_BAR_WIDTH: 25, // Mobile/Tablet bar width (reduced)\r\n BAR_GAP: 30, // Gap between bars (increased for better separation)\r\n ZOOM_THRESHOLD: 30,\r\n ZOOM_IN_THRESHOLD: 8,\r\n };\r\n\r\n defaultConfiguration = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 40 },\r\n svgHeight: 70,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showLegend: false,\r\n forComparison: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n yAxisGrid: false,\r\n // Optional configs with undefined defaults\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n isTopCaptionVisible: undefined,\r\n isMultiChartGridLine: undefined,\r\n isFullScreen: undefined,\r\n customYscale: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: undefined,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n isXaxisColor: undefined,\r\n textFormatter: undefined,\r\n showTotalOnTop: undefined,\r\n backendFormatterHasPriority: undefined,\r\n showAngledLabels: undefined,\r\n isNoAlternateXaxisText: undefined,\r\n isXgridBetweenLabels: undefined,\r\n showXaxisTop: undefined,\r\n xAxisGrid: undefined,\r\n xLabelsOnSameLine: undefined,\r\n hideXaxisTick: undefined,\r\n isDrilldownChart: undefined,\r\n isTargetLine: undefined,\r\n displayTitleOnTop: undefined,\r\n isToggleVisible: undefined,\r\n isTitleHidden: undefined,\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnChanges() {\r\n this.removeExistingChart();\r\n this.initializeStackedChart();\r\n }\r\n\r\n onResized(event: ResizedEvent) {\r\n setTimeout(() => {\r\n this.removeExistingChart();\r\n this.initializeStackedChart();\r\n }, 10);\r\n }\r\n\r\n isZoomOutSelected(isZoomOut: boolean) {\r\n this.isZoomedOut = isZoomOut;\r\n this.ngOnChanges();\r\n }\r\n\r\n private removeExistingChart() {\r\n d3.select('#' + this.uniqueId).remove();\r\n }\r\n\r\n private mergeConfigurations() {\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n }\r\n\r\n private prepareMetaData(metaData: ChartMetaData): ChartMetaData {\r\n if (!metaData.unit) metaData.unit = '';\r\n if (metaData.isCC) this.isCC = metaData.isCC;\r\n \r\n if (metaData.barWithoutClick?.length) {\r\n metaData.barWithoutClick = metaData.barWithoutClick.map(el => el.toLowerCase());\r\n } else {\r\n metaData.barWithoutClick = [];\r\n }\r\n \r\n return metaData;\r\n }\r\n\r\nprivate calculateDimensions(\r\n chartContainer: any,\r\n verticalContainer: any,\r\n margin: any,\r\n dataLength: number\r\n): Dimensions {\r\n const containerWidth = chartContainer.node().getBoundingClientRect().width;\r\n const containerHeight = verticalContainer.node().getBoundingClientRect().height;\r\n \r\n const leftAxisWidth = 80;\r\n const rightAxisWidth = this.CONSTANTS.RIGHT_SVG_WIDTH;\r\n const availableWidth = containerWidth - leftAxisWidth - rightAxisWidth;\r\n \r\n let width = availableWidth;\r\n let height = containerHeight * (this.chartConfiguration.svgHeight / 100) - margin.top - margin.bottom;\r\n\r\n if (dataLength > this.CONSTANTS.ZOOM_THRESHOLD && this.isZoomedOut) {\r\n const minWidth = dataLength * 25;\r\n width = Math.max(width, minWidth);\r\n }\r\n\r\n if (dataLength > this.CONSTANTS.ZOOM_IN_THRESHOLD && !this.isZoomedOut) {\r\n width = dataLength * 130;\r\n }\r\n\r\n if (this.chartConfiguration.isFullScreen) {\r\n height = this.chartConfiguration.svgHeight !== 80\r\n ? this.chartConfiguration.svgHeight\r\n : containerHeight;\r\n }\r\n\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n height = containerHeight - margin.top - margin.bottom - 130;\r\n }\r\n\r\n const isMobileOrTablet = window.innerWidth < 1024;\r\n let barWidth: number;\r\n let barPadding: number;\r\n \r\n if (isMobileOrTablet) {\r\n if (dataLength === 1) {\r\n barWidth = 60;\r\n barPadding = 0;\r\n } else if (dataLength === 2) {\r\n barWidth = 50;\r\n barPadding = 45;\r\n } else if (dataLength === 3) {\r\n barWidth = 45;\r\n barPadding = 40;\r\n } else if (dataLength <= 5) {\r\n barWidth = 35;\r\n barPadding = 30;\r\n } else {\r\n barWidth = 25;\r\n barPadding = 25;\r\n }\r\n } else {\r\n barWidth = this.CONSTANTS.DESKTOP_BAR_WIDTH;\r\n barPadding = this.CONSTANTS.BAR_GAP;\r\n }\r\n \r\n const totalBarsWidth = barWidth * dataLength;\r\n const totalGaps = barPadding * (dataLength - 1);\r\n const minRequiredWidth = totalBarsWidth + totalGaps + (this.CONSTANTS.LEFT_RIGHT_SPACES * 2);\r\n const requiredSvgWidth = Math.max(availableWidth, minRequiredWidth);\r\n\r\n return {\r\n width,\r\n height,\r\n containerWidth,\r\n containerHeight,\r\n barWidth,\r\n barPadding,\r\n requiredSvgWidth,\r\n };\r\n}\r\n\r\nprivate createSvgContainers(\r\n chartContainer: any,\r\n dimensions: Dimensions,\r\n margin: any,\r\n hasXLabel: boolean // Add this parameter\r\n) {\r\n // Calculate total height including space for X-axis label if present\r\n const xLabelSpace = hasXLabel ? 30 : 0;\r\n const totalHeight = dimensions.height + margin.top + margin.bottom + xLabelSpace;\r\n\r\n // Main wrapper\r\n const chartWrapper = chartContainer\r\n .append('div')\r\n .attr('id', this.uniqueId)\r\n .attr('class', 'chart-wrapper-main')\r\n .style('position', 'relative')\r\n .style('width', '100%')\r\n .style('height', `${totalHeight}px`); // Include X-label space\r\n\r\nconst leftAxisContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'left-axis-container')\r\n .style('position', 'absolute')\r\n .style('left', '0')\r\n .style('top', '0')\r\n .style('width', '80px')\r\n .style('height', `${dimensions.height + margin.top + margin.bottom}px`)\r\n .style('background-color', 'var(--card-bg)')\r\n .style('z-index', '10');\r\n\r\nconst svgYAxisLeft = leftAxisContainer\r\n .append('svg')\r\n .attr('width', '80')\r\n .attr('height', dimensions.height + margin.top + margin.bottom)\r\n .append('g')\r\n .attr('transform', `translate(79,${margin.top})`);\r\n\r\n // Right Y-axis - Fixed\r\n const rightAxisContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'right-axis-container')\r\n .style('position', 'absolute')\r\n .style('right', '0')\r\n .style('top', '0')\r\n .style('width', `${this.CONSTANTS.RIGHT_SVG_WIDTH}px`)\r\n .style('height', `${dimensions.height + margin.top + margin.bottom}px`) // Exclude X-label space\r\n .style('background-color', 'var(--card-bg)')\r\n .style('z-index', '10');\r\n\r\n const svgYAxisRight = rightAxisContainer\r\n .append('svg')\r\n .attr('width', this.CONSTANTS.RIGHT_SVG_WIDTH)\r\n .attr('height', dimensions.height + margin.top + margin.bottom)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n // Scrollable middle area\r\nconst scrollableContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'scrollable-chart-container')\r\n .style('position', 'absolute')\r\n .style('left', '80px') // Exactly where left container ends\r\n .style('right', `${this.CONSTANTS.RIGHT_SVG_WIDTH}px`)\r\n .style('top', '0')\r\n .style('width', 'auto')\r\n .style('height', `${dimensions.height + margin.top + margin.bottom}px`)\r\n .style('overflow-x', 'auto')\r\n .style('overflow-y', 'hidden');\r\n\r\n\r\nconst innerContainer = scrollableContainer\r\n .append('div')\r\n .attr('class', 'inner-chart-container')\r\n .style('min-width', '100%');\r\n\r\nconst svg = innerContainer\r\n .append('svg')\r\n .attr('width', dimensions.requiredSvgWidth)\r\n .attr('height', dimensions.height + margin.top + margin.bottom + 30)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n // Fixed bottom container for X-axis label\r\n const bottomLabelContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'bottom-label-container')\r\n .style('position', 'absolute')\r\n .style('left', '80px')\r\n .style('right', `${this.CONSTANTS.RIGHT_SVG_WIDTH}px`)\r\n .style('bottom', '0')\r\n .style('height', `${xLabelSpace}px`)\r\n .style('display', 'flex')\r\n .style('justify-content', 'center')\r\n .style('align-items', 'center')\r\n .style('background-color', 'var(--card-bg)')\r\n .style('z-index', '10');\r\n\r\n return { svg, svgYAxisLeft, svgYAxisRight, innerContainer, bottomLabelContainer };\r\n}\r\n\r\nprivate createScales(\r\n data: any[],\r\n layers: any[],\r\n lineData: any[],\r\n dimensions: Dimensions\r\n) {\r\n const { width, height, barWidth, barPadding } = dimensions;\r\n \r\n // Calculate bar positioning\r\n const totalBarsWidth = data.length * barWidth;\r\n const totalSpacing = (data.length - 1) * barPadding;\r\n const requiredWidth = totalBarsWidth + totalSpacing + (this.CONSTANTS.LEFT_RIGHT_SPACES * 2);\r\n const effectiveWidth = Math.max(width, requiredWidth);\r\n \r\n const paddingRatio = barPadding / (barWidth + barPadding);\r\n \r\n // X-scale starts from 0 (no left spacing for grid alignment)\r\nconst xScale = d3\r\n .scaleBand()\r\n .rangeRound([0, dimensions.requiredSvgWidth])\r\n .domain(data.map(d => d.name).reverse())\r\n .paddingInner(paddingRatio)\r\n .paddingOuter(0.1) // Small padding for visual spacing\r\n .align(0.5);\r\n\r\n const xScaleFromOrigin = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(data.map(d => d.name).reverse());\r\n\r\n const yScale = d3.scaleLinear().rangeRound([height, 0]);\r\n \r\n let maxValue = d3.max(layers, (d: any) => d3.max(d, (d: any) => d[1]));\r\n \r\n if (maxValue === 0) {\r\n maxValue = this.chartData.targetLineData \r\n ? Number(this.chartData.targetLineData.target) + 20 \r\n : 100;\r\n }\r\n\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue *= this.chartConfiguration.customYscale;\r\n }\r\n\r\n if (this.chartData.targetLineData && maxValue < Number(this.chartData.targetLineData.target)) {\r\n const target = Number(this.chartData.targetLineData.target);\r\n maxValue = maxValue < 10 && target < 10 ? target + 3 : target + 20;\r\n }\r\n\r\n yScale.domain([0, maxValue]).nice();\r\n\r\n let lineYscale = null;\r\n if (lineData) {\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([0, d3.max(lineData, d => +d.value)])\r\n .range([height, 0]);\r\n }\r\n\r\n return { xScale, xScaleFromOrigin, yScale, lineYscale };\r\n}\r\n\r\n\r\n private createAxes(scales: any) {\r\n const xAxis = d3\r\n .axisBottom(scales.xScale)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.xAxisLabelFomatter);\r\n\r\n const yAxis = d3\r\n .axisLeft(scales.yScale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.yAxisLabelFomatter);\r\n\r\n let yLineAxis = null;\r\n if (scales.lineYscale) {\r\n yLineAxis = d3\r\n .axisRight(scales.lineYscale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.yLineAxisLabelFomatter);\r\n }\r\n\r\n return { xAxis, yAxis, yLineAxis };\r\n }\r\n\r\n private renderBars(\r\n svg: any,\r\n layers: any[],\r\n scales: any,\r\n metaData: ChartMetaData,\r\n dimensions: Dimensions\r\n ) {\r\n const layer = svg\r\n .selectAll('.layer')\r\n .data(layers)\r\n .enter()\r\n .append('g')\r\n .attr('class', 'layer')\r\n .style('fill', (d: any) => metaData.colors[d.key]);\r\n\r\n const rect = layer\r\n .selectAll('rect')\r\n .data((d: any) => d)\r\n .enter();\r\n\r\n this.appendRectangles(rect, scales, metaData, dimensions);\r\n this.addInteractions(rect, svg, metaData, scales);\r\n \r\n return rect;\r\n }\r\n\r\n private appendRectangles(\r\n rect: any,\r\n scales: any,\r\n metaData: ChartMetaData,\r\n dimensions: Dimensions\r\n) {\r\n const { barWidth, barPadding } = dimensions;\r\n const { xScale, yScale } = scales;\r\n\r\n rect\r\n .append('rect')\r\n .on('click', (d: any) => {\r\n if (!this.chartData.lineData || this.chartConfiguration.forComparison) {\r\n if (!metaData.barWithoutClick?.includes(d.data.name.toLowerCase())) {\r\n this.handleClick(d.data.name);\r\n }\r\n }\r\n })\r\n .attr('y', (d: any) => {\r\n if (!isNaN(d[0]) && !isNaN(d[1])) {\r\n const actualHeight = yScale(d[0]) - yScale(d[1]);\r\n return actualHeight < 3 ? yScale(d[0]) - 3 : yScale(d[1]);\r\n }\r\n return 0;\r\n })\r\n .attr('x', (d: any) => {\r\n const xPosition = xScale(d.data.name);\r\n const bandwidth = xScale.bandwidth();\r\n \r\n if (!this.chartConfiguration.isMultiChartGridLine) {\r\n return xPosition + (bandwidth - barWidth) / 2;\r\n }\r\n if (this.chartConfiguration.isDrilldownChart && this.chartData.data.length <= 3) {\r\n return xPosition + bandwidth / 2 - 35;\r\n }\r\n const calculatedWidth = bandwidth * 0.8;\r\n return xPosition + (bandwidth - calculatedWidth) / 2;\r\n })\r\n .attr('height', (d: any) => {\r\n if (!isNaN(d[0]) && !isNaN(d[1])) {\r\n const actualHeight = yScale(d[0]) - yScale(d[1]);\r\n return actualHeight < 3 ? 3 : actualHeight;\r\n }\r\n return 0;\r\n })\r\n .attr('width', (d: any) => {\r\n if (!this.chartConfiguration.isMultiChartGridLine) return barWidth;\r\n if (this.chartConfiguration.isDrilldownChart && this.chartData.data.length <= 3) {\r\n return 70;\r\n }\r\n return xScale.bandwidth() * 0.8;\r\n })\r\n .style('cursor', (d: any) => {\r\n if (metaData.hasDrillDown) {\r\n if (metaData.barWithoutClick?.includes(d.data.name.toLowerCase())) {\r\n return 'default';\r\n }\r\n return 'pointer';\r\n }\r\n return 'default';\r\n })\r\n .style('fill', (d: any) => this.getBarColor(d, metaData));\r\n}\r\n\r\n private getBarColor(d: any, metaData: ChartMetaData): string {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n this.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >= parseFloat(String(this.chartData.targetLineData.target))\r\n ) {\r\n return this.chartData.targetLineData.barAboveTargetColor || metaData.colors[d.key];\r\n }\r\n return metaData.colors[d.key];\r\n }\r\n\r\n private addInteractions(rect: any, svg: any, metaData: ChartMetaData, scales: any) {\r\n rect\r\n .selectAll('rect')\r\n .on('mouseenter', (d: any) => this.handleMouseOver(d, svg, metaData, scales))\r\n .on('mouseout', (d: any) => this.handleMouseOut(svg, metaData));\r\n }\r\n\r\n private handleMouseOver(d: any, svg: any, metaData: ChartMetaData, scales: any) {\r\n if (!this.chartConfiguration.displayTitleOnTop) return;\r\n\r\n svg.selectAll('rect')\r\n .filter((data: any) => data === d)\r\n .style('fill', (d: any) => this.getHoverColor(d, metaData));\r\n\r\n this.displayTooltip(d, svg, metaData, scales);\r\n }\r\n\r\n private getHoverColor(d: any, metaData: ChartMetaData): string {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n this.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >= parseFloat(String(this.chartData.targetLineData.target))\r\n ) {\r\n return this.chartData.targetLineData.barAboveTargetHoverColor ||\r\n this.chartData.targetLineData.barAboveTargetColor ||\r\n metaData.colors[d.key];\r\n }\r\n return metaData.hoverColor || metaData.colors[d.key];\r\n }\r\n\r\n private displayTooltip(d: any, svg: any, metaData: ChartMetaData, scales: any) {\r\n const { xScale, yScale } = scales;\r\n const value = d[1] - d[0];\r\n \r\n if (isNaN(value)) return;\r\n\r\n const bandwidth = xScale.bandwidth();\r\n \r\n // Fixed tooltip width for all resolutions\r\n const width = /week/i.test(d.data.name) && /\\d{4}-\\d{2}-\\d{2}/.test(d.data.name)\r\n ? '250px'\r\n : bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2 > 180\r\n ? '180px'\r\n : bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2;\r\n\r\n svg\r\n .append('foreignObject')\r\n .attr('x', this.calculateTooltipX(d, xScale, width))\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', yScale(d[1]) - 51)\r\n .attr('width', width)\r\n .attr('height', 40)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(this.generateTooltipHtml(d, metaData, value));\r\n }\r\n\r\n private calculateTooltipX(d: any, xScale: any, width: string | number): number {\r\n const bandwidth = xScale.bandwidth();\r\n const numericWidth = typeof width === 'string' ? parseInt(width) : width;\r\n \r\n if (bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2 > 180) {\r\n return xScale(d.data.name) - this.CONSTANTS.LEFT_RIGHT_SPACES +\r\n (bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2 - 180) / 2;\r\n }\r\n return xScale(d.data.name) - this.CONSTANTS.LEFT_RIGHT_SPACES;\r\n }\r\n\r\n private generateTooltipHtml(d: any, metaData: ChartMetaData, value: number): string {\r\n if (value === 0) return '<span class=\"title-top-text\">0</span>';\r\n\r\n const dataType = metaData.dataType || '';\r\n const name = d.data.name ? `<span class=\"title-bar-name\">${d.data.name}</span>` : '';\r\n const valueText = metaData.unit\r\n ? `${metaData.unit}${value} ${dataType}`\r\n : `${value} ${dataType}`;\r\n\r\n return `${name}<span class=\"title-top-text\">${valueText}</span>`;\r\n }\r\n\r\n private handleMouseOut(svg: any, metaData: ChartMetaData) {\r\n if (!this.chartConfiguration.displayTitleOnTop) return;\r\n\r\n svg.selectAll('rect')\r\n .style('fill', (d: any) => this.getBarColor(d, metaData));\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n\r\n private renderAxisLabels(\r\n svg: any,\r\n svgYAxisLeft: any,\r\n bottomLabelContainer: any,\r\n metaData: ChartMetaData,\r\n dimensions: Dimensions,\r\n margin: any\r\n ) {\r\n if (metaData.yLabel) {\r\n this.addYAxisLabel(svgYAxisLeft, metaData.yLabel, dimensions.height, margin);\r\n }\r\n\r\n if (metaData.xLabel) {\r\n this.addXAxisLabel(bottomLabelContainer, metaData.xLabel);\r\n }\r\n }\r\n\r\n private addYAxisLabel(svgYAxisLeft: any, label: string, height: number, margin: any) {\r\n const isria = this.customChartConfiguration?.isRia;\r\n const isAcronym = this.isAcronymLabel(label);\r\n const yPosition = isria ? -margin.left / 2 - 30 : -margin.left / 2 - 40;\r\n\r\n svgYAxisLeft.selectAll('.lib-axis-group-label, .lib-ylabel-drilldowncharts, .lib-ylabel-weeklyCharts').remove();\r\n\r\n svgYAxisLeft\r\n .append('text')\r\n .attr('class', this.getYAxisLabelClass())\r\n .attr('style', this.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', yPosition)\r\n .attr('x', -height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcronym ? label.toUpperCase() : label.toLowerCase())\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize');\r\n }\r\n\r\nprivate addXAxisLabel(bottomLabelContainer: any, label: string) {\r\n const isAcronym = this.isAcronymLabel(label);\r\n\r\n bottomLabelContainer\r\n .append('div')\r\n .style('width', '100%')\r\n .style('text-align', 'center')\r\n .style('font-size', '14px')\r\n .style('font-weight', '600')\r\n .style('font-family', 'system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto')\r\n .style('color', 'var(--chart-text-color)')\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize')\r\n .text(isAcronym ? label.toUpperCase() : label.toLowerCase());\r\n}\r\n\r\n private isAcronymLabel(label: string): boolean {\r\n const cleanLabel = label.replace(/[^A-Za-z]/g, '');\r\n return (label.length <= 4 && /^[A-Z]+$/.test(label)) ||\r\n (label === label.toUpperCase() && /[A-Z]/.test(label));\r\n }\r\n\r\n private getYAxisLabelClass(): string {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return `${baseClass} lib-ylabel-drilldowncharts`;\r\n }\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n return `${baseClass} lib-ylabel-weeklyCharts`;\r\n }\r\n return `${baseClass} lib-axis-waterfall-label`;\r\n }\r\n\r\n private getXAxisLabelClass(): string {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return `${baseClass} lib-xlabel-drilldowncharts`;\r\n }\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n return `${baseClass} lib-xlabel-weeklyCharts`;\r\n }\r\n return `${baseClass} lib-axis-waterfall-label`;\r\n }\r\n\r\n private renderGridsFromLeftAxis(\r\n svgMain: any,\r\n svgYAxisLeft: any,\r\n scales: any,\r\n dimensions: Dimensions\r\n ) {\r\n if (!this.chartConfiguration.yAxisGrid) return;\r\n\r\n // We want horizontal grid lines to span the full visible width:\r\n // the inner SVG (requiredSvgWidth) plus the right axis width.\r\n const gridSpan = dimensions.requiredSvgWidth + this.CONSTANTS.RIGHT_SVG_WIDTH;\r\n // Append the grid to the main (inner) SVG so lines are rendered across the scrollable area.\r\n svgMain\r\n .append('g')\r\n .attr('class', 'grid horizontal-grid-from-left')\r\n .attr('transform', 'translate(0,0)')\r\n .call(\r\n d3\r\n .axisLeft(scales.yScale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(-gridSpan)\r\n .tickFormat('')\r\n )\r\n .style('color', 'var(--chart-grid-color)')\r\n .style('opacity', '1')\r\n .call((g: any) => {\r\n g.select('.domain').remove();\r\n g.selectAll('.tick line')\r\n .style('stroke', 'var(--chart-grid-color)')\r\n .style('stroke-width', '1px');\r\n });\r\n}\r\n\r\n private applyConfigurationFlags() {\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n if (this.chartConfiguration.isTopCaptionVisible !== undefined) {\r\n this.isTopCaptionVisible = this.chartConfiguration.isTopCaptionVisible;\r\n }\r\n if (this.chartConfiguration.isTransparentBackground !== undefined) {\r\n this.isTransparentBackground = this.chartConfiguration.isTransparentBackground;\r\n }\r\n }\r\n\r\n initializeStackedChart() {\r\n // Use fixed configuration for all resolutions\r\n this.chartConfiguration.margin = { top: 20, right: 20, bottom: 40, left: 40 };\r\n this.chartConfiguration.numberOfYTicks = 5;\r\n this.chartConfiguration.svgHeight = 70;\r\n \r\n this.mergeConfigurations();\r\n this.applyConfigurationFlags();\r\n\r\n const data = this.chartData.data;\r\n const metaData = this.prepareMetaData(this.chartData.metaData);\r\n const lineData = this.chartData.lineData;\r\n const colors = metaData.colors;\r\n const keyList = metaData.keyList;\r\n\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const verticalstackedcontainer = d3.select(this.verticalstackedcontainerElt.nativeElement);\r\n \r\n const margin = this.chartConfiguration.margin;\r\n const dimensions = this.calculateDimensions(\r\n chartContainer,\r\n verticalstackedcontainer,\r\n margin,\r\n data.length\r\n );\r\n\r\n const hasXLabel = !!metaData.xLabel;\r\n\r\n const { svg, svgYAxisLeft, svgYAxisRight, bottomLabelContainer } = this.createSvgContainers(\r\n chartContainer,\r\n dimensions,\r\n margin,\r\n hasXLabel\r\n );\r\n\r\n const stack: any = d3.stack().keys(keyList).offset(d3.stackOffsetNone);\r\n const layers: any = stack(data);\r\n data.sort((a, b) => b.total - a.total);\r\n\r\n const scales = this.createScales(data, layers, lineData, dimensions);\r\n const axes = this.createAxes(scales);\r\n\r\n this.renderGridsFromLeftAxis(svg, svgYAxisLeft, scales, dimensions);\r\n this.renderGrids(svg, scales, dimensions);\r\n const rect = this.renderBars(svg, layers, scales, metaData, dimensions);\r\n this.renderAxes(svg, svgYAxisLeft, svgYAxisRight, axes, scales, dimensions, data);\r\n this.renderAxisLabels(svg, svgYAxisLeft,bottomLabelContainer, metaData, dimensions, margin);\r\n this.renderTargetLine(svg, svgYAxisRight, scales, dimensions, metaData);\r\n this.renderDataLabels(rect, scales, metaData, dimensions);\r\n this.renderLineChart(svg, lineData, scales, colors, metaData);\r\n }\r\n\r\nprivate renderGrids(svg: any, scales: any, dimensions: Dimensions) {\r\n if (this.chartConfiguration.isXgridBetweenLabels) {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid vertical-grid')\r\n .attr('transform', `translate(${scales.xScale.bandwidth() / 2},${dimensions.height})`)\r\n .call(d3.axisBottom(scales.xScale).tickSize(-dimensions.height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999')\r\n .call((g: any) => g.select('.domain').remove());\r\n }\r\n\r\n if (this.chartConfiguration.xAxisGrid) {\r\n for (let j = 0; j < this.chartConfiguration.xAxisGrid.length; j++) {\r\n svg\r\n .append('g')\r\n .attr('class', `x${j + 2} axis${j + 2}`)\r\n .style('color', 'var(--chart-grid-color)')\r\n .attr('transform', `translate(0,${dimensions.height * this.chartConfiguration.xAxisGrid[j]})`)\r\n .call(d3.axisBottom(scales.xScale).tickSize(0).ticks(5).tickFormat(''))\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n }\r\n}\r\n\r\n\r\n private renderAxes(\r\n svg: any,\r\n svgYAxisLeft: any,\r\n svgYAxisRight: any,\r\n axes: any,\r\n scales: any,\r\n dimensions: Dimensions,\r\n data: any[]\r\n ) {\r\n if (this.chartConfiguration.showXaxisTop) {\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n .attr('style', this.chartConfiguration.xAxisCustomTextStyles)\r\n .call(d3.axisBottom(scales.xScale).tickSize(0));\r\n svg.selectAll('.x-axis > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (!this.chartConfiguration.isMultiChartGridLine) {\r\n this.renderStandardAxes(svg, axes, scales, dimensions, data);\r\n } else if (this.chartConfiguration.isDrilldownChart) {\r\n this.renderDrilldownAxes(svg, svgYAxisLeft, svgYAxisRight, axes, scales, dimensions);\r\n } else {\r\n this.renderMultiChartAxes(svg, axes, scales, dimensions);\r\n }\r\n\r\n this.applyAxisStyling(svg, svgYAxisLeft, svgYAxisRight);\r\n this.applyAxisConfigurations(svg, scales, dimensions, data);\r\n }\r\n\r\nprivate renderStandardAxes(\r\n svg: any,\r\n axes: any,\r\n scales: any,\r\n dimensions: Dimensions,\r\n data: any[]\r\n) {\r\n const isMobileOrTablet = window.innerWidth < 1024;\r\n \r\n // X-axis with labels\r\n const xAxisGroup = svg\r\n .append('g')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .attr('class', 'lib-stacked-x-axis-text')\r\n .call(axes.xAxis);\r\n\r\n // Style X-axis labels\r\n xAxisGroup\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('font-size', isMobileOrTablet ? '10px' : '12px')\r\n .attr('text-anchor', 'middle')\r\n .attr('dy', '1em')\r\n .each(function(this: SVGTextElement, d: any) {\r\n const textElement = d3.select(this);\r\n const text = textElement.text();\r\n \r\n if (isMobileOrTablet && text.length > 12) {\r\n textElement.text(text.substring(0, 10) + '...');\r\n }\r\n });\r\n\r\n// Ensure X-axis line starts exactly at x=0\r\n xAxisGroup\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px')\r\n .attr('d', `M0,0.5H${dimensions.requiredSvgWidth}`);\r\n\r\n // Y-axis\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n}\r\n\r\n private renderDrilldownAxes(\r\n svg: any,\r\n svgYAxisLeft: any,\r\n svgYAxisRight: any,\r\n axes: any,\r\n scales: any,\r\n dimensions: Dimensions\r\n ) {\r\n svg\r\n .append('g')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .attr('class', 'lib-stacked-x-axis-text multichart1')\r\n .call(axes.xAxis)\r\n .style('display', 'none');\r\n\r\n svgYAxisLeft\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n\r\n svgYAxisRight\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .style('display', 'none');\r\n }\r\n\r\n private renderMultiChartAxes(svg: any, axes: any, scales: any, dimensions: Dimensions) {\r\n svg\r\n .append('g')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .attr('class', 'lib-stacked-x-axis-text multichart')\r\n .call(axes.xAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n\r\n private applyAxisStyling(svg: any, svgYAxisLeft: any, svgYAxisRight: any) {\r\n const styleAxisDomain = (container: any) => {\r\n container.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n };\r\n\r\n styleAxisDomain(svg);\r\n styleAxisDomain(svgYAxisLeft);\r\n styleAxisDomain(svgYAxisRight);\r\n\r\n if (this.chartConfiguration.isYaxisDashed) {\r\n d3.selectAll('.yaxis-dashed')\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-grid-color)');\r\n }\r\n\r\n if (this.chartConfiguration.isXaxisColor) {\r\n d3.selectAll('.multichart').style(\r\n 'color',\r\n this.chartConfiguration.isXaxisColor || 'var(--chart-text-color)'\r\n );\r\n }\r\n }\r\n\r\n private applyAxisConfigurations(svg: any, scales: any, dimensions: Dimensions, data: any[]) {\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n d3.selectAll('.multichart > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (this.chartConfiguration.isXaxisLabelHidden) {\r\n d3.selectAll('.multichart > g > text').attr('class', 'lib-display-hidden');\r\n } else if (this.chartConfiguration.isXaxisLabelHidden !== undefined) {\r\n this.renderCustomXAxis(svg, scales, dimensions, data);\r\n }\r\n\r\n if (this.chartConfiguration.isYaxisLabelHidden) {\r\n svg.selectAll('.yaxis-dashed > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (this.chartConfiguration.isYaxisHidden) {\r\n d3.selectAll('.yaxis-dashed').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (this.isZoomedOut && data.length > 9) {\r\n svg\r\n .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n .attr('transform', 'rotate(-90)')\r\n .attr('text-anchor', 'end')\r\n .attr('x', '-5')\r\n .attr('dy', null);\r\n }\r\n }\r\n\r\n private renderCustomXAxis(svg: any, scales: any, dimensions: Dimensions, data: any[]) {\r\n svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .style('color', '#000')\r\n .call(d3.axisBottom(scales.xScale).tickSize(0))\r\n .call((g: any) => g.select('.domain').attr('fill', 'none'));\r\n\r\n this.styleCustomXAxisTicks(svg, data);\r\n\r\n if (this.chartConfiguration.xLabelsOnSameLine) {\r\n this.applyXLabelsOnSameLine(svg);\r\n }\r\n }\r\n\r\n private styleCustomXAxisTicks(svg: any, data: any[]) {\r\n let alternateText = false;\r\n\r\n svg.selectAll('.x1.axis1 .tick line').attr('y2', () => {\r\n if (this.chartConfiguration.hideXaxisTick) return 0;\r\n \r\n if (alternateText && !this.chartConfiguration.isNoAlternateXaxisText) {\r\n alternateText = false;\r\n return this.CONSTANTS.LONG_TICK_LENGTH_BG - 7;\r\n }\r\n alternateText = true;\r\n return this.CONSTANTS.SHORT_TICK_LENGTH_BG - 4;\r\n });\r\n\r\n alternateText = false;\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', () => {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return data.length > 8 \r\n ? 'lib-xaxis-labels-texts-drilldown-alt'\r\n : 'lib-xaxis-labels-texts-drilldown';\r\n }\r\n return 'lib-xaxis-labels-texts-weeklycharts';\r\n })\r\n .attr('y', () => {\r\n if (alternateText) {\r\n alternateText = false;\r\n return this.CONSTANTS.LONG_TICK_LENGTH_BG;\r\n }\r\n alternateText = true;\r\n return this.CONSTANTS.SHORT_TICK_LENGTH_BG;\r\n });\r\n }\r\n\r\n private applyXLabelsOnSameLine(svg: any) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', this.CONSTANTS.SHORT_TICK_LENGTH_BG)\r\n .text((d: string) => {\r\n const trimmed = d.trim();\r\n const spaceIndex = trimmed.indexOf(' ');\r\n return spaceIndex > -1 \r\n ? trimmed.substring(0, spaceIndex).toLowerCase()\r\n : trimmed.toLowerCase();\r\n });\r\n\r\n svg\r\n .selectAll('g.x1.axis1 g.tick')\r\n .append('text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', this.CONSTANTS.LONG_TICK_LENGTH_BG)\r\n .attr('fill', 'currentColor')\r\n .text((d: string) => {\r\n const trimmed = d.trim();\r\n const spaceIndex = trimmed.indexOf(' ');\r\n return spaceIndex > -1 \r\n ? trimmed.substring(spaceIndex).toLowerCase()\r\n : '';\r\n });\r\n }\r\n\r\n private renderDataLabels(rect: any, scales: any, metaData: ChartMetaData, dimensions: Dimensions) {\r\n if (!this.isCC && !this.chartConfiguration.isMultiChartGridLine) {\r\n rect.append('svg:title').text((d: any) => d[1] - d[0]);\r\n }\r\n\r\n if (this.chartConfiguration.showTotalOnTop) {\r\n this.renderTopLabels(rect, scales, metaData);\r\n }\r\n\r\n if (this.chartConfiguration.showAngledLabels) {\r\n this.renderAngledLabels(rect, scales, metaData);\r\n }\r\n }\r\n\r\n private renderTopLabels(rect: any, scales: any, metaData: ChartMetaData) {\r\n const formatFromBackend = this.chartConfiguration.textFormatter\r\n ? ChartHelper.dataValueFormatter(this.chartConfiguration.textFormatter)\r\n : (d: any) => d;\r\n const formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n\r\n rect\r\n .append('text')\r\n .attr('x', (d: any) => scales.xScale(d.data.name) + scales.xScale.bandwidth() / 2)\r\n .attr('class', 'lib-verticalstack-labels-ontop-weklycharts')\r\n .attr('y', (d: any) => scales.yScale(d[1]) - 3)\r\n .text((d: any) => {\r\n const value = d[1] - d[0];\r\n if (isNaN(value) || value === 0) return;\r\n \r\n const formattedValue = value <= 999 \r\n ? formatFromBackend(value)\r\n : formatForHugeNumbers(value);\r\n \r\n return metaData.unit ? metaData.unit + formattedValue : formattedValue;\r\n });\r\n }\r\n\r\n private renderAngledLabels(rect: any, scales: any, metaData: ChartMetaData) {\r\n const formatFromBackend = this.chartConfiguration.textFormatter\r\n ? ChartHelper.dataValueFormatter(this.chartConfiguration.textFormatter)\r\n : (d: any) => d;\r\n const formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n const tempObjectHolder: { [key: string]: number } = {};\r\n\r\n rect\r\n .append('text')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('fill', (d: any) => metaData.colors[d.key])\r\n .attr('class', 'lib-data-labels-angled-weeklycharts')\r\n .text((d: any) => {\r\n const value = d[1] - d[0];\r\n if (isNaN(value) || value <= 0) return;\r\n \r\n const formattedValue = value <= 999\r\n ? formatFromBackend(value)\r\n : formatForHugeNumbers(value);\r\n \r\n return metaData.unit ? metaData.unit + formattedValue : formattedValue;\r\n })\r\n .attr('transform', (d: any) => {\r\n const value = d[1] - d[0];\r\n if (isNaN(value) || value <= 0) return 'rotate(0)';\r\n\r\n let total = 0;\r\n let incrementer = 1;\r\n metaData.keyList.forEach(key => {\r\n if (d.data[key]) {\r\n total += d.data[key];\r\n } else {\r\n incrementer = 2;\r\n }\r\n });\r\n\r\n tempObjectHolder[d.data.name] = (tempObjectHolder[d.data.name] || 0) + incrementer;\r\n const position = tempObjectHolder[d.data.name];\r\n const xPos = scales.xScale(d.data.name);\r\n const bandwidth = scales.xScale.bandwidth();\r\n const yPos = scales.yScale(total) - 3;\r\n\r\n switch (position) {\r\n case 1:\r\n return `translate(${xPos + bandwidth / 3},${yPos}) rotate(270)`;\r\n case 2:\r\n return `translate(${xPos + bandwidth / 2 + 2},${yPos}) rotate(270)`;\r\n default:\r\n return `translate(${xPos + (bandwidth * 3) / 4},${yPos}) rotate(270)`;\r\n }\r\n });\r\n }\r\n\r\n private renderTargetLine(\r\n svg: any,\r\n svgYAxisRight: any,\r\n scales: any,\r\n dimensions: Dimensions,\r\n metaData: ChartMetaData\r\n ) {\r\n if (!this.chartData.targetLineData) return;\r\n\r\n const parsedTarget = this.parseTargetValue(this.chartData.targetLineData.target);\r\n const yZero = scales.yScale(parsedTarget);\r\n\r\n svg\r\n .append('line')\r\n .attr('x1', 0)\r\n .attr('x2', dimensions.width)\r\n .attr('y1', yZero)\r\n .attr('y2', yZero)\r\n .style('stroke-dasharray', '5 5')\r\n .style('stroke', this.chartData.targetLineData.color);\r\n\r\n this.renderTargetLabel(svgYAxisRight, yZero, metaData);\r\n }\r\n\r\n private parseTargetValue(target: string | number): number {\r\n const parsed = parseFloat(String(target));\r\n if (isNaN(parsed)) return 0;\r\n return Number.isInteger(parsed) ? parseInt(String(target)) : parsed;\r\n }\r\n\r\n private renderTargetLabel(svgYAxisRight: any, yZero: number, metaData: ChartMetaData) {\r\n const dataType = metaData.dataType || '';\r\n const targetName = this.chartData.targetLineData.targetName || 'target';\r\n\r\n svgYAxisRight\r\n .append('foreignObject')\r\n .attr('transform', `translate(0,${yZero - 13})`)\r\n .attr('width', this.CONSTANTS.RIGHT_SVG_WIDTH)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'target-display')\r\n .style('color', 'var(--chart-text-color)')\r\n .html(`<div>${targetName}</div><div>${this.chartData.targetLineData.target}${dataType}</div>`);\r\n }\r\n\r\n private renderLineChart(svg: any, lineData: any[], scales: any, colors: any, metaData: ChartMetaData) {\r\n if (!lineData || !colors) return;\r\n\r\n const dataGroup = d3\r\n .nest()\r\n .key((d: any) => d.category)\r\n .entries(lineData);\r\n\r\n const lineGen = d3\r\n .line()\r\n .x((d: any) => scales.xScale(d.name) + scales.xScale.bandwidth() / 2)\r\n .y((d: any) => scales.lineYscale(d.value));\r\n\r\n dataGroup.forEach((group: any) => {\r\n svg\r\n .append('path')\r\n .datum(group.values)\r\n .attr('fill', 'none')\r\n .attr('stroke', (d: any) => {\r\n return d[0]?.category \r\n ? colors[d[0].category]\r\n : this.chartConfiguration.lineGraphColor;\r\n })\r\n .attr('stroke-width', 2.5)\r\n .attr('d', lineGen);\r\n\r\n this.renderLineDots(svg, group.values, scales, colors);\r\n });\r\n }\r\n\r\n private renderLineDots(svg: any, values: any[], scales: any, colors: any) {\r\n const dot = svg\r\n .selectAll('.line-dots')\r\n .data(values)\r\n .enter()\r\n .append('g')\r\n .on('click', (d: any) => this.handleClick(d));\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', (d: any) => {\r\n return d.category \r\n ? colors[d.category]\r\n : this.chartConfiguration.lineGraphColor;\r\n })\r\n .attr('stroke', 'none')\r\n .attr('cx', (d: any) => scales.xScale(d.name) + scales.xScale.bandwidth() / 2)\r\n .attr('cy', (d: any) => scales.lineYscale(d.value))\r\n .attr('r', 3)\r\n .style('cursor', 'pointer');\r\n\r\n if (this.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dots')\r\n .attr('fill', this.chartConfiguration.lineGraphColor)\r\n .style('font-size', '.85em')\r\n .style('font-weight', 'bold')\r\n .attr('x', (d: any) => scales.xScale(d.name) + scales.xScale.bandwidth() / 2)\r\n .attr('y', (d: any) => scales.lineYscale(d.value))\r\n .attr('dy', '-1em')\r\n .text((d: any) => this.chartConfiguration.labelFormatter(d.value));\r\n }\r\n }\r\n\r\n handleClick(d: any) {\r\n if (this.chartData?.metaData?.hasDrillDown || d?.toggleFrom) {\r\n this.clickEvent.emit(d);\r\n }\r\n }\r\n\r\n handleHeaderMenuClick(id: any) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n handleCompareByFilterSelection(event: any) {\r\n this.clickEvent.emit(event);\r\n }\r\n\r\n handleZoominZoomoutClick({ isZoomOut, event }: { isZoomOut: boolean; event: any }) {\r\n this.isZoomOutSelected(isZoomOut);\r\n }\r\n}","<meta http-equiv=\"CACHE-CONTROL\" content=\"NO-CACHE\" />\r\n<meta http-equiv=\"EXPIRES\" content=\"Sat, 01 Jun 2004 11:12:01 GMT\" />\r\n<div\r\n #verticalstackedcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n style=\"background-color: var(--card-bg);\"\r\n\r\n (resized)=\"onResized($event)\"\r\n>\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n\r\n <lib-chart-header-v3\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (compareByFilterSelection)=\"handleCompareByFilterSelection($event)\"\r\n (zoomInZoomOutClick)=\"handleZoominZoomoutClick($event)\"\r\n ></lib-chart-header-v3>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"verticalstackedchartcontainer\"\r\n #verticalstackedchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-horizontal-grouped-bar-with-scroll-zoom',\r\n templateUrl: './horizontal-grouped-bar-with-scroll-zoom.component.html',\r\n styleUrls: [\r\n './horizontal-grouped-bar-with-scroll-zoom.component.less',\r\n '../common-styles.less',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HorizontalGroupedBarWithScrollZoomComponent\r\n extends ComponentUniqueId\r\n implements OnInit\r\n{\r\n @ViewChild('groupchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('groupcontainer', { static: true })\r\n groupcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n isHeaderVisible: boolean = true;\r\n legendVisible: boolean = true;\r\n isTransparentBackground: boolean = false;\r\n chartConfiguration: any = {};\r\n objectKeys = Object.keys;\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 40 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n svgHeight: 70,\r\n numberOfYTicks: 5,\r\n legendJustified: true,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showValues: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n xAxisGrid: undefined,\r\n yAxisGrid: false,\r\n legendVisible: false,\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n isMultiChartGridLine: undefined,\r\n isFullScreen: undefined,\r\n customYscale: undefined,\r\n textsOnBar: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: false,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n textFormatter: undefined,\r\n isNoAlternateXaxisText: undefined,\r\n isXgridBetweenLabels: undefined,\r\n backgroundColor: '#FFFFFF',\r\n hideLegendOnTop: true,\r\n isXaxisColor: '#999999',\r\n labelOverlapMinorFix: true,\r\n noHoverEffect: true,\r\n noHoverDisplayData: true,\r\n showXaxisTop: true,\r\n displayYaxisLabels: undefined,\r\n xLabelsOnSameLine: undefined,\r\n textAlwaysHorizontal: undefined,\r\n legendAtTopRight: undefined,\r\n isDrilldownChart: true,\r\n displayTitleOnTop: undefined,\r\n isToggleVisible: undefined,\r\n isTitleHidden: undefined,\r\n isDisplayBarDetailsAtBottom: undefined,\r\n howmanyBarDetailsToDisplay: 0,\r\n barVauleColor: undefined,\r\n defaultBarHeight: 2,\r\n };\r\n\r\n uniqueId: any = this.getUniqueId();\r\n isZoomedOut: boolean = true;\r\n isDD1Open: boolean = false;\r\n isDD2Open: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n setTimeout(\r\n function () {\r\n d3.select('#' + self.uniqueId).remove();\r\n self.initializegroupChart();\r\n }.bind(self),\r\n 10\r\n );\r\n }\r\n isZoomOutSelected(isZoomOut, event) {\r\n this.isZoomedOut = isZoomOut;\r\n this.onResized(event);\r\n }\r\n handleZoominZoomoutClick({ isZoomOut, event }) {\r\n this.isZoomOutSelected(isZoomOut, event);\r\n }\r\n ngOnInit() {}\r\n isLegendVisible() {\r\n if (\r\n this.chartData &&\r\n this.chartData.metaData.colors &&\r\n Object.keys(this.chartData.metaData.colors).length > 1\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n keepOrder = (a, b) => {\r\n return a;\r\n };\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n );\r\n } \r\n\r\ninitializegroupChart() {\r\n // ==================== VARIABLE DECLARATIONS ====================\r\n const self = this;\r\n let data = [];\r\n let metaData: any = null;\r\n let keyList = null;\r\n let lineData = null;\r\n let colorMap = {};\r\n let formatFromBackend;\r\n let formatForHugeNumbers;\r\n \r\n // Device detection\r\n const isMobile = window.innerWidth < 576;\r\n const isTablet = window.innerWidth >= 576 && window.innerWidth < 992;\r\n const isDesktop = window.innerWidth >= 992;\r\n const isria = this.customChartConfiguration.isRia;\r\n\r\n // Chart scale variables\r\n let x: any;\r\n let tempScale;\r\n\r\n // Tick length constants\r\n const SHORT_TICK_LENGTH = 4;\r\n const LONG_TICK_LENGTH = 16;\r\n const SHORT_TICK_LENGTH_BG = 5;\r\n const LONG_TICK_LENGTH_BG = 30;\r\n const LEFT_AND_RIGHT_SPACES = 50;\r\n const RIGHT_SVG_WIDTH = 60;\r\n \r\n // Flags\r\n let alternate_text = false;\r\n\r\n // ==================== CONFIGURATION SETUP ====================\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n\r\n // Extract chart data\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n lineData = this.chartData.lineData;\r\n\r\n // Setup color mappings\r\n if (!metaData.colorAboveTarget) {\r\n metaData['colorAboveTarget'] = metaData.colors;\r\n }\r\n colorMap = metaData.colors;\r\n keyList = metaData.keyList;\r\n\r\n // ==================== CONTAINER SETUP ====================\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const verticalstackedcontainer = d3.select(this.groupcontainerElt.nativeElement);\r\n const margin = this.chartConfiguration.margin;\r\n \r\n const { width, height } = this.calculateChartDimensions(\r\n chartContainer,\r\n verticalstackedcontainer,\r\n margin,\r\n self\r\n );\r\n\r\n // ==================== VISIBILITY CONFIGURATION ====================\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n\r\n if (this.chartConfiguration.legendVisible !== undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\r\n\r\n if (this.chartConfiguration.isTransparentBackground !== undefined) {\r\n this.isTransparentBackground = this.chartConfiguration.isTransparentBackground;\r\n }\r\n\r\n // ==================== DATA FORMATTING ====================\r\n if (this.chartConfiguration.textFormatter !== undefined) {\r\n formatFromBackend = ChartHelper.dataValueFormatter(this.chartConfiguration.textFormatter);\r\n formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n }\r\n\r\n // ==================== SVG CONTAINERS CREATION ====================\r\n const {\r\n outerContainer,\r\n svgYAxisLeft,\r\n svgYAxisRight,\r\n innerContainer,\r\n svg\r\n } = this.createChartContainers(chartContainer, margin, height, RIGHT_SVG_WIDTH, self, width);\r\n\r\n // Only enable horizontal scrolling on mobile/tablet when in zoomed-out\r\n // mode and there are many groups or multiple subgroups. Otherwise keep\r\n // the inner container fixed (no scrollbar).\r\n try {\r\n const groupsCount = (data as any).length || 0;\r\n const subgroupsCount = (keyList as any && (keyList as any).length) || 0;\r\n // On mobile/tablet: always enable horizontal scrolling when there is\r\n // more than one subgroup so grouped bars don't get congested.\r\n // On desktop: enable scrolling when there are many groups or\r\n // multiple subgroups (keeps previous behavior).\r\n if ((isMobile || isTablet) && subgroupsCount > 1) {\r\n innerContainer.style('overflow-x', 'auto');\r\n innerContainer.classed('scroll-enabled', true);\r\n } else if (groupsCount > 8 || subgroupsCount > 2) {\r\n innerContainer.style('overflow-x', 'auto');\r\n innerContainer.classed('scroll-enabled', true);\r\n } else {\r\n innerContainer.style('overflow-x', 'hidden');\r\n innerContainer.classed('scroll-enabled', false);\r\n }\r\n } catch (e) {\r\n // ignore\r\n }\r\n\r\n // ==================== SCALES SETUP ====================\r\n const subgroups: any = keyList;\r\n const groups = d3.map(data, (d) => d.name).keys();\r\n\r\n // X-axis scale configuration\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n const paddingValue = (isria && subgroups.length === 1) ? 0.1 : 0.5;\r\n x = d3.scaleBand()\r\n .rangeRound([width, 0])\r\n .align(0.5)\r\n .padding([paddingValue])\r\n .domain(data.map((d: any) => d.name.toLowerCase()));\r\n } else {\r\n const paddingValue = (isria && self.chartData.data.length >= 8) ? 0.10 : 0.3;\r\n x = d3.scaleBand()\r\n .domain(groups)\r\n .range([LEFT_AND_RIGHT_SPACES, width - RIGHT_SVG_WIDTH - LEFT_AND_RIGHT_SPACES])\r\n .padding([paddingValue]);\r\n }\r\n\r\n const xScaleFromOrigin = d3.scaleBand()\r\n .domain(groups)\r\n .range([0, width - RIGHT_SVG_WIDTH]);\r\n\r\n // ==================== X-AXIS RENDERING ====================\r\n this.renderXAxis(svg, x, height, metaData, subgroups, data, \r\n SHORT_TICK_LENGTH_BG, LONG_TICK_LENGTH_BG, self, isria, isMobile, isTablet);\r\n\r\n // ==================== Y-AXIS SETUP ====================\r\n const y = d3.scaleLinear().rangeRound([height, 0]);\r\n let maxValue = this.calculateMaxValue(data, keyList);\r\n\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n\r\n if (this.chartData.targetLineData && maxValue < this.chartData.targetLineData.target) {\r\n maxValue = maxValue < 10 && this.chartData.targetLineData.target < 10\r\n ? this.chartData.targetLineData.target + 3\r\n : this.chartData.targetLineData.target + 20;\r\n }\r\n\r\n y.domain([0, maxValue]).nice();\r\n\r\n // ==================== LINE CHART Y-SCALE ====================\r\n let lineYscale;\r\n let yLineAxis;\r\n\r\n if (lineData != null) {\r\n const result = this.setupLineYScale(lineData, height, self);\r\n lineYscale = result.lineYscale;\r\n yLineAxis = result.yLineAxis;\r\n }\r\n\r\n // ==================== GRID LINES ====================\r\n this.renderGridLines(svg, x, y, height, width, self, isria);\r\n\r\n // ==================== BARS RENDERING ====================\r\n const xSubgroup = this.setupXSubgroupScale(subgroups, x, self);\r\n const color = d3.scaleOrdinal()\r\n .domain(subgroups)\r\n .range(Object.values(metaData.colors));\r\n\r\n this.renderBars(svg, data, subgroups, x, xSubgroup, y, height, color, \r\n metaData, self, LEFT_AND_RIGHT_SPACES, tempScale, isria);\r\n\r\n // ==================== BAR LABELS ====================\r\n if (this.chartConfiguration.textsOnBar !== undefined && !this.isZoomedOut) {\r\n this.renderBarLabels(svg, data, subgroups, x, xSubgroup, y, height, \r\n metaData, self, tempScale, isria);\r\n }\r\n\r\n // ==================== Y-AXIS RENDERING ====================\r\n this.renderYAxis(svg, svgYAxisLeft, svgYAxisRight, y, yLineAxis, \r\n lineData, self, isria, margin);\r\n\r\n // ==================== AXIS LABELS ====================\r\n this.renderAxisLabels(svg, svgYAxisLeft, svgYAxisRight, metaData, \r\n width, height, margin, self, isria, RIGHT_SVG_WIDTH);\r\n\r\n // ==================== TARGET LINE ====================\r\n if (this.chartData.targetLineData) {\r\n this.renderTargetLine(svg, svgYAxisRight, y, width, RIGHT_SVG_WIDTH, \r\n metaData, self, isria);\r\n }\r\n\r\n // ==================== LINE CHART ====================\r\n if (lineData) {\r\n this.renderLineChart(svg, lineData, x, lineYscale, metaData, self);\r\n }\r\n\r\n // ==================== ZOOM HANDLING ====================\r\n if (this.isZoomedOut) {\r\n this.handleZoomOut(svg, height, margin);\r\n }\r\n}\r\n\r\n// ==================== HELPER METHODS ====================\r\n\r\nprivate renderXAxis(svg, x, height, metaData, subgroups, data, \r\n shortTickLengthBg, longTickLengthBg, self, isria, isMobile, isTablet) {\r\n \r\n let alternate_text = false;\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n // Normal ticks for dashboard charts\r\n // Dynamically adjust Y translation for mobile\r\n let translateY = height;\r\n if (isMobile) {\r\n translateY = height + 10; // Add extra space at the top for mobile\r\n }\r\n svg.append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${translateY})`)\r\n // .attr('transform', `translate(-35,${translateY})`)\r\n // .call(d3.axisBottom(x))\r\n .call(isria ? d3.axisBottom(x).tickSize(0) : d3.axisBottom(x)) \r\n \r\n // .call((g) => g.select('.domain').remove());\r\n // .call((g) => { if (!isria) g.select('.domain').remove(); })\r\n .call(g => {\r\n // RIA + single subgroup → remove domain\r\n // if (isria && (subgroups.length > 1 && self.chartData.data.length ===1 )) {\r\n // g.select('.domain').remove();\r\n // return;\r\n \r\n // }\r\n // // Default behavior\r\n // if (!isria) {\r\n g.select('.domain').remove();\r\n // }\r\n})\r\n // .call((g) => {\r\n // Move only the axis line (domain) to the left\r\n // g.select('.domain').attr('transform', 'translate(-60,0)');})\r\n .call((g) => {\r\n // Increase spacing between axis and labels\r\n if(isria && (subgroups.length === 1 || self.chartData.data.length >1 )) {\r\n g.selectAll('.tick text')\r\n .attr('dy', '1em'); // Default is '0.71em', increase for more space\r\n }\r\n })\r\n .call((g) => {\r\n // Remove only the last tick\r\n if(isria && subgroups.length === 1) {\r\n const ticks = g.selectAll('.tick');\r\n if (ticks.size() > 0) {\r\n // d3.select(ticks.nodes()[ticks.size() - 1]).remove();\r\n d3.select(ticks.nodes()[ticks.size() - 1]).select('line').remove();\r\n }\r\n}\r\n});\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').remove();\r\n\r\n const yOffset = subgroups.length > 1 && !metaData.xLabel ? 32 : 0;\r\n \r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n // .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('class', isria \r\n ? 'lib-xaxis-labels-texts-drilldown-ria' \r\n : 'lib-xaxis-labels-texts-drilldown'\r\n)\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('y', yOffset || null);\r\n \r\n } else {\r\n // Bigger ticks for weekly charts\r\n svg.append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${height})`)\r\n .call(d3.axisBottom(x).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n\r\n // Alternate tick line sizes\r\n svg.selectAll('g.x1.axis1 g.tick line').attr('y2', function () {\r\n if (alternate_text && self.chartConfiguration.isNoAlternateXaxisText === undefined) {\r\n alternate_text = false;\r\n return longTickLengthBg - 7;\r\n } else {\r\n alternate_text = true;\r\n return shortTickLengthBg - 4;\r\n }\r\n });\r\n alternate_text = false;\r\n // X-axis label texts\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-weeklycharts')\r\n .attr('y', function () {\r\n if (self.chartConfiguration.isFullScreen) {\r\n return shortTickLengthBg;\r\n }\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return longTickLengthBg;\r\n } else {\r\n alternate_text = true;\r\n return shortTickLengthBg;\r\n }\r\n });\r\n }\r\n \r\n // Apply labels on same line configuration\r\n if (self.chartConfiguration.xLabelsOnSameLine) {\r\n this.applyXLabelsOnSameLine(svg, subgroups, data, metaData, self, \r\n shortTickLengthBg, isMobile, isria);\r\n }\r\n\r\n // Mobile override for RIA\r\n if (isria && self.chartData.data.length >=3) {\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .classed('mobile-xaxis-override', false)\r\n // // .text((d: string) => d.substring(0, 3))\r\n // .text((d: string) => d.substring(0, 4).toLowerCase())\r\n // .text((d: string) => d.toLowerCase())\r\n .text((d: string) => d)\r\n .style('font-size', '11px')\r\n .attr('y', 5)\r\n .attr('x', 5)\r\n .style('text-anchor', 'middle');\r\n }\r\n if (isria && self.chartData.data.length >= 8) {\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('x', -20);\r\n }\r\n // if (!isria && self.chartData.data.length > 11 && !self.isZoomedOut && (x.bandwidth< 100)) {\r\n // svg.selectAll('g.x1.axis1 g.tick text')\r\n // .attr('x', -20);\r\n // }\r\n// ✅ Tablet View — Rotate if text > 10 characters\r\nif (isTablet) {\r\n const textNodes = svg.selectAll('g.x1.axis1 g.tick text');\r\n textNodes.each(function (d: any) {\r\n const text = d ? d.toString().trim() : '';\r\n\r\n // Detect date formats (to skip them)\r\n const isDateString =\r\n /^\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4}$/.test(text) || // e.g. 2025-10-29 or 10/29/2025\r\n /^(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})\\s*[-–]\\s*(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})$/.test(text); \r\n\r\n \r\n if (!isDateString && text.length > 10) {\r\n const trimmed = text.slice(0,9) + '…';\r\n textNodes\r\n .style('font-size', '10px')\r\n // .text(trimmed)\r\n \r\n }\r\n });\r\n}\r\n\r\n\r\n // Mobile/tablet override - check for single-group date charts first\r\n if (isMobile) {\r\n const textNodes = svg.selectAll('g.x1.axis1 g.tick text');\r\n const groupsCount = (data as any).length || 0;\r\n \r\n // Check if we have dates in x-axis and single group\r\n let hasDateValues = false;\r\n textNodes.each(function(d) {\r\n // Check for date values using both Date.parse and regex for date format\r\n const isDateString =\r\n /^\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4}$/.test(d.trim()) ||\r\n /^(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})\\s*[-–]\\s*(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})$/.test(d.trim());\r\n if (!hasDateValues && isDateString) {\r\n hasDateValues = true;\r\n }\r\n });\r\n\r\n // Count unique x-axis labels\r\n const uniqueLabels = new Set();\r\n textNodes.each(function(d) {\r\n uniqueLabels.add(d);\r\n });\r\n const labelCount = uniqueLabels.size;\r\n if (hasDateValues && labelCount < 3) {\r\n // For 3 or fewer labels, keep horizontal display\r\n textNodes\r\n .style('writing-mode', 'horizontal-tb') // Explicitly set horizontal\r\n .classed('mobile-xaxis-override', false) // Remove vertical class\r\n .attr('transform', 'rotate(0)') // Remove any rotation\r\n .attr('text-anchor', 'middle') // Center align\r\n .attr('y', !isria ? 20 : null) // Push down a bit\r\n .attr('dx', '0') // Reset any x offset\r\n .attr('dy', '0'); // Reset any y offset\r\n } else if (labelCount >= 3) {\r\n // For more than 3 labels, use vertical alignment\r\n textNodes\r\n .style('writing-mode', 'sideways-lr') // Vertical text\r\n .classed('mobile-xaxis-override', true) // Add vertical class\r\n .attr('text-anchor', 'middle') // Center align\r\n .attr('y', 30) // Adjust vertical position\r\n .attr('x', 0); // Reset x position\r\n } else if (!this.isHeaderVisible) {\r\n // Default mobile behavior for non-date or multi-group\r\n textNodes.classed('mobile-xaxis-override', true);\r\n } \r\n }\r\n if (!isria && !self.isZoomedOut && subgroups.length > 1 && data.length > 8 && x.bandwidth() > 100) {\r\n const isGroupedBars = subgroups.length > 1; // Multiple bar types defined\r\n // Also verify bars are actually side-by-side by checking first group\r\n const firstGroupHasMultipleBars = subgroups.filter(key => {\r\n return data[0][key] != null && data[0][key] !== -1;\r\n }).length > 1;\r\n \r\n if (!firstGroupHasMultipleBars) {\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('x', -20);\r\n }\r\n }\r\n}\r\n\r\nprivate applyXLabelsOnSameLine(svg, subgroups, data, metaData, self, \r\n shortTickLengthBg, isMobile, isria) {\r\n \r\n const xAxisLabels = svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('font-size', this.isHeaderVisible && !isria ? '18px' : '11px')\r\n .attr('text-anchor', 'middle')\r\n .attr('y', (d) => this.calculateXLabelYPosition(d, subgroups, data, metaData, self, shortTickLengthBg))\r\n .attr('x', (d) => (self.chartData.data.length > 8 && !self.isZoomedOut) ? 1 : 0)\r\n .text((d) => this.formatXLabelText(d, data, metaData, subgroups, self, isMobile));\r\n\r\n // Apply writing-mode for grouped charts with date labels in zoomed-out view\r\n xAxisLabels.each(function(this: SVGTextElement, d: any) {\r\n const isDateLabel = /^(\\d{2,4}[-\\/])?\\d{2,4}[-\\/]\\d{2,4}$/.test(d.trim());\r\n const isWeekLabel = /week|wk|w\\d+/i.test(d);\r\n \r\n if (subgroups.length > 1 && self.isZoomedOut && data.length > 8 && isDateLabel && !isWeekLabel) {\r\n d3.select(this).style('writing-mode', 'sideways-lr');\r\n }\r\n });\r\n\r\n // Add second line for non-date labels on desktop\r\n if (!isMobile) {\r\n svg.selectAll('g.x1.axis1 g.tick')\r\n .filter((d) => !/\\d{2,4}[-\\/]/.test(d))\r\n .append('text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y',30)\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('x', (d) => (self.chartData.data.length > 8 && !self.isZoomedOut) ? 1 : 0)\r\n .text((d) => {\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(d.indexOf(' '), d.length).toLowerCase();\r\n }\r\n return '';\r\n });\r\n }\r\n}\r\n\r\nprivate calculateXLabelYPosition(d, subgroups, data, metaData, self, shortTickLengthBg) {\r\n // For grouped bar charts with many bars and xLabel present\r\n if (subgroups.length > 1 && data.length > 8 && metaData.xLabel) {\r\n const isDateLabel = /\\d{2,4}[-\\/]/.test(d);\r\n return isDateLabel ? shortTickLengthBg + 14 : shortTickLengthBg;\r\n }\r\n\r\n // For grouped bar charts with many bars and NO xLabel\r\n if (subgroups.length > 1 && data.length > 8 && !metaData.xLabel) {\r\n const chartHasExtraBottom = self.chartConfiguration.margin && self.chartConfiguration.margin.bottom >= 40;\r\n if (self.chartConfiguration.isFullScreen) {\r\n return shortTickLengthBg + 2;\r\n }\r\n return chartHasExtraBottom ? shortTickLengthBg : shortTickLengthBg + 10;\r\n }\r\n\r\n // Default/fallback logic\r\n const isria = this.customChartConfiguration.isRia;\r\n let baseY = self.isHeaderVisible && !isria ? shortTickLengthBg + 25 : shortTickLengthBg;\r\n \r\n if (subgroups.length > 1 && !metaData.xLabel && !isria &&\r\n (/\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4}/.test(d) || /\\d{2,4}[-\\/]\\d{2,4}/.test(d))) {\r\n baseY = self.isHeaderVisible ? shortTickLengthBg + 15 : shortTickLengthBg + 25;\r\n }\r\n\r\n if (/\\d{2,4}[-\\/]\\d{2,4}/.test(d) && d.indexOf(' ') > -1 && !isria) {\r\n baseY += 4;\r\n }\r\n\r\n if (self.chartConfiguration.isFullScreen && subgroups.length > 1) {\r\n baseY = Math.max(shortTickLengthBg, baseY - 10);\r\n }\r\n\r\n return baseY;\r\n}\r\n\r\nprivate formatXLabelText(d, data, metaData, subgroups, self, isMobile) {\r\n // Check if we're on mobile or tablet\r\n const isSmallScreen = window.innerWidth < 992; // Less than 992px (mobile or tablet)\r\n \r\n // Helper to extract and format week number\r\n const extractWeekNumber = (text: string): string | null => {\r\n const match = text.match(/(?:week|wk|w)\\s*(\\d+)/i);\r\n return match ? `W${match[1]}` : null;\r\n };\r\n\r\n // Helper to extract date part\r\n const extractDate = (text: string): string | null => {\r\n const match = text.match(/\\d{2}[-\\/]\\d{2}[-\\/]\\d{2,4}/);\r\n return match ? match[0] : null;\r\n };\r\n\r\n // Check if label contains both date and week information\r\n const hasDateAndTime = (text: string) => {\r\n const dateMatch = /\\d{2,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4}/.test(text);\r\n const weekMatch = /(?:week|wk|w)\\s*\\d+/i.test(text);\r\n return { isDate: dateMatch, isWeek: weekMatch };\r\n };\r\n\r\n const labelInfo = hasDateAndTime(d);\r\n\r\n // Mobile handling: format date and week parts\r\n if (isMobile) {\r\n // If header is hidden (compact mobile)\r\n if (!self.isHeaderVisible) {\r\n // If it has both date and week, format appropriately\r\n if (labelInfo.isDate && labelInfo.isWeek) {\r\n const datePart = extractDate(d);\r\n const weekPart = extractWeekNumber(d);\r\n if (datePart && weekPart) {\r\n return `${datePart}\\n${weekPart}`;\r\n }\r\n }\r\n // If it's just a date, return it unchanged\r\n if (labelInfo.isDate) {\r\n return extractDate(d) || d;\r\n }\r\n // If it has just week number, format it as W##\r\n if (labelInfo.isWeek) {\r\n const weekPart = extractWeekNumber(d);\r\n if (weekPart) {\r\n return weekPart;\r\n }\r\n }\r\n // For non-date labels, trim as before\r\n const firstPart = d.split(/[\\s\\-]+/)[0];\r\n return firstPart.substring(0, 3).toLowerCase();\r\n }\r\n }\r\n\r\n // Check if value should be ignored\r\n const isValueToBeIgnored = data.some((indiv: any) => \r\n indiv.name && indiv.name.toLowerCase() === d.trim().toLowerCase() && \r\n indiv[metaData.keyList[0]] === -1\r\n );\r\n\r\n if (isValueToBeIgnored) {\r\n return '';\r\n }\r\n\r\n // Handle date range labels\r\n const dateRangeRegex = /(\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4})\\s*-\\s*(\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4})/;\r\n if (dateRangeRegex.test(d.trim())) {\r\n return d.trim().replace(dateRangeRegex, (m, d1, d2) => `${d1} - ${d2}`);\r\n }\r\n\r\n // Handle splitting of multi-part labels\r\n if (subgroups.length > 1 && !self.isZoomedOut && data.length > 8 && \r\n d.indexOf(' ') > -1 && (labelInfo.isDate || labelInfo.isWeek)) {\r\n const first = d.substring(0, d.indexOf(' '));\r\n const second = d.substring(d.indexOf(' ') + 1).trim();\r\n return `${first}\\n${second}`;\r\n }\r\n\r\n // Handle date labels in minimized view\r\n if (labelInfo.isDate) {\r\n if (!self.isHeaderVisible && d.indexOf(' ') > -1) {\r\n const first = d.substring(0, d.indexOf(' '));\r\n const second = d.substring(d.indexOf(' ') + 1).trim();\r\n return `${first}\\n${second}`;\r\n }\r\n return d;\r\n }\r\n\r\n // Handle labels with spaces\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(0, d.indexOf(' ')).toLowerCase();\r\n }\r\n\r\n return d.toLowerCase();\r\n}\r\n\r\nprivate calculateMaxValue(data, keyList) {\r\n let maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key]));\r\n \r\n if (maxValue === 0) {\r\n if (this.chartData.targetLineData) {\r\n maxValue = this.chartData.targetLineData.target + 20;\r\n } else {\r\n maxValue = 100;\r\n }\r\n }\r\n\r\n return maxValue;\r\n}\r\n\r\nprivate setupLineYScale(lineData, height, self) {\r\n let maxLineValue = d3.max(lineData, (d) => +d.value);\r\n maxLineValue = maxLineValue * self.chartConfiguration.customYscale;\r\n\r\n let minLineValue = d3.min(lineData, (d) => +d.value);\r\n if (maxLineValue > 0) minLineValue = minLineValue - 3;\r\n if (minLineValue > 0) minLineValue = 0;\r\n\r\n const lineYscale = d3.scaleLinear()\r\n .domain([minLineValue, maxLineValue])\r\n .range([height, minLineValue]);\r\n\r\n const yLineAxis = d3.axisRight(lineYscale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yLineAxisLabelFomatter);\r\n\r\n return { lineYscale, yLineAxis };\r\n}\r\n\r\nprivate renderGridLines(svg, x, y, height, width, self, isria) {\r\n // X-axis grid between labels\r\n if (self.chartConfiguration.isXgridBetweenLabels) {\r\n svg.append('g')\r\n .attr('class', 'grid')\r\n .attr('transform', `translate(${x.bandwidth() / 2},${height})`)\r\n .call(d3.axisBottom(x).tickSize(-height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-grid-color, #999999)')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n // Y-axis grid\r\n if (this.chartConfiguration.yAxisGrid || isria) {\r\n svg.append('g')\r\n .call(d3.axisLeft(y).ticks(self.chartConfiguration.numberOfYTicks).tickSize(-width))\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove().style('stroke', 'var(--chart-domain-color, #000000)'));\r\n } else{\r\n svg.append('g')\r\n .call(d3.axisLeft(y).ticks(self.chartConfiguration.numberOfYTicks))\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain')\r\n .style('stroke', 'var(--chart-domain-color, #000000)')\r\n .style('stroke-width', '1px'));\r\n }\r\n}\r\n\r\nprivate setupXSubgroupScale(subgroups, x, self) {\r\n const xSubgroup = d3.scaleBand().domain(subgroups);\r\n\r\n if (subgroups.length > 1 && !this.isZoomedOut) {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else if (subgroups.length === 1 && !this.isZoomedOut) {\r\n xSubgroup.range([0, 100]);\r\n } else if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n }\r\n\r\n return xSubgroup;\r\n}\r\n\r\nprivate renderBars(svg, data, subgroups, x, xSubgroup, y, height, color, \r\n metaData, self, leftAndRightSpaces, tempScale, isria) {\r\n \r\n const state = svg.append('g')\r\n .selectAll('.state')\r\n .data(data)\r\n .enter()\r\n .append('g')\r\n .attr('transform', (d) => `translate(${x(d.name)},0)`);\r\n\r\n const bars = state.selectAll('rect')\r\n .data((d) => this.prepareBarData(d, subgroups))\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', (d) => this.handleBarClick(d, metaData, self))\r\n .attr('x', (d) => this.calculateBarX(d, data, x, xSubgroup, self, tempScale))\r\n .attr('y', (d) => this.calculateBarY(d, y, height, self))\r\n .attr('width', (d) => {\r\n let width = this.calculateBarWidth(d, data, subgroups, x, xSubgroup, self, tempScale);\r\n if (isria && self.chartData.data.length >= 8) {\r\n width = Math.max(0, width - 20); // Prevent negative width\r\n }\r\n return width;\r\n})\r\n\r\n .attr('height', (d) => this.calculateBarHeight(d, y, height, self))\r\n .style('cursor', () => (metaData.hasDrillDown && !isria) ? 'pointer' : 'default')\r\n .attr('fill', (d) => this.getBarColor(d, metaData, self));\r\n\r\n // Attach mouse events if not RIA\r\n if (!isria && (this.chartConfiguration.displayTitleOnTop || \r\n (this.chartConfiguration.textsOnBar === undefined && \r\n this.chartConfiguration.displayTitleOnTop === undefined))) {\r\n bars.on('mouseout', (d, i) => this.handleMouseOut(svg))\r\n .on('mouseover', (d, i) => this.handleMouseOver(d, svg, data, x, y, height, metaData, self, leftAndRightSpaces, tempScale));\r\n }\r\n}\r\n\r\nprivate prepareBarData(d, subgroups) {\r\n const newList: any = [];\r\n subgroups.forEach((key) => {\r\n newList.push({ key: key, value: d[key], name: d.name });\r\n });\r\n return newList;\r\n}\r\n\r\nprivate handleBarClick(d, metaData, self) {\r\n if (d.key !== 'Target') {\r\n if (!metaData.barWithoutClick || !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) && \r\n !metaData.barWithoutClick.includes(d?.key))) {\r\n self.handleClick(d);\r\n }\r\n }\r\n}\r\n\r\nprivate calculateBarX(d, data, x, xSubgroup, self, tempScale) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n return this.calculateDrilldownBarX(d, data, x, self, tempScale);\r\n }\r\n return xSubgroup(d.key);\r\n}\r\n\r\n// private calculateDrilldownBarX(d, data, x, self, tempScale) {\r\n// data.forEach((indiv: any) => {\r\n// if (indiv.name === d.name) {\r\n// const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n// tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n// if (x.bandwidth() > 100) {\r\n// const reducedBarWidth = self.isZoomedOut ? 60 : 30;\r\n// const offset = (x.bandwidth() - reducedBarWidth) / 2;\r\n// tempScale.range([offset, x.bandwidth() - offset]);\r\n// }\r\n// }\r\n// });\r\n// return tempScale(d.key) || 0;\r\n// }\r\n\r\nprivate calculateDrilldownBarX(d, data, x, self, tempScale) {\r\n let calculatedScale = tempScale;\r\n \r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n const reducedBarWidth = self.isZoomedOut ? 60 : 100;\r\n const offset = (x.bandwidth() - reducedBarWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n });\r\n \r\n // Return position relative to the group (since bars are inside a translated group element)\r\n return calculatedScale(d.key) || 0;\r\n }\r\n\r\nprivate calculateBarY(d, y, height, self) {\r\n if (d.value === -1) {\r\n return y(0);\r\n }\r\n\r\n if (d.value >= 0) {\r\n const barHeight = height - y(d.value);\r\n const minHeight = self.chartConfiguration.defaultBarHeight || 2;\r\n return barHeight < minHeight ? y(0) - minHeight : y(d.value);\r\n }\r\n\r\n return y(0);\r\n}\r\n\r\nprivate calculateBarWidth(d, data, subgroups, x, xSubgroup, self, tempScale) {\r\n // Device detection for responsive sizing\r\n const isMobile = window.innerWidth < 576;\r\n const isTablet = window.innerWidth >= 576 && window.innerWidth < 992;\r\n\r\n // For grouped bar charts in zoom-in view\r\n if (subgroups.length > 1 && !self.isZoomedOut) {\r\n return isMobile ? 22 : isTablet ? 36 : 50;\r\n }\r\n\r\n // For single-bar charts in zoom-in view\r\n if (subgroups.length === 1 && !self.isZoomedOut) {\r\n return isMobile ? 60 : 80;\r\n }\r\n\r\n // Minimum bar widths for zoomed-out state\r\n const minBarWidth = (() => {\r\n if (subgroups.length > 2) {\r\n return isMobile ? 18 : isTablet ? 24 : 30;\r\n }\r\n return isMobile ? 12 : isTablet ? 16 : 20;\r\n })();\r\n\r\n // Default logic for drilldown charts\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n let calculatedScale = d3.scaleBand().domain([]).range([0, 0]);\r\n \r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n const reducedBarWidth = self.isZoomedOut ? 60 : 100;\r\n const offset = (x.bandwidth() - reducedBarWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n });\r\n \r\n // Ensure minimum width even in drilldown mode\r\n return Math.max(calculatedScale.bandwidth(), minBarWidth);\r\n }\r\n\r\n // For regular charts, ensure minimum width\r\n return Math.max(xSubgroup.bandwidth(), minBarWidth);\r\n}\r\n\r\nprivate calculateBarHeight(d, y, height, self) {\r\n if (d.value === -1) {\r\n return height - y(0);\r\n }\r\n\r\n if (d.value >= 0) {\r\n const barHeight = height - y(d.value);\r\n const minHeight = self.chartConfiguration.defaultBarHeight || 2;\r\n return Math.max(barHeight, minHeight);\r\n }\r\n\r\n return height - y(0);\r\n}\r\n\r\nprivate getBarColor(d, metaData, self) {\r\n if (d.value && self.chartData.targetLineData && \r\n d.value >= parseFloat(self.chartData.targetLineData.target) && \r\n self.chartData.metaData.colorAboveTarget) {\r\n \r\n const key = d.key.toLowerCase();\r\n const colorAboveTarget = Object.keys(self.chartData.metaData.colorAboveTarget)\r\n .find(k => k.toLowerCase() === key);\r\n \r\n if (colorAboveTarget) {\r\n return self.chartData.metaData.colorAboveTarget[colorAboveTarget];\r\n }\r\n }\r\n return self.chartData.metaData.colors[d.key];\r\n}\r\n\r\nprivate renderBarLabels(svg, data, subgroups, x, xSubgroup, y, height, \r\n metaData, self, tempScale, isria) {\r\n \r\n const state = svg.selectAll('.state');\r\n \r\n const labels = state.selectAll('text')\r\n .data((d) => this.prepareBarData(d, subgroups))\r\n .enter()\r\n .append('text')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text((d) => this.formatBarLabel(d))\r\n .style('fill', '#000')\r\n .style('font-weight', 'bold')\r\n .style('font-size', (d) => this.calculateLabelFontSize(self))\r\n .attr('transform', (d) => this.calculateLabelTransform(d, data, x, xSubgroup, y, self, tempScale))\r\n .on('click', (d) => this.handleBarClick(d, metaData, self));\r\n\r\n if (!isria) {\r\n labels.on('mouseout', () => this.handleMouseOut(svg))\r\n .on('mouseover', (d) => this.handleMouseOver(d, svg, data, x, y, height, metaData, self, 50, tempScale));\r\n }\r\n}\r\n\r\nprivate formatBarLabel(d) {\r\n if (!d.key || !d.value) return '';\r\n return d.key.length > 20 ? d.key.substring(0, 17) + '...' : d.key;\r\n}\r\n\r\nprivate calculateLabelFontSize(self) {\r\n if (self.isZoomedOut) return '9px';\r\n\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) return '18px';\r\n if (window.innerWidth < 1400) return '10px';\r\n return '14px';\r\n }\r\n\r\n return '14px';\r\n}\r\n\r\nprivate calculateLabelTransform(d, data, x, xSubgroup, y, self, tempScale) {\r\n let calculatedScale;\r\n \r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length === 1) {\r\n const reducedWidth = Object.keys(self.chartData.data[0]).length === 2 ? 200 : 300;\r\n const offset = (x.bandwidth() - reducedWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n } else {\r\n const offset = (x.bandwidth() - 125) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (self.chartConfiguration.textAlwaysHorizontal) {\r\n return `translate(${xSubgroup(d.key)},${y(d.value) - 3})`;\r\n }\r\n\r\n if (!isNaN(calculatedScale(d.key))) {\r\n return `translate(${calculatedScale(d.key) + calculatedScale.bandwidth() * 0.55},${y(0) - 10}) rotate(270)`;\r\n }\r\n\r\n return 'translate(0,0)';\r\n}\r\n\r\nprivate handleMouseOver(d, svg, data, x, y, height, metaData, self, leftAndRightSpaces, tempScale) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n\r\n let calculatedScale;\r\n let elementsCounter;\r\n\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n elementsCounter = keys.length;\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length === 1) {\r\n const reducedWidth = Object.keys(self.chartData.data[0]).length === 2 ? 200 : 300;\r\n const offset = (x.bandwidth() - reducedWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n } else {\r\n const offset = (x.bandwidth() - 125) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n const xPosition = this.calculateTooltipX(d, x, calculatedScale, metaData, leftAndRightSpaces);\r\n const width = this.calculateTooltipWidth(calculatedScale, metaData, leftAndRightSpaces);\r\n\r\n svg.append('foreignObject')\r\n .attr('x', xPosition)\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', y(d.value) - 3 - 40 - 10)\r\n .attr('dy', d.class)\r\n .attr('width', width)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(() => this.generateTooltipHTML(d, metaData));\r\n}\r\n\r\nprivate calculateTooltipX(d, x, calculatedScale, metaData, leftAndRightSpaces) {\r\n if (metaData.hasDrillDown) {\r\n if (calculatedScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return x(d.name) + calculatedScale(d.key) + calculatedScale.bandwidth() / 2 - 90;\r\n }\r\n return x(d.name) + calculatedScale(d.key) - \r\n (calculatedScale.bandwidth() + leftAndRightSpaces * 2) / 2 + \r\n calculatedScale.bandwidth() / 2;\r\n }\r\n return x(d.name) + calculatedScale(d.key) - \r\n (calculatedScale.bandwidth() + leftAndRightSpaces * 2) / 2 + \r\n calculatedScale.bandwidth() / 2;\r\n}\r\n\r\nprivate calculateTooltipWidth(calculatedScale, metaData, leftAndRightSpaces) {\r\n if (metaData.hasDrillDown) {\r\n if (calculatedScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return '180px';\r\n }\r\n return calculatedScale.bandwidth() + leftAndRightSpaces * 2;\r\n }\r\n return calculatedScale.bandwidth() + leftAndRightSpaces * 2;\r\n}\r\n\r\nprivate generateTooltipHTML(d, metaData) {\r\n const barLabel = d.key;\r\n const dataType = metaData.dataType || '';\r\n const value = d.value;\r\n \r\n let html = `<span class=\"title-bar-name\">${barLabel}</span>`;\r\n html += `<span class=\"title-bar-value\"><span>${value}</span>${dataType}</span>`;\r\n \r\n return html;\r\n}\r\n\r\nprivate handleMouseOut(svg) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n}\r\n\r\nprivate renderYAxis(svg, svgYAxisLeft, svgYAxisRight, y, yLineAxis, lineData, self, isria, margin) {\r\n // Hidden y-axis for reference\r\n svg.append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n // Left y-axis\r\n svgYAxisLeft.append('g')\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(d3.axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat((d) => {\r\n const formatted = self.chartConfiguration.yAxisLabelFomatter \r\n ? self.chartConfiguration.yAxisLabelFomatter(d) \r\n : d;\r\n return formatted >= 1000 ? formatted / 1000 + 'k' : formatted;\r\n }))\r\n .call((g) => {\r\n g.select('.domain')\r\n .style('stroke', 'var(--chart-domain-color, #000000)')\r\n .style('stroke-width', '1px');\r\n })\r\n .selectAll('text')\r\n .style('font-size', isria ? '11px' : null)\r\n .style('fill', 'var(--chart-text-color)');\r\n\r\n // Right y-axis (hidden by default)\r\n svgYAxisRight.append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n // Line chart axis if applicable\r\n if (lineData != null && lineData && self.chartConfiguration.showLineChartAxis) {\r\n svgYAxisRight.append('g')\r\n .attr('class', 'lib-stacked-y-axis-text1')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yLineAxis);\r\n }\r\n\r\n // Apply axis visibility configurations\r\n this.applyAxisVisibilityConfig(self);\r\n}\r\n\r\nprivate applyAxisVisibilityConfig(self) {\r\n if (self.chartConfiguration.isXaxisLabelHidden) {\r\n d3.selectAll('g.lib-line-x-axis-text > g > text')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (self.chartConfiguration.isYaxisLabelHidden) {\r\n d3.selectAll('.yaxis-dashed > g > text')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (self.chartConfiguration.isYaxisHidden) {\r\n d3.selectAll('.yaxis-dashed')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (self.chartConfiguration.isYaxisDashed) {\r\n d3.selectAll('.yaxis-dashed')\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-axis-color, #999999)');\r\n }\r\n}\r\n\r\nprivate renderAxisLabels(svg, svgYAxisLeft, svgYAxisRight, metaData, width, height, margin, self, isria, rightSvgWidth) {\r\n // Y-axis label pieces,uints etc\r\n if (metaData.yLabel) {\r\n const yPosition = isria ? 0 - margin.left / 2 - 30 : 0 - margin.left / 2 - 40;\r\n\r\n svgYAxisLeft.append('text')\r\n .attr('class', 'lib-axis-group-label font-size-1')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', yPosition)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '0.5em')\r\n .style('text-anchor', 'middle')\r\n .attr('fill', 'var(--chart-text-color)');\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n svgYAxisLeft.selectAll('.lib-axis-group-label')\r\n .style('font-size', 'smaller')\r\n .text(metaData.yLabel);\r\n } else {\r\n svg.selectAll('.lib-axis-group-label')\r\n .attr('class', 'lib-ylabel-weeklyCharts')\r\n .text(metaData.yLabel.toLowerCase());\r\n }\r\n }\r\n\r\n // X-axis label\r\n if (metaData.xLabel) {\r\n const isAcronym = this.isLabelAcronym(metaData.xLabel);\r\n const xPosition = isria \r\n ? (height + margin.top + margin.bottom) \r\n : (height + margin.top + margin.bottom + 40);\r\n\r\n svg.append('text')\r\n .attr('class', this.getXLabelClass(self))\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr('transform', `translate(${width / 2},${xPosition})`)\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcronym ? metaData.xLabel.toUpperCase() : metaData.xLabel.toLowerCase())\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize');\r\n }\r\n\r\n // Line y-axis label\r\n if (metaData.lineyLabel) {\r\n svgYAxisRight.append('text')\r\n .attr('class', 'lib-axis-group-label lib-line-axis')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'translate(0,0) rotate(90)')\r\n .attr('y', -100)\r\n .attr('x', 100)\r\n .attr('dy', '5em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', 'smaller')\r\n .text(metaData.lineyLabel);\r\n }\r\n\r\n // Apply drilldown chart specific styles\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n}\r\n\r\nprivate isLabelAcronym(label) {\r\n return (label.length <= 4 && /^[A-Z]+$/.test(label)) ||\r\n (label === label.toUpperCase() && /[A-Z]/.test(label));\r\n}\r\n\r\nprivate getXLabelClass(self) {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n \r\n if (self.chartConfiguration.isDrilldownChart) {\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n }\r\n \r\n if (self.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n }\r\n \r\n return baseClass + ' lib-axis-waterfall-label';\r\n}\r\n\r\nprivate renderTargetLine(svg, svgYAxisRight, y, width, rightSvgWidth, metaData, self,isria) {\r\n const yZero = y(this.chartData.targetLineData.target);\r\n // Draw target line\r\n svg.append('line')\r\n // .attr('x1', 20)\r\n .attr('x1', isria ? 0 : 0)\r\n .attr('x2', width)\r\n .attr('y1', yZero)\r\n .attr('y2', yZero)\r\n .style('stroke-dasharray', '5 5')\r\n .style('stroke', this.chartData.targetLineData.color);\r\n\r\n // Add target label\r\n const dataTypeTemp = metaData.dataType || '';\r\n const targetLineName = this.chartData.targetLineData.targetName || 'target';\r\n \r\n\r\n\r\n svgYAxisRight.append('foreignObject')\r\n .attr('transform', `translate(0,${yZero - 30})`)\r\n .attr('width', rightSvgWidth)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', isria ? 'target-display-ria' : 'target-display')\r\n .style('color', 'var(--chart-text-color)')\r\n .html(`<div>${targetLineName}</div><div>${self.chartData.targetLineData.target}${dataTypeTemp}</div>`);\r\n}\r\n\r\nprivate renderLineChart(svg, lineData, x, lineYscale, metaData, self) {\r\n // Draw line path\r\n svg.append('path')\r\n .datum(lineData)\r\n .attr('fill', 'none')\r\n .attr('stroke', self.chartConfiguration.lineGraphColor)\r\n .attr('stroke-width', 1.5)\r\n .attr('d', d3.line()\r\n .x((d) => x(d.name) + x.bandwidth() / 2)\r\n .y((d) => lineYscale(d.value)));\r\n\r\n // Add dots\r\n const dot = svg.selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', (d) => {\r\n if (!metaData.barWithoutClick || !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) && \r\n !metaData.barWithoutClick.includes(d?.key))) {\r\n self.handleClick(d);\r\n }\r\n });\r\n\r\n dot.append('circle')\r\n .attr('fill', self.chartConfiguration.lineGraphColor)\r\n .attr('stroke', 'none')\r\n .attr('cx', (d) => x(d.name) + x.bandwidth() / 2)\r\n .attr('cy', (d) => lineYscale(d.value))\r\n .style('cursor', () => self.chartData.metaData.hasDrillDown ? 'pointer' : 'default')\r\n .attr('r', 3);\r\n\r\n // Add value labels\r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot.append('text')\r\n .attr('class', 'dot')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('color', self.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: .85em')\r\n .attr('x', (d) => x(d.name) + x.bandwidth() / 2)\r\n .attr('y', (d) => lineYscale(d.value))\r\n .attr('dy', '-1em')\r\n .text((d) => self.chartConfiguration.labelFormatter(d.value));\r\n }\r\n}\r\n\r\nprivate handleZoomOut(svg, height, margin) {\r\n svg.selectAll('.lib-xaxis-labels-texts-drilldown')\r\n .each((d, i, nodes) => {\r\n const text = d3.select(nodes[i]);\r\n const label = text.text();\r\n \r\n if (label.indexOf('\\n') > -1) {\r\n const lines = label.split('\\n');\r\n text.text(null);\r\n lines.forEach((line, idx) => {\r\n text.append('tspan')\r\n .text(line)\r\n .attr('x', 0)\r\n .attr('dy', idx === 0 ? '1em' : '1.1em');\r\n });\r\n } else {\r\n const words = label.split(' ');\r\n text.text(null);\r\n words.forEach((word) => {\r\n text.append('tspan').text(word);\r\n });\r\n }\r\n })\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('transform', null);\r\n\r\n svg.select('.x-axis')\r\n .attr('transform', `translate(0, ${height - margin.bottom + 10})`);\r\n}\r\n\r\nprivate calculateChartDimensions(chartContainer: any, verticalstackedcontainer: any, margin: any, self: any) {\r\n let width = parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n const dataLength = this.chartData.data.length;\r\n const subgroupsCount = (this.chartData.metaData.keyList as any || []).length;\r\n const isMobile = window.innerWidth < 576;\r\n const isTablet = window.innerWidth >= 576 && window.innerWidth < 992;\r\n const is2K = window.innerWidth >= 2000 && window.innerWidth < 3840;\r\n const isria = this.customChartConfiguration.isRia;\r\n\r\n // Minimum width per bar group based on device and number of subgroups\r\n const minWidthPerGroup = (() => {\r\n if (subgroupsCount > 2) {\r\n return isMobile ? 100 : isTablet ? 100 : 120; // Wider for multiple subgroups\r\n }\r\n return isMobile ? 40 : isTablet ? 60 : 80; // Normal width for 1-2 subgroups\r\n })();\r\n\r\n // Calculate minimum required width for all groups\r\n const minRequiredWidth = dataLength * minWidthPerGroup;\r\n\r\n // In zoomed-out state, ensure minimum width for readability\r\n if (this.isZoomedOut) {\r\n // If we have many groups or multiple subgroups, ensure minimum width\r\n if (dataLength > 8 || subgroupsCount > 2) {\r\n width = Math.max(width, minRequiredWidth);\r\n }\r\n }\r\n\r\n // In zoomed-in state, always ensure generous spacing\r\n if (dataLength > 8 && !this.isZoomedOut) {\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < dataLength * 250\r\n ) {\r\n width = dataLength * 250;\r\n } else {\r\n // Increase width for multiple subgroups\r\n width = dataLength * (subgroupsCount > 2 ? 200 : 160);\r\n }\r\n }\r\n\r\n // ---- Height Logic (no change) ----\r\n let height =\r\n parseInt(verticalstackedcontainer.style('height')) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n if (\r\n this.chartConfiguration.isFullScreen !== undefined &&\r\n this.chartConfiguration.isFullScreen\r\n ) {\r\n height =\r\n this.chartConfiguration.svgHeight !== 70\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n const bottomDeduction = isria ? 50 : 130;\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n bottomDeduction;\r\n }\r\n\r\n if (this.chartConfiguration.isHeaderVisible) {\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n 100;\r\n\r\n if (is2K && this.isHeaderVisible && !isria) {\r\n height -= 55; // reduce a bit more for 2K\r\n }\r\n }\r\n return { width, height };\r\n}\r\nprivate createChartContainers(\r\n chartContainer: any,\r\n margin: any,\r\n height: number,\r\n rightSvgWidth: number,\r\n self: any,\r\n width: number\r\n) {\r\n // Outer container\r\n const isria = this.customChartConfiguration.isRia;\r\n const outerContainer = chartContainer\r\n .append('div')\r\n .attr('id', self.uniqueId)\r\n .attr('class', 'outer-container')\r\n .style('width', '100%')\r\n .style('height', height)\r\n .style('overflow', 'visible') // Allow overflow to show scrollbars\r\n // .style('padding-left', `${margin.left}px`)\r\n .style('padding-left', `${isria ? margin.left + 18 : margin.left + 15}px`)\r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left', '6px');\r\n\r\n // Left Y-Axis\r\n const svgYAxisLeft = outerContainer\r\n .append('svg')\r\n .attr('width', '100')\r\n .attr('height', height + margin.top + margin.bottom + 10)\r\n .style('position', 'absolute')\r\n // .style('left', '0')\r\n .style('left', isria ? '2px' : '0')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', `translate(${margin.left + 15},${margin.top})`);\r\n\r\n // Right Y-Axis\r\n const svgYAxisRight = outerContainer\r\n .append('svg')\r\n .attr('width', rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 10)\r\n .style('position', 'absolute')\r\n .style('right', '12px')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`); \r\n\r\n // Inner scrollable container\r\n const innerContainer = outerContainer\r\n .append('div')\r\n .attr('class', 'inner-container')\r\n .style('width', '100%')\r\n .style('overflow-x', 'auto')\r\n .style('height', isria ? '242px' : null);\r\n\r\n // Main SVG\r\n const svg = innerContainer\r\n .append('svg')\r\n .attr('width', Math.max(width - rightSvgWidth, window.innerWidth * 0.8)) // Ensure minimum width\r\n .attr('height', height + margin.top + margin.bottom + 60)\r\n .style('min-width', '100%') // Prevent svg from shrinking\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n return { outerContainer, svgYAxisLeft, svgYAxisRight, innerContainer, svg };\r\n}\r\n handleClick(d: any) {\r\n if (this.chartData.metaData.hasDrillDown || d?.toggleFrom)\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n handleDD1Click(event) {\r\n this.isDD1Open = true;\r\n this.isDD2Open = false;\r\n }\r\n handleDD2Click(event) {\r\n this.isDD2Open = true;\r\n this.isDD1Open = false;\r\n }\r\n handleCompareByFilterSelection(event) {\r\n this.clickEvent.emit(event);\r\n }\r\n}\r\n","<div\r\n #groupcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\"\r\n>\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n <lib-chart-header-v3\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (compareByFilterSelection)=\"handleCompareByFilterSelection($event)\"\r\n (zoomInZoomOutClick)=\"handleZoominZoomoutClick($event)\"\r\n ></lib-chart-header-v3>\r\n </div>\r\n <lib-chart-header-v1\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [isria]=\"customChartConfiguration.isRia\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n *ngIf=\"isHeaderVisible\"\r\n ></lib-chart-header-v1>\r\n <div\r\n *ngIf=\"\r\n chartData &&\r\n chartData.metaData &&\r\n chartConfiguration.legendJustified &&\r\n legendVisible &&\r\n chartConfiguration.legendAtTopRight\r\n \"\r\n class=\"legend-holder-right\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n >\r\n <ul class=\"display-flex\">\r\n <li\r\n class=\"legends-positioning-inline\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon-drilldown\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"groupchartcontainer\"\r\n #groupchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n\r\n\r\n <!-- <div\r\n *ngIf=\"\r\n chartData &&\r\n chartData.metaData &&\r\n chartConfiguration.legendJustified &&\r\n legendVisible &&\r\n !chartConfiguration.legendAtTopRight\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n >\r\n <ul class=\"lib-donut-justified-label-wrapper\">\r\n <li\r\n class=\"lib-donut-justified-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n <!-- <div *ngIf=\"chartConfiguration?.isDisplayBarDetailsAtBottom\">\r\n <div\r\n class=\"bar-values lib-display-flex lib-justify-content-center lib-align-items-center\"\r\n *ngFor=\"\r\n let item of chartData.metaData.colors | keyvalue : keepOrder;\r\n let i = index\r\n \">\r\n <div\r\n class=\"bar-name font-size-1\"\r\n *ngIf=\"\r\n chartData.data[0][item.key] &&\r\n i <= chartConfiguration.howmanyBarDetailsToDisplay\r\n \"\r\n >\r\n {{ item.key }}\r\n </div>\r\n <div\r\n class=\"bar-value lib-display-flex lib-align-items-center font-size-1\"\r\n [style.color]=\"\r\n chartConfiguration.barVauleColor ? barVauleColor : item.value\r\n \"\r\n *ngIf=\"\r\n chartData.data[0][item.key] &&\r\n i <= chartConfiguration.howmanyBarDetailsToDisplay\r\n \"\r\n >\r\n {{ chartData.data[0][item.key] }}\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-alert-header',\r\n templateUrl: './chart-alert-header.component.html',\r\n styleUrl: './chart-alert-header.component.less',\r\n})\r\nexport class ChartAlertHeaderComponent {\r\n @Input() isAlertEnabled: any;\r\n}\r\n","<div class=\"chart-alert-header\" *ngIf=\"isAlertEnabled\">\r\n <i class=\"fa fa-bell\"></i>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DropdownComponent implements OnChanges, OnDestroy {\r\n @Input() dropdownHeaderName: string = 'Compare by';\r\n @Input() isDropdownOpen: boolean = false;\r\n selectedCompareBy: object = {};\r\n @Input() dropdownData: any;\r\n @Input() isCheckboxVisible: boolean = true;\r\n\r\n @Output() ddClicked = new EventEmitter<any>();\r\n @Output() selectedFromDropdown = new EventEmitter<any>();\r\n childDropdownListVisible: any = [];\r\n constructor() {\r\n window.addEventListener('storage', this.onStorageChange.bind(this));\r\n }\r\n ngOnDestroy(): void {\r\n window.removeEventListener('storage', this.onStorageChange);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let valueFromStore = sessionStorage.getItem('childDropdownListVisible');\r\n if (valueFromStore) {\r\n this.childDropdownListVisible = JSON.parse(valueFromStore);\r\n }\r\n const selectedCompareByFromStotage =\r\n sessionStorage.getItem('selectedCompareBy');\r\n if (\r\n selectedCompareByFromStotage &&\r\n this.dropdownHeaderName == 'Compare by'\r\n ) {\r\n try {\r\n this.selectedCompareBy = JSON.parse(selectedCompareByFromStotage);\r\n } catch (e) {\r\n console.log('Error parsing selectedCompareBy from sessionStorage:', e);\r\n }\r\n }\r\n const selectedCompare2ByFromStotage =\r\n sessionStorage.getItem('selectedCompare2By');\r\n if (\r\n selectedCompare2ByFromStotage &&\r\n this.dropdownHeaderName != 'Compare by'\r\n ) {\r\n try {\r\n this.selectedCompareBy = JSON.parse(selectedCompare2ByFromStotage);\r\n this.dropdownHeaderName =\r\n Object.keys(this.selectedCompareBy) &&\r\n Object.keys(this.selectedCompareBy).length > 0\r\n ? Object.keys(this.selectedCompareBy)[0]\r\n : '';\r\n } catch (e) {\r\n console.log('Error parsing selectedCompareBy from sessionStorage:', e);\r\n }\r\n }\r\n if (\r\n sessionStorage.getItem('chartHeaderDropdown') &&\r\n this.dropdownHeaderName == 'Compare by'\r\n )\r\n this.isDropdownOpen =\r\n sessionStorage.getItem('chartHeaderDropdown') == 'true';\r\n }\r\n headerClicked(event) {\r\n event.stopPropagation();\r\n this.ddClicked.emit(true);\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n if (this.dropdownHeaderName == 'Compare by') this.setDropDownStatus();\r\n else this.setDropDown2Status();\r\n sessionStorage.setItem('isPerformanceClosed', 'true');\r\n }\r\n setDropDownStatus() {\r\n sessionStorage.setItem(\r\n 'chartHeaderDropdown',\r\n this.isDropdownOpen.toString()\r\n );\r\n sessionStorage.setItem('chartHeaderDropdown2', 'false');\r\n }\r\n setDropDown2Status() {\r\n sessionStorage.setItem('chartHeaderDropdown', 'false');\r\n sessionStorage.setItem(\r\n 'chartHeaderDropdown2',\r\n this.isDropdownOpen.toString()\r\n );\r\n }\r\n @HostListener('document:click', ['$event'])\r\n clickout() {\r\n if (this.isDropdownOpen) {\r\n this.isDropdownOpen = false;\r\n this.childDropdownListVisible = [];\r\n sessionStorage.setItem('childDropdownListVisible', JSON.stringify([]));\r\n }\r\n if (this.dropdownHeaderName != 'Compare by')\r\n sessionStorage.setItem('chartHeaderDropdown2', 'false');\r\n if (this.dropdownHeaderName == 'Compare by') this.setDropDownStatus();\r\n }\r\n handleListHeaderClick(event, data, entireList) {\r\n this.handleListPanelClick(event);\r\n if (this.dropdownHeaderName != 'Compare By' && !data.children) {\r\n this.dropdownHeaderName = data.name;\r\n this.isDropdownOpen = false;\r\n if (this.dropdownHeaderName == 'Compare by') this.setDropDownStatus();\r\n else sessionStorage.setItem('chartHeaderDropdown2', 'false');\r\n this.selectedCompareBy = {};\r\n }\r\n let keysArray = Object.keys(this.selectedCompareBy);\r\n if (!keysArray.length || !keysArray.includes(data.name)) {\r\n this.selectedCompareBy[data.name] = data.children ? data.children : data;\r\n } else if (data.children) {\r\n delete this.selectedCompareBy[data.name];\r\n }\r\n if (\r\n this.dropdownHeaderName != 'Compare by' &&\r\n ((sessionStorage.getItem('selectedCompare2By') &&\r\n sessionStorage.getItem('selectedCompare2By') != '{}' &&\r\n JSON.stringify(this.selectedCompareBy) ==\r\n sessionStorage.getItem('selectedCompare2By')) ||\r\n (!sessionStorage.getItem('selectedCompare2By') &&\r\n JSON.stringify(this.selectedCompareBy)\r\n .toLowerCase()\r\n .includes(this.dropdownHeaderName.toLowerCase())))\r\n ) {\r\n } else {\r\n this.selectedFromDropdown.emit({\r\n compareByFilters: this.selectedCompareBy,\r\n entireList: entireList,\r\n });\r\n }\r\n if (this.dropdownHeaderName == 'Compare by' && data.children)\r\n sessionStorage.setItem(\r\n 'selectedCompareBy',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n else {\r\n sessionStorage.setItem(\r\n 'selectedCompare2By',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n }\r\n }\r\n handleListChildrenClick(event, parent, child) {\r\n this.handleListPanelClick(event);\r\n let keysArray = Object.keys(this.selectedCompareBy);\r\n if (!keysArray.length || !keysArray.includes(parent.name)) {\r\n this.selectedCompareBy[parent.name] = [child];\r\n } else {\r\n /** check if the child is already present */\r\n let childObjFound = this.selectedCompareBy[parent.name].find(\r\n (childObj) => childObj.name === child.name\r\n );\r\n if (!childObjFound) {\r\n /**child not found */\r\n this.selectedCompareBy[parent.name].push(child);\r\n } else {\r\n /**child already selected - hence delete that child*/\r\n this.selectedCompareBy[parent.name] = this.selectedCompareBy[\r\n parent.name\r\n ].filter((childObj) => childObj.name !== child.name);\r\n if (\r\n this.selectedCompareBy[parent.name] &&\r\n !this.selectedCompareBy[parent.name].length\r\n ) {\r\n delete this.selectedCompareBy[parent.name];\r\n }\r\n }\r\n }\r\n this.selectedFromDropdown.emit({\r\n compareByFilters: this.selectedCompareBy,\r\n entireList: parent?.children,\r\n });\r\n if (this.dropdownHeaderName == 'Compare by' && parent.children)\r\n sessionStorage.setItem(\r\n 'selectedCompareBy',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n else {\r\n sessionStorage.setItem(\r\n 'selectedCompare2By',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n }\r\n }\r\n handleIfPresent(data) {\r\n let parentObj = this.dropdownData.find((obj) => obj.name === data.name);\r\n if (\r\n this.selectedCompareBy[data.name] &&\r\n parentObj.children &&\r\n parentObj.children.length == this.selectedCompareBy[data.name]?.length\r\n ) {\r\n return true;\r\n }\r\n if (this.selectedCompareBy[data.name] && !parentObj.children) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n handleIfChildPresent(parent, child) {\r\n if (!Object.keys(this.selectedCompareBy).length) {\r\n return false;\r\n }\r\n let childObjFound =\r\n this.selectedCompareBy[parent.name] &&\r\n this.selectedCompareBy[parent.name].find(\r\n (childObj) => childObj.name === child.name\r\n );\r\n if (childObjFound) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n handleListPanelClick(event) {\r\n event.stopPropagation();\r\n }\r\n getDropdownHeaderName() {\r\n if (\r\n this.dropdownHeaderName != 'Compare by' &&\r\n sessionStorage.getItem('onHoveredElementClicked')\r\n ) {\r\n const reqString = sessionStorage.getItem('onHoveredElementClicked');\r\n if (reqString) this.dropdownHeaderName = reqString.replace(/\"/g, '');\r\n return this.dropdownHeaderName;\r\n }\r\n return this.dropdownHeaderName;\r\n }\r\n getDropdownVisibilityStatus() {\r\n if (\r\n sessionStorage.getItem('chartHeaderDropdown') &&\r\n this.dropdownHeaderName == 'Compare by'\r\n )\r\n this.isDropdownOpen =\r\n sessionStorage.getItem('chartHeaderDropdown') == 'true';\r\n else if (\r\n sessionStorage.getItem('chartHeaderDropdown2') &&\r\n this.dropdownHeaderName != 'Compare by'\r\n )\r\n this.isDropdownOpen =\r\n sessionStorage.getItem('chartHeaderDropdown2') == 'true';\r\n return this.isDropdownOpen;\r\n }\r\n private onStorageChange(event: StorageEvent): void {\r\n if (\r\n event.storageArea === sessionStorage &&\r\n (event.key === 'chartHeaderDropdown' ||\r\n event.key == 'chartHeaderDropdown2')\r\n ) {\r\n this.getDropdownVisibilityStatus();\r\n }\r\n }\r\n handleShowOrHideChildList(parentName: string, event: Event) {\r\n event.stopPropagation();\r\n\r\n if (this.childDropdownListVisible.includes(parentName)) {\r\n this.childDropdownListVisible = [];\r\n } else {\r\n this.childDropdownListVisible = [parentName];\r\n }\r\n\r\n sessionStorage.setItem(\r\n 'childDropdownListVisible',\r\n JSON.stringify(this.childDropdownListVisible)\r\n );\r\n }\r\n}\r\n","<div class=\"dropdown-container\">\r\n <button class=\"weeklycharts__weekbutton text-align-left\" type=\"button\" (click)=\"headerClicked($event)\"\r\n [ngClass]=\"{ 'weeklycharts__bordernormal': !isDropdownOpen }\">\r\n {{ getDropdownHeaderName() }}\r\n <div class=\"custom-select-caret\">\r\n <i class=\"bi\" [ngClass]=\"{\r\n 'bi-caret-down-fill': !isDropdownOpen,\r\n 'bi-caret-up-fill': isDropdownOpen\r\n }\"></i>\r\n </div>\r\n </button>\r\n\r\n <ul class=\"dropdown__list\" *ngIf=\"getDropdownVisibilityStatus()\" (click)=\"handleListPanelClick($event)\">\r\n <li *ngFor=\"let data of dropdownData\" class=\"position-relative\" \r\n [ngClass]=\"{\r\n 'weeklycharts-active': data.name === dropdownHeaderName,\r\n 'weeklycharts-inactive': data.name !== dropdownHeaderName\r\n }\">\r\n\r\n <!-- Parent Item -->\r\n <span class=\"display-flex align-items-center cursor-pointer gap-2\" (click)=\"handleListHeaderClick($event, data, dropdownData)\">\r\n <i class=\"fa\" [ngClass]=\"{\r\n 'fa-check-square': handleIfPresent(data),\r\n 'fa-square-o': !handleIfPresent(data)\r\n }\" *ngIf=\"isCheckboxVisible\"></i>\r\n <span class=\"list-text font-size-3\"\r\n [ngClass]=\"{ 'font-weight-600': data.name === dropdownHeaderName }\">\r\n {{ data.name }}\r\n </span>\r\n\r\n <!-- Expand/Collapse Icon -->\r\n <span class=\"sublist-arrow lib-display-flex\" *ngIf=\"data.children\" \r\n (click)=\"handleShowOrHideChildList(data.name, $event)\">\r\n <i class=\"fa font-size-1 font-weight-600\" \r\n [ngClass]=\"{\r\n 'fa-angle-right': !childDropdownListVisible.includes(data.name),\r\n 'fa-angle-down': childDropdownListVisible.includes(data.name)\r\n }\"></i>\r\n </span>\r\n </span>\r\n\r\n <!-- Children List -->\r\n <ul class=\"dropdown-sublist lib-ml-20 lib-list-children\"\r\n *ngIf=\"data.children && childDropdownListVisible.includes(data.name)\">\r\n <li *ngFor=\"let child of data.children\" \r\n class=\"display-flex align-items-center cursor-pointer gap-2\"\r\n (click)=\"handleListChildrenClick($event, data, child)\">\r\n <i class=\"fa\" [ngClass]=\"{\r\n 'fa-check-square': handleIfChildPresent(data, child),\r\n 'fa-square-o': !handleIfChildPresent(data, child)\r\n }\"></i>\r\n <span class=\"checkbox-text-styles\">{{ child.name }}</span>\r\n </li>\r\n </ul>\r\n\r\n </li>\r\n </ul>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-plain-trend',\r\n templateUrl: './plain-trend.component.html',\r\n styleUrls: [\r\n './plain-trend.component.less',\r\n '../common-styles.less'\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PlainTrendComponent\r\n extends ComponentUniqueId\r\n implements OnInit, OnChanges {\r\n\r\n @ViewChild('plaintrendcontainer', { static: true }) containerElt!: ElementRef;\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n uniqueId = this.getUniqueId();\r\n isHeaderVisible = true;\r\n\r\n private readonly defaultConfiguration = {\r\n isDrilldown: undefined,\r\n isHeaderVisible: undefined,\r\n isToggleVisible: undefined,\r\n isTitleHidden: undefined,\r\n selectedKpiTooltop: undefined,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n };\r\n\r\n ngOnInit(): void {\r\n this.initializeChartConfiguration();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.initializeChartConfiguration();\r\n }\r\n\r\n handleClick(value: any): void {\r\n this.clickEvent.emit(value);\r\n }\r\n\r\n handleHeaderMenuClick(menuId: any): void {\r\n this.headerMenuclickEvent.emit(menuId);\r\n }\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n );\r\n }\r\n\r\n private initializeChartConfiguration(): void {\r\n Object.keys(this.defaultConfiguration).forEach((key) => {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n });\r\n\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n }\r\n}\r\n","<div #piecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\">\r\n <lib-chart-header-v1\r\n *ngIf=\"isHeaderVisible\"\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\"\r\n [isria]=\"customChartConfiguration.isRia\"\r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n ></lib-chart-header-v1>\r\n\r\n <ng-container *ngIf=\"chartConfiguration.isToggleVisible && !isHeaderVisible && chartData.data.value > 0\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n </ng-container>\r\n\r\n <div\r\n #plaintrendcontainer\r\n id=\"trendchartcontainer\"\r\n class=\"lib-chart-svg trendcontainer\"\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n >\r\n <div\r\n class=\"central-content\"\r\n [ngClass]=\"{\r\n 'central-content-non-drilldown-sizes': isHeaderVisible,\r\n 'central-content-drilldown-sizes': !isHeaderVisible,\r\n 'lib-justify-content-space-around': chartData.data.bgColor,\r\n 'lib-justify-content-center': !chartData.data.bgColor\r\n }\"\r\n (click)=\"handleClick(chartData.data.daterange)\"\r\n >\r\n <span\r\n class=\"value-style\"\r\n [ngClass]=\"{\r\n 'value-style-non-drilldown': isHeaderVisible,\r\n 'value-style-drilldown': !isHeaderVisible\r\n }\"\r\n >\r\n {{ chartData.data.value | number: '1.0-2' }}\r\n </span>\r\n\r\n <span\r\n class=\"name-style\"\r\n [ngClass]=\"{\r\n 'name-style-non-drilldown': isHeaderVisible,\r\n 'name-style-drilldown': !isHeaderVisible\r\n }\"\r\n >\r\n {{ chartData.data.name }}\r\n </span>\r\n\r\n <div\r\n *ngIf=\"chartData.data.bgColor\"\r\n class=\"direction-panel\"\r\n [ngClass]=\"{\r\n 'direction-panel-non-drilldown': isHeaderVisible,\r\n 'direction-panel-drilldown': !isHeaderVisible\r\n }\"\r\n [style.backgroundColor]=\"chartData.data.bgColor\"\r\n >\r\n <ng-container [ngSwitch]=\"chartData.data.valueDirection\">\r\n <img *ngSwitchCase=\"1\" class=\"trend-img\" src=\"/assets/up-trend.png\" alt=\"up\" />\r\n <img *ngSwitchCase=\"0\" class=\"trend-img\" src=\"/assets/sameline-trend.png\" alt=\"same\" />\r\n <img *ngSwitchCase=\"-1\" class=\"trend-img\" src=\"/assets/down-trend.png\" alt=\"down\" />\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"date-range\"\r\n [ngClass]=\"{ 'date-range-drilldown': !isHeaderVisible }\"\r\n >\r\n <i class=\"fa fa-calendar marginright-3\"></i>\r\n {{ chartData.data.daterange }}\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AxidioStyleguideLibraryComponent } from './axidio-styleguide-library.component';\r\nimport { AreaChartComponent } from './area-chart/area-chart.component';\r\nimport { PieChartComponent } from './pie-chart/pie-chart.component';\r\nimport { HorizontalStackedChartComponent } from './horizontal-stacked-chart/horizontal-stacked-chart.component';\r\nimport { HorizontalBarChartComponent } from './horizontal-bar-chart/horizontal-bar-chart.component';\r\nimport { LineChartComponent } from './line-chart/line-chart.component';\r\nimport { DonutChartComponent } from './donut-chart/donut-chart.component';\r\nimport { VerticalStackedChartComponent } from './vertical-stacked-chart/vertical-stacked-chart.component';\r\nimport { MultiRingChartComponent } from './multi-ring-chart/multi-ring-chart.component';\r\nimport { GuageChartComponent } from './guage-chart/guage-chart.component';\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\r\nimport { GroupChartComponent } from './group-chart/group-chart.component';\r\nimport { AxTableComponent } from './ax-table/ax-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { WaterfallChartComponent } from './waterfall-chart/waterfall-chart.component';\r\nimport { SunburstChartComponent } from './sunburst-chart/sunburst-chart.component';\r\nimport { ProgressBarComponent } from './progress-bar/progress-bar.component';\r\nimport { RadarChartComponent } from './radar-chart/radar-chart.component';\r\nimport { LineChartCardComponent } from './line-chart-card/line-chart-card.component';\r\nimport { ChartHeaderComponent } from './chart-header/chart-header.component';\r\nimport { MultipleLineChartComponent } from './multiple-line-chart/multiple-line-chart.component';\r\nimport { SuggestionsComponent } from './suggestions/suggestions.component';\r\nimport { TableChartComponent } from './table-chart/table-chart.component';\r\nimport { MultipleProgressbarComponent } from './multiple-progressbar/multiple-progressbar.component';\r\nimport { MultichartFooterComponent } from './multichart-footer/multichart-footer.component';\r\nimport { HeaderAltComponent } from './header-alt/header-alt.component';\r\nimport { HorizontalBarsWithScrollZoomComponent } from './horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component';\r\nimport { HorizontalGroupedBarWithScrollZoomComponent } from './horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component';\r\nimport { ChartHeaderV1Component } from './chart-header-v1/chart-header-v1.component';\r\nimport { ChartAlertHeaderComponent } from './chart-alert-header/chart-alert-header.component';\r\nimport { DropdownComponent } from './dropdown/dropdown.component';\r\nimport { ChartHeaderV2Component } from './chart-header-v2/chart-header-v2.component';\r\nimport { PlainTrendComponent } from './plain-trend/plain-trend.component';\r\nimport { ChartHeaderV3Component } from './chart-header-v3/chart-header-v3.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n AxidioStyleguideLibraryComponent,\r\n AreaChartComponent,\r\n PieChartComponent,\r\n HorizontalStackedChartComponent,\r\n HorizontalBarChartComponent,\r\n LineChartComponent,\r\n DonutChartComponent,\r\n VerticalStackedChartComponent,\r\n MultiRingChartComponent,\r\n GuageChartComponent,\r\n GroupChartComponent,\r\n AxTableComponent,\r\n WaterfallChartComponent,\r\n SunburstChartComponent,\r\n ProgressBarComponent,\r\n RadarChartComponent,\r\n LineChartCardComponent,\r\n ChartHeaderComponent,\r\n MultipleLineChartComponent,\r\n SuggestionsComponent,\r\n TableChartComponent,\r\n MultipleProgressbarComponent,\r\n MultichartFooterComponent,\r\n HeaderAltComponent,\r\n HorizontalBarsWithScrollZoomComponent,\r\n HorizontalGroupedBarWithScrollZoomComponent,\r\n ChartHeaderV1Component,\r\n ChartAlertHeaderComponent,\r\n DropdownComponent,\r\n ChartHeaderV2Component,\r\n ChartHeaderV3Component,\r\n PlainTrendComponent,\r\n ],\r\n imports: [CommonModule, AngularResizeEventModule, NgbModule, FormsModule],\r\n exports: [\r\n AxidioStyleguideLibraryComponent,\r\n AreaChartComponent,\r\n PieChartComponent,\r\n HorizontalStackedChartComponent,\r\n HorizontalBarChartComponent,\r\n LineChartComponent,\r\n DonutChartComponent,\r\n VerticalStackedChartComponent,\r\n MultiRingChartComponent,\r\n GuageChartComponent,\r\n GroupChartComponent,\r\n AxTableComponent,\r\n WaterfallChartComponent,\r\n SunburstChartComponent,\r\n ProgressBarComponent,\r\n RadarChartComponent,\r\n LineChartCardComponent,\r\n MultipleLineChartComponent,\r\n SuggestionsComponent,\r\n TableChartComponent,\r\n MultipleProgressbarComponent,\r\n MultichartFooterComponent,\r\n HorizontalBarsWithScrollZoomComponent,\r\n HorizontalGroupedBarWithScrollZoomComponent,\r\n PlainTrendComponent,\r\n ],\r\n})\r\nexport class AxidioStyleguideLibraryModule {}\r\n","/*\r\n * Public API Surface of axidio-styleguide-library\r\n */\r\n\r\nexport * from './lib/axidio-styleguide-library.service';\r\nexport * from './lib/axidio-styleguide-library.component';\r\nexport * from './lib/axidio-styleguide-library.module';\r\n\r\n//Custom chart list\r\n\r\nexport * from './lib/area-chart/area-chart.component';\r\nexport * from './lib/pie-chart/pie-chart.component';\r\nexport * from './lib/horizontal-stacked-chart/horizontal-stacked-chart.component';\r\nexport * from './lib/horizontal-bar-chart/horizontal-bar-chart.component';\r\nexport * from './lib/line-chart/line-chart.component';\r\nexport * from './lib/guage-chart/guage-chart.component';\r\nexport * from './lib/waterfall-chart/waterfall-chart.component';\r\nexport * from './lib/donut-chart/donut-chart.component';\r\nexport * from './lib/group-chart/group-chart.component';\r\nexport * from './lib/multi-ring-chart/multi-ring-chart.component';\r\nexport * from './lib/sunburst-chart/sunburst-chart.component';\r\nexport * from './lib/vertical-stacked-chart/vertical-stacked-chart.component';\r\nexport * from './lib/progress-bar/progress-bar.component';\r\nexport * from './lib/ax-table/ax-table.component';\r\nexport * from './lib/radar-chart/radar-chart.component';\r\nexport * from './lib/line-chart-card/line-chart-card.component';\r\nexport * from './lib/multiple-line-chart/multiple-line-chart.component';\r\nexport * from './lib/suggestions/suggestions.component';\r\nexport * from './lib/table-chart/table-chart.component';\r\nexport * from './lib/multiple-progressbar/multiple-progressbar.component';\r\nexport * from './lib/multichart-footer/multichart-footer.component';\r\nexport * from './lib/horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component';\r\nexport * from './lib/horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component';\r\nexport * from './lib/plain-trend/plain-trend.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.ChartHeaderComponent","i1.ChartHeaderComponent","i3.ChartHeaderComponent","i2.HeaderAltComponent","i3.ChartHeaderV1Component","i4.ChartHeaderV2Component","i5.ChartHeaderV3Component","i2","i3.HeaderAltComponent","i4.ChartHeaderComponent","i3.ChartHeaderV2Component","i4.ChartHeaderV3Component","i2.ChartHeaderV1Component"],"mappings":"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"}
1
+ {"version":3,"file":"axidio-styleguide-library1-v2.mjs","sources":["../../../projects/axidio-styleguide-library/src/lib/axidio-styleguide-library.service.ts","../../../projects/axidio-styleguide-library/src/lib/axidio-styleguide-library.component.ts","../../../projects/axidio-styleguide-library/src/lib/unique-id.ts","../../../projects/axidio-styleguide-library/src/lib/chart-helper.ts","../../../projects/axidio-styleguide-library/src/lib/header-config.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header/chart-header.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header/chart-header.component.html","../../../projects/axidio-styleguide-library/src/lib/area-chart/area-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/area-chart/area-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/pie-chart/pie-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/pie-chart/pie-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-stacked-chart/horizontal-stacked-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-stacked-chart/horizontal-stacked-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-bar-chart/horizontal-bar-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-bar-chart/horizontal-bar-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/line-chart/line-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/line-chart/line-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/donut-chart/donut-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/donut-chart/donut-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/vertical-stacked-chart/vertical-stacked-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/vertical-stacked-chart/vertical-stacked-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/multi-ring-chart/multi-ring-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/multi-ring-chart/multi-ring-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-header-v1/chart-header-v1.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header-v1/chart-header-v1.component.html","../../../projects/axidio-styleguide-library/src/lib/header-alt/header-alt.component.ts","../../../projects/axidio-styleguide-library/src/lib/header-alt/header-alt.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-header-v2/chart-header-v2.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header-v2/chart-header-v2.component.html","../../../projects/axidio-styleguide-library/src/lib/guage-chart/guage-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/guage-chart/guage-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-header-v3/chart-header-v3.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-header-v3/chart-header-v3.component.html","../../../projects/axidio-styleguide-library/src/lib/group-chart/group-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/group-chart/group-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/ax-table/ax-table.component.ts","../../../projects/axidio-styleguide-library/src/lib/ax-table/ax-table.component.html","../../../projects/axidio-styleguide-library/src/lib/waterfall-chart/waterfall-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/waterfall-chart/waterfall-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/sunburst-chart/sunburst-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/sunburst-chart/sunburst-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/progress-bar/progress-bar.component.ts","../../../projects/axidio-styleguide-library/src/lib/progress-bar/progress-bar.component.html","../../../projects/axidio-styleguide-library/src/lib/radar-chart/radar-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/radar-chart/radar-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/line-chart-card/line-chart-card.component.ts","../../../projects/axidio-styleguide-library/src/lib/line-chart-card/line-chart-card.component.html","../../../projects/axidio-styleguide-library/src/lib/multiple-line-chart/multiple-line-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/multiple-line-chart/multiple-line-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/suggestions/suggestions.component.ts","../../../projects/axidio-styleguide-library/src/lib/suggestions/suggestions.component.html","../../../projects/axidio-styleguide-library/src/lib/table-chart/table-chart.component.ts","../../../projects/axidio-styleguide-library/src/lib/table-chart/table-chart.component.html","../../../projects/axidio-styleguide-library/src/lib/multiple-progressbar/multiple-progressbar.component.ts","../../../projects/axidio-styleguide-library/src/lib/multiple-progressbar/multiple-progressbar.component.html","../../../projects/axidio-styleguide-library/src/lib/multichart-footer/multichart-footer.component.ts","../../../projects/axidio-styleguide-library/src/lib/multichart-footer/multichart-footer.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component.html","../../../projects/axidio-styleguide-library/src/lib/horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component.ts","../../../projects/axidio-styleguide-library/src/lib/horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component.html","../../../projects/axidio-styleguide-library/src/lib/chart-alert-header/chart-alert-header.component.ts","../../../projects/axidio-styleguide-library/src/lib/chart-alert-header/chart-alert-header.component.html","../../../projects/axidio-styleguide-library/src/lib/dropdown/dropdown.component.ts","../../../projects/axidio-styleguide-library/src/lib/dropdown/dropdown.component.html","../../../projects/axidio-styleguide-library/src/lib/plain-trend/plain-trend.component.ts","../../../projects/axidio-styleguide-library/src/lib/plain-trend/plain-trend.component.html","../../../projects/axidio-styleguide-library/src/lib/axidio-styleguide-library.module.ts","../../../projects/axidio-styleguide-library/src/public-api.ts","../../../projects/axidio-styleguide-library/src/axidio-styleguide-library1-v2.ts"],"sourcesContent":["import { Injectable } from '@angular/core';\r\n\r\n@Injectable({\r\n providedIn: 'root'\r\n})\r\nexport class AxidioStyleguideLibraryService {\r\n\r\n constructor() { }\r\n}\r\n","import { Component, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-axidio-styleguide-library',\r\n template: `\r\n <p>\r\n axidio-styleguide-library works!\r\n </p>\r\n `,\r\n styles: []\r\n})\r\nexport class AxidioStyleguideLibraryComponent implements OnInit {\r\n\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n }\r\n\r\n}\r\n","import * as _ from \"lodash\";\r\n\r\nexport class ComponentUniqueId {\r\n protected getUniqueId(id: number | string = _.uniqueId()): string {\r\n return _.lowerFirst(this.constructor.name) + \"_\" + id;\r\n }\r\n}\r\n","// @dynamic\r\nimport * as d3 from \"d3\";\r\n\r\nexport default class ChartHelper {\r\n static getValueByConfigurationType(\r\n configType: any,\r\n defaultConfig: any,\r\n customConfig: any\r\n ) {\r\n if (customConfig && (customConfig[configType] || customConfig[configType] == \"\")) {\r\n return customConfig[configType];\r\n } else {\r\n return defaultConfig[configType];\r\n }\r\n }\r\n\r\n static getMaxValue(data: any[]) {\r\n const result = data.reduce(\r\n (max, d) => (d.value > max ? d.value : max),\r\n data[0].value\r\n );\r\n return result;\r\n }\r\n\r\n static getMinValue(data: any[]) {\r\n const result = data.reduce(\r\n (min, d) => (d.value < min ? d.value : min),\r\n data[0].value\r\n );\r\n return result;\r\n }\r\n\r\n static responsivefy(svg: any) {\r\n // container will be the DOM element\r\n // that the svg is appended to\r\n // we then measure the container\r\n // and find its aspect ratio\r\n const container = d3.select(svg.node().parentNode),\r\n width = parseInt(svg.style(\"width\"), 10),\r\n height = parseInt(svg.style(\"height\"), 10),\r\n aspect = width / height;\r\n\r\n // set viewBox attribute to the initial size\r\n // control scaling with preserveAspectRatio\r\n // resize svg on inital page load\r\n svg\r\n .attr(\"viewBox\", `0 0 ${width} ${height}`)\r\n .attr(\"preserveAspectRatio\", \"xMinYMid\")\r\n .call(resize);\r\n\r\n // add a listener so the chart will be resized\r\n // when the window resizes\r\n // multiple listeners for the same event type\r\n // requires a namespace, i.e., 'click.foo'\r\n // api docs: https://goo.gl/F3ZCFr\r\n d3.select(window).on(\"resize.\" + container.attr(\"id\"), resize);\r\n\r\n // this is the code that resizes the chart\r\n // it will be called on load\r\n // and in response to window resizes\r\n // gets the width of the container\r\n // and resizes the svg to fill it\r\n // while maintaining a consistent aspect ratio\r\n function resize() {\r\n const w = parseInt(container.style(\"width\"));\r\n svg.attr(\"width\", w);\r\n svg.attr(\"height\", Math.round(w / aspect));\r\n }\r\n }\r\n\r\n static defaultFormatter(text: any) {\r\n return text;\r\n }\r\n\r\n static onmouseoverHandler(d: any) {\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n var div = d3\r\n .select(\"body\")\r\n .append(\"div\")\r\n .attr(\"class\", \"axidio-tooltip\")\r\n .style(\"opacity\", 0);\r\n\r\n div\r\n .transition()\r\n .duration(200)\r\n .style(\"opacity\", 0.9);\r\n div\r\n .html(this.constructTooltip(d.toolTipData))\r\n .style(\"left\", d3.event.pageX + \"px\")\r\n .style(\"top\", d3.event.pageY - 28 + \"px\");\r\n }\r\n\r\n static onmouseoutHandler() {\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n }\r\n\r\n static constructTooltip(d: any) {\r\n var htmlString = \"\";\r\n if (d && d.data) {\r\n let dataSet = d.data;\r\n for (var i in dataSet) {\r\n var newString = \"\";\r\n newString =\r\n \"<div class='tooltip-data'>\" + i + \":\" + dataSet[i] + \"</div>\";\r\n htmlString += newString;\r\n }\r\n }\r\n return htmlString;\r\n }\r\n static getColumnValue(count: number) {\r\n switch (count) {\r\n case 1: return { child: \"col-6\", parent: \"col-6\" };\r\n case 2: return { child: \"col-4\", parent: \"col-4\" };\r\n case 3: return { child: \"col-3\", parent: \"col-3\" };\r\n case 4: return { child: \"col-2\", parent: \"col-4\" };\r\n case 5: return { child: \"col-2\", parent: \"col-2\" };\r\n default: return { child: \"col-2\", parent: \"col-2\" }\r\n }\r\n }\r\n static dataValueFormatter(format:string){\r\n return d3.format(format);\r\n }\r\n}\r\n","export default class HeaderConfigHelper {\r\n static headerConfig = {\r\n headerMenuOptions: [\r\n { name: \"Instant Collaboration\", id: \"instantCollab\" },\r\n // { name: \"Email\", id: \"email\" },\r\n { name: \"Set Alert\", id: \"setAlert\" }\r\n ]\r\n };\r\n}\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n ViewChild,\r\n ElementRef,\r\n HostListener,\r\n Output,\r\n EventEmitter,\r\n} from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\n@Component({\r\n selector: 'lib-chart-header',\r\n templateUrl: './chart-header.component.html',\r\n styleUrls: ['./chart-header.component.less'],\r\n})\r\nexport class ChartHeaderComponent implements OnInit {\r\n @Input() title: string = '';\r\n @Input() menuOptions: any;\r\n @Input()\r\n hasDrillDown: boolean = false;\r\n @ViewChild('menu', { read: ElementRef, static: false })\r\n eRef!: ElementRef;\r\n @Output() menuOptionClickEvent = new EventEmitter<any>();\r\n\r\n @Input() weightage: any;\r\n @Input() customChartConfiguration: any;\r\n chartConfiguration: any = {};\r\n\r\n resetBackgroundColor: boolean = false;\r\n changedBackgroundColor: any = '#052340';\r\n flagForMultiChart: boolean = false;\r\n\r\n hideTooltip: boolean = true;\r\n showIcon: boolean = false;\r\n increasePadding: boolean = false;\r\n defaultConfiguration: any = {\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: '#052340',\r\n showIcon: false,\r\n };\r\n @Input() isFromMultiProgressBar: any;\r\n constructor() {}\r\n\r\n @HostListener('document:click', ['$event'])\r\n clickout() {\r\n console.log('clickout');\r\n // !this.eRef.nativeElement.contains(event.target)\r\n if (!this.hideTooltip) {\r\n this.hideTooltip = true;\r\n }\r\n }\r\n\r\n ngOnInit() {\r\n if (this.customChartConfiguration) {\r\n this.initialise();\r\n }\r\n }\r\n initialise() {\r\n for (var j in this.defaultConfiguration) {\r\n this.chartConfiguration[j] = ChartHelper.getValueByConfigurationType(\r\n j,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.resetBackgroundColor = this.chartConfiguration.resetBackgroundColor;\r\n this.flagForMultiChart = this.chartConfiguration.flagForMultiChart;\r\n this.changedBackgroundColor = this.chartConfiguration.backgroundColor;\r\n this.showIcon = this.chartConfiguration.showIcon;\r\n }\r\n showTooltip(event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n }\r\n\r\n handleMenuOptionClick(id, event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n this.menuOptionClickEvent.emit(id);\r\n }\r\n}\r\n","<div class=\"chart-header-wrapper\" [ngClass]=\"{ hasDrillDown: hasDrillDown }\">\r\n <i *ngIf=\"hasDrillDown\" class=\"fa fa-paperclip paperclip\"></i>\r\n <div\r\n [ngClass]=\"{\r\n 'chart-header': !resetBackgroundColor,\r\n paddings: !isFromMultiProgressBar,\r\n paddings__lesser: isFromMultiProgressBar,\r\n 'chart-header-wo-bc-color': resetBackgroundColor\r\n }\"\r\n [style.background-color]=\"changedBackgroundColor\"\r\n >\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <div\r\n class=\"center chart-title\"\r\n [ngClass]=\"\r\n isFromMultiProgressBar ? 'chart-title-multiprogressbar' : ''\r\n \"\r\n >\r\n <!-- <div class=\"inline-block\" *ngIf=\"showIcon\">\r\n <>\r\n </div> -->\r\n <!-- <div class=\"inline-block\"> -->\r\n <span *ngIf=\"showIcon\"\r\n ><img class=\"img-fluid img-styling\" src=\"/assets/ria_logo.png\"\r\n /></span>\r\n <span class=\"\" [ngClass]=\"{ 'padding-right-6': showIcon }\">\r\n {{ title }}\r\n </span>\r\n <!-- </div> -->\r\n\r\n <span\r\n #menu\r\n *ngIf=\"menuOptions && !isFromMultiProgressBar\"\r\n (click)=\"showTooltip($event)\"\r\n class=\"header-menu\"\r\n >\r\n <span\r\n *ngIf=\"!flagForMultiChart\"\r\n [ngClass]=\"{ 'hide-tooltip': resetBackgroundColor }\"\r\n >&#8942;</span\r\n >\r\n <span *ngIf=\"flagForMultiChart\" class=\"font-size\">&#x2b;</span>\r\n </span>\r\n </div>\r\n <!--down class=\"float-right\" -->\r\n <!-- <div> -->\r\n\r\n <!-- </div> -->\r\n </div>\r\n </div>\r\n <div class=\"row margin-top\" *ngIf=\"weightage\">\r\n <div class=\"col-12 weightage-styling\">\r\n [{{ weightage.name }} {{ weightage.value }}]\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [ngClass]=\"{\r\n 'chart-tooltip tip-head': !flagForMultiChart,\r\n 'chart-tooltip-multichart tip-head-multichart': flagForMultiChart,\r\n 'hide-tooltip': hideTooltip\r\n }\"\r\n >\r\n <div *ngFor=\"let menu of menuOptions\">\r\n <div\r\n class=\"border-bottom\"\r\n (click)=\"handleMenuOptionClick(menu.id, $event)\"\r\n >\r\n <div class=\"row margin-reset\">\r\n <div *ngIf=\"!menu.performance\" class=\"col-12\">\r\n {{ menu.name }}\r\n </div>\r\n <div *ngIf=\"menu.performance\" class=\"col-6 border-right-style\">\r\n {{ menu.name }}\r\n </div>\r\n <div *ngIf=\"menu.performance\" class=\"col-6\">\r\n {{ menu.performance }} ({{ menu.progress }})\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport * as d3 from 'd3';\r\nimport ChartHelper from '../chart-helper';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'app-area-chart',\r\n templateUrl: './area-chart.component.html',\r\n styleUrls: ['./area-chart.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class AreaChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild('areachartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('areacontainer', { static: true })\r\n areacontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n color: 'green',\r\n margin: { top: 20, right: 10, bottom: 40, left: 50 },\r\n svgHeight: 90,\r\n yAxisLabelFontSize: '.9em',\r\n xAxisLabelFontSize: '.9em',\r\n numberOfYTicks: 5,\r\n numberOfXTicks: 5,\r\n yAxisCustomlabelStyles: '',\r\n xAxisCustomlabelStyles: '',\r\n yAxisCustomTextStyles: '',\r\n xAxisCustomTextStyles: '',\r\n labelFontSize: '.9em',\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n d3.selectAll('.axidio-tooltip').remove();\r\n this.initializeAreaChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n d3.selectAll('.axidio-tooltip').remove();\r\n this.initializeAreaChart();\r\n }\r\n\r\n ngOnInit() { }\r\n\r\n initializeAreaChart() {\r\n var self = this;\r\n let data = [];\r\n let metaData: any = null;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var areacontainer = d3.select(this.areacontainerElt.nativeElement);\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n var height =\r\n parseInt(areacontainer.style('height')) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append('svg')\r\n .attr('id', self.uniqueId)\r\n .attr('width', width + margin.left + margin.right)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\r\n\r\n var x = d3\r\n .scaleBand()\r\n .rangeRound([0, width])\r\n .domain(\r\n data.map(function (d: any) {\r\n return d.name;\r\n })\r\n );\r\n\r\n var div = d3\r\n .select('body')\r\n .append('div')\r\n .attr('class', 'axidio-tooltip')\r\n .style('opacity', 0);\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'axis area-axis--x')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n // .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n )\r\n .call(g => g.select('.domain').remove())\r\n .selectAll(\"text\")\r\n .attr('y', function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n });\r\n\r\n var y = d3\r\n .scaleLinear()\r\n .rangeRound([height, 0])\r\n .domain([\r\n 0,\r\n d3.max(data, function (d) {\r\n return d.value;\r\n })\r\n ]);\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'axis area-axis--y')\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n );\r\n\r\n svg\r\n .append('path')\r\n .datum(data)\r\n .attr('fill', self.chartConfiguration.color)\r\n .attr('fill-opacity', 0.3)\r\n .attr('stroke', 'none')\r\n .attr(\r\n 'd',\r\n d3\r\n .area()\r\n .x(function (d) {\r\n return x(d.name) + x.bandwidth() / 2;\r\n })\r\n .y0(height)\r\n .y1(function (d) {\r\n return y(d.value);\r\n })\r\n );\r\n\r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(data)\r\n .enter()\r\n .append('g');\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', 'red')\r\n .attr('stroke', 'none')\r\n .attr('cx', function (d) {\r\n return x(d.name) + x.bandwidth() / 2;\r\n })\r\n .attr('cy', function (d) {\r\n return y(d.value);\r\n })\r\n .attr('r', 3)/**0 changed to 3 */\r\n // .on('mouseover', d => {\r\n // div\r\n // .transition()\r\n // .duration(200)\r\n // .style('opacity', 0.9);\r\n // div\r\n // .html(self.constructTooltip(d))\r\n // .style('left', d3.event.pageX + 'px')\r\n // .style('top', d3.event.pageY - 28 + 'px');\r\n // })\r\n // .on('mouseout', () => {\r\n // div\r\n // .transition()\r\n // .duration(500)\r\n // .style('opacity', 0);\r\n // })\r\n .style(\"cursor\", \"pointer\")\r\n .append(\"svg:title\") // TITLE APPENDED HERE\r\n .text(function (d) {\r\n console.log(\"my log\", d)\r\n return (d.value);\r\n });;\r\n //following was uncommented\r\n // dot\r\n // .append('text')\r\n // .attr('class', 'dot')\r\n // .attr('color', self.chartConfiguration.labelColor)\r\n // .attr('font-size', self.chartConfiguration.labelFontSize)\r\n // .attr('x', function(d, i) {\r\n // return x(d.name) + x.bandwidth() / 2;\r\n // })\r\n // .attr('y', function(d) {\r\n // return y(d.value);\r\n // })\r\n // .attr('dy', '-.5em')\r\n // .text(function(d) {\r\n // return self.chartConfiguration.labelFormatter(d.value);\r\n // //return d.value;\r\n // });\r\n \r\n svg\r\n .append('text')\r\n .attr('class', 'area-x-axis-label')\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr('transform', 'translate(' + width / 2 + ' ,' + 0 + ')')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', self.chartConfiguration.xAxisLabelFontSize)\r\n .text(metaData.xLabel);\r\n \r\n\r\n\r\n\r\n if (metaData.yLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'area-y-axis-label')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', 0 - margin.left)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', self.chartConfiguration.yAxisLabelFontSize)\r\n .text(metaData.yLabel.toLowerCase());\r\n }\r\n\r\n\r\n if (metaData.dataType) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-waterfall-label')\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + (height + margin.top + 30) + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .text(metaData.dataType);\r\n }\r\n\r\n // svg\r\n // .append(\"path\")\r\n // .datum(data)\r\n // .attr(\"fill\", \"none\")\r\n // .attr(\"stroke\", \"#69b3a2\")\r\n // .attr(\"stroke-width\", 2)\r\n // .attr(\r\n // \"d\",\r\n // d3\r\n // .line()\r\n // .x(function(d) {\r\n // return x(d.name) + x.bandwidth() / 2;\r\n // })\r\n // .y(function(d) {\r\n // return y(d.value);\r\n // })\r\n // );\r\n }\r\n\r\n constructTooltip(d: any): any {\r\n var htmlString = '';\r\n // if (d && d.data) {\r\n // let dataSet = d.data;\r\n // for (var i in dataSet) {\r\n // var newString = \"\";\r\n // newString =\r\n // \"<div class='tooltip-data'>\" + i + \":\" + dataSet[i] + \"</div>\";\r\n // htmlString += newString;\r\n // }\r\n // }\r\n return htmlString;\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #areacontainer \r\n class=\"lib-chart-wrapper\"\r\n (resized)=\"onResized($event)\">\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"areachartcontainer\"\r\n #areachartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ElementRef,\r\n ViewChild,\r\n Input,Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: \"app-pie-chart\",\r\n templateUrl: \"./pie-chart.component.html\",\r\n styleUrls: [\"./pie-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class PieChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild(\"piechartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"piecontainer\", { static: true })\r\n piecontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 20 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n legendJustified: true,\r\n svgHeight: 90,\r\n hasLabel2: true,\r\n hasLabel1: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeDonutChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeDonutChart() {\r\n var self = this;\r\n let rawData :any= null;\r\n let data = {};\r\n let metaData :any= null;\r\n let colorMap = {};\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n rawData = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n colorMap = metaData.colors;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var piecontainer = d3.select(this.piecontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(piecontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" +\r\n (width / 2 + margin.left) +\r\n \",\" +\r\n (height / 2 + margin.top) +\r\n \")\"\r\n );\r\n\r\n rawData.map(function(unit) {\r\n data[unit.name] = unit.value;\r\n });\r\n\r\n var radius = Math.min(width, height) / 2;\r\n var pie = d3\r\n .pie()\r\n .sort(null)\r\n .value(function(d) {\r\n return d.value;\r\n });\r\n var data_ready = pie(d3.entries(data));\r\n\r\n var arc = d3\r\n .arc()\r\n .innerRadius(0)\r\n .outerRadius(radius * 0.75);\r\n\r\n var outerArc = d3\r\n .arc()\r\n .innerRadius(radius * 0.95)\r\n .outerRadius(radius * 0.95);\r\n\r\n var innerArc = d3\r\n .arc()\r\n .innerRadius(radius * 0.5)\r\n .outerRadius(radius * 0.5);\r\n\r\n svg\r\n .selectAll(\"allSlices\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"d\", arc)\r\n .attr(\"fill\", function(d) {\r\n return metaData.colorMap[d.data.key];\r\n });\r\n\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .style(\"font-color\", \"white\")\r\n .style(\"font-size\", \".7em\")\r\n .text(function(d) {\r\n return self.chartConfiguration.labelFormatter(d.data.value);\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = innerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n });\r\n\r\n if (self.chartConfiguration.hasLabel1) {\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .text(function(d) {\r\n return metaData.labelMap[d.data.key].label1;\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"start\" : \"end\";\r\n })\r\n .attr(\"dx\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"6px\" : \"-6px\";\r\n });\r\n\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"circle\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .attr(\"r\", 3)\r\n .attr(\"cy\", \"-4px\")\r\n .attr(\"fill\", function(d) {\r\n var key = metaData.labelMap[d.data.key].label1;\r\n return metaData.colorMap[key];\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n });\r\n }\r\n\r\n if (self.chartConfiguration.hasLabel2) {\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .attr(\"dy\", \"15px\")\r\n .text(function(d) {\r\n return metaData.labelMap[d.data.key].label2;\r\n })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"start\" : \"end\";\r\n })\r\n .attr(\"dx\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"6px\" : \"-6px\";\r\n });\r\n }\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #piecontainer class=\"lib-chart-wrapper\">\r\n <!-- <div class=\"lib-chart-header\">{{ chartData.metaData.title }}</div> -->\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"piechartcontainer\"\r\n #piechartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, ViewChild, ElementRef, Input } from \"@angular/core\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport * as d3 from \"d3\";\r\nimport ChartHelper from \"../chart-helper\";\r\n\r\n@Component({\r\n selector: \"lib-horizontal-stacked-chart\",\r\n templateUrl: \"./horizontal-stacked-chart.component.html\",\r\n styleUrls: [\"./horizontal-stacked-chart.component.less\", \"../common-styles.less\"]\r\n})\r\nexport class HorizontalStackedChartComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"stackedcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n colorRange: [\"#98abc5\", \"#8a89a6\", \"#7b6888\"],\r\n margin: { top: 20, right: 20, bottom: 30, left: 70 }\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeStackedChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeStackedChart() {\r\n var self = this;\r\n let data :any= [];\r\n let metaData:any = null;\r\n let keyList = null;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n keyList = metaData.keyList;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(chartContainer.style(\"height\")) - margin.top - margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n let stackKey = keyList;\r\n let xScale = d3.scaleLinear().rangeRound([0, width]);\r\n var yScale = d3\r\n .scaleBand()\r\n .rangeRound([height, 0])\r\n .padding(0.1);\r\n let color = d3.scaleOrdinal().range(self.chartConfiguration.colorRange);\r\n let xAxis = d3.axisBottom(xScale).tickSize(0);\r\n let yAxis = d3.axisLeft(yScale).tickSize(0);\r\n\r\n var stack = d3\r\n .stack()\r\n .keys(stackKey)\r\n /*.order(d3.stackOrder)*/\r\n .offset(d3.stackOffsetNone);\r\n\r\n var layers = stack(data);\r\n data.sort(function(a, b) {\r\n return b.total - a.total;\r\n });\r\n yScale.domain(\r\n data.map(function(d) {\r\n return d.name;\r\n })\r\n );\r\n\r\n xScale.domain([0, d3.max(layers, d => d3.max(d, d => d[1]))]).nice();\r\n\r\n var layer = svg\r\n .selectAll(\".layer\")\r\n .data(layers)\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"layer\")\r\n .style(\"fill\", function(d, i) {\r\n return metaData.colors[d.key];\r\n });\r\n\r\n layer\r\n .selectAll(\"rect\")\r\n .data(function(d) {\r\n return d;\r\n })\r\n .enter()\r\n .append(\"rect\")\r\n .attr(\"y\", function(d) {\r\n return yScale(d.data.name);\r\n })\r\n .attr(\"x\", function(d) {\r\n return xScale(d[0]);\r\n })\r\n .attr(\"height\", yScale.bandwidth())\r\n .attr(\"width\", function(d) {\r\n return xScale(d[1]) - xScale(d[0]);\r\n });\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--x\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(xAxis)\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--y\")\r\n .attr(\"transform\", \"translate(0,0)\")\r\n .call(yAxis)\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"y-axis-label\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.yLabel);\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"x-axis-label\")\r\n .attr(\"transform\", \"translate(\" + width / 2 + \" ,\" + 0 + \")\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.xLabel);\r\n }\r\n}\r\n","<div id=\"stackedcontainer\" #stackedcontainer></div>","import { Component, OnInit, ViewChild, ElementRef, Input } from \"@angular/core\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport * as d3 from \"d3\";\r\nimport ChartHelper from \"../chart-helper\";\r\n\r\n@Component({\r\n selector: \"lib-horizontal-bar-chart\",\r\n templateUrl: \"./horizontal-bar-chart.component.html\",\r\n styleUrls: [\"./horizontal-bar-chart.component.less\"]\r\n})\r\nexport class HorizontalBarChartComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"horizontalbarchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n color: \"yellow\",\r\n margin: { top: 20, right: 50, bottom: 30, left: 130 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeHorizontalBArchartChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeHorizontalBArchartChart() {\r\n var self = this;\r\n let data:any = [];\r\n let metaData :any= null;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(chartContainer.style(\"height\")) - margin.top - margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n var y = d3\r\n .scaleBand()\r\n .rangeRound([height, 0])\r\n .padding(0.1)\r\n .domain(\r\n data.map(function(d) {\r\n return d.name;\r\n })\r\n );\r\n\r\n var x = d3\r\n .scaleLinear()\r\n .range([0, width])\r\n .domain([\r\n 0,\r\n d3.max(data, function(d) {\r\n return d.value;\r\n })\r\n ])\r\n .nice();\r\n\r\n var yAxis = d3\r\n .axisLeft()\r\n .scale(y)\r\n .tickSize(0);\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--y\")\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n )\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"axis axis--x\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n )\r\n .call(g => g.select(\".domain\").remove());\r\n\r\n var div = d3\r\n .select(\"body\")\r\n .append(\"div\")\r\n .attr(\"class\", \"axidio-tooltip\")\r\n .style(\"opacity\", 0);\r\n\r\n var bars = svg\r\n .selectAll(\".bar\")\r\n .data(data)\r\n .enter()\r\n .append(\"g\");\r\n\r\n bars\r\n .append(\"rect\")\r\n .attr(\"class\", \"bar\")\r\n .attr(\"y\", function(d) {\r\n return y(d.name);\r\n })\r\n .attr(\"height\", function() {\r\n return y.bandwidth();\r\n })\r\n .attr(\"x\", 0)\r\n .attr(\"width\", function(d) {\r\n return x(d.value);\r\n })\r\n .attr(\"fill\", self.chartConfiguration.color);\r\n\r\n bars\r\n .append(\"text\")\r\n .attr(\"class\", \"label\")\r\n .attr(\"y\", function(d) {\r\n return y(d.name) + y.bandwidth() / 2;\r\n })\r\n .attr(\"x\", function(d) {\r\n return x(d.value) + 3;\r\n })\r\n .style(\"font-size\", width * 0.0015 + \"em\")\r\n .text(function(d) {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n });\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"y-axis-label\")\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.yLabel);\r\n\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"x-axis-label\")\r\n .attr(\"transform\", \"translate(\" + width / 2 + \" ,\" + 0 + \")\")\r\n .style(\"text-anchor\", \"middle\")\r\n .style(\"font-size\", width * 0.002 + \"em\")\r\n .text(metaData.xLabel);\r\n }\r\n}\r\n","<div id=\"horizontalbarchartcontainer\" #horizontalbarchartcontainer></div>","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport { ResizedEvent } from \"angular-resize-event\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\nimport * as ss from 'simple-statistics'\r\n\r\n@Component({\r\n selector: \"lib-line-chart\",\r\n templateUrl: \"./line-chart.component.html\",\r\n styleUrls: [\"./line-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class LineChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild(\"linechartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"linecontainer\", { static: true })\r\n linecontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n categoryStatus: boolean = false;\r\n uniqueId: any = this.getUniqueId();\r\n isHeaderVisible: boolean = true;\r\n isTransparentBackground: boolean = false;\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 50, bottom: 0, left: 50 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFontSize: \".7em\",\r\n numberOfYTicks: 5,\r\n yAxisCustomlabelStyles: \"\",\r\n yAxisCustomTextStyles: \"\",\r\n xAxisCustomTextStyles: \"\",\r\n svgHeight: 80,\r\n legendHeight: \"10%\",\r\n xAxisGrid: true,\r\n yAxisGrid: true,\r\n showXaxis: true,\r\n showYaxis: true,\r\n showValues: true,\r\n showLabel: false,\r\n showXaxisTop: false,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n hideLegendOnTop: undefined,\r\n isFullScreen: undefined,\r\n isMultiChartGridLine: undefined,\r\n customYscale: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: undefined,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n isXaxisColor: undefined,\r\n textFormatter: undefined,\r\n labelOverlapMinorFix: undefined,\r\n noHoverEffect: undefined,\r\n isXgridBetweenLabels: undefined,\r\n noHoverDisplayData: undefined,\r\n isLinearLineVisible:undefined,\r\n ticksBetweenLabels:undefined,\r\n isSingledWeeklyChart:undefined\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeLineChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeLineChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeLineChart() {\r\n var self = this;\r\n let data: any = [];\r\n let metaData: any = null;\r\n let colorMap = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n /**\r\n * longer tick length needed for weekly charts\r\n */\r\n var short_tick_length_bg = 15;\r\n var long_tick_length_bg = 25;\r\n var formatFromBackend;\r\n var formatForHugeNumbers;\r\n var datewiseGroupedData: any = [];\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n colorMap = metaData.colorMap;\r\n var len = Object.keys(colorMap).length;\r\n if (len > 1 || this.chartConfiguration.showLabel == true) {\r\n this.categoryStatus = true;\r\n } else {\r\n this.categoryStatus = false;\r\n }\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var lineContainer = d3.select(this.linecontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(lineContainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n /**\r\n * entire height used in weekly charts as x axis needed to be displayed at the bottom of the chart\r\n */\r\n if (\r\n this.chartConfiguration.isFullScreen != undefined &&\r\n this.chartConfiguration.isFullScreen\r\n ) {\r\n height = this.chartConfiguration.svgHeight != 80 ?this.chartConfiguration.svgHeight : parseInt(lineContainer.style(\"height\"));\r\n }\r\n /**\r\n * for hiding header\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isHeaderVisible != undefined)\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n /**\r\n * for hiding legends\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.hideLegendOnTop != undefined &&\r\n this.chartConfiguration.hideLegendOnTop\r\n ) {\r\n this.categoryStatus = false;\r\n }\r\n /**\r\n * for removing background color so that it can take parents color\r\n *\r\n */\r\n if (this.chartConfiguration.isTransparentBackground != undefined) {\r\n this.isTransparentBackground =\r\n this.chartConfiguration.isTransparentBackground;\r\n }\r\n /**\r\n * format data values based on configuration received\r\n */\r\n if (this.chartConfiguration.textFormatter != undefined) {\r\n formatFromBackend = ChartHelper.dataValueFormatter(\r\n this.chartConfiguration.textFormatter\r\n );\r\n formatForHugeNumbers = ChartHelper.dataValueFormatter(\".2s\");\r\n }\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n var sumstat = d3\r\n .nest() // nest function allows to group the calculation per level of a factor\r\n .key(function (d) {\r\n return d.category;\r\n })\r\n .entries(data);\r\n\r\n // Add X axis --> it is a date format\r\n var x = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name.toLowerCase();\r\n })\r\n );\r\n /**\r\n * xScale for weekly charts does not need padding as this padding affects spacing between the dot and y axis\r\n */\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n x.padding(0.5);\r\n } else {\r\n x.align(0.5);\r\n }\r\n /**\r\n * based on the following flag, x axis visibility is selected\r\n */\r\n if (self.chartConfiguration.showXaxis) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-x-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n );\r\n /**\r\n * used by weekly charts\r\n */\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg.selectAll(\".lib-line-x-axis-text\").attr(\"class\", \"x-axis\");\r\n }\r\n }\r\n /**\r\n * draw second x axis on top\r\n */\r\n if (self.chartConfiguration.showXaxisTop) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"transform\", \"\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-x-axis-text x-axis\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n );\r\n }\r\n if(self.chartConfiguration.ticksBetweenLabels){\r\n svg\r\n .selectAll(\".lib-line-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSizeOuter(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n \r\n )\r\n .call(g => g.select('.domain'))\r\n .selectAll(\"text\")\r\n .attr(\"class\",\"lib-xaxis-labels-texts-weeklycharts\")\r\n .attr('y', function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length_bg;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg;\r\n }\r\n \r\n });\r\n\r\n /**\r\n * tick line size in alternate fashion\r\n */\r\n svg.selectAll(\".lib-line-axis-text > .tick > line\").attr(\"y2\", function () {\r\n if (\r\n alternate_text &&\r\n self.chartConfiguration.isNoAlternateXaxisText == undefined\r\n ) {\r\n alternate_text = false;\r\n return long_tick_length_bg - 7;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg - 4;\r\n }\r\n });\r\n }\r\n\r\n // Add Y axis\r\n var y = d3.scaleLinear().range([height, 0]);\r\n /**\r\n * update max vakues so that the vakue wont exceed the max limit\r\n * used by weekly charts\r\n */\r\n var maxValue = d3.max(data, function (d) {\r\n return d.value;\r\n });\r\n if(maxValue == 0){\r\n maxValue = 100;\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue* this.chartConfiguration.customYscale;\r\n } \r\n y.domain([\r\n 0,\r\n maxValue,\r\n ]).nice();\r\n /**\r\n * get y-axis tick values\r\n * used by weekly charts\r\n */\r\n var finalTickList = y.ticks().filter(function (v, i) {\r\n // check the index is even\r\n return i % 2 == 0;\r\n });\r\n /**\r\n * following logic check if two data values of same group present in same grid or not\r\n * if present inside same grid, change y values\r\n * else leave as it is\r\n */\r\n if (self.chartConfiguration.labelOverlapMinorFix != undefined) {\r\n if (data && data.length) {\r\n let temp = JSON.parse(JSON.stringify(data));\r\n /*\r\n * group all the elements by date\r\n */\r\n datewiseGroupedData = temp.reduce((group, category) => {\r\n const { name } = category;\r\n group[name] = group[name] || [];\r\n group[name].push(category);\r\n return group;\r\n }, {});\r\n /**\r\n * sort child array based on values: descending order\r\n */\r\n for (var key in datewiseGroupedData) {\r\n datewiseGroupedData[key].sort((a, b) => (a.value > b.value ? 1 : -1));\r\n }\r\n const keys = Object.keys(datewiseGroupedData);\r\n for (let i = 0; i < keys.length; i++) {\r\n const key = keys[i];\r\n /**\r\n * get child array of the group\r\n */\r\n var tempChildArray = datewiseGroupedData[key];\r\n var tempRangeHolder: any = {};\r\n /**\r\n * for all child element in the array\r\n */\r\n for (var j = 0; j < tempChildArray.length; j++) {\r\n /**\r\n * iterate over the ticklist array\r\n */\r\n for (var k = 0; k < finalTickList.length; k++) {\r\n /**\r\n * when ticklist value greater than specific array element value\r\n * => we got the required range\r\n */\r\n if (finalTickList[k] > tempChildArray[j].value) {\r\n /**\r\n * if rangeholder doesnt contain that range\r\n */\r\n tempRangeHolder[finalTickList[k]] = tempRangeHolder[\r\n finalTickList[k]\r\n ]\r\n ? tempRangeHolder[finalTickList[k]] + 0.9\r\n : 0.9;\r\n tempChildArray[j].desiredPosition =\r\n tempRangeHolder[finalTickList[k]] + \"em\";\r\n break;\r\n }\r\n }\r\n }\r\n tempRangeHolder = {};\r\n }\r\n }\r\n }\r\n /**\r\n * style guide has two types of grids=>\r\n * 1) center to x-axis label used by dashboard charts\r\n * 2) between x-axis label used by weekly charts\r\n * isXgridBetweenLabels will be undefined for dashboard charts\r\n */\r\n if (self.chartConfiguration.xAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(d3.axisBottom(x).ticks(3).tickSize(-height).tickFormat(\"\"))\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .call((g) => g.select(\".domain\").remove());\r\n }\r\n if (self.chartConfiguration.isXgridBetweenLabels) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + x.bandwidth() / 2 + \",\" + height + \")\"\r\n )\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n // .ticks(3)\r\n .tickSize(-height)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .call((g) => g.select(\".domain\").remove());\r\n }\r\n /**\r\n * draw y axis grid\r\n */\r\n if (self.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .call((g) => g.select(\".domain\").remove());\r\n }\r\n /**\r\n * draw y axis\r\n */\r\n if (self.chartConfiguration.showYaxis) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-y-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n );\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll(\".lib-line-y-axis-text\")\r\n .attr(\"class\", \"yaxis-dashed y-axis\");\r\n }\r\n //need to be refactored\r\n d3.selectAll(\"g.lib-line-x-axis-text g.tick text\").attr(\"y\", function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n });\r\n }\r\n /**\r\n * hide x axis labels\r\n * config is there for future use\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isXaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isXaxisLabelHidden\r\n ) {\r\n d3.selectAll(\".x-axis > g > text\").attr(\"class\", \"lib-display-hidden\");\r\n }\r\n /**\r\n * hide y axis labels\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isYaxisLabelHidden\r\n ) {\r\n d3.selectAll(\".y-axis > g > text\").attr(\"class\", \"lib-display-hidden\");\r\n }\r\n /**\r\n * hide y axis labels\r\n * config is there for future use\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisHidden != undefined &&\r\n this.chartConfiguration.isYaxisHidden\r\n ) {\r\n d3.selectAll(\".y-axis\").attr(\"class\", \"lib-display-hidden\");\r\n }\r\n /**\r\n * dashed y axis\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisDashed != undefined &&\r\n this.chartConfiguration.isYaxisDashed\r\n ) {\r\n d3.selectAll(\".yaxis-dashed\")\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\");\r\n }\r\n /**\r\n * x axis color\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isXaxisColor != undefined) {\r\n d3.selectAll(\".x-axis\").style(\r\n \"color\",\r\n this.chartConfiguration.isXaxisColor\r\n );\r\n }\r\n // Draw the line\r\n svg\r\n .selectAll(\".line\")\r\n .data(sumstat)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", function (d) {\r\n return colorMap[d.key];\r\n })\r\n .attr(\"stroke-width\", 1.5)\r\n .attr(\"d\", function (d) {\r\n return d3\r\n .line()\r\n .x(function (d) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n })\r\n .y(function (d) {\r\n return d.value != undefined? y(d.value):\"0\";\r\n })(d.values);\r\n });\r\n\r\n var dot = svg\r\n .selectAll(\"myCircles\")\r\n .data(data)\r\n .enter()\r\n .append(\"g\")\r\n .on(\"click\", function (d) {\r\n self.handleClick(d);\r\n })\r\n .on(\"mouseover\", handleMouseOver)\r\n .on(\"mouseout\", handleMouseOut);\r\n\r\n dot\r\n .append(\"circle\")\r\n .attr(\"fill\", function (d) {\r\n return d.value != undefined?colorMap[d.category]:\"none\";\r\n })\r\n .attr(\"stroke\", \"rgb(0 0 255 / 0%)\")\r\n .attr(\"stroke-width\", !self.chartConfiguration.noHoverEffect?\"6%\":\"1%\")\r\n .attr(\"cx\", function (d) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n })\r\n .attr(\"cy\", function (d) {\r\n return y(d.value);\r\n })\r\n .attr(\"r\", 3)\r\n .style(\"cursor\", \"pointer\")\r\n .on(\"mouseover\", (d) => {\r\n dot\r\n .selectAll(\"circle\")\r\n .filter(function (data) {\r\n return data == d;\r\n })\r\n /**\r\n * prevent dot zoom in if the flag is set\r\n */\r\n .attr(\r\n \"r\",\r\n !self.chartConfiguration.noHoverEffect ? 5 : 3\r\n );\r\n })\r\n .on(\"mouseleave\", (d) => {\r\n dot\r\n .selectAll(\"circle\")\r\n .filter(function (data) {\r\n return data == d;\r\n })\r\n .attr(\"r\", 3);\r\n });\r\n\r\n function handleMouseOver(d, i) {\r\n if (\r\n // len > 1 &&\r\n self.chartConfiguration.noHoverDisplayData == undefined &&\r\n !self.chartConfiguration.showValues\r\n ) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n .attr(\"fill\", colorMap[d.category])\r\n .attr(\"style\", \"font-size: \" + \".75em\")\r\n .attr(\"x\", function () {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 4;\r\n })\r\n .attr(\"y\", function () {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\")\r\n .text(function () {\r\n if (self.chartConfiguration.textFormatter != undefined) {\r\n metaData.unit=metaData.unit?metaData.unit:\"\";\r\n return (\r\n (d.value <= 999 &&\r\n d.value > 0 \r\n ? formatFromBackend(d.value)\r\n : (d.value == 0? d.value : formatForHugeNumbers(d.value)))\r\n +\r\n \"\" +\r\n metaData.unit\r\n );\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n }\r\n });\r\n }\r\n }\r\n function handleMouseOut(d, i) {\r\n if (\r\n // len > 1 &&\r\n self.chartConfiguration.noHoverDisplayData == undefined &&\r\n !self.chartConfiguration.showValues\r\n ) {\r\n dot.selectAll(\".dot\").remove();\r\n }\r\n }\r\n if (self.chartConfiguration.showValues) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot lib-line-dot-text\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"fill\", function (d) {\r\n return d.value != undefined? colorMap[d.category]:\"none\";\r\n })\r\n .attr(\"x\", function (d, i) {\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n } else {\r\n /**\r\n * to display data values starting from the begining of the grid\r\n */\r\n return x(d.name.toLowerCase());\r\n }\r\n })\r\n .attr(\"y\", function (d) {\r\n return d.value != undefined? y(d.value):\"0\";\r\n })\r\n .attr(\"dy\", function (d, i) {\r\n if (self.chartConfiguration.labelOverlapMinorFix == undefined) {\r\n var lineNo = Math.trunc(i / 4);\r\n if (lineNo % 2 == 0) {\r\n return \"1em\";\r\n } else {\r\n return \"-1em\";\r\n }\r\n } else {\r\n /**\r\n * from the previously computed array, fetch the desired position\r\n */\r\n var dataArrayForThisXvalue = datewiseGroupedData[d.name];\r\n if (\r\n dataArrayForThisXvalue.length &&\r\n dataArrayForThisXvalue.length > 1\r\n ) {\r\n for (var j = 0; j < dataArrayForThisXvalue.length; j++) {\r\n if (\r\n dataArrayForThisXvalue[j].value == d.value &&\r\n dataArrayForThisXvalue[j].category == d.category\r\n ) {\r\n if(dataArrayForThisXvalue[j].desiredPosition)\r\n return \"-\" + dataArrayForThisXvalue[j].desiredPosition;\r\n }\r\n }\r\n }\r\n return \"-1em\";\r\n }\r\n })\r\n .attr(\"dx\", function (d, i) {\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined\r\n && self.chartConfiguration.labelOverlapMinorFix == undefined) {\r\n var lineNo = Math.trunc(i / 4);\r\n if (lineNo % 2 == 0) {\r\n return \"1em\";\r\n } else {\r\n return \"-1em\";\r\n }\r\n } else {\r\n return \"1em\";\r\n }\r\n })\r\n .text(function (d) {\r\n if (self.chartConfiguration.textFormatter != undefined) {\r\n metaData.unit=metaData.unit?metaData.unit:\"\";\r\n return (\r\n (d.value <= 999 &&\r\n d.value > 0 \r\n ? formatFromBackend(d.value)\r\n : (d.value == 0? d.value : formatForHugeNumbers(d.value)))\r\n +\r\n \" \" +\r\n metaData.unit\r\n );\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n }\r\n });\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll(\".lib-line-dot-text\")\r\n .attr(\"class\", \"lib-line-dot-text-weeklycharts\")\r\n .append(\"svg:title\") \r\n .attr(\"stroke\", function (d) {\r\n return colorMap[d.key];\r\n })\r\n .text(function (d) {\r\n return d.value +\" \" + metaData.unit\r\n });\r\n }\r\n }\r\n\r\n if (metaData.yLabel) {\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-y-axis-line-label lib-line-axis\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\");\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll(\".lib-y-axis-line-label\")\r\n .attr(\"class\", \"lib-ylabel-weeklyCharts\")\r\n .text(metaData.yLabel.toLowerCase());\r\n }else if(self.chartConfiguration.isSingledWeeklyChart != undefined){\r\n svg\r\n .selectAll(\".lib-y-axis-line-label\")\r\n .attr(\"class\", \"lib-ylabel-larger-weeklyCharts\")\r\n .text(metaData.yLabel.toLowerCase());\r\n } else {\r\n svg.selectAll(\".lib-y-axis-line-label\").text(metaData.yLabel);\r\n }\r\n }\r\n if(self.chartConfiguration.isLinearLineVisible){\r\n var straightLine = d3\r\n .line()\r\n .x(function (d) {\r\n return x(d.name.toLowerCase()) + x.bandwidth() / 2;\r\n })\r\n .y(function (d) {\r\n return y(d.close);\r\n }); \r\n drawGraph(sumstat,);\r\n function drawGraph(data) {\r\n // format the data \r\n data.forEach(function (dd) {\r\n var regression ;\r\n var lineDatas:any=[];\r\n // Derive a linear regression\r\n regression = ss.linearRegression(\r\n dd.values.map(function (ds) {\r\n return [+new Date(ds.date), ds.close];\r\n })\r\n );\r\n // adding strarting and ending data in to lineDatas\r\n lineDatas.push(dd.values[0],dd.values[dd.values.length-1]);\r\n\r\n // draw the regression line\r\n svg\r\n .append(\"path\")\r\n .data([lineDatas])\r\n .attr(\"stroke\", \r\n colorMap[dd.key])\r\n .attr(\"class\", \"lib-line-regression\")\r\n .attr(\"d\", straightLine); \r\n }) \r\n } \r\n }\r\n }\r\n\r\n getCategoryValue(category: any) {\r\n let filteredResults = this.chartData.data.filter((element) => {\r\n return element.category === category && element.name === \"MID WEST\";\r\n });\r\n\r\n return new Intl.NumberFormat(\"en-GB\", {\r\n //@ts-ignore\r\n notation: \"compact\",\r\n compactDisplay: \"short\",\r\n }).format(filteredResults[0].value);\r\n }\r\n\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #linecontainer class=\"lib-chart-wrapper\"\r\n[ngClass]=\"{'lib-no-background': isTransparentBackground}\"\r\n(resized)=\"onResized($event)\">\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n *ngIf=\"isHeaderVisible\"\r\n ></lib-chart-header>\r\n <div\r\n *ngIf=\"chartData && chartData.metaData\"\r\n [style.height]=\"chartConfiguration.legendHeight\"\r\n class=\"lib-line-chart-legend-wrapper\"\r\n >\r\n <div *ngIf=\"categoryStatus\" class=\"lib-line-label-wrapper\">\r\n <div\r\n class=\"lib-line-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colorMap | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-line-legend-label-text\"\r\n [ngStyle]=\"{ border: '1px solid ' + item.value }\"\r\n [style.color]=\"item.value\"\r\n >{{ item.key }}</span\r\n > <br>\r\n <!-- <span [ngStyle]=\"{ color: item.value }\">{{ getCategoryValue(item.key) }}</span> -->\r\n </div>\r\n </div>\r\n </div>\r\n\r\n\r\n \r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"linechartcontainer\"\r\n #linechartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n ViewEncapsulation,\r\n Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport * as d3 from \"d3\";\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: \"lib-donut-chart\",\r\n templateUrl: \"./donut-chart.component.html\",\r\n styleUrls: [\"./donut-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class DonutChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild(\"donutchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"donutcontainer\", { static: true })\r\n donutcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n isCC:any;\r\n defaultConfiguration: any = {\r\n margin: { top: 10, right: 20, bottom:10, left: 20 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n legendJustified: false,\r\n centeralign:false,\r\n footerHeight: \"34%\",\r\n svgHeight: 60,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeDonutChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n this.initializeDonutChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeDonutChart() {\r\n var self = this;\r\n let rawData :any= null;\r\n let data = {};\r\n let metaData :any= null;\r\n let colorMap = {};\r\n let datatype = null;\r\n var alternate_text = false;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n rawData = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n this.isCC=this.chartData.metaData.isCC;\r\n colorMap = metaData.colors;\r\n if(metaData.dataType){\r\n datatype = metaData.dataType;\r\n }\r\n \r\n var total: number = 0;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var donutContainer = d3.select(this.donutcontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var innerRadius = 0.5;\r\n if (\r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.innerRadius != undefined &&\r\n this.customChartConfiguration.innerRadius.value != undefined\r\n ) {\r\n innerRadius = this.customChartConfiguration.innerRadius.value;\r\n }\r\n if (\r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.svgHeightUI != undefined &&\r\n this.customChartConfiguration.svgHeightUI.value != undefined\r\n ) {\r\n self.chartConfiguration.svgHeight = this.customChartConfiguration.svgHeightUI.value;\r\n }\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(donutContainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" +\r\n (width / 2 + margin.left) +\r\n \",\" +\r\n (height / 2 + margin.top) +\r\n \")\"\r\n );\r\n rawData.map(function(unit) {\r\n data[unit.name] = unit.value;\r\n });\r\n\r\n var radius = Math.min(width, height) / 2;\r\n var pie = d3\r\n .pie()\r\n .sort(null)\r\n .value(function(d) {\r\n return d.value;\r\n });\r\n var data_ready = pie(d3.entries(data));\r\n var arc = d3\r\n .arc()\r\n .innerRadius(radius * innerRadius)\r\n .outerRadius(radius * 0.8);\r\n\r\n var outerArc = d3\r\n .arc()\r\n .innerRadius(radius * 0.9)\r\n .outerRadius(radius * 0.9);\r\n\r\n svg\r\n .selectAll(\"allSlices\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"path\")\r\n .on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr(\"d\", arc)\r\n .style(\"cursor\", \"pointer\")\r\n .attr(\"id\", function(d) {\r\n return colorMap[d.data.key];\r\n })\r\n .attr(\"fill\", function(d) {\r\n return colorMap[d.data.key];\r\n });\r\n\r\n svg\r\n .selectAll(\"allPolylines\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"polyline\")\r\n .attr(\"stroke\", function(d) {\r\n return colorMap[d.data.key];\r\n })\r\n .style(\"fill\", \"none\")\r\n .attr(\"stroke-width\", 1)\r\n .attr(\"points\", function(d) {\r\n var posA = arc.centroid(d);\r\n var posB = outerArc.centroid(d);\r\n var posC = outerArc.centroid(d);\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n posC[0] = radius * 0.95 * (midangle < Math.PI ? 1 : -1);\r\n if(d.value<5){\r\n if (alternate_text) {\r\n alternate_text = false;\r\n posB[1]= posB[1] - 18;\r\n posC[1]= posC[1] - 18;\r\n } else {\r\n alternate_text = true;\r\n }\r\n }\r\n return [posA, posB, posC];\r\n });\r\n var isCC = this.isCC;\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .text(function(d) {\r\n if(isCC){\r\n console.log(\"aaa=>\",d.data);\r\n \r\n return self.chartConfiguration.labelFormatter(d.data.value)+\" Hr\";\r\n }\r\n if (datatype != \"%\" && datatype!= null) {\r\n total = 0;\r\n var len = Object.keys(data_ready).length;\r\n\r\n for (var j = 0; j < len; j++) {\r\n total += data_ready[j].data.value;\r\n }\r\n return total>0 ? self.chartConfiguration.labelFormatter(\r\n d.data.value + \"(\" + Math.round((d.data.value / total) * 100) + \"%)\"\r\n ) : self.chartConfiguration.labelFormatter(d.data.value);\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.data.value);\r\n }\r\n })\r\n // .append('text')\r\n // .text(function(d) { return \"as\"; })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n if(d.value<5){\r\n if (alternate_text && !isCC) {\r\n alternate_text = false;\r\n pos[1]= pos[1] - 18; \r\n } else {\r\n alternate_text = true;\r\n }\r\n }\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n pos[0] = radius * 0.99 * (midangle < Math.PI ? 1 : -1);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n return midangle < Math.PI ? \"start\" : \"end\";\r\n });\r\n if(this.isCC){\r\n svg\r\n .selectAll(\"allLabels\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-donut-label-text\")\r\n .text(function(d) {\r\n if(isCC){\r\n return d.data.key;\r\n }\r\n if (datatype != \"%\" && datatype!= null) {\r\n total = 0;\r\n var len = Object.keys(data_ready).length;\r\n\r\n for (var j = 0; j < len; j++) {\r\n total += data_ready[j].data.value;\r\n }\r\n return total>0 ? self.chartConfiguration.labelFormatter(\r\n d.data.value + \"(\" + Math.round((d.data.value / total) * 100) + \"%)\"\r\n ) : self.chartConfiguration.labelFormatter(d.data.value);\r\n } else {\r\n return self.chartConfiguration.labelFormatter(d.data.value);\r\n }\r\n })\r\n // .append('text')\r\n // .text(function(d) { return \"as\"; })\r\n .attr(\"transform\", function(d) {\r\n var pos = outerArc.centroid(d);\r\n if(d.value<5){\r\n // if (alternate_text) {\r\n // alternate_text = false;\r\n // pos[1]= pos[1] - 18; \r\n // } else {\r\n // alternate_text = true;\r\n // }\r\n }\r\n pos[1]= pos[1] + 18; \r\n var midangle = d.startAngle + (d.endAngle - d.startAngle) / 2;\r\n pos[0] = radius * 0.99 * (midangle < Math.PI ? 1 : -1);\r\n return \"translate(\" + pos + \")\";\r\n })\r\n .style(\"text-anchor\", function(d) {\r\n return \"middle\";\r\n });\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n getHighlightedString(){\r\n if(this.chartData && this.chartData.data.length){\r\n for(var i=0; i < this.chartData.data.length; i++){\r\n if(this.chartData.data[i].name.toLowerCase() == \"completed\"){\r\n return this.chartData.data[i].value + this.chartData.metaData.dataType;\r\n }\r\n }\r\n }\r\n return \"\";\r\n }\r\n getHighlightedStringPercentage(){\r\n let temp=0;\r\n if(this.chartData && this.chartData.data.length){\r\n let temp1=0;\r\n for(var i=0; i < this.chartData.data.length; i++){\r\n if(this.chartData.data[i].name.toLowerCase() == \"completed\"){\r\n temp1= this.chartData.data[i].value;\r\n if(temp1 == 0){\r\n return \"0% Completed\"\r\n }\r\n }\r\n temp=temp+this.chartData.data[i].value;\r\n }\r\n if(temp){\r\n return ((temp1/temp)*100) +\"% Completed\"\r\n }\r\n }\r\n return \"\";\r\n }\r\n}\r\n","<div #donutcontainer class=\"lib-chart-wrapper\"\r\n (resized)=\"onResized($event)\">\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isFromMultiProgressBar]=\"isCC\"\r\n ></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"donutchartcontainer\"\r\n #donutchartcontainer\r\n [ngClass]=\"isCC?'lib-chart-svg__cc':'lib-chart-svg'\"\r\n ></div>\r\n <div *ngIf=\"isCC\" class=\"text__highlighter\">\r\n <span class=\"text__highlightedText\">{{getHighlightedString()}}</span>\r\n <span class=\"text__highlightedTextPercentage\">{{getHighlightedStringPercentage()}}</span>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n *ngIf=\"\r\n chartData && chartData.metaData && !chartConfiguration.legendJustified\r\n && !isCC\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n >\r\n <div class=\"lib-donut-label-wrapper\" [ngClass]=\"isCC?'cc__design': chartConfiguration.centeralign ? 'lib-donut-label-align' : ''\">\r\n <div\r\n class=\"lib-donut-label-item donut-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </div>\r\n </div>\r\n <div class=\"text-center small\">{{ chartData.metaData.dataDuration }}</div>\r\n </div>\r\n <div\r\n *ngIf=\"\r\n chartData && chartData.metaData && chartConfiguration.legendJustified\r\n && !isCC\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n >\r\n <ul class=\"lib-donut-justified-label-wrapper\">\r\n <li\r\n class=\"lib-donut-justified-label-item donut-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n <div class=\"text-center small\">{{ chartData.metaData.dataDuration }}</div>\r\n </div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-vertical-stacked-chart',\r\n templateUrl: './vertical-stacked-chart.component.html',\r\n styleUrls: [\r\n './vertical-stacked-chart.component.less',\r\n '../common-styles.less',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class VerticalStackedChartComponent\r\n extends ComponentUniqueId\r\n implements OnInit\r\n{\r\n @ViewChild('verticalstackedchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('verticalstackedcontainer', { static: true })\r\n verticalstackedcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n isHeaderVisible: boolean = true;\r\n isTopCaptionVisible: boolean = true;\r\n uniqueId: any = this.getUniqueId();\r\n isTransparentBackground: boolean = false;\r\n defaultConfiguration: any = {\r\n margin: { top: 30, right: 30, bottom: 50, left: 60 },\r\n svgHeight: 80,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showLegend: false,\r\n forComparison: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n xAxisGrid: false,\r\n yAxisGrid: false,\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n isTopCaptionVisible: undefined,\r\n isMultiChartGridLine: undefined,\r\n isFullScreen: undefined,\r\n customYscale: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: undefined,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n isXaxisColor: undefined,\r\n textFormatter: undefined,\r\n showTotalOnTop: undefined,\r\n showAngledLabels: undefined,\r\n isNoAlternateXaxisText: undefined,\r\n isXgridBetweenLabels: undefined,\r\n };\r\n isCC: boolean = false;\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeStackedChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeStackedChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeStackedChart() {\r\n var self = this;\r\n let data: any = [];\r\n let metaData: any = null;\r\n let keyList = null;\r\n let lineData = null;\r\n let colors: any = null;\r\n var alternate_text = false;\r\n var alternate_label = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var short_tick_length_bg = 15;\r\n var long_tick_length_bg = 25;\r\n var formatFromBackend;\r\n var formatForHugeNumbers;\r\n var tempObjectHolder = {};\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n if (metaData.unit == undefined) metaData.unit = '';\r\n if (metaData.isCC) {\r\n this.isCC = metaData.isCC;\r\n }\r\n lineData = this.chartData.lineData;\r\n colors = metaData.colors;\r\n\r\n keyList = metaData.keyList;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var verticalstackedcontainer = d3.select(\r\n this.verticalstackedcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n var height =\r\n parseInt(verticalstackedcontainer.style('height')) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n /**\r\n * entire height used in weekly charts as x axis needed to be displayed at the bottom of the chart\r\n */\r\n if (\r\n this.chartConfiguration.isFullScreen != undefined &&\r\n this.chartConfiguration.isFullScreen\r\n ) {\r\n height =\r\n this.chartConfiguration.svgHeight != 80\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n /**\r\n * for hiding header\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isHeaderVisible != undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n /**\r\n * for hiding legends\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isTopCaptionVisible != undefined) {\r\n //UPDATENAME\r\n this.isTopCaptionVisible = this.chartConfiguration.isTopCaptionVisible;\r\n }\r\n /**\r\n * for removing background color so that it can take parents color\r\n *\r\n */\r\n if (this.chartConfiguration.isTransparentBackground != undefined) {\r\n this.isTransparentBackground =\r\n this.chartConfiguration.isTransparentBackground;\r\n }\r\n /**\r\n * format data values based on configuration received\r\n */\r\n if (this.chartConfiguration.textFormatter != undefined) {\r\n formatFromBackend = ChartHelper.dataValueFormatter(\r\n this.chartConfiguration.textFormatter\r\n );\r\n formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n }\r\n var svg = chartContainer\r\n .append('svg')\r\n .attr('id', self.uniqueId)\r\n .attr('width', width + margin.left + margin.right)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + margin.left + ',' + margin.top + ')');\r\n\r\n let stackKey = keyList;\r\n var stack: any = d3\r\n .stack()\r\n .keys(stackKey)\r\n /*.order(d3.stackOrder)*/\r\n .offset(d3.stackOffsetNone);\r\n var layers: any = stack(data);\r\n data.sort(function (a, b) {\r\n return b.total - a.total;\r\n });\r\n let lineYscale;\r\n if (lineData != null) {\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([\r\n 0,\r\n d3.max(lineData, function (d) {\r\n return +d.value;\r\n }),\r\n ])\r\n .range([height, 0]);\r\n }\r\n\r\n var xScale = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name;\r\n })\r\n );\r\n /**\r\n * xScale for weekly charts does not need padding as this padding affects spacing between the dot and y axis\r\n */\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n xScale.padding(0.5);\r\n } else {\r\n xScale.align(0.5);\r\n }\r\n let yScale = d3.scaleLinear().rangeRound([height, 0]);\r\n /**\r\n * update max vakues so that the vakue wont exceed the max limit\r\n * used by weekly charts\r\n */\r\n var maxValue = d3.max(layers, (d) => d3.max(d, (d) => d[1]));\r\n if (maxValue == 0) {\r\n maxValue = 100;\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n yScale.domain([0, maxValue]).nice();\r\n let xAxis = d3\r\n .axisBottom(xScale)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter);\r\n\r\n let yAxis = d3\r\n .axisLeft(yScale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter);\r\n\r\n let yLineAxis;\r\n if (lineYscale != null) {\r\n yLineAxis = d3\r\n .axisRight(lineYscale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yLineAxisLabelFomatter);\r\n }\r\n /**\r\n * between x-axis label used by weekly charts\r\n * isXgridBetweenLabels will be undefined for dashboard charts\r\n */\r\n if (self.chartConfiguration.isXgridBetweenLabels) {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid')\r\n .attr(\r\n 'transform',\r\n 'translate(' + xScale.bandwidth() / 2 + ',' + height + ')'\r\n )\r\n .call(d3.axisBottom(xScale).tickSize(-height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999')\r\n // .style(\"opacity\", \"0.5\")\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n /**\r\n * used to draw y-axis grid\r\n */\r\n if (self.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid')\r\n .call(\r\n d3\r\n .axisLeft(yScale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat('')\r\n )\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n var layer = svg\r\n .selectAll('.layer')\r\n .data(layers)\r\n .enter()\r\n .append('g')\r\n .attr('class', 'layer')\r\n .style('fill', function (d, i) {\r\n return metaData.colors[d.key];\r\n });\r\n\r\n var rect = layer\r\n .selectAll('rect')\r\n .data(function (d) {\r\n return d;\r\n })\r\n .enter();\r\n rect\r\n .append('rect')\r\n .on('click', function (d) {\r\n if (!lineData || self.chartConfiguration.forComparison) {\r\n self.handleClick(d);\r\n }\r\n })\r\n .attr('y', function (d) {\r\n return yScale(d[1]);\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined) {\r\n return xScale(d.data.name);\r\n } else {\r\n return xScale(d.data.name) + xScale.bandwidth() / 4;\r\n }\r\n })\r\n .attr('height', function (d) {\r\n return yScale(d[0]) - yScale(d[1]);\r\n })\r\n /**\r\n * width of the rect\r\n * for weekly charts, there is no paddings; hence we use hald of bandwidth as width of the bars\r\n */\r\n .attr(\r\n 'width',\r\n self.chartConfiguration.isMultiChartGridLine == undefined\r\n ? xScale.bandwidth()\r\n : xScale.bandwidth() / 2\r\n )\r\n .style('cursor', 'pointer');\r\n /**\r\n * do not show valus on hover as its alreay dislayed\r\n */\r\n if (!this.isCC && !self.chartConfiguration.isMultiChartGridLine) {\r\n rect\r\n .append('svg:title') // TITLE APPENDED HERE\r\n .text(function (d) {\r\n return d[1] - d[0];\r\n });\r\n }\r\n if (this.isCC) {\r\n rect\r\n .append('text')\r\n .attr('x', function (d) {\r\n return xScale(d.data.name);\r\n })\r\n .attr('text-anchor', function (d) {\r\n if (!d[0]) {\r\n return 'end';\r\n } else {\r\n return 'start';\r\n }\r\n })\r\n .attr('class', 'verticalbar__text')\r\n .attr('y', function (d) {\r\n if (!d[0]) {\r\n return yScale(d[1]);\r\n } else {\r\n return yScale(d[1]) - 7;\r\n }\r\n })\r\n // .attr(\"y\", function (d) { return yScale(d[0]) - yScale(d[1]); })\r\n .attr('dy', function (d) {\r\n return d.class;\r\n })\r\n .text(function (d) {\r\n console.log('d==>>', d);\r\n if (!d[0]) {\r\n if (!isNaN(d[1] - d[0])) {\r\n return Math.round((d[1] - d[0]) * 100) / 100;\r\n } else return;\r\n } else {\r\n if (!isNaN(d[1])) {\r\n return Math.round(d[1] * 100) / 100;\r\n } else return;\r\n }\r\n });\r\n }\r\n /**\r\n * used to show value on top of the bars\r\n * need to be used by bar charts only(one bar should contain one value)\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.showTotalOnTop != undefined) {\r\n rect\r\n .append('text')\r\n .attr('x', function (d) {\r\n return xScale(d.data.name) + xScale.bandwidth() / 2;\r\n })\r\n .attr('class', 'lib-verticalstack-labels-ontop-weklycharts')\r\n .attr('y', function (d) {\r\n return yScale(d[1]) - 3;\r\n })\r\n .attr('dy', function (d) {\r\n return d.class;\r\n })\r\n .text(function (d) {\r\n if (!isNaN(d[1] - d[0])) {\r\n if (d[1] - d[0] <= 999)\r\n return metaData.unit\r\n ? metaData.unit + formatFromBackend(d[1] - d[0])\r\n : formatFromBackend(d[1] - d[0]);\r\n else\r\n return metaData.unit\r\n ? metaData.unit + formatForHugeNumbers(d[1] - d[0])\r\n : formatForHugeNumbers(d[1] - d[0]);\r\n } else return;\r\n });\r\n }\r\n /**\r\n * used to show angled values on top of the bars\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.showAngledLabels != undefined) {\r\n rect\r\n .append('text')\r\n .attr('x', 0)\r\n .attr('fill', function (d, i) {\r\n return metaData.colors[d.key];\r\n })\r\n .attr('class', 'lib-data-labels-angled-weeklycharts')\r\n .attr('y', 0)\r\n .attr('dy', function (d) {\r\n return d.class;\r\n })\r\n .text(function (d) {\r\n if (!isNaN(d[1] - d[0]) && d[1] - d[0] > 0) {\r\n if (d[1] - d[0] <= 999)\r\n return metaData.unit\r\n ? metaData.unit + formatFromBackend(d[1] - d[0])\r\n : formatFromBackend(d[1] - d[0]);\r\n else return metaData.unit + formatForHugeNumbers(d[1] - d[0]);\r\n } else return;\r\n })\r\n .attr('transform', function (d) {\r\n if (!isNaN(d[1] - d[0]) && d[1] - d[0] > 0) {\r\n var total = 0;\r\n var incrementer: number = 1;\r\n metaData.keyList.forEach((key) => {\r\n if (d.data[key]) total = total + d.data[key];\r\n else incrementer = 2;\r\n });\r\n if (tempObjectHolder[d.data.name] == undefined) {\r\n tempObjectHolder[d.data.name] = 1;\r\n } else {\r\n tempObjectHolder[d.data.name] =\r\n tempObjectHolder[d.data.name] + incrementer;\r\n }\r\n switch (tempObjectHolder[d.data.name]) {\r\n case 1:\r\n return (\r\n 'translate(' +\r\n (xScale(d.data.name) + xScale.bandwidth() / 3) +\r\n ',' +\r\n (yScale(total) - 3) +\r\n ') rotate(270)'\r\n );\r\n case 2:\r\n return (\r\n 'translate(' +\r\n (xScale(d.data.name) + xScale.bandwidth() / 2 + 2) +\r\n ',' +\r\n (yScale(total) - 3) +\r\n ') rotate(270)'\r\n );\r\n default:\r\n return (\r\n 'translate(' +\r\n (xScale(d.data.name) + (xScale.bandwidth() * 3) / 4) +\r\n ',' +\r\n (yScale(total) - 3) +\r\n ') rotate(270)'\r\n );\r\n }\r\n }\r\n return 'rotate(0)';\r\n });\r\n }\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n svg\r\n .append('g')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .attr('class', 'lib-stacked-x-axis-text')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(xAxis);\r\n // .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis);\r\n } else {\r\n svg\r\n .append('g')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .attr('class', 'lib-stacked-x-axis-text multichart')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(xAxis);\r\n // .call(g => g.select(\".domain\").remove());\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis);\r\n }\r\n /**\r\n * for existing charts, place xaxis labels nearer to xaxis\r\n * used by existing charts\r\n */\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n d3.selectAll('g.lib-stacked-x-axis-text g.tick text').attr(\r\n 'y',\r\n function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n }\r\n );\r\n } else {\r\n d3.selectAll('.multichart > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\r\n }\r\n /**\r\n * based of the flag, hide or show xaxis texts\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isXaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isXaxisLabelHidden\r\n ) {\r\n d3.selectAll('.multichart > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\r\n } else if (this.chartConfiguration.isXaxisLabelHidden != undefined) {\r\n svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n\r\n .call(d3.axisBottom(xScale).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').attr('y2', function () {\r\n /**\r\n * isNoAlternateXaxisText is used to prevent x-axis label to be displayed in alternate fashion\r\n * for future use\r\n */\r\n if (\r\n alternate_text &&\r\n self.chartConfiguration.isNoAlternateXaxisText == undefined\r\n ) {\r\n alternate_text = false;\r\n return long_tick_length_bg - 7;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg - 4;\r\n }\r\n });\r\n /**\r\n * reset the flag so that texts also follow the pattern of ticks\r\n * used by weekly charts\r\n */\r\n alternate_text = false;\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-weeklycharts')\r\n .attr('y', function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length_bg;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg;\r\n }\r\n });\r\n }\r\n /**\r\n * hide yaxis values\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisLabelHidden != undefined &&\r\n this.chartConfiguration.isYaxisLabelHidden\r\n ) {\r\n svg\r\n .selectAll('.yaxis-dashed > g > text')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n /** hide y axis labels\r\n * config is there for future use\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisHidden != undefined &&\r\n this.chartConfiguration.isYaxisHidden\r\n ) {\r\n d3.selectAll('.yaxis-dashed').attr('class', 'lib-display-hidden');\r\n }\r\n /**\r\n * dashed y axis\r\n * used by weekly charts\r\n */\r\n if (\r\n this.chartConfiguration.isYaxisDashed != undefined &&\r\n this.chartConfiguration.isYaxisDashed\r\n ) {\r\n d3.selectAll('.yaxis-dashed')\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999');\r\n }\r\n /**\r\n * x axis color\r\n * used by weekly charts\r\n */\r\n if (this.chartConfiguration.isXaxisColor != undefined) {\r\n d3.selectAll('.multichart').style(\r\n 'color',\r\n this.chartConfiguration.isXaxisColor\r\n );\r\n }\r\n /**\r\n * used to display y label\r\n */\r\n if (metaData.yLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-waterfall-label')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', 0 - margin.left)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .text(metaData.yLabel.toLowerCase())\r\n .style('text-transform', 'capitalize');\r\n if (this.chartConfiguration.isMultiChartGridLine != undefined) {\r\n svg\r\n .selectAll('.lib-axis-waterfall-label')\r\n .attr('class', 'lib-ylabel-weeklyCharts');\r\n }\r\n }\r\n if (metaData.lineyLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-group-label lib-line-axis')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'translate(' + (width - 20) + ',0) rotate(90)')\r\n .attr('y', 0 - margin.right * 3)\r\n .attr('x', height / 2)\r\n .attr('dy', '5em')\r\n .style('text-anchor', 'middle')\r\n .text(metaData.lineyLabel);\r\n }\r\n if (metaData.xLabel) {\r\n svg\r\n .append('text')\r\n .attr('class', 'lib-axis-waterfall-label')\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + (height + margin.top + 20) + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .text(metaData.xLabel.toLowerCase())\r\n .style('text-transform', 'capitalize');\r\n }\r\n\r\n if (yLineAxis != null) {\r\n if (lineData && self.chartConfiguration.showLineChartAxis) {\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(' + width + ',0)')\r\n .call(yLineAxis);\r\n }\r\n }\r\n if (lineData && colors) {\r\n var dataGroup = d3\r\n .nest()\r\n .key(function (d) {\r\n return d.category;\r\n })\r\n .entries(lineData);\r\n\r\n // console.log(dataGroup);\r\n\r\n var lineGen = d3\r\n .line()\r\n .x(function (d) {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n })\r\n .y(function (d) {\r\n return lineYscale(d.value);\r\n });\r\n\r\n var calculateCX = (d) => {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n };\r\n\r\n var calculateCY = (d) => {\r\n return lineYscale(d.value);\r\n };\r\n\r\n dataGroup.forEach(function (d, i) {\r\n svg\r\n .append('path')\r\n .datum(d.values)\r\n .attr('fill', 'none')\r\n .attr('stroke', function (d) {\r\n if ('category' in d[0]) {\r\n return colors[d[0].category];\r\n } else {\r\n return self.chartConfiguration.lineGraphColor;\r\n }\r\n })\r\n .attr('stroke-width', 2.5) /**line thinkness */\r\n .attr('d', lineGen(d.values));\r\n\r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(d.values)\r\n .enter()\r\n .append('g')\r\n .on('click', function (d) {\r\n self.handleClick(d);\r\n });\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', function (d) {\r\n if ('category' in d) {\r\n return colors[d.category];\r\n } else {\r\n return self.chartConfiguration.lineGraphColor;\r\n }\r\n })\r\n .attr('stroke', 'none')\r\n .attr('cx', function (d, i) {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n })\r\n .attr('cy', function (d, i) {\r\n return lineYscale(d.value);\r\n })\r\n .attr('r', 3) /**radius of circle=5 */\r\n .style('cursor', 'pointer');\r\n\r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dots')\r\n .attr('fill', self.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: ' + '.85em;' + 'font-weight:' + 'bold')\r\n .attr('x', function (d, i) {\r\n return xScale(d.name) + xScale.bandwidth() / 2;\r\n })\r\n .attr('y', function (d, i) {\r\n return lineYscale(d.value);\r\n })\r\n .attr('dy', '-1em')\r\n .text(function (d, i) {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n });\r\n }\r\n });\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div\r\n #verticalstackedcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n (resized)=\"onResized($event)\"\r\n>\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isFromMultiProgressBar]=\"isCC\"\r\n *ngIf=\"isHeaderVisible\"\r\n ></lib-chart-header>\r\n <div\r\n *ngIf=\"chartData && chartData.metaData && chartConfiguration.showLegend\"\r\n [style.height]=\"chartConfiguration.legendHeight\"\r\n class=\"lib-line-chart-legend-wrapper\"\r\n [ngClass]=\"isCC ? 'bottom__text' : ''\"\r\n >\r\n <div\r\n class=\"lib-line-label-wrapper-vertical\"\r\n [ngClass]=\"isCC ? 'inline__display' : ''\"\r\n *ngIf=\"isTopCaptionVisible\"\r\n >\r\n <div\r\n [ngClass]=\"isCC ? 'label__text' : 'lib-line-label-item'\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <div\r\n class=\"lib-line-legend-label-text box__heightwidth marginright-2\"\r\n [style.backgroundColor]=\"item.value\"\r\n *ngIf=\"isCC && item.key != 'Remaining'\"\r\n ></div>\r\n <span\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"item.value\"\r\n *ngIf=\"isCC && item.key != 'Remaining'\"\r\n >{{ item.key }}</span\r\n >\r\n <span\r\n class=\"lib-line-legend-label-text\"\r\n [ngStyle]=\"{ border: '1px solid ' + item.value }\"\r\n [style.color]=\"item.value\"\r\n *ngIf=\"!isCC\"\r\n >{{ item.key }}</span\r\n >\r\n </div>\r\n </div>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"verticalstackedchartcontainer\"\r\n #verticalstackedchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewEncapsulation,\r\n ViewChild,\r\n ElementRef,\r\n Input,Output,\r\n EventEmitter\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n\r\n@Component({\r\n selector: \"lib-multi-ring-chart\",\r\n templateUrl: \"./multi-ring-chart.component.html\",\r\n styleUrls: [\"./multi-ring-chart.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class MultiRingChartComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"multiringchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"multiringcontainer\", { static: true })\r\n multiringcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 30, right: 30, bottom: 30, left: 30 },\r\n footerHeight: \"20%\",\r\n svgHeight: 70,\r\n legendJustified: false,\r\n thickness: 15,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeDonutChart();\r\n }\r\n onResized(event: ResizedEvent){\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeDonutChart();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n initializeDonutChart() {\r\n var self = this;\r\n let rawData:any = null;\r\n let data = {};\r\n let metaData:any = null;\r\n let colorMap = {};\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n rawData = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n colorMap = metaData.colors;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var multiringcontainer = d3.select(\r\n this.multiringcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(multiringcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" +\r\n (width / 2 + margin.left) +\r\n \",\" +\r\n (height / 2 + margin.top) +\r\n \")\"\r\n );\r\n\r\n rawData.map(function(unit) {\r\n data[unit.name] = unit.value;\r\n });\r\n\r\n var radius = Math.min(width, height) / 2;\r\n var pie = d3\r\n .pie()\r\n .sort(null)\r\n .value(function(d) {\r\n return d.value;\r\n });\r\n var data_ready = pie(d3.entries(data));\r\n\r\n let tau = 2 * Math.PI;\r\n\r\n var arcs = svg\r\n .selectAll(\"allSlices\")\r\n .data(data_ready)\r\n .enter()\r\n .append(\"path\").on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr(\"d\", function(d, i) {\r\n var endAngle = (d.value / 100) * tau;\r\n var arc = d3.arc();\r\n arc\r\n .innerRadius(radius * 0.7 + i * self.chartConfiguration.thickness)\r\n .outerRadius(\r\n radius * 0.7 + (i + 1) * self.chartConfiguration.thickness\r\n )\r\n .startAngle(0)\r\n .endAngle(endAngle);\r\n d.arcFn = arc;\r\n return arc();\r\n })\r\n .attr(\"fill\", function(d) {\r\n return colorMap[d.data.key];\r\n });\r\n\r\n var texts = svg\r\n .append(\"text\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"alignment-baseline\", \"middle\")\r\n .style(\"font-size\", \"20px\")\r\n .style(\"font-weight\", \"bold\")\r\n .attr(\"fill\", \"black\")\r\n .text(d => metaData.labelText);\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #multiringcontainer class=\"lib-chart-wrapper\"\r\n (resized)=\"onResized($event)\" >\r\n <!-- <div class=\"lib-chart-header\">{{ chartData.metaData.title }}</div> -->\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"multiringchartcontainer\"\r\n #multiringchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n *ngIf=\"\r\n chartData && chartData.metaData && !chartConfiguration.legendJustified\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n>\r\n <div class=\"lib-donut-label-wrapper\">\r\n <div\r\n class=\"lib-donut-label-item multiring-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </div>\r\n </div>\r\n</div>\r\n<div\r\n *ngIf=\"\r\n chartData && chartData.metaData && chartConfiguration.legendJustified\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n>\r\n <ul class=\"lib-donut-justified-label-wrapper\">\r\n <li\r\n class=\"lib-donut-justified-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n</div>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n SimpleChanges,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-header-v1',\r\n templateUrl: './chart-header-v1.component.html',\r\n styleUrls: [\"./chart-header-v1.component.less\",\"../common-styles.less\"],\r\n})\r\nexport class ChartHeaderV1Component implements OnChanges{\r\n\r\n @Input() isAlertEnabled: any;\r\n\r\n\r\n @Input() title: string = '';\r\n @Input() menuOptions: any;\r\n @Input() isEditEnabled: any;\r\n\r\n @Input() isria: boolean = false;\r\n @Input() hasDrillDown: boolean = false;\r\n @Output() menuOptionClickEvent = new EventEmitter<any>();\r\n @Input() selectedKpiTooltop: string = '';\r\n \r\n hideTooltip: boolean = true;\r\n isEllipsisHovered: boolean = false;\r\n isRefreshHovered: boolean = false;\r\n isTrashHovered: boolean = false;\r\n hoveredMenuItem: string | null = null;\r\n\r\n constructor() {}\r\n \r\n @HostListener('document:click', ['$event'])\r\n clickout() {\r\n if (!this.hideTooltip) {\r\n this.hideTooltip = true;\r\n }\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {}\r\n \r\n showTooltip(event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n // this.menuOptionClickEvent.emit({ selectedKpiTooltip: this.title });\r\n }\r\n\r\ngetIconClass(id: string): string {\r\n switch (id) {\r\n case 'setAlert':\r\n return 'bi bi-bell'\r\n case 'editAlert':\r\n return 'bi bi-bell-fill';\r\n case 'deleteKpi':\r\n return 'bi bi-trash';\r\n case 'replaceKpi':\r\n return 'fa fa-exchange';\r\n default:\r\n return 'fa fa-cog';\r\n }\r\n}\r\n\r\n\r\n\r\n handleMenuOptionClick(id: string, event: Event) {\r\n event.stopPropagation();\r\n this.hideTooltip = !this.hideTooltip;\r\n // if (id == 'replace-kpi' || id == 'delete-kpi') {\r\n // this.hideTooltip = true;\r\n // }\r\n this.menuOptionClickEvent.emit(id);\r\n }\r\n}","<div class=\"chart-header-v1\" [ngClass]=\"{ 'header-no-background': isria }\">\r\n <span class=\"chart-title\">\r\n {{ title }}\r\n </span>\r\n\r\n <div class=\"header_right\" *ngIf=\"!isria\">\r\n <span class=\"chart-alert-header\" *ngIf=\"isAlertEnabled\">\r\n <i class=\"bi bi-bell-fill\"></i>\r\n </span>\r\n\r\n <span class=\"ellipsis\" (click)=\"showTooltip($event)\"\r\n [ngClass]=\"{'ellipsis-hover': isEllipsisHovered}\" (mouseenter)=\"isEllipsisHovered = true\"\r\n (mouseleave)=\"isEllipsisHovered = false\">\r\n <i class=\"fa fa-ellipsis-v\"></i>\r\n </span>\r\n </div>\r\n\r\n <div class=\"chart-tooltip tip-head\" [ngClass]=\"{ 'hide-tooltip': hideTooltip }\">\r\n <div *ngFor=\"let menu of menuOptions\">\r\n <div class=\"tooltip-item\" [ngClass]=\"{'tooltip-item-hover': hoveredMenuItem === menu.id}\"\r\n (mouseenter)=\"hoveredMenuItem = menu.id\" (mouseleave)=\"hoveredMenuItem = null\"\r\n (click)=\"handleMenuOptionClick(menu.id, $event)\">\r\n <div class=\"row\">\r\n <div class=\"col-12 ellipse-items\">\r\n <i [ngClass]=\"getIconClass(menu.id)\" style=\"margin-right: 5px;\"></i>\r\n {{ menu.name }}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>\r\n","import { Component, Input, OnInit } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-header-alt',\r\n templateUrl: './header-alt.component.html',\r\n styleUrls: ['./header-alt.component.less'],\r\n})\r\nexport class HeaderAltComponent implements OnInit {\r\n @Input() title: string = '';\r\n @Input() isria: boolean = false;\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div \r\n class=\"header-alt-title\" \r\n [class.ria]=\"isria\">\r\n {{ title }}\r\n</div>\r\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-header-v2',\r\n templateUrl: './chart-header-v2.component.html',\r\n styleUrl: './chart-header-v2.component.less',\r\n})\r\nexport class ChartHeaderV2Component {\r\n @Input() chartData: any;\r\n @Input() chartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() zoomInZoomOutClick = new EventEmitter<any>();\r\n\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n isZoomOutSelected(isZoomOut, event) {\r\n this.zoomInZoomOutClick.emit({ isZoomOut: isZoomOut, event: event });\r\n }\r\n handleGaugeChartVisibility() {\r\n if (\r\n parseFloat(this.chartData?.metaData?.currentValue) > 0 ||\r\n parseFloat(this.chartData?.data?.value) > 0\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n}\r\n","<div\r\n class=\"headerv2 lib-display-flex header-title-styles\"\r\n [ngClass]=\"\r\n !chartConfiguration.isTitleHidden\r\n ? 'lib-justify-content-space-between'\r\n : 'lib-justify-content-end'\r\n \"\r\n>\r\n <span [ngClass]=\"!chartConfiguration.isTitleHidden ? '' : 'hidden'\">\r\n <lib-header-alt [title]=\"chartData.metaData.title\"></lib-header-alt>\r\n </span>\r\n <span\r\n *ngIf=\"\r\n (chartData.dropdownData1 &&\r\n chartData.metaData.breadcrumbLength &&\r\n chartData.metaData.breadcrumbLength == 1 &&\r\n (chartConfiguration?.isToggleVisible ||\r\n chartData.metaData.isToggleVisible)) ||\r\n (chartData.metaData.breadcrumbLength > 1 &&\r\n !chartData.dropdownData1 &&\r\n (chartConfiguration?.isToggleVisible ||\r\n chartData.metaData.isToggleVisible)) ||\r\n (chartData.dropdownData2 &&\r\n !chartData.dropdownData1 &&\r\n chartData.metaData.breadcrumbLength == 1 &&\r\n (chartConfiguration?.isToggleVisible ||\r\n chartData.metaData.isToggleVisible)) ||\r\n ((chartData.metaData.type == 'GAUGE' ||\r\n chartData.metaData.type == 'NUMBERCHART') &&\r\n chartConfiguration.isToggleVisible &&\r\n handleGaugeChartVisibility())\r\n \"\r\n class=\"marginLeft-20 flex-inline marginRight-15\"\r\n >\r\n <span class=\"font-size-2\">Trending</span>\r\n <span\r\n class=\"switch\"\r\n (click)=\"\r\n handleClick(\r\n chartData.metaData.type == 'NUMBERCHART'\r\n ? { toggleFrom: 'plainTrend' }\r\n : chartData.metaData.type == 'GAUGE'\r\n ? { toggleFrom: 'gauge' }\r\n : chartData.metaData.toggleVersion\r\n ? { toggleFrom: 'groupchart-v1' }\r\n : { toggleFrom: 'groupchart' }\r\n )\r\n \"\r\n >\r\n <input type=\"checkbox\" />\r\n <span\r\n [ngClass]=\"{\r\n 'slider1 round1': chartData && chartData.metaData.isToggled,\r\n 'slider round': chartData && !chartData.metaData.isToggled\r\n }\"\r\n ></span>\r\n </span>\r\n <span class=\"font-size-2\">Average</span>\r\n </span>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n OnChanges,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport * as d3 from 'd3';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\ninterface ChartData {\r\n data: number[];\r\n metaData: ChartMetadata;\r\n}\r\n\r\ninterface ChartMetadata {\r\n title?: string;\r\n colorType: 'low' | 'high';\r\n dataType?: string;\r\n currentValue: number;\r\n status?: string;\r\n dateRange?: string;\r\n hasDrillDown?: boolean;\r\n isEditEnabled?: boolean;\r\n}\r\n\r\ninterface ChartConfiguration {\r\n margin: { top: number; right: number; bottom: number; left: number };\r\n minAngle: number;\r\n maxAngle: number;\r\n ringInset: number;\r\n ringWidth: number;\r\n majorTicks: number;\r\n svgHeight: number;\r\n low_colorMap: string[];\r\n high_colorMap: string[];\r\n isHeaderVisible?: boolean;\r\n pointerWidth: number;\r\n pointerTailLength: number;\r\n pointerHeadLengthPercent: number;\r\n labelInset: number;\r\n legendJustified: boolean;\r\n backgroundColor: string;\r\n isDrilldownChart?: boolean;\r\n ringScaleFactor: number;\r\n textsAtCenterScaleFactor: number;\r\n currentValueWidthScaleFactor: number;\r\n currentValueHeightScaleFactor: number;\r\n pointerColor: string;\r\n isToggleVisible?: boolean;\r\n selectedKpiTooltop?: any;\r\n isValueLableAdjust?: boolean;\r\n isTitleHidden?: boolean;\r\n headerMenuOptions: any[];\r\n isRia?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-guage-chart',\r\n templateUrl: './guage-chart.component.html',\r\n styleUrls: ['./guage-chart.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class GuageChartComponent extends ComponentUniqueId implements OnInit, OnChanges {\r\n @ViewChild('guagechartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('guagecontainer', { static: true })\r\n guagecontainerElt!: ElementRef;\r\n\r\n @Input() chartData!: ChartData;\r\n @Input() customChartConfiguration: Partial<ChartConfiguration> = {};\r\n @Output() clickEvent = new EventEmitter<string>();\r\n @Output() headerMenuclickEvent = new EventEmitter<string>();\r\n\r\n chartConfiguration: ChartConfiguration = {} as ChartConfiguration;\r\n dataType = '';\r\n datatype_status = false;\r\n uniqueId = this.getUniqueId();\r\n isHeaderVisible = true;\r\n\r\n private readonly CHART_HEADER_HEIGHT = 56;\r\n private readonly LARGE_SCREEN_WIDTH = 1400;\r\n private readonly XLARGE_SCREEN_WIDTH = 1500;\r\n\r\n private readonly defaultConfiguration: ChartConfiguration = {\r\n margin: { top: 40, right: 20, bottom: 20, left: 20 },\r\n minAngle: -90,\r\n maxAngle: 90,\r\n ringInset: 20,\r\n ringWidth: 20,\r\n majorTicks: 3,\r\n svgHeight: 80,\r\n low_colorMap: ['#43CC00', '#FFEF0C', '#FF4E0C'],\r\n high_colorMap: ['#FF4E0C', '#FFEF0C', '#43CC00'],\r\n isHeaderVisible: undefined,\r\n pointerWidth: 10,\r\n pointerTailLength: 5,\r\n pointerHeadLengthPercent: 0.7,\r\n labelInset: 10,\r\n legendJustified: false,\r\n backgroundColor: '#FFFFFF',\r\n isDrilldownChart: undefined,\r\n ringScaleFactor: 0,\r\n textsAtCenterScaleFactor: 0,\r\n currentValueWidthScaleFactor: 60,\r\n currentValueHeightScaleFactor: 30,\r\n pointerColor: '#686868',\r\n isToggleVisible: undefined,\r\n selectedKpiTooltop: undefined,\r\n isValueLableAdjust: undefined,\r\n isTitleHidden: undefined,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n ) ?? false;\r\n }\r\n\r\n ngOnInit(): void {\r\n this.initializeChart();\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['chartData'] || changes['customChartConfiguration']) {\r\n this.removeExistingChart();\r\n this.initializeChart();\r\n }\r\n }\r\n\r\n onResized(event: ResizedEvent): void {\r\n this.removeExistingChart();\r\n this.initializeChart();\r\n }\r\n\r\n private removeExistingChart(): void {\r\n d3.select(`#${this.uniqueId}`).remove();\r\n }\r\n\r\n private initializeChart(): void {\r\n if (!this.chartData) return;\r\n\r\n this.mergeConfiguration();\r\n this.setupDataType();\r\n \r\n const { data, metaData } = this.chartData;\r\n const colorMaps = this.getColorMaps(metaData.colorType);\r\n const dataSegments = this.calculateDataSegments(data);\r\n const angleValues = this.calculateAngles(dataSegments);\r\n \r\n const dimensions = this.calculateDimensions();\r\n const svg = this.createSVG(dimensions);\r\n const radius = Math.min(dimensions.width, dimensions.height) / 2;\r\n\r\n this.adjustScaleFactors(radius);\r\n \r\n const labelArray = this.createLabelArray(data, dataSegments);\r\n \r\n this.renderArcs(svg, dataSegments, angleValues, colorMaps, metaData, radius);\r\n this.renderPointer(svg, data, metaData, radius);\r\n this.renderLabels(svg, labelArray, data, metaData, radius);\r\n this.renderCenterTexts(svg, metaData, radius, dimensions);\r\n \r\n this.centerSVG(svg, dimensions);\r\n }\r\n\r\n private mergeConfiguration(): void {\r\n Object.keys(this.defaultConfiguration).forEach((key) => {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n });\r\n }\r\n\r\n private setupDataType(): void {\r\n const dataType = this.chartData.metaData.dataType;\r\n if (dataType) {\r\n this.dataType = dataType === 'USD' ? '$ ' : dataType;\r\n this.datatype_status = dataType === 'USD';\r\n }\r\n }\r\n\r\n private getColorMaps(colorType: 'low' | 'high'): string[] {\r\n return colorType === 'low'\r\n ? this.chartConfiguration.low_colorMap\r\n : this.chartConfiguration.high_colorMap;\r\n }\r\n\r\n private calculateDataSegments(data: number[]): number[] {\r\n return data.slice(0, -1).map((value, i) => data[i + 1] - value);\r\n }\r\n\r\n private calculateAngles(dataSegments: number[]): number[] {\r\n const total = dataSegments.reduce((sum, value) => sum + value, 0);\r\n const angles: number[] = [];\r\n \r\n dataSegments.forEach((segment, i) => {\r\n const angle = (segment / total) * 180;\r\n angles.push(i === 0 ? angle : angles[i - 1] + angle);\r\n });\r\n \r\n return angles;\r\n }\r\n\r\n private calculateDimensions() {\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const guageContainer = d3.select(this.guagecontainerElt.nativeElement);\r\n const margin = this.chartConfiguration.margin;\r\n\r\n const width = parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n const height = parseInt(guageContainer.style('height')) - margin.top - margin.bottom - this.CHART_HEADER_HEIGHT;\r\n\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n\r\n return { width, height, margin, chartContainer };\r\n }\r\n\r\n private createSVG(dimensions: any): d3.Selection<SVGGElement, unknown, null, undefined> {\r\n const { width, height, margin, chartContainer } = dimensions;\r\n\r\n return chartContainer\r\n .append('svg')\r\n .attr('id', this.uniqueId)\r\n .attr('width', width + margin.left + margin.right)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append('g');\r\n }\r\n\r\n private adjustScaleFactors(radius: number): void {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n this.chartConfiguration.currentValueWidthScaleFactor += 40;\r\n this.chartConfiguration.currentValueHeightScaleFactor += 20;\r\n } else if (window.innerWidth > this.LARGE_SCREEN_WIDTH) {\r\n this.chartConfiguration.currentValueHeightScaleFactor += 15;\r\n this.chartConfiguration.currentValueWidthScaleFactor *= 2;\r\n }\r\n }\r\n\r\n private createLabelArray(data: number[], dataSegments: number[]) {\r\n const labelArray = [{ name: data[0], value: 0 }];\r\n let cumulative = 0;\r\n\r\n dataSegments.forEach((segment, i) => {\r\n cumulative += segment;\r\n labelArray.push({ name: data[i + 1], value: cumulative });\r\n });\r\n\r\n return labelArray;\r\n }\r\n\r\n private renderArcs(\r\n svg: any,\r\n dataSegments: number[],\r\n angleValues: number[],\r\n colorMaps: string[],\r\n metaData: ChartMetadata,\r\n radius: number\r\n ): void {\r\n const isRia = this.customChartConfiguration.isRia;\r\n const centerTx = this.getCenterTranslation(radius);\r\n const arc = this.createArcGenerator(dataSegments, angleValues, radius);\r\n\r\n const arcs = svg.append('g').attr('class', 'arc').attr('transform', centerTx);\r\n\r\n arcs\r\n .selectAll('path')\r\n .data(dataSegments)\r\n .enter()\r\n .append('path')\r\n .attr('fill', (d: any, i: number) => colorMaps[i])\r\n .attr('id', (d: any, i: number) => colorMaps[i])\r\n .attr('d', arc)\r\n .style('cursor', () => {\r\n return metaData.currentValue > 0 && metaData.hasDrillDown && !isRia\r\n ? 'pointer'\r\n : 'default';\r\n })\r\n .on('click', (event: any, d: any) => {\r\n if (!metaData.hasDrillDown || metaData.currentValue === 0) return;\r\n this.handleClick(this.getRange(this.chartData.data));\r\n });\r\n }\r\n\r\n private createArcGenerator(dataSegments: number[], angleValues: number[], radius: number): any {\r\n return d3\r\n .arc()\r\n .innerRadius(radius - this.chartConfiguration.ringWidth - this.chartConfiguration.ringInset)\r\n .outerRadius(radius)\r\n .startAngle((d: any, i: number) => {\r\n const ratio = i === 0\r\n ? this.chartConfiguration.minAngle\r\n : this.chartConfiguration.minAngle + angleValues[i - 1];\r\n return this.deg2rad(ratio);\r\n })\r\n .endAngle((d: any, i: number) => {\r\n const ratio = i === dataSegments.length - 1\r\n ? this.chartConfiguration.maxAngle\r\n : this.chartConfiguration.minAngle + angleValues[i];\r\n return this.deg2rad(ratio);\r\n });\r\n }\r\n\r\n private renderPointer(svg: any, data: number[], metaData: ChartMetadata, radius: number): void {\r\n const centerTx = this.getCenterTranslation(radius);\r\n const pointerHeadLength = Math.round(radius * this.chartConfiguration.pointerHeadLengthPercent);\r\n\r\n const lineData = [\r\n [this.chartConfiguration.pointerWidth / 2, 0],\r\n [0, -pointerHeadLength],\r\n [-(this.chartConfiguration.pointerWidth / 2), 0],\r\n [0, this.chartConfiguration.pointerTailLength],\r\n [this.chartConfiguration.pointerWidth / 2, 0],\r\n ];\r\n\r\n const pointerLine = d3.line();\r\n const pg = svg\r\n .append('g')\r\n .data([lineData])\r\n .attr('class', 'pointer')\r\n .attr('transform', centerTx);\r\n\r\n const range = data[data.length - 1] - data[0];\r\n const pointerValue = metaData.currentValue - data[0];\r\n const pointerAngle = this.chartConfiguration.minAngle + (pointerValue / range) * 180;\r\n\r\n pg.append('path')\r\n .attr('d', pointerLine)\r\n .attr('fill', this.chartConfiguration.pointerColor)\r\n .attr(\r\n 'transform',\r\n `rotate(${pointerAngle}) translate(0, ${-radius + this.chartConfiguration.ringWidth + pointerHeadLength})`\r\n );\r\n }\r\n\r\n private renderLabels(svg: any, labelArray: any[], data: number[], metaData: ChartMetadata, radius: number): void {\r\n const centerTx = this.getCenterTranslation(radius);\r\n const range = data[data.length - 1] - data[0];\r\n const lg = svg.append('g').attr('class', 'label').attr('transform', centerTx);\r\n\r\n lg.selectAll('.bubble')\r\n .data(labelArray)\r\n .enter()\r\n .append('g')\r\n .attr('transform', (d: any) => {\r\n const newAngle = this.chartConfiguration.minAngle + (d.value / range) * 180;\r\n return `rotate(${newAngle}) translate(0, ${this.chartConfiguration.labelInset - radius - 20})`;\r\n })\r\n .append('g')\r\n .attr('transform', (d: any, i: number) => {\r\n const newAngle = this.chartConfiguration.minAngle + (d.value / range) * 180;\r\n let xOffset = -17;\r\n \r\n if (i === 0 && this.chartConfiguration.isValueLableAdjust) {\r\n xOffset = -27;\r\n } else if (i === labelArray.length - 1 && this.chartConfiguration.isValueLableAdjust) {\r\n xOffset = -15;\r\n }\r\n \r\n return `rotate(${-newAngle}) translate(${xOffset}, 0)`;\r\n })\r\n .append('text')\r\n .attr('style', () => {\r\n const fontSize = window.innerWidth < this.LARGE_SCREEN_WIDTH ? '12px' : '14px';\r\n return `font-size: ${fontSize}; font-weight: 600;`;\r\n })\r\n .attr('fill', 'var(--chart-text-color)')\r\n .text((d: any) => {\r\n return metaData.dataType ? `${d.name}${metaData.dataType}` : d.name;\r\n });\r\n }\r\n\r\n private renderCenterTexts(svg: any, metaData: ChartMetadata, radius: number, dimensions: any): void {\r\n const topTextPosition = radius / 2 - 10;\r\n const midTextPosition = topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n const bottomTextPosition = midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n\r\n // Current Value\r\n this.addForeignObject(\r\n svg,\r\n radius - this.chartConfiguration.currentValueWidthScaleFactor / 2,\r\n topTextPosition,\r\n this.chartConfiguration.currentValueWidthScaleFactor + 8,\r\n this.chartConfiguration.currentValueHeightScaleFactor,\r\n 'value-display',\r\n `${metaData.currentValue}${metaData.dataType || ''}`\r\n );\r\n\r\n // Status\r\n if (metaData.status) {\r\n const statusWidth = metaData.status.length > 4 ? 210 : 120;\r\n this.addForeignObject(\r\n svg,\r\n radius - statusWidth / 2,\r\n midTextPosition,\r\n statusWidth,\r\n this.chartConfiguration.currentValueHeightScaleFactor + 10,\r\n 'status-display',\r\n metaData.status\r\n );\r\n }\r\n\r\n // Date Range\r\n const dateRangeHtml = metaData.dateRange\r\n ? `<span class=\"marginright-3\"><i class=\"fa fa-calendar\"></i></span><span>${metaData.dateRange}</span>`\r\n : '';\r\n \r\n this.addForeignObject(\r\n svg,\r\n radius - 105,\r\n bottomTextPosition,\r\n 210,\r\n this.chartConfiguration.currentValueHeightScaleFactor,\r\n 'daterange-display',\r\n dateRangeHtml\r\n );\r\n }\r\n\r\n private addForeignObject(\r\n svg: any,\r\n x: number,\r\n y: number,\r\n width: number,\r\n height: number,\r\n className: string,\r\n content: string\r\n ): void {\r\n const fontSize = this.getFontSize();\r\n \r\n svg\r\n .append('foreignObject')\r\n .attr('transform', `translate(${x}, ${y})`)\r\n .attr('width', width)\r\n .attr('height', height)\r\n .append('xhtml:div')\r\n .attr('class', className)\r\n .style('height', `${height + 10}px`)\r\n .style('font-size', fontSize)\r\n .html(content);\r\n }\r\n\r\n private getFontSize(): string {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return window.innerWidth < this.LARGE_SCREEN_WIDTH ? '14px' : '18px';\r\n }\r\n return window.innerWidth < this.LARGE_SCREEN_WIDTH ? '14px' : '18px';\r\n }\r\n\r\n private centerSVG(svg: any, dimensions: any): void {\r\n const { margin, chartContainer } = dimensions;\r\n const containerMidWidth = parseInt(chartContainer.style('width')) / 2;\r\n const nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;\r\n const updatedStartingPoint = containerMidWidth - nodeHalfWidth;\r\n\r\n svg.attr('transform', `translate(${updatedStartingPoint + margin.left}, ${margin.top})`);\r\n }\r\n\r\n private getCenterTranslation(radius: number): string {\r\n return `translate(${radius}, ${radius})`;\r\n }\r\n\r\n private deg2rad(deg: number): number {\r\n return (deg * Math.PI) / 180;\r\n }\r\n\r\n private getRange(data: number[]): string {\r\n return `${data[0]} and ${data[data.length - 1]}`;\r\n }\r\n\r\n handleClick(range: string): void {\r\n this.clickEvent.emit(range);\r\n }\r\n\r\n handleHeaderMenuClick(id: string): void {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}","<div #guagecontainer class=\"lib-chart-wrapper\" \r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n \r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 \r\n [chartData]=\"chartData\" \r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\">\r\n </lib-chart-header-v2>\r\n </div>\r\n \r\n <lib-chart-header-v1 \r\n *ngIf=\"isHeaderVisible\"\r\n [title]=\"chartData.metaData.title\" \r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" \r\n [isria]=\"customChartConfiguration.isRia\" \r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" \r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\">\r\n </lib-chart-header-v1>\r\n \r\n <div #guagechartcontainer\r\n id=\"guagechartcontainer\"\r\n class=\"lib-chart-svg guagecontainer\"\r\n [style.height.%]=\"chartConfiguration.svgHeight\">\r\n </div>\r\n</div>","import { Component, EventEmitter, Input, Output } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-header-v3',\r\n templateUrl: './chart-header-v3.component.html',\r\n styleUrl: './chart-header-v3.component.less',\r\n})\r\nexport class ChartHeaderV3Component {\r\n @Input() chartData: any;\r\n @Input() chartConfiguration: any;\r\n @Output() compareByFilterSelection = new EventEmitter<any>();\r\n @Output() zoomInZoomOutClick = new EventEmitter<any>();\r\n\r\n isDD1Open: boolean = false;\r\n isDD2Open: boolean = false;\r\n isZoomedOut: boolean = true;\r\n\r\n isLegendVisible() {\r\n if (\r\n this.chartData &&\r\n this.chartData.metaData.colors &&\r\n Object.keys(this.chartData.metaData.colors).length > 1\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n handleDD1Click() {\r\n this.isDD1Open = true;\r\n this.isDD2Open = false;\r\n }\r\n handleDD2Click() {\r\n this.isDD2Open = true;\r\n this.isDD1Open = false;\r\n }\r\n handleCompareByFilterSelection(event) {\r\n this.compareByFilterSelection.emit(event);\r\n }\r\n isZoomOutSelected(isZoomOut, event) {\r\n this.isZoomedOut = isZoomOut; \r\n this.zoomInZoomOutClick.emit({ isZoomOut: this.isZoomedOut, event: event });\r\n }\r\n keepOrder = (a, b) => {\r\n return a;\r\n };\r\n}\r\n","<div class=\"lib-display-flex header-title-styles\" [ngClass]=\"\r\n !chartData.dropdownData2 &&\r\n !chartData.dropdownData1 &&\r\n chartData.data.length <= 8\r\n ? 'lib-justify-content-start'\r\n : 'lib-justify-content-space-between'\r\n \">\r\n <span class=\"legend-latest-holder\" *ngIf=\"\r\n chartData.data &&\r\n chartData.metaData.default_dept &&\r\n (chartConfiguration.isToggleVisible || chartData.metaData.isToggleVisible)\r\n \">\r\n <span *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"><span class=\"legends-latest\"\r\n *ngIf=\"chartData.metaData.default_dept == item.key\" [style.background-color]=\"item.value\"></span></span>\r\n <span class=\"marginRight-30 legend-style font-size-2\" *ngIf=\"chartData.metaData.default_dept\">\r\n Default Dept: {{ chartData.metaData.default_dept }}\r\n </span>\r\n <span *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"><span *ngIf=\"\r\n item.key != chartData.metaData.default_dept &&\r\n chartData.metaData.default_dept\r\n \" class=\"legends-latest\" [style.background-color]=\"item.value\"></span></span>\r\n <span class=\"legend-style font-size-2\" *ngIf=\"isLegendVisible() && chartData.metaData.default_dept\">Cross Train\r\n Dept</span>\r\n </span>\r\n <span class=\"legend-latest-holder legend-width\"\r\n [ngClass]=\"chartData.metaData.colorLegendVisibleOnTopLeft ? '' : 'invisible'\"\r\n *ngIf=\"chartData.data && !chartData.metaData.default_dept\">\r\n <span class=\"lib-display-flex lib-align-items-center\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"><span class=\"legends-latest\"\r\n [style.background-color]=\"item.value\"></span>\r\n <span class=\"marginRight-20 legend-style font-size-1 lib-white-space-nowrap\">\r\n {{ item.key }}\r\n </span>\r\n </span>\r\n </span>\r\n <span class=\"display-flex\">\r\n <!-- <span *ngIf=\"\r\n chartData.dropdownData1 &&\r\n chartData.metaData.breadcrumbLength &&\r\n chartData.metaData.breadcrumbLength == 1\r\n \">\r\n <lib-dropdown [dropdownData]=\"chartData.dropdownData1\" [isDropdownOpen]=\"this.isDD1Open\"\r\n (ddClicked)=\"handleDD1Click()\" (selectedFromDropdown)=\"handleCompareByFilterSelection($event)\"></lib-dropdown>\r\n </span>\r\n <span *ngIf=\"\r\n chartData.dropdownData2 &&\r\n chartData.metaData.breadcrumbLength &&\r\n chartData.metaData.breadcrumbLength == 1\r\n \">\r\n <lib-dropdown [dropdownData]=\"chartData.dropdownData2\" [isDropdownOpen]=\"this.isDD2Open\"\r\n (ddClicked)=\"handleDD2Click()\" (selectedFromDropdown)=\"handleCompareByFilterSelection($event)\"\r\n [isCheckboxVisible]=\"chartData.metaData.isCheckboxVisible\"\r\n [dropdownHeaderName]=\"chartData.metaData.dropdownHeaderName\"></lib-dropdown>\r\n </span> -->\r\n <span class=\"zoomIcons-holder\" *ngIf=\"chartData.data && chartData.data.length > 8\">\r\n <span class=\"zoomIcons\" title=\"Zoom In\" [ngClass]=\"!isZoomedOut ? 'zoom-active' : 'zoom-inactive'\"\r\n (click)=\"isZoomOutSelected(false, $event)\">\r\n <i class=\"fa fa-search-plus\"></i>\r\n </span>\r\n <span class=\"zoomIcons\" title=\"Zoom Out\" [ngClass]=\"isZoomedOut ? 'zoom-active' : 'zoom-inactive'\"\r\n (click)=\"isZoomOutSelected(true, $event)\">\r\n <i class=\"fa fa-search-minus\"></i>\r\n </span>\r\n </span>\r\n </span>\r\n</div>","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\ninterface ChartMetaData {\r\n colors: { [key: string]: string };\r\n colorAboveTarget?: { [key: string]: string };\r\n keyList: string[];\r\n hasDrillDown?: boolean;\r\n barWithoutClick?: string[];\r\n dataType?: string;\r\n yLabel?: string;\r\n xLabel?: string;\r\n lineyLabel?: string;\r\n}\r\n\r\ninterface TargetLineData {\r\n target: number;\r\n color: string;\r\n targetName?: string;\r\n}\r\n\r\ninterface ChartConfiguration {\r\n margin: { top: number; right: number; bottom: number; left: number };\r\n labelFormatter: (value: any) => string;\r\n svgHeight: number;\r\n numberOfYTicks: number;\r\n legendJustified: boolean;\r\n yLineAxisLabelFomatter: (value: any) => string;\r\n yAxisLabelFomatter: (value: any) => string;\r\n lineGraphColor: string;\r\n showLineChartAxis: boolean;\r\n showValues: boolean;\r\n headerMenuOptions: any[];\r\n xAxisGrid?: boolean;\r\n yAxisGrid: boolean;\r\n legendVisible: boolean;\r\n isHeaderVisible?: boolean;\r\n isTransparentBackground?: boolean;\r\n isMultiChartGridLine?: boolean;\r\n isFullScreen?: boolean;\r\n customYscale?: number;\r\n textsOnBar?: boolean;\r\n isXaxisLabelHidden?: boolean;\r\n isYaxisLabelHidden: boolean;\r\n isYaxisHidden?: boolean;\r\n isYaxisDashed?: boolean;\r\n textFormatter?: string;\r\n isNoAlternateXaxisText?: boolean;\r\n isXgridBetweenLabels?: boolean;\r\n backgroundColor: string;\r\n hideLegendOnTop: boolean;\r\n isXaxisColor: string;\r\n labelOverlapMinorFix: boolean;\r\n noHoverEffect: boolean;\r\n noHoverDisplayData: boolean;\r\n showXaxisTop: boolean;\r\n displayYaxisLabels?: boolean;\r\n xLabelsOnSameLine?: boolean;\r\n textAlwaysHorizontal?: boolean;\r\n legendAtTopRight?: boolean;\r\n isDrilldownChart?: boolean;\r\n displayTitleOnTop?: boolean;\r\n isToggleVisible?: boolean;\r\n isTitleHidden?: boolean;\r\n isDisplayBarDetailsAtBottom?: boolean;\r\n howmanyBarDetailsToDisplay: number;\r\n barVauleColor?: string;\r\n yAxisCustomTextStyles?: string;\r\n yAxisCustomlabelStyles?: string;\r\n xAxisCustomlabelStyles?: string;\r\n isRia?: boolean;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-group-chart',\r\n templateUrl: './group-chart.component.html',\r\n styleUrls: ['./group-chart.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class GroupChartComponent extends ComponentUniqueId implements OnInit {\r\n @ViewChild('groupchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('groupcontainer', { static: true })\r\n groupcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n isHeaderVisible = true;\r\n legendVisible = true;\r\n isTransparentBackground = false;\r\n chartConfiguration: ChartConfiguration = {} as ChartConfiguration;\r\n objectKeys = Object.keys;\r\n\r\nprivate readonly defaultConfiguration: Partial<ChartConfiguration> = {\r\n \"margin\": {\r\n \"top\": 30,\r\n \"left\": 110,\r\n \"right\": 40,\r\n \"bottom\": 50\r\n },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n svgHeight: 70,\r\n numberOfYTicks: 5,\r\n legendJustified: true,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showValues: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n yAxisGrid: true,\r\n legendVisible: true,\r\n isYaxisLabelHidden: false,\r\n backgroundColor: '#FFFFFF',\r\n hideLegendOnTop: true,\r\n isXaxisColor: '#999999',\r\n labelOverlapMinorFix: true,\r\n noHoverEffect: true,\r\n noHoverDisplayData: true,\r\n showXaxisTop: true,\r\n howmanyBarDetailsToDisplay: 0,\r\n };\r\n\r\n uniqueId: any = this.getUniqueId();\r\n isZoomedOut = false;\r\n isDD1Open = false;\r\n isDD2Open = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() {}\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n );\r\n }\r\n\r\n onResized(event: ResizedEvent): void {\r\n setTimeout(() => {\r\n d3.select('#' + this.uniqueId).remove();\r\n this.initializegroupChart();\r\n }, 10);\r\n }\r\n\r\n isZoomOutSelected(isZoomOut: boolean, event: any): void {\r\n this.isZoomedOut = isZoomOut;\r\n this.onResized(event);\r\n }\r\n\r\n handleZoominZoomoutClick({ isZoomOut, event }): void {\r\n this.isZoomOutSelected(isZoomOut, event);\r\n }\r\n\r\n isLegendVisible(): boolean {\r\n return !!(\r\n this.chartData?.metaData?.colors &&\r\n Object.keys(this.chartData.metaData.colors).length > 1\r\n );\r\n }\r\n\r\n keepOrder = (a, b) => a;\r\n\r\n initializegroupChart(): void {\r\n this.mergeConfigurations();\r\n const chartContext = this.prepareChartData();\r\n const dimensions = this.calculateDimensions(chartContext);\r\n const scales = this.createScales(chartContext, dimensions);\r\n const svgElements = this.createSVGStructure(dimensions);\r\n\r\n this.renderAxes(svgElements, scales, chartContext, dimensions);\r\n this.renderBars(svgElements.svg, chartContext, scales, dimensions);\r\n this.renderLabels(svgElements, scales, chartContext, dimensions);\r\n this.renderTargetLine(svgElements, scales, chartContext, dimensions);\r\n this.renderLineGraph(svgElements.svg, chartContext, scales);\r\n }\r\n\r\n private mergeConfigurations(): void {\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n if (this.chartConfiguration.legendVisible !== undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\r\n if (this.chartConfiguration.isTransparentBackground !== undefined) {\r\n this.isTransparentBackground = this.chartConfiguration.isTransparentBackground;\r\n }\r\n }\r\n\r\n private prepareChartData() {\r\n const data = this.chartData.data;\r\n const metaData: ChartMetaData = this.chartData.metaData;\r\n const lineData = this.chartData.lineData;\r\n\r\n if (!metaData.colorAboveTarget) {\r\n metaData.colorAboveTarget = metaData.colors;\r\n }\r\n\r\n return {\r\n data,\r\n metaData,\r\n lineData,\r\n keyList: metaData.keyList,\r\n colorMap: metaData.colors,\r\n isRia: this.customChartConfiguration?.isRia || false,\r\n };\r\n }\r\n\r\n private calculateDimensions(chartContext: any) {\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const verticalstackedcontainer = d3.select(this.groupcontainerElt.nativeElement);\r\n const margin = this.chartConfiguration.margin;\r\n\r\n let width = this.calculateWidth(chartContainer, margin);\r\n let height = this.calculateHeight(verticalstackedcontainer, margin);\r\n\r\n const minHeight = 155;\r\n height = Math.max(height, minHeight);\r\n\r\n return { width, height, margin, chartContainer, verticalstackedcontainer };\r\n }\r\n\r\n private calculateWidth(chartContainer: any, margin: any): number {\r\n const containerWidth = parseInt(chartContainer.style('width'));\r\n const leftSvgWidth = margin.left + 20;\r\n const rightSvgWidth = 60;\r\n const baseWidth = containerWidth - leftSvgWidth - rightSvgWidth;\r\n const dataLength = this.chartData.data.length;\r\n let width = baseWidth;\r\n\r\n if (dataLength > 30 && this.isZoomedOut) {\r\n const multiplier = this.chartData.dropdownData1 ? 60 : 40;\r\n width = Math.max(width, dataLength * multiplier);\r\n }\r\n\r\n if (this.chartData.dropdownData2 && width < dataLength * 120 && this.isZoomedOut) {\r\n width = dataLength * 120;\r\n }\r\n\r\n if (dataLength > 8 && !this.isZoomedOut) {\r\n if (this.chartData.dropdownData2 && width < dataLength * 250) {\r\n width = dataLength * 250;\r\n } else {\r\n width = dataLength * 160;\r\n }\r\n }\r\n\r\n return width;\r\n }\r\n\r\nprivate calculateHeight(verticalstackedcontainer: any, margin: any): number {\r\n const containerHeight = parseInt(verticalstackedcontainer.style('height')) || 400;\r\n let height;\r\n\r\n if (this.chartConfiguration.isFullScreen) {\r\n height = this.chartConfiguration.svgHeight || containerHeight;\r\n } else {\r\n // FIXED: Use percentage of container height more reliably\r\n const svgHeightPercentage = this.chartConfiguration.svgHeight || 70;\r\n height = (containerHeight * svgHeightPercentage) / 100;\r\n }\r\n\r\n // FIXED: Apply margin adjustments consistently\r\n height = height - margin.top - margin.bottom;\r\n\r\n // FIXED: Additional adjustments for headers\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n height -= 130;\r\n } else if (this.isHeaderVisible) {\r\n height -= 100;\r\n }\r\n\r\n // FIXED: Add the extra 50px you wanted\r\n height += 50;\r\n\r\n return Math.max(height, 150); // Ensure minimum height\r\n}\r\n\r\nprivate createScales(chartContext: any, dimensions: any) {\r\n const { data, metaData, lineData, keyList } = chartContext;\r\n const { width, height, margin } = dimensions;\r\n const leftAndRightSpaces = 50;\r\n const rightSvgWidth = 60;\r\n\r\n const groups = d3.map(data, (d) => d.name).keys();\r\n\r\n let x: any;\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n x = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .align(0.5)\r\n .padding(0.5)\r\n .domain(data.map((d: any) => d.name.toLowerCase()));\r\n } else {\r\n x = d3\r\n .scaleBand()\r\n .domain(groups)\r\n .range([leftAndRightSpaces, width - rightSvgWidth - leftAndRightSpaces])\r\n .padding(0.3);\r\n }\r\n\r\n const xScaleFromOrigin = d3.scaleBand().domain(groups).range([0, width - rightSvgWidth]);\r\n\r\n const xSubgroup = d3.scaleBand().domain(keyList).range([0, x.bandwidth()]);\r\n\r\n // FIXED: Improved max value calculation that considers height\r\n const maxValue = this.calculateMaxValue(data, keyList, height);\r\n const y = d3.scaleLinear().domain([0, maxValue]).nice().rangeRound([height, 0]);\r\n\r\n let lineYscale = null;\r\n if (lineData) {\r\n lineYscale = this.createLineYScale(lineData, height);\r\n }\r\n\r\n const color = d3.scaleOrdinal().domain(keyList).range(Object.values(metaData.colors));\r\n\r\n return {\r\n x,\r\n xScaleFromOrigin,\r\n xSubgroup,\r\n y,\r\n lineYscale,\r\n color,\r\n leftAndRightSpaces,\r\n rightSvgWidth,\r\n };\r\n}\r\n\r\nprivate calculateMaxValue(data: any[], keyList: string[], height: number): number {\r\n let maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key])) || 0;\r\n\r\n // FIXED: Better handling for zero values\r\n if (maxValue === 0) {\r\n maxValue = this.chartData.targetLineData\r\n ? this.chartData.targetLineData.target + 20\r\n : 100;\r\n }\r\n\r\n // FIXED: Scale based on available height\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue *= this.chartConfiguration.customYscale;\r\n } else if (height > 400) {\r\n // Auto-scale for larger heights\r\n maxValue *= 1.2;\r\n }\r\n\r\n if (this.chartData.targetLineData && maxValue < this.chartData.targetLineData.target) {\r\n const target = this.chartData.targetLineData.target;\r\n maxValue = maxValue < 10 && target < 10 ? target + 3 : target + (target * 0.2); // 20% buffer\r\n }\r\n\r\n return maxValue;\r\n}\r\n\r\n private createLineYScale(lineData: any[], height: number) {\r\n let maxLineValue = d3.max(lineData, (d) => +d.value) || 0;\r\n maxLineValue *= this.chartConfiguration.customYscale || 1;\r\n\r\n let minLineValue = d3.min(lineData, (d) => +d.value) || 0;\r\n if (maxLineValue > 0) minLineValue -= 3;\r\n if (minLineValue > 0) minLineValue = 0;\r\n\r\n return d3.scaleLinear().domain([minLineValue, maxLineValue]).range([height, minLineValue]);\r\n }\r\n\r\nprivate createSVGStructure(dimensions: any) {\r\n const { chartContainer, height, margin } = dimensions;\r\n const rightSvgWidth = 60;\r\n \r\n // FIXED: Calculate total height including margins and extra space\r\n const totalHeight = height + margin.top + margin.bottom; // Added extra 60px\r\n\r\n const outerContainer = chartContainer\r\n .append('div')\r\n .attr('id', this.uniqueId)\r\n .attr('class', 'outer-container')\r\n .style('width', '100%')\r\n .style('height', `${totalHeight}px`)\r\n .style('overflow', 'hidden')\r\n .style('padding-left', '0') // Remove left padding from outer container\r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left', '0') // Remove left margin\r\n .style('position', 'relative');\r\n\r\n const leftSvgWidth = margin.left + 20;\r\n\r\n // FIXED: Y-axis SVG with proper height\r\n const svgYAxisLeft = outerContainer\r\n .append('svg')\r\n .attr('width', leftSvgWidth)\r\n .attr('height', totalHeight)\r\n .style('position', 'absolute')\r\n .style('left', '0')\r\n .style('top', '0')\r\n .style('z-index', 2) // Increased z-index to ensure it stays above\r\n .append('g')\r\n .attr('transform', `translate(${margin.left + 5},${margin.top})`);\r\n\r\n const svgYAxisRight = outerContainer\r\n .append('svg')\r\n .attr('width', rightSvgWidth)\r\n .attr('height', totalHeight)\r\n .style('position', 'absolute')\r\n .style('right', '40px')\r\n .style('top', '0')\r\n .style('z-index', 2) // Increased z-index\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n // FIXED: Inner container starts AFTER the y-axis labels\r\nconst innerContainer = outerContainer\r\n .append('div')\r\n .attr('class', 'inner-container')\r\n .style('width', `calc(100% - ${leftSvgWidth}px)`)\r\n .style('height', `${totalHeight}px`)\r\n .style('margin-left', `${leftSvgWidth - 15}px`) // Good adjustment for the 15px offset\r\n .style('overflow-x', 'auto')\r\n .style('overflow-y', 'hidden')\r\n .style('position', 'relative'); // Add this for better positioning context\r\n\r\n // FIXED: Main SVG with increased height and proper positioning\r\n const svg = innerContainer\r\n .append('svg')\r\n .attr('width', dimensions.width)\r\n .attr('height', totalHeight)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n return { outerContainer, svgYAxisLeft, svgYAxisRight, svg, totalHeight };\r\n}\r\n\r\n private renderAxes(svgElements: any, scales: any, chartContext: any, dimensions: any): void {\r\n const { svg, svgYAxisLeft, svgYAxisRight } = svgElements;\r\n const { x, xScaleFromOrigin, y, lineYscale } = scales;\r\n const { height } = dimensions;\r\n const { metaData, lineData, keyList } = chartContext;\r\n\r\n this.renderXAxis(svg, x, xScaleFromOrigin, height, chartContext, keyList);\r\n this.renderYAxis(svg, svgYAxisLeft, svgYAxisRight, y, dimensions);\r\n\r\n if (this.chartConfiguration.yAxisGrid) {\r\n this.renderYAxisGrid(svg, y, dimensions.width);\r\n }\r\n\r\n if (this.chartConfiguration.isXgridBetweenLabels) {\r\n this.renderXAxisGrid(svg, x, height);\r\n }\r\n\r\n if (lineData && this.chartConfiguration.showLineChartAxis && lineYscale) {\r\n this.renderLineYAxis(svgYAxisRight, lineYscale);\r\n }\r\n }\r\n\r\nprivate renderXAxis(\r\n svg: any,\r\n x: any,\r\n xScaleFromOrigin: any,\r\n height: number,\r\n chartContext: any,\r\n keyList: string[]\r\n ): void {\r\n const { data, metaData } = chartContext;\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n const xAxis = svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${height})`)\r\n .call(d3.axisBottom(x).tickSize(0));\r\n\r\n // FIXED: Show X-axis line\r\n xAxis\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color, #000000)')\r\n .style('stroke-width', '1px')\r\n .style('display', 'block');\r\n\r\n xAxis.selectAll('g.tick line').remove();\r\n\r\n const textClass = 'lib-xaxis-labels-texts-drilldown';\r\n const textSelection = xAxis\r\n .selectAll('g.tick text')\r\n .attr('class', textClass)\r\n .style('fill', 'var(--chart-text-color, #666666)')\r\n .style('font-size', '11px');\r\n } else {\r\n this.renderMultiChartXAxis(svg, x, height, data, metaData);\r\n }\r\n\r\n if (this.chartConfiguration.xLabelsOnSameLine) {\r\n this.renderXLabelsOnSameLine(svg, data, metaData);\r\n }\r\n\r\n // Bottom x-axis\r\n const xAxis2 = svg\r\n .append('g')\r\n .attr('class', 'x2 axis2')\r\n .attr('transform', `translate(0,${height})`)\r\n .style('color', '#000')\r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0));\r\n\r\n xAxis2\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color, #000000)')\r\n .style('stroke-width', '1px')\r\n .attr('fill', 'none');\r\n\r\n svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\r\n\r\n if (this.isZoomedOut) {\r\n svg.selectAll('.lib-xaxis-labels-texts-drilldown').attr('class', 'lib-display-hidden');\r\n }\r\n }\r\n\r\n private renderMultiChartXAxis(svg: any, x: any, height: number, data: any[], metaData: any): void {\r\n let alternate_text = false;\r\n const short_tick_length_bg = 5;\r\n const long_tick_length_bg = 30;\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${height})`)\r\n .call(d3.axisBottom(x).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').attr('y2', () => {\r\n if (alternate_text && !this.chartConfiguration.isNoAlternateXaxisText) {\r\n alternate_text = false;\r\n return long_tick_length_bg - 7;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg - 4;\r\n }\r\n });\r\n\r\n alternate_text = false;\r\n svg.selectAll('g.x1.axis1 g.tick text').attr('class', 'lib-xaxis-labels-texts-weeklycharts').attr('y', () => {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length_bg;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length_bg;\r\n }\r\n });\r\n }\r\n\r\n private renderXLabelsOnSameLine(svg: any, data: any[], metaData: any): void {\r\n const short_tick_length_bg = 5;\r\n const long_tick_length_bg = 30;\r\n\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', short_tick_length_bg)\r\n .text((d) => {\r\n const isValueToBeIgnored = data.some(\r\n (indiv: any) =>\r\n indiv.name.toLowerCase() === d.trim().toLowerCase() &&\r\n indiv[metaData.keyList[0]] === -1\r\n );\r\n if (isValueToBeIgnored) return '';\r\n\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(0, d.indexOf(' ')).toLowerCase();\r\n }\r\n return d.toLowerCase();\r\n });\r\n\r\n svg\r\n .selectAll('g.x1.axis1 g.tick')\r\n .append('text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', long_tick_length_bg)\r\n .attr('fill', 'currentColor')\r\n .text((d) => {\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(d.indexOf(' ')).toLowerCase();\r\n }\r\n return '';\r\n });\r\n }\r\n\r\n private renderYAxis(svg: any, svgYAxisLeft: any, svgYAxisRight: any, y: any, dimensions: any): void {\r\n // Main Y-axis in chart area (hidden)\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n // FIXED: Left Y-axis with visible line\r\n const yAxisLeft = d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickFormat(this.chartConfiguration.yAxisLabelFomatter);\r\n\r\n const yAxisGroup = svgYAxisLeft\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxisLeft);\r\n\r\n // FIXED: Show Y-axis vertical line\r\n yAxisGroup\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color, #000000)')\r\n .style('stroke-width', '1px')\r\n .style('display', 'block');\r\n\r\n // FIXED: Position Y-axis values with proper spacing\r\n yAxisGroup\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color, #666666)')\r\n .style('font-size', '11px')\r\n .style('font-weight', '400')\r\n .attr('x', -6) // FIXED: Small gap from axis line\r\n .attr('text-anchor', 'end')\r\n .attr('dy', '0.32em');\r\n\r\n // Right Y-axis (hidden)\r\n svgYAxisRight\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n this.applyAxisVisibilitySettings();\r\n }\r\n\r\nprivate applyAxisVisibilitySettings(): void {\r\n if (this.chartConfiguration.isXaxisLabelHidden) {\r\n d3.selectAll('g.lib-line-x-axis-text > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n if (this.chartConfiguration.isYaxisLabelHidden) {\r\n d3.selectAll('.yaxis-dashed > g > text').attr('class', 'lib-display-hidden');\r\n // FIXED: Don't hide the Y-axis label element\r\n d3.selectAll('.lib-ylabel-visible').style('display', 'block');\r\n }\r\n if (this.chartConfiguration.isYaxisHidden) {\r\n d3.selectAll('.yaxis-dashed').attr('class', 'lib-display-hidden');\r\n // FIXED: Keep Y-axis label visible\r\n d3.selectAll('.lib-ylabel-visible').style('display', 'block');\r\n }\r\n if (this.chartConfiguration.isYaxisDashed) {\r\n d3.selectAll('.yaxis-dashed .domain').style('stroke-dasharray', '5 5').style('color', '#999999');\r\n }\r\n }\r\n\r\nprivate renderYAxisGrid(svg: any, y: any, width: number): void {\r\n svg\r\n .append('g')\r\n .attr('class', 'y-axis-grid')\r\n .call(\r\n d3.axisLeft(y)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat('')\r\n )\r\n .style('color', '#535353ff') // FIXED: Lighter grid\r\n .style('opacity', '0.7')\r\n .style('stroke-dasharray', 'none')\r\n .call((g) => g.select('.domain').remove())\r\n .selectAll('line')\r\n .style('stroke-width', '0.5px');\r\n }\r\n\r\n private renderXAxisGrid(svg: any, x: any, height: number): void {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid')\r\n .attr('transform', `translate(${x.bandwidth() / 2},${height})`)\r\n .call(d3.axisBottom(x).tickSize(-height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-grid-color, #999999)')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n private renderLineYAxis(svgYAxisRight: any, lineYscale: any): void {\r\n const yLineAxis = d3\r\n .axisRight(lineYscale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.yLineAxisLabelFomatter);\r\n\r\n svgYAxisRight\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text1')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yLineAxis);\r\n }\r\n\r\n private renderBars(svg: any, chartContext: any, scales: any, dimensions: any): void {\r\n const { data, metaData, keyList, isRia } = chartContext;\r\n const { x, xSubgroup, y } = scales;\r\n const { height } = dimensions;\r\n\r\n const state = svg\r\n .append('g')\r\n .selectAll('.state')\r\n .data(data)\r\n .enter()\r\n .append('g')\r\n .attr('transform', (d) => `translate(${x(d.name)},0)`);\r\n\r\n state\r\n .selectAll('rect')\r\n .data((d) => this.prepareBarData(d, keyList))\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', (d) => this.handleBarClick(d, metaData))\r\n .attr('x', (d) => {\r\n const barWidth = this.getBarWidth(d, data, x, xSubgroup);\r\n const bandWidth = x.bandwidth();\r\n return (bandWidth - barWidth) / 2;\r\n })\r\n .attr('y', (d) => {\r\n const value = d.value === -1 ? 0 : d.value;\r\n return y(value);\r\n })\r\n .attr('width', (d) => this.getBarWidth(d, data, x, xSubgroup))\r\n .attr('height', (d) => {\r\n const value = d.value === -1 ? 0 : d.value;\r\n return height - y(value);\r\n })\r\n .style('cursor', (d) => (metaData.hasDrillDown && !isRia ? 'pointer' : 'default'))\r\n .attr('fill', (d) => this.getBarColor(d, metaData));\r\n\r\n if (!isRia && (this.chartConfiguration.displayTitleOnTop || (!this.chartConfiguration.textsOnBar && !this.chartConfiguration.displayTitleOnTop))) {\r\n state.selectAll('rect').on('mouseout', (d, i) => this.handleMouseOut(svg)).on('mouseover', (d, i) => this.handleMouseOver(svg, d, data, metaData, x, y, scales.leftAndRightSpaces));\r\n }\r\n\r\n if (this.chartConfiguration.textsOnBar && !this.isZoomedOut) {\r\n this.renderBarTexts(state, data, metaData, keyList, x, xSubgroup, y, isRia, svg);\r\n }\r\n\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n }\r\n\r\n private prepareBarData(d: any, keyList: string[]): any[] {\r\n return keyList.map((key) => ({ key, value: d[key], name: d.name }));\r\n }\r\n\r\n private handleBarClick(d: any, metaData: any): void {\r\n if (d.key === 'Target') return;\r\n if (\r\n !metaData.barWithoutClick?.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) && !metaData.barWithoutClick.includes(d?.key))\r\n ) {\r\n this.handleClick(d);\r\n }\r\n }\r\n\r\n private calculateDrilldownBarX(d: any, data: any[], x: any): number {\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n return tempScale ? tempScale(d.key) : 0;\r\n }\r\n\r\n private adjustDrilldownScale(tempScale: any, data: any[], x: any): any {\r\n if (this.chartData.data.length === 1) {\r\n const keysLength = Object.keys(this.chartData.data[0]).length;\r\n const offset = keysLength === 2 ? 200 : 300;\r\n tempScale.range([\r\n 0 + (x.bandwidth() - offset) / 2,\r\n x.bandwidth() - (x.bandwidth() - offset) / 2,\r\n ]);\r\n } else {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 125) / 2,\r\n x.bandwidth() - (x.bandwidth() - 125) / 2,\r\n ]);\r\n }\r\n return tempScale;\r\n }\r\n\r\n private getBarWidth(d: any, data: any[], x: any, xSubgroup: any): number {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n return tempScale ? tempScale.bandwidth() : 0;\r\n }\r\n return xSubgroup.bandwidth();\r\n }\r\n\r\n private getBarHeight(d: any, y: any, height: number): number {\r\n if (d.value === -1) return height - y(0);\r\n if (d.value) return height - y(d.value);\r\n return height - y(0);\r\n }\r\n\r\n private getBarColor(d: any, metaData: any): string {\r\n if (\r\n d.value &&\r\n this.chartData.targetLineData &&\r\n d.value >= parseInt(this.chartData.targetLineData.target) &&\r\n this.chartData.metaData.colorAboveTarget\r\n ) {\r\n return this.chartData.metaData.colorAboveTarget[d.key];\r\n }\r\n return this.chartData.metaData.colors[d.key];\r\n }\r\n\r\n private renderBarTexts(\r\n state: any,\r\n data: any[],\r\n metaData: any,\r\n keyList: string[],\r\n x: any,\r\n xSubgroup: any,\r\n y: any,\r\n isRia: boolean,\r\n svg: any\r\n ): void {\r\n state\r\n .selectAll('text')\r\n .data((d) => this.prepareBarData(d, keyList))\r\n .enter()\r\n .append('text')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text((d) => this.getBarTextLabel(d))\r\n .style('fill', '#000')\r\n .style('font-weight', 'bold')\r\n .style('font-size', () => this.getBarTextFontSize())\r\n .attr('transform', (d) => this.getBarTextTransform(d, data, x, xSubgroup, y))\r\n .on('click', (d) => this.handleBarClick(d, metaData));\r\n\r\n if (!isRia) {\r\n state\r\n .selectAll('.lib-data-labels-weeklycharts')\r\n .on('mouseout', (d, i) => this.handleMouseOut(svg))\r\n .on('mouseover', (d, i) =>\r\n this.handleMouseOver(svg, d, data, metaData, x, y, x.bandwidth())\r\n );\r\n }\r\n }\r\n\r\n private getBarTextLabel(d: any): string {\r\n if (!d.key || !d.value) return '';\r\n return d.key.length > 20 ? d.key.substring(0, 17) + '...' : d.key;\r\n }\r\n\r\n private getBarTextFontSize(): string {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) return '18px';\r\n if (window.innerWidth < 1400) return '10px';\r\n return '14px';\r\n }\r\n return '14px';\r\n }\r\n\r\n private getBarTextTransform(d: any, data: any[], x: any, xSubgroup: any, y: any): string {\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n\r\n if (this.chartConfiguration.textAlwaysHorizontal) {\r\n return `translate(${xSubgroup(d.key)},${y(d.value) - 3})`;\r\n }\r\n\r\n if (tempScale && !isNaN(tempScale(d.key))) {\r\n return `translate(${tempScale(d.key) + tempScale.bandwidth() * 0.55},${y(0) - 10}) rotate(270)`;\r\n }\r\n return 'translate(0,0)';\r\n }\r\n\r\n private handleMouseOver(\r\n svg: any,\r\n d: any,\r\n data: any[],\r\n metaData: any,\r\n x: any,\r\n y: any,\r\n leftAndRightSpaces: number\r\n ): void {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n\r\n let tempScale;\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n tempScale = this.adjustDrilldownScale(tempScale, data, x);\r\n }\r\n }\r\n });\r\n\r\n const foreignObject = svg\r\n .append('foreignObject')\r\n .attr('x', () => this.calculateTooltipX(d, x, tempScale, metaData, leftAndRightSpaces))\r\n .attr('y', () => y(d.value) - 43)\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('width', () => this.calculateTooltipWidth(tempScale, metaData, leftAndRightSpaces))\r\n .attr('height', 40);\r\n\r\n foreignObject\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(() => this.getTooltipHTML(d, metaData));\r\n }\r\n\r\n private calculateTooltipX(\r\n d: any,\r\n x: any,\r\n tempScale: any,\r\n metaData: any,\r\n leftAndRightSpaces: number\r\n ): number {\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return x(d.name) + tempScale(d.key) + tempScale.bandwidth() / 2 - 90;\r\n }\r\n return (\r\n x(d.name) +\r\n tempScale(d.key) -\r\n (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 +\r\n tempScale.bandwidth() / 2\r\n );\r\n }\r\n return (\r\n x(d.name) +\r\n tempScale(d.key) -\r\n (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 +\r\n tempScale.bandwidth() / 2\r\n );\r\n }\r\n\r\n private calculateTooltipWidth(tempScale: any, metaData: any, leftAndRightSpaces: number): string {\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return '180px';\r\n }\r\n return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n }\r\n return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n }\r\n\r\n private getTooltipHTML(d: any, metaData: any): string {\r\n const dataType = metaData.dataType || '';\r\n if (!this.isZoomedOut) {\r\n return `<span class=\"title-bar-name\">${d.name}</span><span class=\"title-bar-value\"><span>${d.value}</span>${dataType}</span>`;\r\n } else {\r\n const tempKey = d.name.length <= 8 ? d.name : d.name.substring(0, 5) + '...';\r\n return `<span class=\"title-bar-name\">${tempKey}:${d.value}${dataType}</span><span class=\"title-bar-value\">${d.name}</span>`;\r\n }\r\n }\r\n\r\n private handleMouseOut(svg: any): void {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n\r\n private renderLabels(svgElements: any, scales: any, chartContext: any, dimensions: any): void {\r\n const { svg, svgYAxisLeft, svgYAxisRight } = svgElements;\r\n const { metaData } = chartContext;\r\n const { width, height, margin } = dimensions;\r\n\r\n if (metaData.yLabel) {\r\n this.renderYAxisLabel(svgYAxisLeft, metaData.yLabel, height, margin);\r\n }\r\n\r\n if (metaData.xLabel) {\r\n this.renderXAxisLabel(svg, metaData.xLabel, width, height, margin);\r\n }\r\n\r\n if (metaData.lineyLabel) {\r\n this.renderLineYAxisLabel(svgYAxisRight, metaData.lineyLabel);\r\n }\r\n }\r\n\r\nprivate renderYAxisLabel(svgYAxisLeft: any, yLabel: string, height: number, margin: any): void {\r\n // FIXED: Proper Y-axis label with correct positioning\r\n svgYAxisLeft\r\n .append('text')\r\n .attr('class', 'lib-axis-group-label lib-ylabel-visible')\r\n .attr('style', this.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', -margin.left)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', '13px')\r\n .style('fill', 'var(--chart-text-color, #666666)');\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n svgYAxisLeft.selectAll('.lib-axis-group-label').text(yLabel);\r\n } else {\r\n svgYAxisLeft\r\n .selectAll('.lib-axis-group-label')\r\n .attr('class', 'lib-ylabel-weeklyCharts lib-ylabel-visible')\r\n .text(yLabel.toLowerCase());\r\n }\r\n }\r\n\r\nprivate renderXAxisLabel(svg: any, xLabel: string, width: number, height: number, margin: any): void {\r\n const isAcronym = this.isAcronym(xLabel.replace(/[^A-Za-z]/g, ''));\r\n\r\n let baseClass = 'lib-axis-group-label';\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n baseClass += ' lib-xlabel-drilldowncharts';\r\n } else if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n baseClass += ' lib-xlabel-weeklyCharts';\r\n } else {\r\n baseClass += ' lib-axis-waterfall-label';\r\n }\r\n\r\n svg\r\n .append('text')\r\n .attr('class', baseClass)\r\n .attr('style', this.chartConfiguration.xAxisCustomlabelStyles)\r\n // FIXED: Adjusted for reduced bottom margin\r\n .attr('transform', `translate(${width / 2},${height + 32})`)\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color, #666666)')\r\n .style('font-size', '13px')\r\n .text(isAcronym ? xLabel.toUpperCase() : xLabel.toLowerCase())\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize');\r\n }\r\n\r\n private isAcronym(label: string): boolean {\r\n return (\r\n (label.length <= 4 && /^[A-Z]+$/.test(label)) ||\r\n (label === label.toUpperCase() && /[A-Z]/.test(label))\r\n );\r\n }\r\n\r\n private renderLineYAxisLabel(svgYAxisRight: any, lineyLabel: string): void {\r\n svgYAxisRight\r\n .append('text')\r\n .attr('class', 'lib-axis-group-label lib-line-axis')\r\n .attr('style', this.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'translate(0,0) rotate(90)')\r\n .attr('y', -100)\r\n .attr('x', 100)\r\n .attr('dy', '5em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', 'smaller')\r\n .text(lineyLabel);\r\n }\r\n\r\n private renderTargetLine(svgElements: any, scales: any, chartContext: any, dimensions: any): void {\r\n if (!this.chartData.targetLineData) return;\r\n\r\n const { svg, svgYAxisRight } = svgElements;\r\n const { y } = scales;\r\n const { width } = dimensions;\r\n const { metaData } = chartContext;\r\n const targetData: TargetLineData = this.chartData.targetLineData;\r\n\r\n const yZero = y(targetData.target);\r\n\r\n svg\r\n .append('line')\r\n .attr('x1', 0)\r\n .attr('x2', width)\r\n .attr('y1', yZero)\r\n .attr('y2', yZero)\r\n .style('stroke-dasharray', '5 5')\r\n .style('stroke', targetData.color);\r\n\r\n const rightSvgWidth = 60;\r\n svgYAxisRight\r\n .append('foreignObject')\r\n .attr('transform', `translate(0,${yZero - 30})`)\r\n .attr('width', rightSvgWidth)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'target-display')\r\n .style('color', 'var(--chart-text-color)')\r\n .html(() => {\r\n const dataType = metaData.dataType || '';\r\n const targetName = targetData.targetName || 'target';\r\n return `<div>${targetName}</div><div>${targetData.target}${dataType}</div>`;\r\n });\r\n }\r\n\r\n private renderLineGraph(svg: any, chartContext: any, scales: any): void {\r\n const { lineData, metaData } = chartContext;\r\n if (!lineData) return;\r\n\r\n const { x, lineYscale } = scales;\r\n\r\n svg\r\n .append('path')\r\n .datum(lineData)\r\n .attr('fill', 'none')\r\n .attr('stroke', this.chartConfiguration.lineGraphColor)\r\n .attr('stroke-width', 1.5)\r\n .attr(\r\n 'd',\r\n d3\r\n .line()\r\n .x((d: any) => x(d.name) + x.bandwidth() / 2)\r\n .y((d: any) => lineYscale(d.value))\r\n );\r\n\r\n const dot = svg\r\n .selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', (d) => this.handleBarClick(d, metaData));\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', this.chartConfiguration.lineGraphColor)\r\n .attr('stroke', 'none')\r\n .attr('cx', (d: any) => x(d.name) + x.bandwidth() / 2)\r\n .attr('cy', (d: any) => lineYscale(d.value))\r\n .style('cursor', 'pointer')\r\n .attr('r', 3);\r\n\r\n if (this.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dot')\r\n .attr('color', this.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: .85em')\r\n .attr('x', (d: any) => x(d.name) + x.bandwidth() / 2)\r\n .attr('y', (d: any) => lineYscale(d.value))\r\n .attr('dy', '-1em')\r\n .text((d: any) => this.chartConfiguration.labelFormatter(d.value));\r\n }\r\n }\r\n\r\n handleClick(d: any): void {\r\n if (this.chartData.metaData.hasDrillDown || d?.toggleFrom) {\r\n this.clickEvent.emit(d);\r\n }\r\n }\r\n\r\n handleHeaderMenuClick(id: string): void {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n handleDD1Click(event: any): void {\r\n this.isDD1Open = true;\r\n this.isDD2Open = false;\r\n }\r\n\r\n handleDD2Click(event: any): void {\r\n this.isDD2Open = true;\r\n this.isDD1Open = false;\r\n }\r\n\r\n handleCompareByFilterSelection(event: any): void {\r\n this.clickEvent.emit(event);\r\n }\r\n}","<div\r\n #groupcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\"\r\n>\r\n\r\n<div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n <lib-chart-header-v3\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (compareByFilterSelection)=\"handleCompareByFilterSelection($event)\"\r\n (zoomInZoomOutClick)=\"handleZoominZoomoutClick($event)\"\r\n ></lib-chart-header-v3>\r\n</div>\r\n\r\n <lib-chart-header-v1\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [isria]=\"customChartConfiguration.isRia\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n *ngIf=\"isHeaderVisible\"\r\n></lib-chart-header-v1>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"groupchartcontainer\"\r\n #groupchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\ninterface TableMetaData {\r\n title?: string;\r\n isPaginationHidden?: boolean;\r\n isHeaderVisible?: boolean;\r\n isSearchHidden?: boolean;\r\n isHeaderAlignedToCenter?: boolean;\r\n isHeaderSortHidden?: boolean;\r\n isFirstColumnHeaderHidden?: boolean;\r\n isAllAlignedToRight?: boolean;\r\n hasDrillDown?: boolean;\r\n headerColor?: string;\r\n headerTextColor?: string;\r\n}\r\n\r\ninterface TableData {\r\n data: any[];\r\n metaData: TableMetaData;\r\n highlightedTexts?: string[];\r\n}\r\n\r\ntype SortDirection = 'asc' | 'desc';\r\n\r\n@Component({\r\n selector: 'lib-ax-table',\r\n templateUrl: './ax-table.component.html',\r\n styleUrls: ['./ax-table.component.less', '../common-styles.less'],\r\n})\r\nexport class AxTableComponent implements OnInit {\r\n @Input() tableData!: TableData;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n\r\n isHeaderVisible = true;\r\n isUserSort = false;\r\n\r\n tableHeadList: string[] = [];\r\n itemList: any[] = [];\r\n masterList: any[] = [];\r\n currentList: any[] = [];\r\n\r\n readonly DEFAULT_PAGE_SIZE = 10;\r\n readonly MAX_PAGES_TO_SHOW = 5;\r\n \r\n currentPage = 1;\r\n pageSize = this.DEFAULT_PAGE_SIZE;\r\n totalItems = 0;\r\n totalPages = 1;\r\n goToPageNumber = 1;\r\n pagesToShow: number[] = [];\r\n\r\n sortDirection: SortDirection = 'asc';\r\n sortColumn = '';\r\n\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {};\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n this.initializeComponent();\r\n }\r\n\r\n private initializeComponent(): void {\r\n this.extractTableHeaders();\r\n this.mergeConfigurations();\r\n this.initializeData();\r\n this.updateHeaderVisibility();\r\n }\r\n\r\n private extractTableHeaders(): void {\r\n if (this.tableData?.data?.length > 0) {\r\n this.tableHeadList = Object.keys(this.tableData.data[0]);\r\n }\r\n }\r\n\r\n private mergeConfigurations(): void {\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n }\r\n\r\n private initializeData(): void {\r\n this.masterList = [...this.tableData.data];\r\n this.itemList = [...this.masterList];\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n\r\n if (this.tableData.metaData.isPaginationHidden) {\r\n this.currentList = this.itemList;\r\n } else {\r\n this.loadPage();\r\n }\r\n }\r\n\r\n private updateHeaderVisibility(): void {\r\n if (this.tableData.metaData.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.tableData.metaData.isHeaderVisible;\r\n }\r\n }\r\n\r\n private loadPage(): void {\r\n const startIndex = (this.currentPage - 1) * this.pageSize;\r\n const endIndex = startIndex + this.pageSize;\r\n this.currentList = this.itemList.slice(startIndex, endIndex);\r\n }\r\n\r\n private calculateTotalPages(): void {\r\n this.totalPages = Math.ceil(this.totalItems / this.pageSize);\r\n this.goToPageNumber = this.currentPage;\r\n }\r\n\r\n private generatePagesToShow(): void {\r\n this.pagesToShow = [];\r\n \r\n let startPage = Math.max(\r\n 1,\r\n this.currentPage - Math.floor(this.MAX_PAGES_TO_SHOW / 2)\r\n );\r\n let endPage = Math.min(\r\n this.totalPages,\r\n startPage + this.MAX_PAGES_TO_SHOW - 1\r\n );\r\n\r\n if (endPage - startPage + 1 < this.MAX_PAGES_TO_SHOW) {\r\n startPage = Math.max(1, endPage - this.MAX_PAGES_TO_SHOW + 1);\r\n }\r\n\r\n for (let i = startPage; i <= endPage; i++) {\r\n this.pagesToShow.push(i);\r\n }\r\n }\r\n\r\n private onPaginationChange(): void {\r\n this.loadPage();\r\n this.goToPageNumber = this.currentPage;\r\n this.generatePagesToShow();\r\n }\r\n\r\n goToFirstPage(): void {\r\n if (this.currentPage !== 1) {\r\n this.currentPage = 1;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToPreviousPage(): void {\r\n if (this.currentPage > 1) {\r\n this.currentPage--;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToNextPage(): void {\r\n if (this.currentPage < this.totalPages) {\r\n this.currentPage++;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToLastPage(): void {\r\n if (this.currentPage !== this.totalPages) {\r\n this.currentPage = this.totalPages;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToPage(page: number): void {\r\n if (page >= 1 && page <= this.totalPages && page !== this.currentPage) {\r\n this.currentPage = page;\r\n this.onPaginationChange();\r\n }\r\n }\r\n\r\n goToSpecificPage(): void {\r\n if (this.goToPageNumber == null) {\r\n this.goToPageNumber = this.currentPage;\r\n return;\r\n }\r\n\r\n const pageNum = parseInt(this.goToPageNumber.toString(), 10);\r\n\r\n if (isNaN(pageNum) || pageNum < 1) {\r\n this.goToPageNumber = 1;\r\n } else if (pageNum > this.totalPages) {\r\n this.goToPageNumber = this.totalPages;\r\n }\r\n\r\n this.currentPage = this.goToPageNumber;\r\n this.onPaginationChange();\r\n }\r\n\r\n sortByColumn(columnId: string): void {\r\n if (columnId === 'viewDetails' || this.tableData.metaData.isHeaderSortHidden) {\r\n return;\r\n }\r\n\r\n this.isUserSort = true;\r\n\r\n if (columnId !== this.sortColumn) {\r\n this.sortColumn = columnId;\r\n this.sortDirection = 'asc';\r\n } else {\r\n this.sortDirection = this.sortDirection === 'asc' ? 'desc' : 'asc';\r\n }\r\n\r\n this.performSort(columnId);\r\n this.resetPaginationAfterSort();\r\n }\r\n\r\n private performSort(columnId: string): void {\r\n this.itemList.sort((a, b) => {\r\n const comparison = this.compareValues(a[columnId], b[columnId]);\r\n return this.sortDirection === 'asc' ? comparison : -comparison;\r\n });\r\n }\r\n\r\n private compareValues(v1: any, v2: any): number {\r\n const num1 = parseFloat(v1);\r\n const num2 = parseFloat(v2);\r\n\r\n if (!isNaN(num1) && !isNaN(num2)) {\r\n return num1 - num2;\r\n }\r\n\r\n return v1 < v2 ? -1 : v1 > v2 ? 1 : 0;\r\n }\r\n\r\n private resetPaginationAfterSort(): void {\r\n this.currentPage = 1;\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n this.loadPage();\r\n }\r\n\r\n checkIfColumnCurrentlyBeingSorted(columnId: string): boolean {\r\n return this.sortColumn === columnId;\r\n }\r\n\r\n getSortDirection(): string {\r\n return this.sortDirection === 'asc' ? 'arrow-up' : 'arrow-down';\r\n }\r\n\r\n onEnter(event: Event): void {\r\n const searchText = (event.target as HTMLInputElement).value;\r\n \r\n this.itemList = this.filterItems(searchText);\r\n this.resetPaginationAfterSearch();\r\n }\r\n\r\n private filterItems(searchText: string): any[] {\r\n if (!searchText) {\r\n return [...this.masterList];\r\n }\r\n\r\n const lowerSearchText = searchText.toLowerCase();\r\n\r\n return this.masterList.filter(item => \r\n this.tableHeadList.some(header => {\r\n const value = item[header];\r\n if (value == null) return false;\r\n \r\n const searchableString = String(value).toLowerCase();\r\n return searchableString.includes(lowerSearchText);\r\n })\r\n );\r\n }\r\n\r\n private resetPaginationAfterSearch(): void {\r\n this.currentPage = 1;\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n this.loadPage();\r\n }\r\n\r\n getWidthById(columnId: string, index: number): string {\r\n if (index === 0) {\r\n return '10%'; // or '80px' for fixed width\r\n }\r\n \r\n if (this.tableHeadList.length === 3) {\r\n return index === 1 ? '60%' : '20%';\r\n }\r\n \r\n const width = 100 / this.tableHeadList.length;\r\n return `${width}%`;\r\n }\r\n\r\n preventNegative(event: KeyboardEvent): void {\r\n const invalidKeys = ['-', '+', 'e', 'E'];\r\n if (invalidKeys.includes(event.key)) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n validateNumberInput(event: KeyboardEvent): boolean {\r\n const charCode = event.which || event.keyCode;\r\n if (charCode > 31 && (charCode < 48 || charCode > 57)) {\r\n return false;\r\n }\r\n return true;\r\n }\r\n\r\n handleClick(data: any): void {\r\n this.clickEvent.emit(data);\r\n }\r\ngetCellAlignment(value: any, index: number): string {\r\n // If all columns should be right aligned globally\r\n // if (this.tableData.metaData.isAllAlignedToRight) {\r\n // return 'textalign-right';\r\n // }\r\n\r\n if (this.isColumnNumeric(value)) {\r\n return 'textalign-right';\r\n }\r\n if (value === null || value === undefined) {\r\n return 'textalign-left';\r\n }\r\n \r\n\r\n const strValue = String(value).trim();\r\n\r\n // Detect numeric, date, or alphanumeric ending with numbers\r\n const isNumber = !isNaN(Number(strValue));\r\n const isDate = !isNaN(Date.parse(strValue));\r\n const isAlphaNumericWithTrailingNumber = /^[A-Za-z]*\\d+[A-Za-z0-9]*$/.test(strValue);\r\n\r\n if (isNumber || isDate) {\r\n return 'textalign-right';\r\n }\r\n return 'textalign-left';\r\n}\r\n\r\ngetHeaderAlignment(header: string, index: number): string {\r\n if (this.isColumnNumeric(header)) {\r\n return 'textalign-right';\r\n }\r\n return 'textalign-left';\r\n}\r\nisColumnNumeric(header: string): boolean {\r\n return this.currentList.some(row => {\r\n const value = row[header];\r\n\r\n if (value === null || value === undefined) return false;\r\n\r\n const str = String(value).trim();\r\n\r\n // numeric values like 1, 23, 93.55\r\n if (!isNaN(Number(str))) return true;\r\n\r\n return false;\r\n });\r\n}\r\n\r\n\r\n shouldShowPagination(): boolean {\r\n return !this.tableData?.metaData?.isPaginationHidden;\r\n }\r\n}","<div class=\"d-flex align-items-center justify-content-between w-100\">\r\n <div class=\"d-flex align-items-center gap-2\">\r\n <lib-header-alt [title]=\"tableData.metaData.title\" [isria]=\"tableData?.featureInfo?.uiConfiguration?.customChartConfiguration?.isRia\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input type=\"text\" *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\" id=\"exampleInputEmail1\" autocomplete=\"off\"\r\n placeholder=\" Search \" aria-describedby=\"emailHelp\" (keyup)=\"onEnter($event)\" />\r\n</div>\r\n\r\n<div class=\"popup-body-for-scroll\">\r\n <div class=\"table-wrapper\">\r\n <div class=\"table-responsive border\">\r\n <table class=\"table table-bordered table-hover align-middle mb-0\">\r\n <thead class=\"table-dark\">\r\n <tr class=\"table-header\">\r\n <th *ngFor=\"let header of tableHeadList; index as i\" [ngClass]=\"getHeaderAlignment(header, i)\" [style.width]=\"getWidthById(header, i)\" [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\" (click)=\"sortByColumn(header)\">\r\n <span *ngIf=\"\r\n (!tableData.metaData.isFirstColumnHeaderHidden && i == 0) || i > 0\r\n \" [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden\r\n ? 'cursor-pointer'\r\n : 'cursor-default'\r\n \">{{ header }}</span>\r\n <i *ngIf=\"\r\n (!isUserSort || checkIfColumnCurrentlyBeingSorted(header)) &&\r\n !tableData.metaData.isHeaderSortHidden\r\n \" class=\"sort-icons fa\" [ngClass]=\"\r\n !isUserSort\r\n ? 'fa-sort'\r\n : sortDirection == 'asc'\r\n ? 'fa-sort-asc'\r\n : 'fa-sort-desc'\r\n \"></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr *ngFor=\"let store of currentList\" [ngClass]=\"\r\n tableData?.highlightedTexts?.includes(store[tableHeadList[0]])\r\n ? 'font-weight-bold'\r\n : ''\r\n \">\r\n <td (click)=\"handleClick(store)\" class=\"table-cell\" *ngFor=\"let header of tableHeadList; index as i\"\r\n [style.width]=\"getWidthById(header, i)\" \r\n [ngClass]=\"getCellAlignment(store[header], i)\"\r\n [style.cursor]=\"\r\n tableData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n \">\r\n <span>{{ store[header] }}</span>\r\n </td>\r\n </tr>\r\n </tbody>\r\n </table>\r\n </div>\r\n <div class=\"pagination-bar mt-0\" *ngIf=\"shouldShowPagination()\">\r\n <span>Go To</span>\r\n <input type=\"number\" class=\"page-input\" min=\"1\" [max]=\"totalPages\" (keyup.enter)=\"goToSpecificPage()\" [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n >\r\n\r\n <span> {{ (currentList.length > 0 ? ((currentPage - 1) * pageSize + 1) : 0) }} -\r\n {{ ((currentPage - 1) * pageSize + currentList.length) }} of\r\n {{ totalItems | number }}</span>\r\n\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToFirstPage()\" class=\"pagination-btn\" title=\"First Page\">\r\n <i class=\"bi bi-chevron-double-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === 1\" (click)=\"goToPreviousPage()\" class=\"pagination-btn\" title=\"Previous Page\">\r\n <i class=\"bi bi-chevron-left\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToNextPage()\" class=\"pagination-btn\" title=\"Next Page\">\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button [disabled]=\"currentPage === totalPages\" (click)=\"goToLastPage()\" class=\"pagination-btn\" title=\"Last Page\">\r\n <i class=\"bi bi-chevron-double-right\"></i>\r\n </button>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, Input ,Output, EventEmitter } from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from \"d3\";\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-waterfall-chart',\r\n templateUrl: './waterfall-chart.component.html',\r\n styleUrls: ['./waterfall-chart.component.less', \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class WaterfallChartComponent extends ComponentUniqueId implements OnInit {\r\n\r\n @ViewChild(\"waterfallchartcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"waterfallchartcontainer\", { static: true })\r\n waterfallcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 15, right: 30, bottom: 40, left: 40 },\r\n svgHeight: 80,\r\n legendHeight: \"10%\",\r\n numberOfYTicks: 5,\r\n padding :0.3,\r\n\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: \"#F6D283\",\r\n showLineChartAxis: true,\r\n yAxisCustomlabelStyles: \"\",\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() { }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n this.initializeWaterfallChart();\r\n }\r\n initializeWaterfallChart() {\r\n var self = this;\r\n let rawData = null;\r\n let data :any= [];\r\n let metaData:any = null;\r\n let colors = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var positive_val:any=[];\r\n var maxSum=0;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n // data = data = [\r\n // {\"name\":\"Product Revenue\",\"value\":420000},\r\n // {\"name\":\"Services Revenue\",\"value\":210000},\r\n // {\"name\":\"Employee Revenue\",\"value\":190000},\r\n // {\"name\":\"Fixed Costs\",\"value\":-170000},\r\n // {\"name\":\"Variable Costs\",\"value\":-140000}\r\n\r\n // ];\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n colors = metaData.colors;\r\n\r\n \r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var waterfallcontainer = d3.select(\r\n this.waterfallcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(waterfallcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n \"transform\",\r\n \"translate(\" + margin.left + \",\" + margin.top + \")\"\r\n );\r\n\r\n let yScale = d3\r\n .scaleLinear()\r\n .range([height, 0]);\r\n var xScale = d3\r\n .scaleBand()\r\n .rangeRound([0, width])\r\n .padding(0.5);\r\n let xAxis = d3\r\n .axisBottom(xScale)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter);\r\n let yAxis = d3\r\n .axisLeft(yScale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter);\r\n\r\n\r\n\r\n\r\n //function to find all the positive values\r\n // var positive_val = this.data.filter(function (d) { return d.value > 0; });\r\n positive_val = data.filter(function (d:any) { return d.value > 0; });\r\n \r\n\r\n //function to calculate the sum of all the positive values\r\n maxSum = positive_val.reduce(function (sum, d) {\r\n return sum + d.value;\r\n }, 0);\r\n \r\n\r\n //to calculate the new Domain by adding 120\r\n var yaxisRange = maxSum + 120;\r\n\r\n var newDomain = percentage(yaxisRange);\r\n \r\n // var newDomain=yaxisRange;\r\n var newDomain = newDomain.replace(/[!@#$%^&*]/g, \"\");\r\n\r\n\r\n\r\n\r\n // Transform data (i.e., finding cumulative values and total) for easier charting\r\n var cumulative = 0;\r\n for (let i = 0; i < data.length; i++) {\r\n if(data[i].name !=\"Total\"){\r\n data[i].start = cumulative;\r\n cumulative += data[i].value;\r\n data[i].end = cumulative;\r\n\r\n data[i].class = (data[i].value >= 0) ? 'positive' : 'negative'\r\n }\r\n }\r\n\r\n data.push({\r\n name: 'Total',\r\n end: cumulative,\r\n start: 0,\r\n class: 'total',\r\n value: cumulative\r\n });\r\n \r\n xScale.domain(data.map(function (d) { return d.name; }));\r\n yScale.domain([0, d3.max(data, function (d) { return d.end; })]);\r\n\r\n //var y_domain = ([0, d3.max(data, function(d) { return d.end; })]);\r\n // y.domain( y_domain);\r\n\r\n svg.append(\"g\")\r\n .attr(\"class\", \"x axis waterfall-x-axis\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(xAxis);\r\n\r\n svg.append(\"g\")\r\n .attr(\"class\", \"y axis\")\r\n .call(yAxis);\r\n\r\n d3.selectAll(\"g.x.axis g.tick text\")\r\n .attr(\"y\", function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n });\r\n var bar = svg.selectAll(\".bar\")\r\n .data(data)\r\n .enter().append(\"g\").on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .style(\"cursor\", \"pointer\")\r\n .attr(\"class\", \"bar \") .attr(\"fill\", function(d) {\r\n\r\n return colors[d.class];\r\n })\r\n .attr(\"transform\", function (d) { return \"translate(\" + xScale(d.name) + \",0)\"; });\r\n\r\n bar.append(\"rect\")\r\n //.attr(\"y\", function(d) { return y(d.value); })\r\n .attr(\"y\", function (d) { return yScale(Math.max(d.start, d.end)); })\r\n .attr(\"height\", function (d) { return Math.abs(yScale(d.start) - yScale(d.end)); })\r\n //function to draw the tooltip\r\n .attr(\"width\", xScale.bandwidth())\r\n\r\n bar.append(\"text\")\r\n .attr(\"x\", xScale.bandwidth() / 2)\r\n .attr(\"y\", function (d) { return yScale(d.end); })\r\n .attr(\"dy\", function (d) { return ((d.class == 'negative') ? '-' : '') })\r\n .text(function (d) { return d.end - d.start; });\r\n\r\n\r\n bar.filter(function (d) { return d.class != \"total\" }).append(\"line\")\r\n .attr(\"class\", \"connector\")\r\n .attr(\"x1\", xScale.bandwidth() + 10)\r\n .attr(\"y1\", function (d) { return yScale(d.end) })\r\n .attr(\"x2\", xScale.bandwidth() / (1 - 0.5) - 5)\r\n .attr(\"y2\", function (d) { return yScale(d.end) })\r\n if (metaData.yLabel) {\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-axis-waterfall-label\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - margin.left)\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(metaData.yLabel);\r\n }\r\n if(metaData.xLabel){\r\n svg.append(\"text\")\r\n .attr(\"class\", \"lib-axis-waterfall-label\")\r\n .attr(\"transform\",\r\n \"translate(\" + (width/2) + \" ,\" +\r\n (height + margin.top + 20) + \")\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(metaData.xLabel);\r\n }\r\n\r\n function type(d) {\r\n d.value = +d.value;\r\n return d;\r\n }\r\n\r\n function percentage(n) {\r\n n = Math.round(n);\r\n var result = n;\r\n if (Math.abs(n) > 100) {\r\n result = Math.round(n / 100) + '%';\r\n }\r\n return result;\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n}\r\n","<div #waterfallchartcontainer class=\"lib-chart-wrapper\"\r\n(resized)=\"onResized($event)\">\r\n<lib-chart-header\r\n[title]=\"chartData.metaData.title\"\r\n[hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n[menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n(menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"waterfallchartcontainer\"\r\n #waterfallchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, Input,Output,\r\n EventEmitter } from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-sunburst-chart',\r\n templateUrl: './sunburst-chart.component.html',\r\n styleUrls: ['./sunburst-chart.component.less'],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class SunburstChartComponent extends ComponentUniqueId implements OnInit {\r\n\r\n @ViewChild('sunburstchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('sunburstchartcontainer', { static: true })\r\n sunburstcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 30, bottom: 40, left: 40 },\r\n svgHeight: 80,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n padding: 0.3,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() { }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeSunburstChart();\r\n }\r\n initializeSunburstChart() {\r\n var self = this;\r\n let rawData:any = null;\r\n let data = {};\r\n let metaData = null;\r\n let colorMap = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 16;\r\n var color = d3.scaleOrdinal(d3.schemeCategory10);\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n // data = data = [\r\n // {\"name\":\"Product Revenue\",\"value\":420000},\r\n // {\"name\":\"Services Revenue\",\"value\":210000},\r\n // {\"name\":\"Employee Revenue\",\"value\":190000},\r\n // {\"name\":\"Fixed Costs\",\"value\":-170000},\r\n // {\"name\":\"Variable Costs\",\"value\":-140000}\r\n\r\n // ];\r\n rawData = this.chartData.data;\r\n colorMap = this.chartData.metaData.colors;\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var sunburstcontainer = d3.select(\r\n this.sunburstcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(sunburstcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\r\n 'transform',\r\n 'translate(' +\r\n (width / 2 + margin.left) +\r\n ',' +\r\n (height / 2 + margin.top) +\r\n ')'\r\n );\r\n var radius = Math.min(width, height) / 2;\r\n var partition = d3.partition()\r\n .size([2 * Math.PI, radius]);\r\n\r\n var root = d3.hierarchy(rawData[0])\r\n .sum(function (d) { return d.size });\r\n\r\n\r\n partition(root);\r\n var arc = d3.arc()\r\n .startAngle(function (d) { return d.x0 })\r\n .endAngle(function (d) { return d.x1 })\r\n .innerRadius(function (d) { return d.y0 })\r\n .outerRadius(function (d) { return d.y1 });\r\n\r\n\r\n svg.selectAll('g')\r\n .data(root.descendants())\r\n .enter().append('g').on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr('class', 'node').append('path')\r\n .attr('display', function (d) { return d.depth ? null : 'none'; })\r\n .attr('d', arc)\r\n .style('stroke', '#fff')\r\n .style('fill', function (d) {\r\n let id = colorMap[(d.children ? d : d.parent).data.id];\r\n\r\n if (id == undefined) {\r\n return colorMap[(d.children ? d : d.parent).data.vid];\r\n } else {\r\n return colorMap[(d.children ? d : d.parent).data.id];\r\n }\r\n });\r\n\r\n svg.selectAll(\".node\")\r\n .append(\"text\")\r\n .attr(\"fill\", \"white\")\r\n .style(\"font-size\", \"5px\")\r\n .attr(\"transform\", function (d) {\r\n return \"translate(\" + arc.centroid(d) + \")rotate(\" + computeTextRotation(d) + \")\";\r\n })\r\n .attr(\"dx\", \"-9\") // radius margin\r\n .attr(\"dy\", \".3em\") // rotation align\r\n .text(function (d) { return d.parent ? d.data.name : \"\" });\r\n\r\n\r\n function computeTextRotation(d) {\r\n var thetaDeg = (180 / Math.PI * (arc.startAngle()(d) + arc.endAngle()(d)) / 2 - 90);\r\n return (thetaDeg > 90) ? thetaDeg - 180 : thetaDeg;\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n\r\n}\r\n","<div #sunburstchartcontainer class=\"lib-chart-wrapper\"\r\n(resized)=\"onResized($event)\">\r\n<lib-chart-header\r\n[title]=\"chartData.metaData.title\"\r\n[hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n[menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n(menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"sunburstchartcontainer\"\r\n #sunburstchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n// import { type } from 'os';\r\n\r\n@Component({\r\n selector: \"lib-progress-bar\",\r\n templateUrl: \"./progress-bar.component.html\",\r\n styleUrls: [\"./progress-bar.component.less\"]\r\n})\r\nexport class ProgressBarComponent implements OnInit {\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n resetBackgroundColor: boolean = false;\r\n parentChartConfigurations: any;\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 20 },\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: \"#052340\"\r\n };\r\n progressvalue = 0;\r\n metaData;\r\n data = [];\r\n currentvalue: any;\r\n color_type: any;\r\n type: any = \"\";\r\n datatype: any;\r\n progress_style: any;\r\n first: any;\r\n lasts: any;\r\n diff: any;\r\n per_value: any;\r\n width: number=0;\r\n datatype_status:boolean=false;\r\n value_status:boolean=false;\r\n hasDrillDownData:boolean=false;\r\n featureId:any;\r\n indexType:any=\"\";\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.resetBackgroundColor = this.customChartConfiguration.resetBackgroundColor;\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.customChartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.customChartConfiguration.flagForMultiChart,\r\n hideShadow: this.customChartConfiguration.hideShadow,\r\n backgroundColor: this.customChartConfiguration.resetBackgroundColor\r\n ? \"\"\r\n : \"#052340\"\r\n };\r\n let data = [];\r\n // let type:any;\r\n\r\n this.data = this.chartData.data;\r\n\r\n this.first = this.data[0];\r\n\r\n var len = this.data.length;\r\n\r\n this.lasts = this.data[len - 1];\r\n this.metaData = this.chartData.metaData;\r\n this.featureId=this.metaData.featureId;\r\n //this.resetBackgroundColor=true;\r\n this.datatype = this.metaData.datatype;\r\n this.currentvalue = this.metaData.currentValue;\r\n this.indexType=this.metaData.type?this.metaData.type:\"\";\r\n if(this.currentvalue>1){\r\n this.value_status=true;\r\n }\r\n this.color_type = this.metaData.colorType;\r\n this.hasDrillDownData = this.metaData.hasDrillDown;\r\n if((this.datatype==\"Hr\" || this.datatype==\"Hours\") && this.currentvalue<2){\r\n this.currentvalue=(this.currentvalue*60).toFixed(2);\r\n\r\n this.datatype=\" Minutes\"\r\n }\r\n if(this.datatype==\"USD\"){\r\n this.datatype_status=true;\r\n this.datatype=\"$ \";\r\n }\r\n if (this.datatype == \"%\" || this.datatype == \" %\") {\r\n this.type = \"%\";\r\n } else {\r\n this.type = \"\";\r\n }\r\n this.diff = (100 - this.lasts) / 4;\r\n if (this.diff > 0) {\r\n this.per_value = this.currentvalue * this.currentvalue + this.diff;\r\n this.progress_style = {\r\n width: this.per_value + \"%\"\r\n };\r\n } else {\r\n if(this.currentvalue<=0 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 0 + \"%\"\r\n };\r\n this.currentvalue=0;\r\n }\r\n else if(this.currentvalue>=100 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 100 + \"%\"\r\n };\r\n this.currentvalue=100;\r\n }\r\n else{\r\n this.progress_style = {\r\n width: this.metaData.currentValue + \"%\"\r\n };\r\n }\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div [ngClass]=\"{'lib-chart-wrapper progressbar': !resetBackgroundColor,\r\n 'lib-chart-wrapper-wo-shadow':resetBackgroundColor}\">\r\n\r\n <lib-chart-header [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [customChartConfiguration]=\"parentChartConfigurations\"></lib-chart-header>\r\n <div class=\"lib-chart-svg\" (click)=\"handleClick(currentvalue)\" [ngClass]=\"chartConfiguration.hideShadow ? 'slidecontainer' : 'slidewidth'\">\r\n\r\n <p *ngIf=\"chartConfiguration.hideShadow\" [ngStyle]=\"progress_style\" [attr.data-value]=\"currentvalue + datatype\"></p>\r\n <input *ngIf=\"value_status\" type=\"range\" min=\"{{first}}\" max=\"{{lasts}}\" [value]=\"currentvalue\" class=\"slider\" [class]=\"color_type\" [ngClass]=\"{'cursor-style': hasDrillDownData}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n <input *ngIf=\"!value_status\" type=\"range\" max=\"{{lasts}}\" [attr.value]=\"currentvalue\" class=\"slider\" [class]=\"color_type\" [ngClass]=\"{'cursor-style': hasDrillDownData}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n <div class=\"ranges\">\r\n <div class=\"ran\"></div>\r\n <div class=\"ran\"></div>\r\n <div class=\"ran\"></div>\r\n <div class=\"ran\"></div>\r\n\r\n <div *ngFor=\"let d of data; let l=last; let i=index\" [ngClass]=\"{'ran_p' : i!=data.length}\" [class.ran_pl]=\"l\">\r\n {{d + type}}</div>\r\n\r\n </div>\r\n </div>\r\n <div \r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n class=\"lib-donut-chart-footer\"\r\n>\r\n <div [ngClass]=\"chartData.metaData.target ? 'lib-progressbar-label-style' : 'lib-progressbar-label-wrapper'\">\r\n <div class=\"lib-donut-label-item progress-label-item\">\r\n <span *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n ><span *ngIf=\"!datatype_status\"\r\n >Current value is {{currentvalue + datatype}}</span\r\n >\r\n <span *ngIf=\"datatype_status\"\r\n >Current value is {{datatype + currentvalue}}</span\r\n >\r\n <!-- <span\r\n >Current value is {{currentvalue + datatype}}</span\r\n > -->\r\n </div>\r\n <div *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-item\">\r\n <span class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n ><span\r\n >Target: {{chartData.metaData.target}}</span\r\n >\r\n </div>\r\n </div>\r\n</div>\r\n</div>","import { Component, OnInit, ViewEncapsulation, ViewChild, ElementRef, Input,Output,\r\n EventEmitter } from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-radar-chart',\r\n templateUrl: './radar-chart.component.html',\r\n styleUrls: ['./radar-chart.component.less']\r\n})\r\nexport class RadarChartComponent extends ComponentUniqueId implements OnInit {\r\n\r\n @ViewChild('radarchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('radarchartcontainer', { static: true })\r\n radarchartcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n\r\n\r\n uniqueId: any = this.getUniqueId();\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 30, bottom: 40, left: 40 },\r\n svgHeight:150,\r\n svgWidth: 190,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n padding: 0.3,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n\r\n // labelFormatter: ChartHelper.defaultFormatter,\r\n // xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n // yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n // lineGraphColor: '#F6D283',\r\n // showLineChartAxis: true,\r\n // yAxisCustomlabelStyles: '',\r\n };\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnInit() { }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).remove();\r\n this.initializeSunburstChart();\r\n }\r\n initializeSunburstChart() {\r\n var self = this;\r\n let data = [];\r\n let colors=[];\r\n let metaData:any={};\r\n // let hasDrillDown;\r\n \r\n // var data = [\r\n // { name: 'Vendor 1',\r\n\t\t// \t\t\taxes: [\r\n\t\t// \t\t\t\t{axis: 'Less than 1 day', value: 42},\r\n\t\t// \t\t\t\t{axis: '1 to 2 day', value: 20},\r\n\t\t// \t\t\t\t{axis: '2 to 3 day', value: 60},\r\n\r\n\t\t// \t\t\t\t{axis: '3 to 4 day', value: 35},\r\n\t\t// \t\t\t\t{axis: 'Beyond 4 days', value: 20}\r\n\t\t// \t\t\t],\r\n // color: '#26AF32'\r\n\t\t// \t\t},\r\n\t\t// \t\t{ name: 'Vendor 2',\r\n\t\t// \t\t\taxes: [\r\n\t\t// \t\t\t\t{axis: 'Less than 1 day', value: 50},\r\n\t\t// \t\t\t\t{axis: '1 to 2 day', value: 45},\r\n\t\t// \t\t\t\t{axis: '2 to 3 day', value: 20},\r\n\r\n\t\t// \t\t\t\t{axis: '3 to 4 day', value: 25},\r\n\t\t// \t\t\t\t{axis: 'Beyond 4 days', value: 23}\r\n\t\t// \t\t\t],\r\n // color: '#762712'\r\n\t\t// \t\t},\r\n // { name: 'Vendor 3',\r\n\t\t// \t\t\taxes: [\r\n\t\t// \t\t\t\t{axis: 'Less than 1 day', value: 32},\r\n\t\t// \t\t\t\t{axis: '1 to 2 day', value: 62},\r\n\t\t// \t\t\t\t{axis: '2 to 3 day', value: 35},\r\n\r\n\t\t// \t\t\t\t{axis: '3 to 4 day', value: 20},\r\n\t\t// \t\t\t\t{axis: 'Beyond 4 days', value: 28}\r\n\t\t// \t\t\t],\r\n // color: '#2a2fd4'\r\n\t\t// \t\t}\r\n // ];\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n // hasDrillDown=metaData.hasDrillDown;\r\n colors=metaData.colors;\r\n \r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var radarchartcontainer = d3.select(\r\n this.radarchartcontainerElt.nativeElement\r\n );\r\n\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(radarchartcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n var radarChartOptions = {\r\n w: 280,\r\n h: 220,\r\n margin: margin,\r\n levels: 5,\r\n roundStrokes: true,\r\n color: d3.scaleOrdinal().range(colors),\r\n format: '.0f'\r\n };\r\n\r\n let svg_radar1 = RadarChart(\".radarChart\", data, radarChartOptions);\r\n if (\r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.svgHeight != undefined &&\r\n this.customChartConfiguration.svgHeight.value != undefined && \r\n this.customChartConfiguration != undefined &&\r\n this.customChartConfiguration.svgWidth != undefined &&\r\n this.customChartConfiguration.svgWidth.value != undefined\r\n ) {\r\n self.chartConfiguration.svgHeight = this.customChartConfiguration.svgHeight.value;\r\n self.chartConfiguration.svgWidth = this.customChartConfiguration.svgWidth.value;\r\n }\r\n var radarChartOptions2 = {\r\n \r\n w: self.chartConfiguration.svgWidth,\r\n h: self.chartConfiguration.svgHeight,\r\n margin: margin,\r\n maxValue: 4,\r\n levels: 4,\r\n roundStrokes: false,\r\n color: d3.scaleOrdinal().range(colors),\r\n format: '.0f',\r\n legend: { title: '', translateX: 100, translateY: 40 },\r\n unit: ''\r\n };\r\n\r\n let svg_radar2 = RadarChart(\".radarChart2\", data, radarChartOptions2);\r\n\r\n\r\n function RadarChart(parent_selector, data, options) {\r\n //Wraps SVG text - Taken from http://bl.ocks.org/mbostock/7555321\r\n const wrap = (text, width) => {\r\n text.each(function () {\r\n var text = d3.select(self),\r\n words = text.text().split(/\\s+/).reverse(),\r\n word,\r\n line :any= [],\r\n lineNumber = 0,\r\n lineHeight = 1.4, // ems\r\n y = text.attr(\"y\"),\r\n x = text.attr(\"x\"),\r\n dy = parseFloat(text.attr(\"dy\")),\r\n tspan = text.text(null).append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", dy + \"em\");\r\n\r\n while (word = words.pop()) {\r\n line.push(word);\r\n tspan.text(line.join(\" \"));\r\n if (tspan.node().getComputedTextLength() > width) {\r\n line.pop();\r\n tspan.text(line.join(\" \"));\r\n line = [word];\r\n tspan = text.append(\"tspan\").attr(\"x\", x).attr(\"y\", y).attr(\"dy\", ++lineNumber * lineHeight + dy + \"em\").text(word);\r\n }\r\n }\r\n });\r\n }//wrap\r\n\r\n const cfg = {\r\n w: 100,\t\t\t\t//Width of the circle\r\n h: 100,\t\t\t\t//Height of the circle\r\n margin: { top: 20, right: 200, bottom: 40, left: 100 }, //The margins of the SVG\r\n levels: 3,\t\t\t\t//How many levels or inner circles should there be drawn\r\n maxValue: 0, \t\t\t//What is the value that the biggest circle will represent\r\n labelFactor: 1.25, \t//How much farther than the radius of the outer circle should the labels be placed\r\n wrapWidth: 60, \t\t//The number of pixels after which a label needs to be given a new line\r\n opacityArea: 0.35, \t//The opacity of the area of the blob\r\n dotRadius: 2, \t\t\t//The size of the colored circles of each blog\r\n opacityCircles: 0.1, \t//The opacity of the circles of each blob\r\n strokeWidth: 2, \t\t//The width of the stroke around each blob\r\n roundStrokes: false,\t//If true the area and stroke will follow a round path (cardinal-closed)\r\n color: d3.scaleOrdinal(d3.schemeCategory10),\t//Color function,\r\n format: '.2%',\r\n unit: '',\r\n legend: false\r\n };\r\n\r\n //Put all of the options into a variable called cfg\r\n if ('undefined' !== typeof options) {\r\n for (var i in options) {\r\n if ('undefined' !== typeof options[i]) { cfg[i] = options[i]; }\r\n }//for i\r\n }//if\r\n\r\n //If the supplied maxValue is smaller than the actual one, replace by the max in the data\r\n // var maxValue = max(cfg.maxValue, d3.max(data, function(i){return d3.max(i.map(function(o){return o.value;}))}));\r\n let maxValue = 0;\r\n for (let j = 0; j < data.length; j++) {\r\n for (let i = 0; i < data[j].axes.length; i++) {\r\n data[j].axes[i]['id'] = data[j].name;\r\n if (data[j].axes[i]['value'] > maxValue) {\r\n maxValue = data[j].axes[i]['value'];\r\n }\r\n }\r\n }\r\n maxValue = Math.max(cfg.maxValue, maxValue);\r\n\r\n const allAxis = data[0].axes.map((i, j) => i.axis),\t//Names of each axis\r\n total = allAxis.length,\t\t\t\t\t//The number of different axes\r\n radius = Math.min(cfg.w / 2, cfg.h / 2), \t//Radius of the outermost circle\r\n Format = d3.format(cfg.format),\t\t\t \t//Formatting\r\n angleSlice = Math.PI * 2 / total;\t\t//The width in radians of each \"slice\"\r\n\r\n //Scale for the radius\r\n const rScale = d3.scaleLinear()\r\n .range([0, radius])\r\n .domain([0, maxValue]);\r\n\r\n /////////////////////////////////////////////////////////\r\n //////////// Create the container SVG and g /////////////\r\n /////////////////////////////////////////////////////////\r\n const parent = chartContainer;\r\n\r\n //Remove whatever chart with the same id/class was present before\r\n parent.select(\"svg\").remove();\r\n\r\n //Initiate the radar chart SVG\r\n let svg = parent.append(\"svg\")\r\n .attr(\"width\", cfg.w + cfg.margin.left + cfg.margin.right)\r\n .attr(\"height\", cfg.h + cfg.margin.top + cfg.margin.bottom)\r\n .attr(\"class\", \"radar\");\r\n\r\n //Append a g element\r\n let g = svg.append(\"g\")\r\n .attr(\"transform\", \"translate(\" + (cfg.w/2 + cfg.margin.left) + \",\" + (cfg.h/2 + cfg.margin.top) + \")\");\r\n\r\n /////////////////////////////////////////////////////////\r\n ////////// Glow filter for some extra pizzazz ///////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Filter for the outside glow\r\n let filter = g.append('defs').append('filter').attr('id', 'glow'),\r\n feGaussianBlur = filter.append('feGaussianBlur').attr('stdDeviation', '2.5').attr('result', 'coloredBlur'),\r\n feMerge = filter.append('feMerge'),\r\n feMergeNode_1 = feMerge.append('feMergeNode').attr('in', 'coloredBlur'),\r\n feMergeNode_2 = feMerge.append('feMergeNode').attr('in', 'SourceGraphic');\r\n\r\n /////////////////////////////////////////////////////////\r\n /////////////// Draw the Circular grid //////////////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Wrapper for the grid & axes\r\n let axisGrid = g.append(\"g\").attr(\"class\", \"axisWrapper\");\r\n\r\n //Draw the background circles\r\n axisGrid.selectAll(\".levels\")\r\n .data(d3.range(1, (cfg.levels + 1)).reverse())\r\n .enter()\r\n .append(\"circle\")\r\n .attr(\"class\", \"gridCircle\")\r\n .attr(\"r\", d => radius / cfg.levels * d)\r\n .style(\"fill\", \"#CDCDCD\")\r\n .style(\"stroke\", \"#CDCDCD\")\r\n .style(\"fill-opacity\", cfg.opacityCircles)\r\n .style(\"filter\", \"url(#glow)\");\r\n\r\n //Text indicating at what % each level is\r\n axisGrid.selectAll(\".axisLabel\")\r\n .data(d3.range(1, (cfg.levels + 1)).reverse())\r\n .enter().append(\"text\")\r\n .attr(\"class\", \"axisLabel\")\r\n .attr(\"x\", 4)\r\n .attr(\"y\", d => -d * radius / cfg.levels)\r\n .attr(\"dy\", \"0.4em\")\r\n .style(\"font-size\", \"10px\")\r\n .attr(\"fill\", \"#737373\")\r\n .text(d => Format(maxValue * d / cfg.levels) + cfg.unit);\r\n\r\n /////////////////////////////////////////////////////////\r\n //////////////////// Draw the axes //////////////////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Create the straight lines radiating outward from the center\r\n var axis = axisGrid.selectAll(\".axis\")\r\n .data(allAxis)\r\n .enter()\r\n .append(\"g\")\r\n .attr(\"class\", \"axis\");\r\n //Append the lines\r\n axis.append(\"line\")\r\n .attr(\"x1\", 0)\r\n .attr(\"y1\", 0)\r\n .attr(\"x2\", (d, i) => rScale(maxValue * 1.1) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"y2\", (d, i) => rScale(maxValue * 1.1) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"class\", \"line\")\r\n .style(\"stroke\", \"white\")\r\n .style(\"stroke-width\", \"2px\");\r\n\r\n //Append the labels at each axis\r\n axis.append(\"text\")\r\n .attr(\"class\", \"legend\")\r\n .style(\"font-size\", \"11px\")\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"dy\", \"0.35em\")\r\n .attr(\"x\", (d, i) => rScale(maxValue * cfg.labelFactor) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"y\", (d, i) => rScale(maxValue * cfg.labelFactor) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .text(d => d)\r\n .call(wrap, cfg.wrapWidth);\r\n\r\n /////////////////////////////////////////////////////////\r\n ///////////// Draw the radar chart blobs ////////////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //The radial line function\r\n const radarLine = d3.radialLine()\r\n .curve(d3.curveLinearClosed)\r\n .radius(d => rScale(d.value))\r\n .angle((d, i) => i * angleSlice);\r\n\r\n if (cfg.roundStrokes) {\r\n radarLine.curve(d3.curveCardinalClosed)\r\n }\r\n\r\n //Create a wrapper for the blobs\r\n const blobWrapper = g.selectAll(\".radarWrapper\")\r\n .data(data)\r\n .enter().append(\"g\").on(\"click\", function(d) {\r\n self.handleClick(d);\r\n })\r\n .attr(\"class\", \"radarWrapper\");\r\n\r\n //Append the backgrounds\r\n blobWrapper\r\n .append(\"path\")\r\n .attr(\"class\", \"radarArea\")\r\n .attr(\"d\", d => radarLine(d.axes))\r\n .style(\"fill\", (d, i) => cfg.color(i))\r\n .style(\"fill-opacity\", cfg.opacityArea)\r\n .on('mouseover', function (d, i) {\r\n //Dim all blobs\r\n parent.selectAll(\".radarArea\")\r\n .transition().duration(200)\r\n .style(\"fill-opacity\", 0.1);\r\n //Bring back the hovered over blob\r\n d3.select(self)\r\n .transition().duration(200)\r\n .style(\"fill-opacity\", 0.7);\r\n })\r\n .on('mouseout', () => {\r\n //Bring back all blobs\r\n parent.selectAll(\".radarArea\")\r\n .transition().duration(200)\r\n .style(\"fill-opacity\", cfg.opacityArea);\r\n });\r\n\r\n //Create the outlines\r\n blobWrapper.append(\"path\")\r\n .attr(\"class\", \"radarStroke\")\r\n .attr(\"d\", function (d, i) { return radarLine(d.axes); })\r\n .style(\"stroke-width\", cfg.strokeWidth + \"px\")\r\n .style(\"stroke\", (d, i) => cfg.color(i))\r\n .style(\"fill\", \"none\")\r\n .style(\"filter\", \"url(#glow)\");\r\n\r\n //Append the circles\r\n blobWrapper.selectAll(\".radarCircle\")\r\n .data(d => d.axes)\r\n .enter()\r\n .append(\"circle\")\r\n .attr(\"class\", \"radarCircle\")\r\n .attr(\"r\", cfg.dotRadius)\r\n .attr(\"cx\", (d, i) => rScale(d.value) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"cy\", (d, i) => rScale(d.value) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .style(\"fill\", (d,i) => cfg.color(d.id))\r\n .style(\"fill-opacity\", 0.8);\r\n\r\n /////////////////////////////////////////////////////////\r\n //////// Append invisible circles for tooltip ///////////\r\n /////////////////////////////////////////////////////////\r\n\r\n //Wrapper for the invisible circles on top\r\n const blobCircleWrapper = g.selectAll(\".radarCircleWrapper\")\r\n .data(data)\r\n .enter().append(\"g\")\r\n .attr(\"class\", \"radarCircleWrapper\");\r\n\r\n //Append a set of invisible circles on top for the mouseover pop-up\r\n blobCircleWrapper.selectAll(\".radarInvisibleCircle\")\r\n .data(d => d.axes)\r\n .enter().append(\"circle\")\r\n .attr(\"class\", \"radarInvisibleCircle\")\r\n .attr(\"r\", cfg.dotRadius * 1.5)\r\n .attr(\"cx\", (d, i) => rScale(d.value) * Math.cos(angleSlice * i - (Math.PI / 2)))\r\n .attr(\"cy\", (d, i) => rScale(d.value) * Math.sin(angleSlice * i - (Math.PI / 2)))\r\n .style(\"fill\", \"none\")\r\n .style(\"pointer-events\", \"all\")\r\n .on(\"mouseover\", function(self, d, i) {\r\n tooltip\r\n .attr('x', self.cx.baseVal.value - 10)\r\n .attr('y', self.cy.baseVal.value - 10)\r\n .transition()\r\n .style('display', 'block')\r\n .text(Format(d.value) + cfg.unit);\r\n })\r\n .on(\"mouseout\", function () {\r\n tooltip.transition()\r\n .style('display', 'none').text('');\r\n });\r\n\r\n const tooltip = g.append(\"text\")\r\n .attr(\"class\", \"tooltip\")\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .style(\"font-size\", \"12px\")\r\n .style('display', 'none')\r\n .attr(\"text-anchor\", \"middle\")\r\n .attr(\"dy\", \"0.35em\");\r\n\r\n if (cfg.legend !== false && typeof cfg.legend === \"object\") {\r\n let legendZone = svg.append('g');\r\n let names = data.map(el => el.name);\r\n // if (cfg.legend.title) {\r\n // let title = legendZone.append(\"text\")\r\n // .attr(\"class\", \"title\")\r\n // .attr('transform', 'translate(100,40)')\r\n // .attr(\"x\", cfg.w - 70)\r\n // .attr(\"y\", 10)\r\n // .attr(\"font-size\", \"12px\")\r\n // .attr(\"fill\", \"#404040\")\r\n // .text(\"Organization XYZ\");\r\n // }\r\n let legend = legendZone.append(\"g\")\r\n .attr(\"class\", \"legend\")\r\n .attr(\"height\", 100)\r\n .attr(\"width\", 200)\r\n .attr('transform', 'translate(50,250)');\r\n // Create rectangles markers\r\n legend.selectAll('rect')\r\n .data(names)\r\n .enter()\r\n .append(\"rect\")\r\n .attr(\"x\", cfg.w - 65)\r\n .attr(\"y\", (d,i) => i * 20)\r\n .attr(\"width\", 10)\r\n .attr(\"height\", 10)\r\n .style(\"fill\", (d,i) => cfg.color(i));\r\n // Create labels\r\n legend.selectAll('text')\r\n .data(names)\r\n .enter()\r\n .append(\"text\")\r\n .attr(\"x\", cfg.w - 52)\r\n .attr(\"y\", (d,i) => i * 20 + 9)\r\n .attr(\"font-size\", \"11px\")\r\n .attr(\"fill\", \"#737373\")\r\n .text(d => d);\r\n }\r\n return svg;\r\n }\r\n\r\n\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #radarchartcontainer class=\"lib-chart-wrapper\"\r\n(resized)=\"onResized($event)\">\r\n<lib-chart-header\r\n[title]=\"chartData.metaData.title\"\r\n[hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n[menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n(menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n></lib-chart-header>\r\n\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"radarchartcontainer\"\r\n #radarchartcontainer\r\n class=\"lib-chart-svg radarChart2\"\r\n ></div>\r\n\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation\r\n} from \"@angular/core\";\r\nimport * as d3 from \"d3\";\r\nimport { ComponentUniqueId } from \"../unique-id\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport { ResizedEvent } from \"angular-resize-event\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: \"lib-line-chart-card\",\r\n templateUrl: \"./line-chart-card.component.html\",\r\n styleUrls: [\"./line-chart-card.component.less\", \"../common-styles.less\"],\r\n encapsulation: ViewEncapsulation.None\r\n})\r\nexport class LineChartCardComponent extends ComponentUniqueId\r\n implements OnInit {\r\n @ViewChild(\"linechartcardcontainer\", { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild(\"linecardcontainer\", { static: true })\r\n linecardcontainerElt!: ElementRef;\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartConfiguration: any = {};\r\n chartValue: any;\r\n hideShadow: boolean = false;\r\n resetBackgroundColor: boolean = false;\r\n uniqueId: any = this.getUniqueId();\r\n\r\n \r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 27, right: 50, bottom: 0, left: 50 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFontSize: \".7em\",\r\n numberOfYTicks: 4,\r\n yAxisCustomlabelStyles: \"\",\r\n yAxisCustomTextStyles: \"\",\r\n xAxisCustomTextStyles: \"\",\r\n svgHeight: 60,\r\n footerHeight: \"34%\",\r\n legendHeight: \"20%\",\r\n xAxisGrid: true,\r\n yAxisGrid: true,\r\n showXaxis: true,\r\n showYaxis: true,\r\n showValues: true,\r\n hideShadow: false,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n backgroundColor: \"#052340\",\r\n showDataPointValues: false,\r\n showSlider:false,\r\n window_count:3,\r\n refresh:3,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions\r\n };\r\n hour: any;\r\n overtime: any = 0;\r\n percentage: any = \"\";\r\n dataType: any;\r\n parentChartConfigurations: any;\r\n category: string = \"\";\r\n show_legend: any = false;\r\n overtime_value:boolean=false;\r\n overtime_staus:boolean=false;\r\n datatype_status:boolean=false;\r\n itemList: any;\r\n itemsPerPage: number=0;\r\n totalItems: any;\r\n currentPage: any;\r\n pageSize: any;\r\n currentList: any;\r\n next:boolean=false;\r\n prev:boolean=false;\r\n refresh_status:boolean=false;\r\n pages:any;\r\n\r\n\r\n\r\n constructor() {\r\n super();\r\n } \r\n ngOnChanges() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n self.chartConfiguration.showSlider ? this.sliderRefresh() : this.initializeLineChart();\r\n }\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n self.chartConfiguration.showSlider ? this.sliderRefresh() : this.initializeLineChart();\r\n }\r\n ngOnInit() {\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n if(this.chartData.metaData.value && this.chartData.metaData.format){\r\n this.chartValue =\r\n this.chartData.metaData.value + this.chartData.metaData.format;\r\n }\r\n self.chartConfiguration.showSlider ? this.sliderRefresh() : this.initializeLineChart();\r\n }\r\n \r\n sliderRefresh(){\r\n let self = this;\r\n let metaData:any = null;\r\n metaData = this.chartData.metaData;\r\n let refresh=self.chartConfiguration.refresh;\r\n let cat_count = Object.keys(metaData.colorMap).length;\r\n this.pageSize= (cat_count) * 5;\r\n this.itemList = this.chartData.data;\r\n this.pages=Math.ceil(this.itemList.length/this.pageSize);\r\n // let window=self.chartConfiguration.window_count;\r\n this.currentPage=this.pages;\r\nif(refresh>0){\r\n let interval=setInterval(()=>{ \r\n this.refresh_status=true;\r\n this.loadPage();\r\n }, refresh*1000);\r\n setTimeout(()=> {\r\n this.prev=false;\r\n this.next=false;\r\n this.currentPage=this.pages;\r\n this.refresh_status=false;\r\n clearInterval(interval);\r\n \r\n }, \r\n refresh*2*10000);\r\n }\r\n else{\r\n this.loadPage();\r\n }\r\n }\r\n loadPage() {\r\n let self = this;\r\n d3.select(\"#\" + self.uniqueId).remove();\r\n d3.selectAll(\".axidio-tooltip\").remove();\r\n let metaData:any = null;\r\n metaData = this.chartData.metaData;\r\n let window=self.chartConfiguration.window_count;\r\n this.itemList = this.chartData.data;\r\n let cat_count = Object.keys(metaData.colorMap).length;\r\n this.pageSize= (cat_count) * 5;\r\n this.pages=Math.ceil(this.itemList.length/this.pageSize);\r\n if(this.refresh_status){\r\n if(window>this.pages){\r\n window=this.pages;\r\n }\r\n if(this.next==false){\r\n if(this.currentPage>=window-1){\r\n this.prev=true;\r\n this.currentPage--;\r\n }\r\n if(this.currentPage==1){\r\n this.prev=false;\r\n this.next=true;\r\n }\r\n }\r\n else if(this.prev==false){\r\n if(this.currentPage<=window){\r\n this.next=true;\r\n this.currentPage++;\r\n }\r\n if(this.currentPage==window){\r\n this.next=false;\r\n this.prev=true;\r\n }\r\n } \r\n }\r\n this.currentList = this.itemList.slice(\r\n (this.pages - this.currentPage ) * this.pageSize ,\r\n (this.pages- this.currentPage ) * this.pageSize + this.pageSize\r\n ); \r\n this.initializeLineChart();\r\n }\r\n\r\n initializeLineChart() {\r\n var self = this;\r\n let data :any= [];\r\n let metaData :any= null;\r\n let colorMap = {};\r\n var alternate_text = false;\r\n var short_tick_length = 4;\r\n var long_tick_length = 18;\r\n let result:any = [];\r\n let sum: any = 0;\r\n\r\n var tick_length = 7;\r\n\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.chartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.chartConfiguration.flagForMultiChart,\r\n hideShadow: this.chartConfiguration.hideShadow,\r\n backgroundColor: this.customChartConfiguration.backgroundColor\r\n };\r\n this.hideShadow = this.chartConfiguration.hideShadow;\r\n if(self.chartConfiguration.showSlider){\r\n this.itemList = this.chartData.data;\r\n this.totalItems = this.itemList.length;\r\n data = this.currentList;\r\n\r\n }\r\n else{\r\n data = this.chartData.data; \r\n } \r\n metaData = this.chartData.metaData;\r\n colorMap = metaData.colorMap;\r\n this.dataType = metaData.dataType;\r\n var formatValue = d3.format(\".3s\");\r\n \r\n for (var k = 0; k < data.length; k++) {\r\n if (!data[k][\"category\"]) {\r\n data[k][\"category\"] = Object.keys(colorMap)[\r\n Object.keys(colorMap).length - 1\r\n ];\r\n }\r\n }\r\n this.hour = data[0][\"hours\"];\r\n if (this.hour == undefined) {\r\n this.hour = data[0][\"week\"];\r\n }\r\n data.reduce(function(res:any, value:any) {\r\n if (!res[value.category]) {\r\n res[value.category] = {\r\n week: value.week,\r\n value: value.value,\r\n category: value.category\r\n };\r\n result.push(res[value.category]);\r\n }\r\n return res;\r\n }, {});\r\n for (var j = 0; j < result.length; j++) {\r\n if (result[j].category.toLowerCase() != \"threshold\") {\r\n sum += result[j].value;\r\n }\r\n if(result.length>1 && result[j].category.toLowerCase() == \"threshold\"){\r\n this.overtime_staus=true;\r\n }\r\n \r\n }\r\n // if(result.length>1 && this.overtime_value==false){\r\n // this.overtime_value=true;\r\n // }\r\n if(result.length>1) {\r\n this.show_legend = true;\r\n }\r\n if(this.overtime_staus==true){\r\n this.overtime_value=false;\r\n } \r\n this.overtime = sum;\r\n if (this.hour) {\r\n this.percentage = Math.ceil((this.overtime / this.hour) * 100);\r\n this.percentage = Number.isNaN(this.percentage) || this.percentage< 100 ? this.percentage :formatValue(this.percentage);\r\n }\r\n if((this.dataType==\"Days\" || this.dataType==\" Days\") && this.overtime<2){\r\n this.overtime=this.overtime*24;\r\n this.dataType=\" Hours\";\r\n }\r\n\r\n this.overtime=this.overtime>1 ? self.chartConfiguration.labelFormatter(this.overtime) : this.overtime;\r\n if(this.dataType==\" USD\"){\r\n this.datatype_status=true;\r\n this.dataType=\"$ \";\r\n }\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var linecardcontainer = d3.select(this.linecardcontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style(\"width\")) - margin.left - margin.right;\r\n var height =\r\n parseInt(linecardcontainer.style(\"height\")) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n var svg = chartContainer\r\n .append(\"svg\")\r\n .attr(\"id\", self.uniqueId)\r\n .attr(\"width\", width + margin.left + margin.right)\r\n .attr(\"height\", height + margin.top + margin.bottom)\r\n .call(ChartHelper.responsivefy)\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(\" + margin.left + \",\" + margin.top + \")\");\r\n\r\n var sumstat = d3\r\n .nest() // nest function allows to group the calculation per level of a factor\r\n .key(function(d) {\r\n return d.category;\r\n })\r\n .entries(data);\r\n\r\n // Add X axis --> it is a date format\r\n // add condition\r\n // if(self.chartConfiguration.showSlider){\r\n // var x = d3\r\n // .scaleBand()\r\n // .rangeRound([width, 0])\r\n // .domain(\r\n // data.map(function(d) {\r\n // return d.week;\r\n // })\r\n // );\r\n // }\r\n // else{\r\n var x = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(\r\n data.map(function(d) {\r\n return d.week;\r\n })\r\n );\r\n // }\r\n if (this.customChartConfiguration.showYaxis != undefined) {\r\n self.chartConfiguration.showYaxis = this.customChartConfiguration.showYaxis;\r\n }\r\n\r\n if (self.chartConfiguration.showYaxis) {\r\n //self.chartConfiguration.showYaxis\r\n var xAxis = svg\r\n .append(\"g\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-card-x-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.xAxisLabelFomatter)\r\n );\r\n d3.selectAll(\"g.lib-line-card-x-axis-text g.tick text\")\r\n // .attr(\"y\", function() {\r\n // return tick_length;\r\n // });\r\n // d3.selectAll(\"g.lib-line-card-x-axis-text g.tick text\")\r\n // .style(\"font-size\", \"10px\")\r\n \r\n // .attr(\"y\", function (d) {\r\n // return 7\r\n // })\r\n // .attr(\"transform\", \"rotate(10)\")\r\n .attr(\"y\", function () {\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return long_tick_length + 1;\r\n } else {\r\n alternate_text = true;\r\n return short_tick_length + 1;\r\n }\r\n })\r\n }\r\n\r\n // Add Y axis\r\n var y = d3\r\n .scaleLinear()\r\n .domain([\r\n 0,\r\n d3.max(data, function(d) {\r\n return d.value;\r\n })\r\n ])\r\n .range([height, 0])\r\n .nice();\r\n\r\n if (self.chartConfiguration.xAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .attr(\"transform\", \"translate(0,\" + height + \")\")\r\n .call(\r\n d3\r\n .axisBottom(x)\r\n .ticks(3)\r\n .tickSize(-height)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .style(\"opacity\", \"0\")\r\n .call(g => g.select(\".domain\").remove());\r\n }\r\n\r\n if (self.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append(\"g\")\r\n .attr(\"class\", \"grid\")\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n .tickFormat(\"\")\r\n )\r\n .style(\"stroke-dasharray\", \"5 5\")\r\n .style(\"color\", \"#999999\")\r\n .style(\"opacity\", \"0\")\r\n .call(g => g.select(\".domain\").remove());\r\n }\r\n\r\n if (self.chartConfiguration.showYaxis) {\r\n //self.chartConfiguration.showYaxis\r\n var yAxis = svg\r\n .append(\"g\")\r\n .attr(\"class\", \"lib-line-axis-text lib-line-y-axis-text\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomTextStyles)\r\n\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat(self.chartConfiguration.yAxisLabelFomatter)\r\n );\r\n // .call(g => g.select(\".domain\").remove());\r\n }\r\n\r\n // Draw the line\r\n if (this.customChartConfiguration.showYaxis != undefined) {\r\n svg\r\n .selectAll(\".line\")\r\n .data(sumstat)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", function(d) {\r\n return colorMap[d.key];\r\n })\r\n .attr(\"stroke-width\", 1.5)\r\n .attr(\"d\", function(d) {\r\n return d3\r\n .line()\r\n .x(function(d) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .y(function(d) {\r\n return y(d.value);\r\n })\r\n .curve(d3.curveMonotoneX)(d.values);\r\n });\r\n } else {\r\n svg\r\n .selectAll(\".line\")\r\n .data(sumstat)\r\n .enter()\r\n .append(\"path\")\r\n .attr(\"fill\", \"none\")\r\n .attr(\"stroke\", function(d) {\r\n return colorMap[d.key];\r\n })\r\n .attr(\"stroke-width\", 1.5) \r\n .attr(\"d\", function(d) {\r\n return d3\r\n .line()\r\n .x(function(d) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .y(function(d) {\r\n return y(d.value);\r\n })(d.values);\r\n }); \r\n }\r\n var dot = svg\r\n .selectAll(\"myCircles\")\r\n .data(data)\r\n .enter()\r\n .append(\"g\")\r\n .on(\"click\", function(d) {\r\n if(d.category.toLowerCase()!=\"threshold\"){\r\n self.handleClick(d);\r\n }\r\n });\r\n\r\n dot\r\n .append(\"circle\")\r\n .attr(\"fill\", function(d) {\r\n return colorMap[d.category];\r\n })\r\n .attr(\"id\", function(d) {\r\n return d.value + colorMap[d.category];\r\n })\r\n .attr(\"stroke\", \"rgb(0 0 255 / 0%)\")\r\n .attr(\"stroke-width\", \"6%\")\r\n .attr(\"cx\", function(d) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"cy\", function(d) {\r\n return y(d.value);\r\n })\r\n .attr(\"r\", 3)\r\n .style(\"cursor\", \"pointer\")\r\n .on('mouseover', d=> {\r\n dot.selectAll('circle').filter(function(data){\r\n return data==d\r\n }).attr(\"r\", 5); \r\n })\r\n .on('mouseleave', d=> {\r\n dot.selectAll('circle').filter(function(data){\r\n return data==d\r\n }).attr(\"r\", 3); \r\n })\r\n .on('mouseenter',handleMouseOver )\r\n .on('mouseout',handleMouseOut );\r\n \r\n function handleMouseOver(d, i) { \r\n if(!self.chartConfiguration.showValues){\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n // .style(\"display\", \"none\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"style\", \"font-size: \" + \".75em\")\r\n .attr(\"x\", function() {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"y\", function() {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\")\r\n .text(function() {\r\n if(self.chartData.metaData.value && self.chartData.metaData.format){\r\n return self.chartConfiguration.labelFormatter(d.value)+ self.chartData.metaData.format;\r\n }\r\n else{\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n }\r\n \r\n })\r\n }\r\n }\r\n function handleMouseOut(d, i){\r\n if(!self.chartConfiguration.showValues){\r\n dot.selectAll(\".dot\").remove();\r\n }\r\n }\r\n\r\n if (\r\n self.chartConfiguration.showValues &&\r\n !self.chartConfiguration.showDataPointValues\r\n ) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n .style(\"display\", \"none\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"style\", \"font-size: \" + \".85em\")\r\n .attr(\"x\", function(d, i) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"y\", function(d) {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\");\r\n // if (self.chartConfiguration.showDataPointValues) {\r\n // dot.text(function (d) {\r\n // return self.chartConfiguration.labelFormatter(d.value);\r\n // });\r\n // }\r\n } else if (\r\n self.chartConfiguration.showValues &&\r\n self.chartConfiguration.showDataPointValues\r\n ) {\r\n dot\r\n .append(\"text\")\r\n .attr(\"class\", \"dot\")\r\n .style(\"display\", \"none\")\r\n .attr(\"color\", self.chartConfiguration.labelColor)\r\n .attr(\"style\", \"font-size: \" + \".85em\")\r\n .attr(\"x\", function(d, i) {\r\n return x(d.week) + x.bandwidth() / 2;\r\n })\r\n .attr(\"y\", function(d) {\r\n return y(d.value);\r\n })\r\n .attr(\"dy\", \"-1em\")\r\n .text(function(d) {\r\n return self.chartConfiguration.labelFormatter(d.value);\r\n });\r\n }\r\n\r\n if (metaData.yLabel) {\r\n svg\r\n .append(\"text\")\r\n .attr(\"class\", \"lib-y-axis-line-label lib-line-axis\")\r\n .attr(\"style\", self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr(\"transform\", \"rotate(-90)\")\r\n .attr(\"y\", 0 - (margin.left+3))\r\n .attr(\"x\", 0 - height / 2)\r\n .attr(\"dy\", \"1em\")\r\n .style(\"text-anchor\", \"middle\")\r\n .text(metaData.yLabel);\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div #linecardcontainer [ngClass]=\"{'lib-chart-wrapper': !hideShadow,\r\n 'lib-chart-wrapper-wo-shadow':hideShadow}\"\r\n (resized)=\"onResized($event)\">\r\n <!-- <div class=\"lib-chart-header\">{{ chartData.metaData.title }}</div> -->\r\n <lib-chart-header\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [customChartConfiguration]=\"parentChartConfigurations\"\r\n\r\n></lib-chart-header>\r\n <div\r\n *ngIf=\"chartData && chartData.metaData\"\r\n [style.height]=\"chartConfiguration.legendHeight\"\r\n class=\"lib-line-chart-legend-wrapper\"\r\n >\r\n <div class=\"lib-line-label-wrapper\">\r\n \r\n <div class=\"line-card-legend-label\" *ngIf=\"show_legend\">\r\n <div class=\"lib-line-card-label-items\" *ngFor=\"let item of chartData.metaData.colorMap | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-line-legend-label-text small\"\r\n [ngStyle]=\"{ border: '1px solid ' + item.value }\"\r\n [style.color]=\"item.value\"\r\n >{{ item.key }}</span\r\n ></div>\r\n </div>\r\n <div\r\n class=\"lib-line-card-label-item\">\r\n <span *ngIf=\"percentage && !chartValue && !chartData.metaData.percentageDescription\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{overtime + dataType}} ({{percentage+\" %\"}})</span>\r\n <span *ngIf=\"percentage && !chartValue && chartData.metaData.percentageDescription\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{overtime + dataType}}<div class=\"small\"> ({{percentage+\" %\" + chartData.metaData.percentageDescription}})</div></span> \r\n \r\n <span *ngIf=\"!percentage && !chartValue && !datatype_status && !overtime_value\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{overtime + dataType}}</span>\r\n <span *ngIf=\"!percentage && !chartValue && datatype_status && !overtime_value\"\r\n class=\"lib-line-legend-label-text\"\r\n [style.color]=\"chartData.metaData.colorMap['hour']\"\r\n >{{dataType + overtime}}</span>\r\n <span *ngIf=\"chartValue\"\r\n class=\"lib-line-legend-label-text\"\r\n >{{chartValue}}</span>\r\n </div>\r\n <!-- <div\r\n class=\"lib-line-label-item\"\r\n\r\n >\r\n\r\n </div> -->\r\n </div>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"linechartcardcontainer\"\r\n #linechartcardcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n <div *ngIf=\"chartConfiguration.showSlider\" [style.height]=\"chartConfiguration.footerHeight\" class=\"lib-line-chart-footer\">\r\n <ngb-pagination *ngIf=\"itemList && itemList.length > pageSize\" [collectionSize]=\"totalItems\" [(page)]=\"currentPage\"\r\n [pageSize]=\"pageSize\" [maxSize]=\"5\" [rotate]=\"true\" [boundaryLinks]=\"true\" (pageChange)=\"loadPage()\"\r\n class=\"sb-pagination\">\r\n \r\n </ngb-pagination>\r\n \r\n </div>\r\n</div>\r\n","import { Component, OnInit, ViewChild, ViewContainerRef, ComponentFactoryResolver, Input, EventEmitter, Output } from '@angular/core';\r\nimport { LineChartCardComponent } from '../line-chart-card/line-chart-card.component';\r\nimport ChartHelper from '../chart-helper';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-multiple-line-chart',\r\n templateUrl: './multiple-line-chart.component.html',\r\n styleUrls: ['./multiple-line-chart.component.less'],\r\n //encapsulation: ViewEncapsulation.ShadowDom\r\n})\r\nexport class MultipleLineChartComponent implements OnInit {\r\n\r\n @ViewChild(\"kpicontainer\", { static: true, read: ViewContainerRef })\r\n VCR!: ViewContainerRef;\r\n @ViewChild(\"kpicontainer2\", { static: true, read: ViewContainerRef })\r\n VCR2!: ViewContainerRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n @Output() cardClickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n weightage: any;\r\n chartTitle: any;\r\n menuItems: any;\r\n nodeId:any;\r\n dataDuration:any;\r\n parentChartConfigurations: any;\r\n defaultConfiguration: any = {\r\n showYaxis: false,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: \"#052340\",\r\n showDataPointValues: true\r\n };\r\n uiConfiguration: any;\r\n\r\n constructor(private CFR: ComponentFactoryResolver) { }\r\n\r\n ngOnInit() {\r\n this.initialiseParentChartData();\r\n this.displayChart1();\r\n this.displayChart2();\r\n }\r\n ngOnChanges() {\r\n if (this.chartData) {\r\n this.initialiseParentChartData();\r\n this.displayChart1();\r\n this.displayChart2();\r\n }\r\n }\r\n initialiseParentChartData() {\r\n this.chartTitle = this.chartData.parentChartData.metaData.title;\r\n this.nodeId = this.chartData.parentChartData.metaData.nodeId;\r\n this.weightage = this.chartData.parentChartData.metaData.weightage;\r\n this.dataDuration=this.chartData.parentChartData.metaData.dataDuration;\r\n if (this.weightage.format)\r\n this.weightage.value = this.weightage.value + this.weightage.format;\r\n let temp :any= [];\r\n for (var i = 0; i < this.chartData.parentChartData.data.length; i++) {\r\n temp[i] = {\r\n name: this.chartData.parentChartData.data[i].kpiName,\r\n performance: this.chartData.parentChartData.data[i].performance.match(/^[+-]?\\d+(\\.\\d+)?$/)? this.chartData.parentChartData.data[i].performance+ \"%\": this.chartData.parentChartData.data[i].performance,\r\n progress: this.chartData.parentChartData.data[i].progress.match(/^[+-]?\\d+(\\.\\d+)?$/)? this.chartData.parentChartData.data[i].progress+ \"%\": this.chartData.parentChartData.data[i].progress\r\n };\r\n }\r\n this.menuItems = temp;\r\n\r\n for (var j in this.defaultConfiguration) {\r\n this.chartConfiguration[j] = ChartHelper.getValueByConfigurationType(\r\n j,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration.parentUIData.uiConfiguration.customChartConfiguration\r\n );\r\n }\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.chartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.chartConfiguration.flagForMultiChart,\r\n hideShadow: this.chartConfiguration.hideShadow,\r\n backgroundColor: this.chartConfiguration.backgroundColor\r\n }\r\n // this.uiConfiguration = {\r\n // resetBackgroundColor: this.customChartConfiguration.parentUIData.uiConfiguration.customChartConfiguration.resetBackgroundColor,\r\n // flagForMultiChart: this.customChartConfiguration.parentUIData.uiConfiguration.customChartConfiguration.flagForMultiChart\r\n // }\r\n }\r\n\r\n displayChart1() {\r\n let self = this;\r\n let componentFactory = self.CFR.resolveComponentFactory(\r\n LineChartCardComponent\r\n );\r\n let componentRef = self.VCR.createComponent(componentFactory);\r\n componentRef.instance.chartData = this.chartData.childChartData[0];\r\n componentRef.instance.customChartConfiguration = this.customChartConfiguration.childUIData[0].childUIConfigurations.customChartConfiguration;\r\n }\r\n\r\n displayChart2() {\r\n let self = this;\r\n let componentFactory = self.CFR.resolveComponentFactory(\r\n LineChartCardComponent\r\n );\r\n let componentRef = self.VCR2.createComponent(componentFactory);\r\n componentRef.instance.chartData = this.chartData.childChartData[1];\r\n componentRef.instance.customChartConfiguration = this.customChartConfiguration.childUIData[1].childUIConfigurations.customChartConfiguration;\r\n }\r\n cardClick(value)\r\n {\r\n this.cardClickEvent.emit(value);\r\n }\r\n\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div class=\"lib-chart-wrapper\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <lib-chart-header [title]=\"chartTitle\" [menuOptions]=\"menuItems\"\r\n [customChartConfiguration]=\"parentChartConfigurations\" [weightage]=\"weightage\"></lib-chart-header>\r\n </div>\r\n </div>\r\n <div class=\"row container-height reset-margin\" (click)=\"cardClick(nodeId)\">\r\n <div class=\"col-6 container-height padding-left-0 padding-right-0 background-color\">\r\n <div class=\"container-height\">\r\n <ng-template #kpicontainer></ng-template> \r\n <div class=\"text-center duration\" *ngIf=\"dataDuration\">{{dataDuration}}</div> \r\n \r\n </div>\r\n </div>\r\n <div class=\"col-6 container-height padding-right-0 padding-left-0\">\r\n <div class=\"container-height\">\r\n <ng-template #kpicontainer2></ng-template>\r\n <div class=\"text-center duration\" *ngIf=\"dataDuration\">{{dataDuration}}</div> \r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\n@Component({\r\n selector: 'lib-suggestions',\r\n templateUrl: './suggestions.component.html',\r\n styleUrls: ['./suggestions.component.less']\r\n})\r\nexport class SuggestionsComponent implements OnInit {\r\n\r\n @Input() chartData:any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n chartTitle:string=\"\";\r\n parentChartConfigurations: any;\r\n chartConfiguration: any = {};\r\n menuItems: any;\r\n data:any;\r\n defaultConfiguration: any = {\r\n showYaxis: false,\r\n resetBackgroundColor:false,\r\n flagForMultiChart:false,\r\n hideShadow: false,\r\n backgroundColor: \"#1BCCD3\",\r\n showIcon:true\r\n };\r\n constructor() { }\r\n\r\n ngOnInit() {\r\n this.initialise();\r\n }\r\n\r\n initialise(){\r\n this.chartTitle = this.chartData.metaData.title;\r\n this.data = this.chartData.data;\r\n for (var j in this.defaultConfiguration) {\r\n this.chartConfiguration[j] = ChartHelper.getValueByConfigurationType(\r\n j,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.parentChartConfigurations={\r\n resetBackgroundColor: this.chartConfiguration.resetBackgroundColor,\r\n flagForMultiChart:this.chartConfiguration.flagForMultiChart,\r\n hideShadow: this.chartConfiguration.hideShadow,\r\n backgroundColor: this.chartConfiguration.backgroundColor,\r\n showIcon: this.chartConfiguration.showIcon\r\n }\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n}\r\n","<div class=\"lib-chart-wrapper\">\r\n <div class=\"row\">\r\n <div class=\"col-12\">\r\n <lib-chart-header [title]=\"chartTitle\" [menuOptions]=\"menuItems\"\r\n [customChartConfiguration]=\"parentChartConfigurations\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"></lib-chart-header>\r\n </div>\r\n </div>\r\n <div class=\"row container-height reset-margin\">\r\n <div class=\"col-12 container-styling center\">\r\n <div class=\"\">\r\n <div *ngFor=\"let row of data; let index=index; let odd=odd; let even=even;\">\r\n <div class=\"row reset-margin\" [ngClass]=\"{ odd: odd, even: even }\">\r\n <div class=\"col-1 text-padding center\">&#128161;</div>\r\n <div class=\"col-10 text-padding center\"> {{row.text}}</div>\r\n <div class=\"col-1 text-padding center status-symbol\"> &#x26A0;</div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input, EventEmitter, Output, HostListener,ElementRef} from '@angular/core';\r\nimport ChartHelper from '../chart-helper';\r\n\r\n@Component({\r\n selector: 'lib-table-chart',\r\n templateUrl: './table-chart.component.html',\r\n styleUrls: ['./table-chart.component.less']\r\n})\r\nexport class TableChartComponent implements OnInit {\r\n //chartData: any = { \"metaData\": { \"title\": \"\", \"headers\": [{ \"name\": \"cost\", \"children\": [\"cost per case\", \"cost per pallet\", \"overtime %\"] }, { \"name\": \"inventory\", \"children\": [\"invt b\", \"invt a\", \"invt c%\"] }, { \"name\": \"productivity\", \"children\": [\"prod a\", \"prod b\", \"prod c%\"] }] }, \"data\": [{ \"metaData\": { \"title\": \"DC1\" }, \"data\": [{ \"name\": \"cost\", \"value\": \"88%\", \"children\": [{ \"name\": \"cost per case\", \"value\": \"10%\" }, { \"name\": \"cost per pallet\", \"value\": \"1%\" }, { \"name\": \"overtime %\", \"value\": \"13%\" }] }, { \"name\": \"inventory\", \"value\": \"74%\", \"children\": [{ \"name\": \"invt a\", \"value\": \"20%\" }, { \"name\": \"invt b\", \"value\": \"41%\" }, { \"name\": \"invt c%\", \"value\": \"23%\" }] }, { \"name\": \"productivity\", \"value\": \"91%\", \"children\": [{ \"name\": \"prod a\", \"value\": \"59%\" }, { \"name\": \"prod b\", \"value\": \"41%\" }, { \"name\": \"prod c%\", \"value\": \"13%\" }] }] }, { \"metaData\": { \"title\": \"DC2\" }, \"data\": [{ \"name\": \"cost\", \"value\": \"90%\", \"children\": [{ \"name\": \"cost per case\", \"value\": \"20%\" }, { \"name\": \"cost per pallet\", \"value\": \"31%\" }, { \"name\": \"overtime %\", \"value\": \"10%\" }] }, { \"name\": \"inventory\", \"value\": \"64%\", \"children\": [{ \"name\": \"invt a\", \"value\": \"20%\" }, { \"name\": \"invt b\", \"value\": \"11%\" }, { \"name\": \"invt c%\", \"value\": \"43%\" }] }, { \"name\": \"productivity\", \"value\": \"81%\", \"children\": [{ \"name\": \"prod a\", \"value\": \"79%\" }, { \"name\": \"prod b\", \"value\": \"51%\" }, { \"name\": \"prod c%\", \"value\": \"33%\" }] }] }] };\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n @Output() dropdownChangeEvent = new EventEmitter<any>();\r\n @Output() cardClickEvent = new EventEmitter<any>();\r\n labelFormatter: any = ChartHelper.defaultFormatter;\r\n\r\n headers: any = [];\r\n title: string = '';\r\n data1: any;\r\n data: any;\r\n showChildren: boolean = false;\r\n children: any;\r\n activeParent: any;\r\n dropdownData: any = [];\r\n childClassName: string=\"\";\r\n parentClassName: string=\"\";\r\n dataCounter: number =0;\r\n payloadType:string=\"\";\r\n addButton:boolean=false;\r\n selectedDcs:any=[];\r\n hideDropDown:boolean=true\r\n checkedDcs:any=[];\r\n // changeCheckbox:boolean=false;\r\n // addButtonStatus:boolean=true;\r\n\r\n constructor() {}\r\n\r\n @HostListener(\"document:click\", [\"$event\"])\r\n clickout() {\r\n if(!this.hideDropDown) {\r\n this.hideDropDown=true;\r\n } \r\n }\r\n\r\n ngOnInit() {\r\n this.getHeaderData();\r\n this.getDcData();\r\n }\r\n getHeaderData() {\r\n this.headers = this.chartData.metaData.headers;\r\n this.dropdownData = this.chartData.metaData.dcs;\r\n this.title = this.chartData.metaData.title;\r\n this.payloadType = this.chartData.metaData.payloadType\r\n ? this.chartData.metaData.payloadType\r\n : 'DC';\r\n }\r\n getDcData() {\r\n this.data1 = this.chartData.data;\r\n for (var i = 0; i < this.data1.length; i++) {\r\n for (var j = 0; j < this.data1[i].data.length; j++) {\r\n let results: any = [];\r\n this.headers.map(data => {\r\n let checkcategory = this.data1[i].data.some(\r\n obj => obj.kpiName == data.kpiName\r\n );\r\n if (!checkcategory) {\r\n this.data1[i].data.push({\r\n kpiName: data.kpiName,\r\n value: 'NA',\r\n children: []\r\n });\r\n }\r\n var founds = false;\r\n this.data1[i].data = this.data1[i].data.filter(function(item) {\r\n if (!founds && item.kpiName == data.kpiName) {\r\n results.push(item);\r\n founds = true;\r\n return false;\r\n } else return true;\r\n });\r\n });\r\n this.data1[i].data = results;\r\n }\r\n if(!this.checkedDcs.includes(this.data1[i].metaData.nodeId)){\r\n this.checkedDcs.push(this.data1[i].metaData.nodeId);\r\n }\r\n }\r\n\r\n this.dataCounter = this.chartData.data.length;\r\n let className: any = ChartHelper.getColumnValue(this.dataCounter);\r\n this.childClassName = className.child;\r\n this.parentClassName = className.parent;\r\n }\r\n\r\n hideShowClick(parent: string) {\r\n if (!this.showChildren) {\r\n for (var i = 0; i < this.headers.length; i++) {\r\n if (this.headers[i].kpiName == parent) {\r\n this.activeParent = parent;\r\n this.children = this.headers[i].children;\r\n this.showChildren = true;\r\n break;\r\n }\r\n }\r\n for (var i = 0; i < this.data1.length; i++) {\r\n for (var j = 0; j < this.data1[i].data.length; j++) {\r\n if (this.data1[i].data[j].kpiName == this.activeParent) {\r\n let kpichild = this.data1[i].data[j].children;\r\n let result: any = [];\r\n let len = this.children.length;\r\n this.children.map(data => {\r\n let checkdata = kpichild.some(\r\n (obj, index) =>\r\n kpichild.indexOf(obj.kpiName) == index && obj.kpiName == data\r\n );\r\n if (!checkdata) {\r\n this.data1[i].data[j].children.push({\r\n kpiName: data,\r\n performance: 'NA'\r\n });\r\n }\r\n var found = false;\r\n this.data1[i].data[j].children = this.data1[i].data[\r\n j\r\n ].children.filter(function(item) {\r\n if (!found && item.kpiName == data) {\r\n result.push(item);\r\n found = true;\r\n return false;\r\n } else {\r\n return true;\r\n }\r\n });\r\n });\r\n this.data1[i].data[j].children = result;\r\n }\r\n }\r\n }\r\n } else {\r\n this.activeParent = '';\r\n this.showChildren = false;\r\n }\r\n }\r\n showDropdown(event: Event) {\r\n event.stopPropagation();\r\n this.hideDropDown = !this.hideDropDown;\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n onOptionsSelected(dcs) {\r\n console.log(dcs)\r\n let optionClicked=\"\";\r\n if( Array.isArray(dcs)){\r\n dcs.map((node, index) => {\r\n optionClicked += (index === 0 ? \"\" : \",\") + node;\r\n });\r\n }\r\n else{\r\n optionClicked=dcs;\r\n }\r\n this.dropdownChangeEvent.emit(optionClicked);\r\n this.hideDropDown = true;\r\n }\r\n delete(dcSelected: string) {\r\n for (var i = 0; i < this.dropdownData.length; i++) {\r\n if (\r\n this.dropdownData[i].value.toLowerCase() == dcSelected.toLowerCase()\r\n ) {\r\n this.onOptionsSelected({ remove: this.dropdownData[i].id });\r\n const index: number = this.checkedDcs.indexOf(this.dropdownData[i].id);\r\n if (index !== -1) {\r\n this.checkedDcs.splice(index, 1);\r\n } \r\n break;\r\n }\r\n }\r\n }\r\n cardClick(value) {\r\n this.cardClickEvent.emit({ value: value, type: this.payloadType });\r\n }\r\n selectedValue(event: Event,value, isChecked: boolean){\r\n event.stopPropagation();\r\n this.hideDropDown = false;\r\n if(isChecked){\r\n this.addButton=true;\r\n this.selectedDcs.push(value);\r\n if(!this.checkedDcs.includes(value)){\r\n this.checkedDcs.push(value);\r\n }\r\n }else{\r\n const index: number = this.selectedDcs.indexOf(value);\r\n if (index !== -1) {\r\n this.selectedDcs.splice(index, 1);\r\n } \r\n }\r\n }\r\n addClicked(event: Event){\r\n event.stopPropagation();\r\n if(this.addButton){\r\n this.onOptionsSelected(this.selectedDcs)\r\n }\r\n }\r\n}\r\n","<div class=\"row box-shadow\">\r\n <div class=\"col-12\">\r\n <div class=\"row selectbox-styling\">\r\n <div class=\" align-left padding-right-0 padding-top px-0\">\r\n <label for=\"selectDc\">Add {{payloadType}}s to Compare</label>\r\n </div>\r\n <div class=\"col-10 align-left pl-0\">\r\n <!-- <select class=\"form-control\" id=\"selectDc\" #selectDc (change)='onOptionsSelected(selectDc.value)'>\r\n <option [value]=\"\" disabled>Select {{payloadType}}s</option>\r\n <option *ngFor=\"let row of dropdownData\" [value]=\"row.id\">{{row.value}}</option>\r\n </select> -->\r\n <div>\r\n <button class=\"drop-toggle btn flat col-7 \" (click)=\"showDropdown($event)\">\r\n <span>Select {{payloadType}}s</span>\r\n <i class=\"fa fa-angle-down\"></i>\r\n </button>\r\n <div class=\"drop-show\" [ngClass]=\"{'hide-dropdown': hideDropDown}\">\r\n <label *ngFor=\"let row of dropdownData\">\r\n <input type=\"checkbox\" class=\"checkbox-styling\" [checked]=\"checkedDcs.includes(row.id)\" (change)=\"selectedValue($event,row.id,$event.target.checked)\"\r\n />\r\n <span class=\"pl-3\">{{row.value}}</span>\r\n </label> <div *ngIf=\"addButton\" class=\"d-flex justify-content-end\"><button class=\"btn btn-primary btn-sm \" (click)=\"addClicked($event)\">ADD</button></div>\r\n </div>\r\n \r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"row table-styling\">\r\n <div class=\"align-left\" [ngClass]=\"parentClassName\">\r\n <div class=\"row border-bottom-styling padding\">\r\n <div class=\"col-12\">\r\n <!-- <div class=\"pencil\">\r\n &#9998;\r\n Performance Category\r\n </div> -->\r\n <span class=\"performance-bold overflow\">\r\n {{title}}\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngFor=\"let parent of headers\">\r\n <div class=\"row header-background padding\">\r\n <div class=\"col-12\">\r\n <span class=\"bold overflow data-styling\">\r\n {{parent.kpiName}}\r\n </span>\r\n <span class=\"cursor float-right bold\" (click)=\"hideShowClick(parent.kpiName)\">\r\n <span *ngIf=\"!(showChildren && parent.kpiName == activeParent)\">\r\n &#x2b;\r\n </span>\r\n <span *ngIf=\"showChildren && parent.kpiName == activeParent\">\r\n &#x2212;\r\n </span>\r\n </span>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showChildren && parent.kpiName == activeParent\">\r\n <div class=\"row padding-left header-background\" *ngFor=\"let child of children\">\r\n <div class=\"col-12\">\r\n <div class=\"padding-sub overflow\">\r\n {{child}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"border-left-style\" [ngClass]=\"childClassName\" *ngFor=\"let parent of data1\">\r\n <div class=\"row dc-backgtound border-bottom-styling align-center padding\">\r\n <div class=\"col-12\">\r\n <div class=\"overflow title-styling lh-24\" (click)=\"cardClick(parent.metaData.nodeId)\">\r\n {{parent.metaData.title}}\r\n </div>\r\n </div>\r\n <div class=\"top-corner\" *ngIf=\"dataCounter>2\" (click)=\"delete(parent.metaData.title)\">\r\n &#10062;\r\n </div>\r\n </div>\r\n <div *ngFor=\"let item of parent.data\">\r\n <div class=\"row align-center bold data-styling p-19\">\r\n <div class=\"col-12\">\r\n <div class=\"overflow\">\r\n {{item.value}}\r\n </div>\r\n </div>\r\n </div>\r\n <div *ngIf=\"showChildren && item.kpiName == activeParent\">\r\n <div class=\"row align-center\" *ngFor=\"let child of item.children\">\r\n <div class=\"col-12\">\r\n <div class=\"padding-sub overflow\">\r\n {{child.performance}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input, Output, EventEmitter } from \"@angular/core\";\r\nimport ChartHelper from \"../chart-helper\";\r\nimport HeaderConfigHelper from \"../header-config\";\r\n\r\n@Component({\r\n selector: 'lib-multiple-progressbar',\r\n templateUrl: './multiple-progressbar.component.html',\r\n styleUrls: ['./multiple-progressbar.component.less']\r\n})\r\nexport class MultipleProgressbarComponent implements OnInit {\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n resetBackgroundColor: boolean = false;\r\n parentChartConfigurations: any;\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 20 },\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n resetBackgroundColor: false,\r\n flagForMultiChart: false,\r\n hideShadow: false,\r\n backgroundColor: \"#052340\"\r\n };\r\n progressvalue = 0;\r\n metaData;\r\n data = [];\r\n currentvalue1: any;\r\n currentvalue2: any;\r\n currentname1: any;\r\n currentname2: any;\r\n footerText:any;\r\n\r\n color_type: any;\r\n type: any = \"\";\r\n datatype: any;\r\n progress_style: any;\r\n first: any;\r\n lasts: any;\r\n diff: any;\r\n per_value: any;\r\n width: number=0;\r\n datatype_status:boolean=false;\r\n value_status:boolean=false;\r\n hasDrillDownData:boolean=false;\r\n featureId:any;\r\n indexType:any=\"\";\r\n isFromMultiProgressBar:boolean=true;\r\n color11:any; \r\n per11:any;\r\n color12:any; \r\n per12:any;\r\n color21:any; \r\n per21:any;\r\n color22:any; \r\n per22:any;\r\n constructor() {}\r\n\r\n ngOnInit() {\r\n for (var i in this.defaultConfiguration) {\r\n this.chartConfiguration[i] = ChartHelper.getValueByConfigurationType(\r\n i,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n this.resetBackgroundColor = this.customChartConfiguration.resetBackgroundColor;\r\n this.parentChartConfigurations = {\r\n resetBackgroundColor: this.customChartConfiguration.resetBackgroundColor,\r\n flagForMultiChart: this.customChartConfiguration.flagForMultiChart,\r\n hideShadow: this.customChartConfiguration.hideShadow,\r\n backgroundColor: this.customChartConfiguration.resetBackgroundColor\r\n ? \"\"\r\n : \"#052340\"\r\n };\r\n let data = [];\r\n // let type:any;\r\n\r\n this.data = this.chartData.data;\r\n\r\n this.first = this.data[0];\r\n\r\n var len = this.data.length;\r\n\r\n this.lasts = this.data[len - 1];\r\n this.metaData = this.chartData.metaData;\r\n this.featureId=this.metaData.featureId;\r\n //this.resetBackgroundColor=true;\r\n this.datatype = this.metaData.datatype;\r\n this.currentvalue1 = this.metaData.currentValue1.value;\r\n this.currentname1=this.metaData.currentValue1.name;\r\n this.footerText=this.metaData.currentValue1.footerText;\r\n if(this.metaData.currentValue1.color && this.metaData.currentValue1.color.length>0){\r\n this.color11=this.metaData.currentValue1.color[0].colorCode; \r\n this.per11=this.metaData.currentValue1.color[0].range; \r\n this.color12=this.metaData.currentValue1.color[1].colorCode; \r\n this.per12=this.metaData.currentValue1.color[1].range;\r\n }if(this.metaData.currentValue2 && this.metaData.currentValue2.color && this.metaData.currentValue2.color.length>0){\r\n this.color21=this.metaData.currentValue2.color[0].colorCode; \r\n this.per21=this.metaData.currentValue2.color[0].range; \r\n this.color22=this.metaData.currentValue2.color[1].colorCode; \r\n this.per22=this.metaData.currentValue2.color[1].range;\r\n }\r\n\r\n if(this.metaData.currentValue2 && this.metaData.currentValue2.name){\r\n this.currentname2=this.metaData.currentValue2.name;\r\n this.currentvalue2 = this.metaData.currentValue2.value;\r\n }\r\n this.color_type = this.metaData.colorType;\r\n if(!this.metaData.currentValue2){\r\n this.color_type=this.color_type+\"__thick\";\r\n }\r\n this.indexType=this.metaData.type?this.metaData.type:\"\";\r\n if(this.currentvalue1>1){\r\n this.value_status=true;\r\n }\r\n if(this.currentvalue2>1){\r\n this.value_status=true;\r\n }\r\n this.hasDrillDownData = this.metaData.hasDrillDown;\r\n if((this.datatype==\"Hr\" || this.datatype==\"Hours\") && this.currentvalue1<2){\r\n this.currentvalue1=(this.currentvalue1*60).toFixed(2);\r\n\r\n this.datatype=\" Minutes\"\r\n }\r\n if((this.datatype==\"Hr\" || this.datatype==\"Hours\") && this.currentvalue2<2){\r\n this.currentvalue2=(this.currentvalue2*60).toFixed(2);\r\n\r\n this.datatype=\" Minutes\"\r\n }\r\n if(this.datatype==\"USD\"){\r\n this.datatype_status=true;\r\n this.datatype=\"$ \";\r\n }\r\n if (this.datatype == \"%\" || this.datatype == \" %\") {\r\n this.type = \"%\";\r\n } else {\r\n this.type = \"\";\r\n }\r\n this.diff = (100 - this.lasts) / 4;\r\n if (this.diff > 0) {\r\n this.per_value = this.currentvalue1 * this.currentvalue1 + this.diff;\r\n this.progress_style = {\r\n width: this.per_value + \"%\"\r\n };\r\n } else {\r\n if(this.currentvalue1<=0 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 0 + \"%\"\r\n };\r\n this.currentvalue1=0;\r\n }\r\n else if(this.currentvalue1>=100 && this.indexType=='retinaindex'){\r\n this.progress_style = {\r\n width: 100 + \"%\"\r\n };\r\n this.currentvalue1=100;\r\n }\r\n else{\r\n this.progress_style = {\r\n width: this.metaData.currentValue + \"%\"\r\n };\r\n }\r\n }\r\n }\r\n handleClick(d: any) {\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n getBackgroundColor(c1, p1, c2, p2){\r\n if(c1 && p1 && c2 && p2){\r\n return \"linear-gradient(to right, \"+c1+\" \"+ p1+\"%, \"+c2+\" \"+p2+\"% )\";\r\n }\r\n else{ \r\n return \"linear-gradient(to right, #04CBCC 90%, #04CBCC 10%)\";\r\n }\r\n\r\n }\r\n}\r\n","<div [ngClass]=\"{'lib-chart-wrapper progressbar': !resetBackgroundColor,\r\n 'lib-chart-wrapper-wo-shadow':resetBackgroundColor}\">\r\n <lib-chart-header [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\" [menuOptions]=\"undefined\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\" [customChartConfiguration]=\"parentChartConfigurations\" [isFromMultiProgressBar]=\"isFromMultiProgressBar\"></lib-chart-header>\r\n <div class=\"lib-chart-svg\" *ngIf=\"currentname1\" [ngClass]=\"chartConfiguration.hideShadow ? 'slidecontainer' : 'slidewidth'\">\r\n <p *ngIf=\"chartConfiguration.hideShadow\" [ngStyle]=\"progress_style\" [attr.data-value]=\"currentvalue1 + datatype\"></p>\r\n \r\n \r\n <!-- <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5\" *ngIf=\"currentname1\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n \r\n </div>\r\n </div> -->\r\n\r\n\r\n\r\n <!-- <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5 mt-12\" *ngIf=\"currentname2\" [ngClass]=\"{' mt-12':currentname2,\r\n 'mt-25':!currentname2}\"></span>\r\n <div [style.margin-left.%]=\"currentvalue1\"\r\n [ngClass]=\"{'w-80':!currentname2,\r\n ' w-65':currentname2}\">\r\n {{currentvalue1}}{{datatype}}\r\n </div>\r\n </div> -->\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5\" *ngIf=\"currentname2\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <!-- <div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div> -->\r\n <div \r\n class=\"fw-900\"\r\n [ngClass]=\"{'mt-27 w-80':!currentname2,\r\n 'mt-20 w-65':currentname2}\">\r\n <span [style.margin-left.%]=\"(currentvalue1/lasts)*100\">{{currentvalue1}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n\r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <!-- <span class=\"pr-5 mt-12\" style=\"visibility: none;\" *ngIf=\"currentname2\" [ngClass]=\"{' mt-12':currentname2,\r\n 'mt-25':!currentname2}\">{{currentname1}}</span> -->\r\n <!-- <output class=\"fw-900 p-a actual__value\" [ngClass]=\"{\r\n 'w-80':!currentname2,\r\n 'w-65':currentname2}\" [style.margin-left.%]=\"currentvalue1\">{{currentvalue1}}{{datatype}}</output> -->\r\n <span class=\"pr-5 mt-12\" *ngIf=\"currentname2\" [ngClass]=\"{' mt-m7':currentname2,\r\n 'mt-25':!currentname2}\">{{currentname1}}</span>\r\n\r\n <input *ngIf=\"value_status\" \r\n type=\"range\" min=\"{{first}}\" max=\"{{lasts}}\" \r\n [value]=\"currentvalue1\" class=\"slider\" \r\n [class]=\"color_type\"\r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n ' w-80':!currentname2,\r\n ' w-65':currentname2}\" \r\n [ngStyle]=\"{'background': getBackgroundColor(color11, per11,color12,per12)}\"\r\n\r\n id=\"{{featureId}}\" \r\n disabled name=\"rangeInput\">\r\n <input *ngIf=\"!value_status\" type=\"range\" max=\"{{lasts}}\" [attr.value]=\"currentvalue1\" class=\"slider\" [class]=\"color_type\" \r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n ' w-80':!currentname2,\r\n ' w-65':currentname2}\" \r\n [ngStyle]=\"{'background': getBackgroundColor(color11, per11,color12,per12)}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n </div>\r\n </div>\r\n <div class=\"lib-chart-svg \" [ngClass]=\"chartConfiguration.hideShadow ? 'slidecontainer' : 'slidewidth'\">\r\n <p *ngIf=\"chartConfiguration.hideShadow\" [ngStyle]=\"progress_style\" [attr.data-value]=\"currentvalue2 + datatype\"></p>\r\n <!-- <output [ngClass]=\"\" class=\"fw-900 mt-3\">{{currentvalue2}}{{datatype}}</output> -->\r\n \r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\" *ngIf=\"currentvalue2\">\r\n <span class=\"pr-5\" *ngIf=\"currentname2\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <!-- <div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div> -->\r\n <div class=\"mt-10\"\r\n class=\"fw-900\"\r\n [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <span [style.margin-left.%]=\"(currentvalue2/lasts)*100\">{{currentvalue2}}%</span>\r\n </div>\r\n </div>\r\n </div>\r\n <div class=\"chart__holder\" *ngIf=\"currentname2\">\r\n <span class=\"pr-5 mt-m7\">{{currentname2}}</span>\r\n <input *ngIf=\"value_status\" type=\"range\" min=\"{{first}}\" max=\"{{lasts}}\" [value]=\"currentvalue2\" class=\"slider\" \r\n [class]=\"color_type\"\r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n 'w-80':!currentname2,\r\n 'w-65':currentname2}\" \r\n [ngStyle]=\"{'background':getBackgroundColor(color21, per21,color22,per22)}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n <input *ngIf=\"!value_status\" type=\"range\" max=\"{{lasts}}\" [attr.value]=\"currentvalue2\" class=\"slider\" \r\n [class]=\"color_type\" \r\n [ngClass]=\"{'cursor-style': hasDrillDownData,\r\n 'w-80':!currentname2,\r\n 'w-65':currentname2}\" \r\n [ngStyle]=\"{'background': getBackgroundColor(color21, per21,color22,per22)}\"\r\n id=\"{{featureId}}\" disabled name=\"rangeInput\">\r\n </div>\r\n <div class=\"chart__holder\" [ngClass]=\"!currentname2?'jc-center':''\">\r\n <span class=\"pr-5\" *ngIf=\"currentname2\"></span>\r\n <div class=\"lib-donut-label-item\" [ngClass]=\"{'w-80':!currentname2,\r\n 'w-65':currentname2}\">\r\n <!-- <div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div><div class=\"ran\"></div> -->\r\n <div *ngFor=\"let d of data; let l=last; let i=index\" [ngClass]=\"{'ran_p' : i!=data.length}\" [class.ran_pl]=\"l\">\r\n {{d + type}}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n <div [style.height]=\"chartConfiguration.footerHeight\" class=\"lib-multiprogressbar-chart-footer\" [ngClass]=\"currentname2 ?'ml-25':footerText? '': 'ml-40'\">\r\n <div [ngClass]=\"chartData.metaData.target ? 'lib-progressbar-label-style' : ''\">\r\n <div class=\"lib-donut-label-item mt-20\">\r\n <!-- <span *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n > -->\r\n <!-- <span class=\"mr-10\">{{currentname1}} : <span class=\"fw-b\">{{currentvalue1 + datatype}}</span>\r\n </span>\r\n <span *ngIf=\"currentname2\" class=\"ml-10\">{{currentname2}} : <span class=\"fw-b\">{{currentvalue2 + datatype}}</span>\r\n </span> -->\r\n <span *ngIf=\"footerText\" class=\"\">\r\n <span class=\"footer__text\">{{footerText}}</span>\r\n </span>\r\n <!-- <span\r\n >Current value is {{currentvalue + datatype}}</span\r\n > -->\r\n </div>\r\n <!-- <div *ngIf=\"chartData.metaData.target\" class=\"lib-donut-label-item\"><span class=\"lib-donut-label-icon bc-gauge-chart\"></span\r\n ><span\r\n >Target: {{chartData.metaData.target}}</span\r\n ></div> -->\r\n </div>\r\n </div>\r\n</div>","import { Component, OnInit, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-multichart-footer',\r\n templateUrl: './multichart-footer.component.html',\r\n styleUrls: ['./multichart-footer.component.less']\r\n})\r\nexport class MultichartFooterComponent implements OnInit {\r\n @Input() multiChartFooter:any=[];\r\n constructor() { }\r\n\r\n ngOnInit(): void {\r\n }\r\n\r\n}\r\n","<div class=\"width-100 textalign-center margintop-5\" *ngIf=\"multiChartFooter && multiChartFooter.length\">\r\n <span class=\"footer__holder\" *ngFor=\"let item of multiChartFooter\">\r\n <span class=\"footer\">\r\n <span class=\"circle\" *ngIf=\"!item.isRegressionLine\" [style.background-color]=\"item.color\">\r\n <span class=\"link\" *ngIf=\"item.isLine\" [style.border-top-color]=\"item.color\"></span>\r\n </span>\r\n <span class=\"dottedlink\" *ngIf=\"item.isRegressionLine\" [style.border-top-color]=\"item.color\"></span>\r\n <span class=\"footer__text\">{{item.category}}</span>\r\n </span>\r\n </span>\r\n</div>","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n OnChanges,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n// Types\r\ninterface ChartData {\r\n data: any[];\r\n metaData: ChartMetaData;\r\n lineData?: any[];\r\n targetLineData?: TargetLineData;\r\n}\r\n\r\ninterface ChartMetaData {\r\n unit?: string;\r\n isCC?: boolean;\r\n barWithoutClick?: string[];\r\n colors: { [key: string]: string };\r\n keyList: string[];\r\n dataType?: string;\r\n hasDrillDown?: boolean;\r\n hoverColor?: string;\r\n yLabel?: string;\r\n xLabel?: string;\r\n lineyLabel?: string;\r\n}\r\n\r\ninterface TargetLineData {\r\n target: string | number;\r\n color: string;\r\n targetName?: string;\r\n barAboveTargetColor?: string;\r\n barAboveTargetHoverColor?: string;\r\n}\r\n\r\ninterface Dimensions {\r\n width: number;\r\n height: number;\r\n containerWidth: number;\r\n containerHeight: number;\r\n barWidth: number;\r\n barPadding: number;\r\n requiredSvgWidth: number;\r\n}\r\n\r\n@Component({\r\n selector: 'lib-horizontal-bars-with-scroll-zoom',\r\n templateUrl: './horizontal-bars-with-scroll-zoom.component.html',\r\n styleUrls: [\r\n './horizontal-bars-with-scroll-zoom.component.less',\r\n '../common-styles.less',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HorizontalBarsWithScrollZoomComponent\r\n extends ComponentUniqueId\r\n implements OnChanges {\r\n \r\n @ViewChild('verticalstackedchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('verticalstackedcontainer', { static: true })\r\n verticalstackedcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: ChartData | any ;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n isHeaderVisible = true;\r\n isTopCaptionVisible = true;\r\n uniqueId = this.getUniqueId();\r\n isTransparentBackground = false;\r\n isCC = false;\r\n isZoomedOut = true;\r\n\r\n private readonly CONSTANTS = {\r\n RIGHT_SVG_WIDTH: 60,\r\n LEFT_RIGHT_SPACES: 50,\r\n SHORT_TICK_LENGTH: 4,\r\n LONG_TICK_LENGTH: 16,\r\n SHORT_TICK_LENGTH_BG: 5,\r\n LONG_TICK_LENGTH_BG: 30,\r\n DESKTOP_BAR_WIDTH: 40, // Desktop bar width\r\n MOBILE_BAR_WIDTH: 25, // Mobile/Tablet bar width (reduced)\r\n BAR_GAP: 30, // Gap between bars (increased for better separation)\r\n ZOOM_THRESHOLD: 30,\r\n ZOOM_IN_THRESHOLD: 8,\r\n };\r\n\r\n defaultConfiguration = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 40 },\r\n svgHeight: 70,\r\n legendHeight: '10%',\r\n numberOfYTicks: 5,\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n xAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showLegend: false,\r\n forComparison: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n yAxisGrid: false,\r\n // Optional configs with undefined defaults\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n isTopCaptionVisible: undefined,\r\n isMultiChartGridLine: undefined,\r\n isFullScreen: undefined,\r\n customYscale: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: undefined,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n isXaxisColor: undefined,\r\n textFormatter: undefined,\r\n showTotalOnTop: undefined,\r\n backendFormatterHasPriority: undefined,\r\n showAngledLabels: undefined,\r\n isNoAlternateXaxisText: undefined,\r\n isXgridBetweenLabels: undefined,\r\n showXaxisTop: undefined,\r\n xAxisGrid: undefined,\r\n xLabelsOnSameLine: undefined,\r\n hideXaxisTick: undefined,\r\n isDrilldownChart: undefined,\r\n isTargetLine: undefined,\r\n displayTitleOnTop: undefined,\r\n isToggleVisible: undefined,\r\n isTitleHidden: undefined,\r\n };\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n ngOnChanges() {\r\n this.removeExistingChart();\r\n this.initializeStackedChart();\r\n }\r\n\r\n onResized(event: ResizedEvent) {\r\n setTimeout(() => {\r\n this.removeExistingChart();\r\n this.initializeStackedChart();\r\n }, 10);\r\n }\r\n\r\n isZoomOutSelected(isZoomOut: boolean) {\r\n this.isZoomedOut = isZoomOut;\r\n this.ngOnChanges();\r\n }\r\n\r\n private removeExistingChart() {\r\n d3.select('#' + this.uniqueId).remove();\r\n }\r\n\r\n private mergeConfigurations() {\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n }\r\n\r\n private prepareMetaData(metaData: ChartMetaData): ChartMetaData {\r\n if (!metaData.unit) metaData.unit = '';\r\n if (metaData.isCC) this.isCC = metaData.isCC;\r\n \r\n if (metaData.barWithoutClick?.length) {\r\n metaData.barWithoutClick = metaData.barWithoutClick.map(el => el.toLowerCase());\r\n } else {\r\n metaData.barWithoutClick = [];\r\n }\r\n \r\n return metaData;\r\n }\r\n\r\nprivate calculateDimensions(\r\n chartContainer: any,\r\n verticalContainer: any,\r\n margin: any,\r\n dataLength: number\r\n): Dimensions {\r\n const containerWidth = chartContainer.node().getBoundingClientRect().width;\r\n const containerHeight = verticalContainer.node().getBoundingClientRect().height;\r\n \r\n const leftAxisWidth = 80;\r\n const rightAxisWidth = this.CONSTANTS.RIGHT_SVG_WIDTH;\r\n const availableWidth = containerWidth - leftAxisWidth - rightAxisWidth;\r\n \r\n let width = availableWidth;\r\n let height = containerHeight * (this.chartConfiguration.svgHeight / 100) - margin.top - margin.bottom;\r\n\r\n if (dataLength > this.CONSTANTS.ZOOM_THRESHOLD && this.isZoomedOut) {\r\n const minWidth = dataLength * 25;\r\n width = Math.max(width, minWidth);\r\n }\r\n\r\n if (dataLength > this.CONSTANTS.ZOOM_IN_THRESHOLD && !this.isZoomedOut) {\r\n width = dataLength * 130;\r\n }\r\n\r\n if (this.chartConfiguration.isFullScreen) {\r\n height = this.chartConfiguration.svgHeight !== 80\r\n ? this.chartConfiguration.svgHeight\r\n : containerHeight;\r\n }\r\n\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n height = containerHeight - margin.top - margin.bottom - 130;\r\n }\r\n\r\n const isMobileOrTablet = window.innerWidth < 1024;\r\n let barWidth: number;\r\n let barPadding: number;\r\n \r\n if (isMobileOrTablet) {\r\n if (dataLength === 1) {\r\n barWidth = 60;\r\n barPadding = 0;\r\n } else if (dataLength === 2) {\r\n barWidth = 50;\r\n barPadding = 45;\r\n } else if (dataLength === 3) {\r\n barWidth = 45;\r\n barPadding = 40;\r\n } else if (dataLength <= 5) {\r\n barWidth = 35;\r\n barPadding = 30;\r\n } else {\r\n barWidth = 25;\r\n barPadding = 25;\r\n }\r\n } else {\r\n barWidth = this.CONSTANTS.DESKTOP_BAR_WIDTH;\r\n barPadding = this.CONSTANTS.BAR_GAP;\r\n }\r\n \r\n const totalBarsWidth = barWidth * dataLength;\r\n const totalGaps = barPadding * (dataLength - 1);\r\n const minRequiredWidth = totalBarsWidth + totalGaps + (this.CONSTANTS.LEFT_RIGHT_SPACES * 2);\r\n const requiredSvgWidth = Math.max(availableWidth, minRequiredWidth);\r\n\r\n return {\r\n width,\r\n height,\r\n containerWidth,\r\n containerHeight,\r\n barWidth,\r\n barPadding,\r\n requiredSvgWidth,\r\n };\r\n}\r\n\r\nprivate createSvgContainers(\r\n chartContainer: any,\r\n dimensions: Dimensions,\r\n margin: any,\r\n hasXLabel: boolean // Add this parameter\r\n) {\r\n // Calculate total height including space for X-axis label if present\r\n const xLabelSpace = hasXLabel ? 30 : 0;\r\n const totalHeight = dimensions.height + margin.top + margin.bottom + xLabelSpace;\r\n\r\n // Main wrapper\r\n const chartWrapper = chartContainer\r\n .append('div')\r\n .attr('id', this.uniqueId)\r\n .attr('class', 'chart-wrapper-main')\r\n .style('position', 'relative')\r\n .style('width', '100%')\r\n .style('height', `${totalHeight}px`); // Include X-label space\r\n\r\nconst leftAxisContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'left-axis-container')\r\n .style('position', 'absolute')\r\n .style('left', '0')\r\n .style('top', '0')\r\n .style('width', '80px')\r\n .style('height', `${dimensions.height + margin.top + margin.bottom}px`)\r\n .style('background-color', 'var(--card-bg)')\r\n .style('z-index', '10');\r\n\r\nconst svgYAxisLeft = leftAxisContainer\r\n .append('svg')\r\n .attr('width', '80')\r\n .attr('height', dimensions.height + margin.top + margin.bottom)\r\n .append('g')\r\n .attr('transform', `translate(79,${margin.top})`);\r\n\r\n // Right Y-axis - Fixed\r\n const rightAxisContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'right-axis-container')\r\n .style('position', 'absolute')\r\n .style('right', '0')\r\n .style('top', '0')\r\n .style('width', `${this.CONSTANTS.RIGHT_SVG_WIDTH}px`)\r\n .style('height', `${dimensions.height + margin.top + margin.bottom}px`) // Exclude X-label space\r\n .style('background-color', 'var(--card-bg)')\r\n .style('z-index', '10');\r\n\r\n const svgYAxisRight = rightAxisContainer\r\n .append('svg')\r\n .attr('width', this.CONSTANTS.RIGHT_SVG_WIDTH)\r\n .attr('height', dimensions.height + margin.top + margin.bottom)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n // Scrollable middle area\r\nconst scrollableContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'scrollable-chart-container')\r\n .style('position', 'absolute')\r\n .style('left', '80px') // Exactly where left container ends\r\n .style('right', `${this.CONSTANTS.RIGHT_SVG_WIDTH}px`)\r\n .style('top', '0')\r\n .style('width', 'auto')\r\n .style('height', `${dimensions.height + margin.top + margin.bottom}px`)\r\n .style('overflow-x', 'auto')\r\n .style('overflow-y', 'hidden');\r\n\r\n\r\nconst innerContainer = scrollableContainer\r\n .append('div')\r\n .attr('class', 'inner-chart-container')\r\n .style('min-width', '100%');\r\n\r\nconst svg = innerContainer\r\n .append('svg')\r\n .attr('width', dimensions.requiredSvgWidth)\r\n .attr('height', dimensions.height + margin.top + margin.bottom + 30)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n // Fixed bottom container for X-axis label\r\n const bottomLabelContainer = chartWrapper\r\n .append('div')\r\n .attr('class', 'bottom-label-container')\r\n .style('position', 'absolute')\r\n .style('left', '80px')\r\n .style('right', `${this.CONSTANTS.RIGHT_SVG_WIDTH}px`)\r\n .style('bottom', '0')\r\n .style('height', `${xLabelSpace}px`)\r\n .style('display', 'flex')\r\n .style('justify-content', 'center')\r\n .style('align-items', 'center')\r\n .style('background-color', 'var(--card-bg)')\r\n .style('z-index', '10');\r\n\r\n return { svg, svgYAxisLeft, svgYAxisRight, innerContainer, bottomLabelContainer };\r\n}\r\n\r\nprivate createScales(\r\n data: any[],\r\n layers: any[],\r\n lineData: any[],\r\n dimensions: Dimensions\r\n) {\r\n const { width, height, barWidth, barPadding } = dimensions;\r\n \r\n // Calculate bar positioning\r\n const totalBarsWidth = data.length * barWidth;\r\n const totalSpacing = (data.length - 1) * barPadding;\r\n const requiredWidth = totalBarsWidth + totalSpacing + (this.CONSTANTS.LEFT_RIGHT_SPACES * 2);\r\n const effectiveWidth = Math.max(width, requiredWidth);\r\n \r\n const paddingRatio = barPadding / (barWidth + barPadding);\r\n \r\n // X-scale starts from 0 (no left spacing for grid alignment)\r\nconst xScale = d3\r\n .scaleBand()\r\n .rangeRound([0, dimensions.requiredSvgWidth])\r\n .domain(data.map(d => d.name).reverse())\r\n .paddingInner(paddingRatio)\r\n .paddingOuter(0.1) // Small padding for visual spacing\r\n .align(0.5);\r\n\r\n const xScaleFromOrigin = d3\r\n .scaleBand()\r\n .rangeRound([width, 0])\r\n .domain(data.map(d => d.name).reverse());\r\n\r\n const yScale = d3.scaleLinear().rangeRound([height, 0]);\r\n \r\n let maxValue = d3.max(layers, (d: any) => d3.max(d, (d: any) => d[1]));\r\n \r\n if (maxValue === 0) {\r\n maxValue = this.chartData.targetLineData \r\n ? Number(this.chartData.targetLineData.target) + 20 \r\n : 100;\r\n }\r\n\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue *= this.chartConfiguration.customYscale;\r\n }\r\n\r\n if (this.chartData.targetLineData && maxValue < Number(this.chartData.targetLineData.target)) {\r\n const target = Number(this.chartData.targetLineData.target);\r\n maxValue = maxValue < 10 && target < 10 ? target + 3 : target + 20;\r\n }\r\n\r\n yScale.domain([0, maxValue]).nice();\r\n\r\n let lineYscale = null;\r\n if (lineData) {\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([0, d3.max(lineData, d => +d.value)])\r\n .range([height, 0]);\r\n }\r\n\r\n return { xScale, xScaleFromOrigin, yScale, lineYscale };\r\n}\r\n\r\n\r\n private createAxes(scales: any) {\r\n const xAxis = d3\r\n .axisBottom(scales.xScale)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.xAxisLabelFomatter);\r\n\r\n const yAxis = d3\r\n .axisLeft(scales.yScale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.yAxisLabelFomatter);\r\n\r\n let yLineAxis = null;\r\n if (scales.lineYscale) {\r\n yLineAxis = d3\r\n .axisRight(scales.lineYscale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(this.chartConfiguration.yLineAxisLabelFomatter);\r\n }\r\n\r\n return { xAxis, yAxis, yLineAxis };\r\n }\r\n\r\n private renderBars(\r\n svg: any,\r\n layers: any[],\r\n scales: any,\r\n metaData: ChartMetaData,\r\n dimensions: Dimensions\r\n ) {\r\n const layer = svg\r\n .selectAll('.layer')\r\n .data(layers)\r\n .enter()\r\n .append('g')\r\n .attr('class', 'layer')\r\n .style('fill', (d: any) => metaData.colors[d.key]);\r\n\r\n const rect = layer\r\n .selectAll('rect')\r\n .data((d: any) => d)\r\n .enter();\r\n\r\n this.appendRectangles(rect, scales, metaData, dimensions);\r\n this.addInteractions(rect, svg, metaData, scales);\r\n \r\n return rect;\r\n }\r\n\r\n private appendRectangles(\r\n rect: any,\r\n scales: any,\r\n metaData: ChartMetaData,\r\n dimensions: Dimensions\r\n) {\r\n const { barWidth, barPadding } = dimensions;\r\n const { xScale, yScale } = scales;\r\n\r\n rect\r\n .append('rect')\r\n .on('click', (d: any) => {\r\n if (!this.chartData.lineData || this.chartConfiguration.forComparison) {\r\n if (!metaData.barWithoutClick?.includes(d.data.name.toLowerCase())) {\r\n this.handleClick(d.data.name);\r\n }\r\n }\r\n })\r\n .attr('y', (d: any) => {\r\n if (!isNaN(d[0]) && !isNaN(d[1])) {\r\n const actualHeight = yScale(d[0]) - yScale(d[1]);\r\n return actualHeight < 3 ? yScale(d[0]) - 3 : yScale(d[1]);\r\n }\r\n return 0;\r\n })\r\n .attr('x', (d: any) => {\r\n const xPosition = xScale(d.data.name);\r\n const bandwidth = xScale.bandwidth();\r\n \r\n if (!this.chartConfiguration.isMultiChartGridLine) {\r\n return xPosition + (bandwidth - barWidth) / 2;\r\n }\r\n if (this.chartConfiguration.isDrilldownChart && this.chartData.data.length <= 3) {\r\n return xPosition + bandwidth / 2 - 35;\r\n }\r\n const calculatedWidth = bandwidth * 0.8;\r\n return xPosition + (bandwidth - calculatedWidth) / 2;\r\n })\r\n .attr('height', (d: any) => {\r\n if (!isNaN(d[0]) && !isNaN(d[1])) {\r\n const actualHeight = yScale(d[0]) - yScale(d[1]);\r\n return actualHeight < 3 ? 3 : actualHeight;\r\n }\r\n return 0;\r\n })\r\n .attr('width', (d: any) => {\r\n if (!this.chartConfiguration.isMultiChartGridLine) return barWidth;\r\n if (this.chartConfiguration.isDrilldownChart && this.chartData.data.length <= 3) {\r\n return 70;\r\n }\r\n return xScale.bandwidth() * 0.8;\r\n })\r\n .style('cursor', (d: any) => {\r\n if (metaData.hasDrillDown) {\r\n if (metaData.barWithoutClick?.includes(d.data.name.toLowerCase())) {\r\n return 'default';\r\n }\r\n return 'pointer';\r\n }\r\n return 'default';\r\n })\r\n .style('fill', (d: any) => this.getBarColor(d, metaData));\r\n}\r\n\r\n private getBarColor(d: any, metaData: ChartMetaData): string {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n this.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >= parseFloat(String(this.chartData.targetLineData.target))\r\n ) {\r\n return this.chartData.targetLineData.barAboveTargetColor || metaData.colors[d.key];\r\n }\r\n return metaData.colors[d.key];\r\n }\r\n\r\n private addInteractions(rect: any, svg: any, metaData: ChartMetaData, scales: any) {\r\n rect\r\n .selectAll('rect')\r\n .on('mouseenter', (d: any) => this.handleMouseOver(d, svg, metaData, scales))\r\n .on('mouseout', (d: any) => this.handleMouseOut(svg, metaData));\r\n }\r\n\r\n private handleMouseOver(d: any, svg: any, metaData: ChartMetaData, scales: any) {\r\n if (!this.chartConfiguration.displayTitleOnTop) return;\r\n\r\n svg.selectAll('rect')\r\n .filter((data: any) => data === d)\r\n .style('fill', (d: any) => this.getHoverColor(d, metaData));\r\n\r\n this.displayTooltip(d, svg, metaData, scales);\r\n }\r\n\r\n private getHoverColor(d: any, metaData: ChartMetaData): string {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n this.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >= parseFloat(String(this.chartData.targetLineData.target))\r\n ) {\r\n return this.chartData.targetLineData.barAboveTargetHoverColor ||\r\n this.chartData.targetLineData.barAboveTargetColor ||\r\n metaData.colors[d.key];\r\n }\r\n return metaData.hoverColor || metaData.colors[d.key];\r\n }\r\n\r\n private displayTooltip(d: any, svg: any, metaData: ChartMetaData, scales: any) {\r\n const { xScale, yScale } = scales;\r\n const value = d[1] - d[0];\r\n \r\n if (isNaN(value)) return;\r\n\r\n const bandwidth = xScale.bandwidth();\r\n \r\n // Fixed tooltip width for all resolutions\r\n const width = /week/i.test(d.data.name) && /\\d{4}-\\d{2}-\\d{2}/.test(d.data.name)\r\n ? '250px'\r\n : bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2 > 180\r\n ? '180px'\r\n : bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2;\r\n\r\n svg\r\n .append('foreignObject')\r\n .attr('x', this.calculateTooltipX(d, xScale, width))\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', yScale(d[1]) - 51)\r\n .attr('width', width)\r\n .attr('height', 40)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(this.generateTooltipHtml(d, metaData, value));\r\n }\r\n\r\n private calculateTooltipX(d: any, xScale: any, width: string | number): number {\r\n const bandwidth = xScale.bandwidth();\r\n const numericWidth = typeof width === 'string' ? parseInt(width) : width;\r\n \r\n if (bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2 > 180) {\r\n return xScale(d.data.name) - this.CONSTANTS.LEFT_RIGHT_SPACES +\r\n (bandwidth + this.CONSTANTS.LEFT_RIGHT_SPACES * 2 - 180) / 2;\r\n }\r\n return xScale(d.data.name) - this.CONSTANTS.LEFT_RIGHT_SPACES;\r\n }\r\n\r\n private generateTooltipHtml(d: any, metaData: ChartMetaData, value: number): string {\r\n if (value === 0) return '<span class=\"title-top-text\">0</span>';\r\n\r\n const dataType = metaData.dataType || '';\r\n const name = d.data.name ? `<span class=\"title-bar-name\">${d.data.name}</span>` : '';\r\n const valueText = metaData.unit\r\n ? `${metaData.unit}${value} ${dataType}`\r\n : `${value} ${dataType}`;\r\n\r\n return `${name}<span class=\"title-top-text\">${valueText}</span>`;\r\n }\r\n\r\n private handleMouseOut(svg: any, metaData: ChartMetaData) {\r\n if (!this.chartConfiguration.displayTitleOnTop) return;\r\n\r\n svg.selectAll('rect')\r\n .style('fill', (d: any) => this.getBarColor(d, metaData));\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n\r\n private renderAxisLabels(\r\n svg: any,\r\n svgYAxisLeft: any,\r\n bottomLabelContainer: any,\r\n metaData: ChartMetaData,\r\n dimensions: Dimensions,\r\n margin: any\r\n ) {\r\n if (metaData.yLabel) {\r\n this.addYAxisLabel(svgYAxisLeft, metaData.yLabel, dimensions.height, margin);\r\n }\r\n\r\n if (metaData.xLabel) {\r\n this.addXAxisLabel(bottomLabelContainer, metaData.xLabel);\r\n }\r\n }\r\n\r\n private addYAxisLabel(svgYAxisLeft: any, label: string, height: number, margin: any) {\r\n const isria = this.customChartConfiguration?.isRia;\r\n const isAcronym = this.isAcronymLabel(label);\r\n const yPosition = isria ? -margin.left / 2 - 30 : -margin.left / 2 - 40;\r\n\r\n svgYAxisLeft.selectAll('.lib-axis-group-label, .lib-ylabel-drilldowncharts, .lib-ylabel-weeklyCharts').remove();\r\n\r\n svgYAxisLeft\r\n .append('text')\r\n .attr('class', this.getYAxisLabelClass())\r\n .attr('style', this.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', yPosition)\r\n .attr('x', -height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcronym ? label.toUpperCase() : label.toLowerCase())\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize');\r\n }\r\n\r\nprivate addXAxisLabel(bottomLabelContainer: any, label: string) {\r\n const isAcronym = this.isAcronymLabel(label);\r\n\r\n bottomLabelContainer\r\n .append('div')\r\n .style('width', '100%')\r\n .style('text-align', 'center')\r\n .style('font-size', '14px')\r\n .style('font-weight', '600')\r\n .style('font-family', 'system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto')\r\n .style('color', 'var(--chart-text-color)')\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize')\r\n .text(isAcronym ? label.toUpperCase() : label.toLowerCase());\r\n}\r\n\r\n private isAcronymLabel(label: string): boolean {\r\n const cleanLabel = label.replace(/[^A-Za-z]/g, '');\r\n return (label.length <= 4 && /^[A-Z]+$/.test(label)) ||\r\n (label === label.toUpperCase() && /[A-Z]/.test(label));\r\n }\r\n\r\n private getYAxisLabelClass(): string {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return `${baseClass} lib-ylabel-drilldowncharts`;\r\n }\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n return `${baseClass} lib-ylabel-weeklyCharts`;\r\n }\r\n return `${baseClass} lib-axis-waterfall-label`;\r\n }\r\n\r\n private getXAxisLabelClass(): string {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return `${baseClass} lib-xlabel-drilldowncharts`;\r\n }\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n return `${baseClass} lib-xlabel-weeklyCharts`;\r\n }\r\n return `${baseClass} lib-axis-waterfall-label`;\r\n }\r\n\r\n private renderGridsFromLeftAxis(\r\n svgMain: any,\r\n svgYAxisLeft: any,\r\n scales: any,\r\n dimensions: Dimensions\r\n ) {\r\n if (!this.chartConfiguration.yAxisGrid) return;\r\n\r\n // We want horizontal grid lines to span the full visible width:\r\n // the inner SVG (requiredSvgWidth) plus the right axis width.\r\n const gridSpan = dimensions.requiredSvgWidth + this.CONSTANTS.RIGHT_SVG_WIDTH;\r\n // Append the grid to the main (inner) SVG so lines are rendered across the scrollable area.\r\n svgMain\r\n .append('g')\r\n .attr('class', 'grid horizontal-grid-from-left')\r\n .attr('transform', 'translate(0,0)')\r\n .call(\r\n d3\r\n .axisLeft(scales.yScale)\r\n .ticks(this.chartConfiguration.numberOfYTicks)\r\n .tickSize(-gridSpan)\r\n .tickFormat('')\r\n )\r\n .style('color', 'var(--chart-grid-color)')\r\n .style('opacity', '1')\r\n .call((g: any) => {\r\n g.select('.domain').remove();\r\n g.selectAll('.tick line')\r\n .style('stroke', 'var(--chart-grid-color)')\r\n .style('stroke-width', '1px');\r\n });\r\n}\r\n\r\n private applyConfigurationFlags() {\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n if (this.chartConfiguration.isTopCaptionVisible !== undefined) {\r\n this.isTopCaptionVisible = this.chartConfiguration.isTopCaptionVisible;\r\n }\r\n if (this.chartConfiguration.isTransparentBackground !== undefined) {\r\n this.isTransparentBackground = this.chartConfiguration.isTransparentBackground;\r\n }\r\n }\r\n\r\n initializeStackedChart() {\r\n // Use fixed configuration for all resolutions\r\n this.chartConfiguration.margin = { top: 20, right: 20, bottom: 40, left: 40 };\r\n this.chartConfiguration.numberOfYTicks = 5;\r\n this.chartConfiguration.svgHeight = 70;\r\n \r\n this.mergeConfigurations();\r\n this.applyConfigurationFlags();\r\n\r\n const data = this.chartData.data;\r\n const metaData = this.prepareMetaData(this.chartData.metaData);\r\n const lineData = this.chartData.lineData;\r\n const colors = metaData.colors;\r\n const keyList = metaData.keyList;\r\n\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const verticalstackedcontainer = d3.select(this.verticalstackedcontainerElt.nativeElement);\r\n \r\n const margin = this.chartConfiguration.margin;\r\n const dimensions = this.calculateDimensions(\r\n chartContainer,\r\n verticalstackedcontainer,\r\n margin,\r\n data.length\r\n );\r\n\r\n const hasXLabel = !!metaData.xLabel;\r\n\r\n const { svg, svgYAxisLeft, svgYAxisRight, bottomLabelContainer } = this.createSvgContainers(\r\n chartContainer,\r\n dimensions,\r\n margin,\r\n hasXLabel\r\n );\r\n\r\n const stack: any = d3.stack().keys(keyList).offset(d3.stackOffsetNone);\r\n const layers: any = stack(data);\r\n data.sort((a, b) => b.total - a.total);\r\n\r\n const scales = this.createScales(data, layers, lineData, dimensions);\r\n const axes = this.createAxes(scales);\r\n\r\n this.renderGridsFromLeftAxis(svg, svgYAxisLeft, scales, dimensions);\r\n this.renderGrids(svg, scales, dimensions);\r\n const rect = this.renderBars(svg, layers, scales, metaData, dimensions);\r\n this.renderAxes(svg, svgYAxisLeft, svgYAxisRight, axes, scales, dimensions, data);\r\n this.renderAxisLabels(svg, svgYAxisLeft,bottomLabelContainer, metaData, dimensions, margin);\r\n this.renderTargetLine(svg, svgYAxisRight, scales, dimensions, metaData);\r\n this.renderDataLabels(rect, scales, metaData, dimensions);\r\n this.renderLineChart(svg, lineData, scales, colors, metaData);\r\n }\r\n\r\nprivate renderGrids(svg: any, scales: any, dimensions: Dimensions) {\r\n if (this.chartConfiguration.isXgridBetweenLabels) {\r\n svg\r\n .append('g')\r\n .attr('class', 'grid vertical-grid')\r\n .attr('transform', `translate(${scales.xScale.bandwidth() / 2},${dimensions.height})`)\r\n .call(d3.axisBottom(scales.xScale).tickSize(-dimensions.height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', '#999999')\r\n .call((g: any) => g.select('.domain').remove());\r\n }\r\n\r\n if (this.chartConfiguration.xAxisGrid) {\r\n for (let j = 0; j < this.chartConfiguration.xAxisGrid.length; j++) {\r\n svg\r\n .append('g')\r\n .attr('class', `x${j + 2} axis${j + 2}`)\r\n .style('color', 'var(--chart-grid-color)')\r\n .attr('transform', `translate(0,${dimensions.height * this.chartConfiguration.xAxisGrid[j]})`)\r\n .call(d3.axisBottom(scales.xScale).tickSize(0).ticks(5).tickFormat(''))\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n }\r\n}\r\n\r\n\r\n private renderAxes(\r\n svg: any,\r\n svgYAxisLeft: any,\r\n svgYAxisRight: any,\r\n axes: any,\r\n scales: any,\r\n dimensions: Dimensions,\r\n data: any[]\r\n ) {\r\n if (this.chartConfiguration.showXaxisTop) {\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n .attr('style', this.chartConfiguration.xAxisCustomTextStyles)\r\n .call(d3.axisBottom(scales.xScale).tickSize(0));\r\n svg.selectAll('.x-axis > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (!this.chartConfiguration.isMultiChartGridLine) {\r\n this.renderStandardAxes(svg, axes, scales, dimensions, data);\r\n } else if (this.chartConfiguration.isDrilldownChart) {\r\n this.renderDrilldownAxes(svg, svgYAxisLeft, svgYAxisRight, axes, scales, dimensions);\r\n } else {\r\n this.renderMultiChartAxes(svg, axes, scales, dimensions);\r\n }\r\n\r\n this.applyAxisStyling(svg, svgYAxisLeft, svgYAxisRight);\r\n this.applyAxisConfigurations(svg, scales, dimensions, data);\r\n }\r\n\r\nprivate renderStandardAxes(\r\n svg: any,\r\n axes: any,\r\n scales: any,\r\n dimensions: Dimensions,\r\n data: any[]\r\n) {\r\n const isMobileOrTablet = window.innerWidth < 1024;\r\n \r\n // X-axis with labels\r\n const xAxisGroup = svg\r\n .append('g')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .attr('class', 'lib-stacked-x-axis-text')\r\n .call(axes.xAxis);\r\n\r\n // Style X-axis labels\r\n xAxisGroup\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('font-size', isMobileOrTablet ? '10px' : '12px')\r\n .attr('text-anchor', 'middle')\r\n .attr('dy', '1em')\r\n .each(function(this: SVGTextElement, d: any) {\r\n const textElement = d3.select(this);\r\n const text = textElement.text();\r\n \r\n if (isMobileOrTablet && text.length > 12) {\r\n textElement.text(text.substring(0, 10) + '...');\r\n }\r\n });\r\n\r\n// Ensure X-axis line starts exactly at x=0\r\n xAxisGroup\r\n .select('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px')\r\n .attr('d', `M0,0.5H${dimensions.requiredSvgWidth}`);\r\n\r\n // Y-axis\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n}\r\n\r\n private renderDrilldownAxes(\r\n svg: any,\r\n svgYAxisLeft: any,\r\n svgYAxisRight: any,\r\n axes: any,\r\n scales: any,\r\n dimensions: Dimensions\r\n ) {\r\n svg\r\n .append('g')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .attr('class', 'lib-stacked-x-axis-text multichart1')\r\n .call(axes.xAxis)\r\n .style('display', 'none');\r\n\r\n svgYAxisLeft\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n\r\n svgYAxisRight\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .style('display', 'none');\r\n }\r\n\r\n private renderMultiChartAxes(svg: any, axes: any, scales: any, dimensions: Dimensions) {\r\n svg\r\n .append('g')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .attr('class', 'lib-stacked-x-axis-text multichart')\r\n .call(axes.xAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n\r\n svg\r\n .append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', this.chartConfiguration.yAxisCustomTextStyles)\r\n .call(axes.yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n\r\n private applyAxisStyling(svg: any, svgYAxisLeft: any, svgYAxisRight: any) {\r\n const styleAxisDomain = (container: any) => {\r\n container.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n };\r\n\r\n styleAxisDomain(svg);\r\n styleAxisDomain(svgYAxisLeft);\r\n styleAxisDomain(svgYAxisRight);\r\n\r\n if (this.chartConfiguration.isYaxisDashed) {\r\n d3.selectAll('.yaxis-dashed')\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-grid-color)');\r\n }\r\n\r\n if (this.chartConfiguration.isXaxisColor) {\r\n d3.selectAll('.multichart').style(\r\n 'color',\r\n this.chartConfiguration.isXaxisColor || 'var(--chart-text-color)'\r\n );\r\n }\r\n }\r\n\r\n private applyAxisConfigurations(svg: any, scales: any, dimensions: Dimensions, data: any[]) {\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n d3.selectAll('.multichart > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (this.chartConfiguration.isXaxisLabelHidden) {\r\n d3.selectAll('.multichart > g > text').attr('class', 'lib-display-hidden');\r\n } else if (this.chartConfiguration.isXaxisLabelHidden !== undefined) {\r\n this.renderCustomXAxis(svg, scales, dimensions, data);\r\n }\r\n\r\n if (this.chartConfiguration.isYaxisLabelHidden) {\r\n svg.selectAll('.yaxis-dashed > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (this.chartConfiguration.isYaxisHidden) {\r\n d3.selectAll('.yaxis-dashed').attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (this.isZoomedOut && data.length > 9) {\r\n svg\r\n .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n .attr('transform', 'rotate(-90)')\r\n .attr('text-anchor', 'end')\r\n .attr('x', '-5')\r\n .attr('dy', null);\r\n }\r\n }\r\n\r\n private renderCustomXAxis(svg: any, scales: any, dimensions: Dimensions, data: any[]) {\r\n svg\r\n .append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${dimensions.height})`)\r\n .style('color', '#000')\r\n .call(d3.axisBottom(scales.xScale).tickSize(0))\r\n .call((g: any) => g.select('.domain').attr('fill', 'none'));\r\n\r\n this.styleCustomXAxisTicks(svg, data);\r\n\r\n if (this.chartConfiguration.xLabelsOnSameLine) {\r\n this.applyXLabelsOnSameLine(svg);\r\n }\r\n }\r\n\r\n private styleCustomXAxisTicks(svg: any, data: any[]) {\r\n let alternateText = false;\r\n\r\n svg.selectAll('.x1.axis1 .tick line').attr('y2', () => {\r\n if (this.chartConfiguration.hideXaxisTick) return 0;\r\n \r\n if (alternateText && !this.chartConfiguration.isNoAlternateXaxisText) {\r\n alternateText = false;\r\n return this.CONSTANTS.LONG_TICK_LENGTH_BG - 7;\r\n }\r\n alternateText = true;\r\n return this.CONSTANTS.SHORT_TICK_LENGTH_BG - 4;\r\n });\r\n\r\n alternateText = false;\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', () => {\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n return data.length > 8 \r\n ? 'lib-xaxis-labels-texts-drilldown-alt'\r\n : 'lib-xaxis-labels-texts-drilldown';\r\n }\r\n return 'lib-xaxis-labels-texts-weeklycharts';\r\n })\r\n .attr('y', () => {\r\n if (alternateText) {\r\n alternateText = false;\r\n return this.CONSTANTS.LONG_TICK_LENGTH_BG;\r\n }\r\n alternateText = true;\r\n return this.CONSTANTS.SHORT_TICK_LENGTH_BG;\r\n });\r\n }\r\n\r\n private applyXLabelsOnSameLine(svg: any) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', this.CONSTANTS.SHORT_TICK_LENGTH_BG)\r\n .text((d: string) => {\r\n const trimmed = d.trim();\r\n const spaceIndex = trimmed.indexOf(' ');\r\n return spaceIndex > -1 \r\n ? trimmed.substring(0, spaceIndex).toLowerCase()\r\n : trimmed.toLowerCase();\r\n });\r\n\r\n svg\r\n .selectAll('g.x1.axis1 g.tick')\r\n .append('text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y', this.CONSTANTS.LONG_TICK_LENGTH_BG)\r\n .attr('fill', 'currentColor')\r\n .text((d: string) => {\r\n const trimmed = d.trim();\r\n const spaceIndex = trimmed.indexOf(' ');\r\n return spaceIndex > -1 \r\n ? trimmed.substring(spaceIndex).toLowerCase()\r\n : '';\r\n });\r\n }\r\n\r\n private renderDataLabels(rect: any, scales: any, metaData: ChartMetaData, dimensions: Dimensions) {\r\n if (!this.isCC && !this.chartConfiguration.isMultiChartGridLine) {\r\n rect.append('svg:title').text((d: any) => d[1] - d[0]);\r\n }\r\n\r\n if (this.chartConfiguration.showTotalOnTop) {\r\n this.renderTopLabels(rect, scales, metaData);\r\n }\r\n\r\n if (this.chartConfiguration.showAngledLabels) {\r\n this.renderAngledLabels(rect, scales, metaData);\r\n }\r\n }\r\n\r\n private renderTopLabels(rect: any, scales: any, metaData: ChartMetaData) {\r\n const formatFromBackend = this.chartConfiguration.textFormatter\r\n ? ChartHelper.dataValueFormatter(this.chartConfiguration.textFormatter)\r\n : (d: any) => d;\r\n const formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n\r\n rect\r\n .append('text')\r\n .attr('x', (d: any) => scales.xScale(d.data.name) + scales.xScale.bandwidth() / 2)\r\n .attr('class', 'lib-verticalstack-labels-ontop-weklycharts')\r\n .attr('y', (d: any) => scales.yScale(d[1]) - 3)\r\n .text((d: any) => {\r\n const value = d[1] - d[0];\r\n if (isNaN(value) || value === 0) return;\r\n \r\n const formattedValue = value <= 999 \r\n ? formatFromBackend(value)\r\n : formatForHugeNumbers(value);\r\n \r\n return metaData.unit ? metaData.unit + formattedValue : formattedValue;\r\n });\r\n }\r\n\r\n private renderAngledLabels(rect: any, scales: any, metaData: ChartMetaData) {\r\n const formatFromBackend = this.chartConfiguration.textFormatter\r\n ? ChartHelper.dataValueFormatter(this.chartConfiguration.textFormatter)\r\n : (d: any) => d;\r\n const formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n const tempObjectHolder: { [key: string]: number } = {};\r\n\r\n rect\r\n .append('text')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('fill', (d: any) => metaData.colors[d.key])\r\n .attr('class', 'lib-data-labels-angled-weeklycharts')\r\n .text((d: any) => {\r\n const value = d[1] - d[0];\r\n if (isNaN(value) || value <= 0) return;\r\n \r\n const formattedValue = value <= 999\r\n ? formatFromBackend(value)\r\n : formatForHugeNumbers(value);\r\n \r\n return metaData.unit ? metaData.unit + formattedValue : formattedValue;\r\n })\r\n .attr('transform', (d: any) => {\r\n const value = d[1] - d[0];\r\n if (isNaN(value) || value <= 0) return 'rotate(0)';\r\n\r\n let total = 0;\r\n let incrementer = 1;\r\n metaData.keyList.forEach(key => {\r\n if (d.data[key]) {\r\n total += d.data[key];\r\n } else {\r\n incrementer = 2;\r\n }\r\n });\r\n\r\n tempObjectHolder[d.data.name] = (tempObjectHolder[d.data.name] || 0) + incrementer;\r\n const position = tempObjectHolder[d.data.name];\r\n const xPos = scales.xScale(d.data.name);\r\n const bandwidth = scales.xScale.bandwidth();\r\n const yPos = scales.yScale(total) - 3;\r\n\r\n switch (position) {\r\n case 1:\r\n return `translate(${xPos + bandwidth / 3},${yPos}) rotate(270)`;\r\n case 2:\r\n return `translate(${xPos + bandwidth / 2 + 2},${yPos}) rotate(270)`;\r\n default:\r\n return `translate(${xPos + (bandwidth * 3) / 4},${yPos}) rotate(270)`;\r\n }\r\n });\r\n }\r\n\r\n private renderTargetLine(\r\n svg: any,\r\n svgYAxisRight: any,\r\n scales: any,\r\n dimensions: Dimensions,\r\n metaData: ChartMetaData\r\n ) {\r\n if (!this.chartData.targetLineData) return;\r\n\r\n const parsedTarget = this.parseTargetValue(this.chartData.targetLineData.target);\r\n const yZero = scales.yScale(parsedTarget);\r\n\r\n svg\r\n .append('line')\r\n .attr('x1', 0)\r\n .attr('x2', dimensions.width)\r\n .attr('y1', yZero)\r\n .attr('y2', yZero)\r\n .style('stroke-dasharray', '5 5')\r\n .style('stroke', this.chartData.targetLineData.color);\r\n\r\n this.renderTargetLabel(svgYAxisRight, yZero, metaData);\r\n }\r\n\r\n private parseTargetValue(target: string | number): number {\r\n const parsed = parseFloat(String(target));\r\n if (isNaN(parsed)) return 0;\r\n return Number.isInteger(parsed) ? parseInt(String(target)) : parsed;\r\n }\r\n\r\n private renderTargetLabel(svgYAxisRight: any, yZero: number, metaData: ChartMetaData) {\r\n const dataType = metaData.dataType || '';\r\n const targetName = this.chartData.targetLineData.targetName || 'target';\r\n\r\n svgYAxisRight\r\n .append('foreignObject')\r\n .attr('transform', `translate(0,${yZero - 13})`)\r\n .attr('width', this.CONSTANTS.RIGHT_SVG_WIDTH)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'target-display')\r\n .style('color', 'var(--chart-text-color)')\r\n .html(`<div>${targetName}</div><div>${this.chartData.targetLineData.target}${dataType}</div>`);\r\n }\r\n\r\n private renderLineChart(svg: any, lineData: any[], scales: any, colors: any, metaData: ChartMetaData) {\r\n if (!lineData || !colors) return;\r\n\r\n const dataGroup = d3\r\n .nest()\r\n .key((d: any) => d.category)\r\n .entries(lineData);\r\n\r\n const lineGen = d3\r\n .line()\r\n .x((d: any) => scales.xScale(d.name) + scales.xScale.bandwidth() / 2)\r\n .y((d: any) => scales.lineYscale(d.value));\r\n\r\n dataGroup.forEach((group: any) => {\r\n svg\r\n .append('path')\r\n .datum(group.values)\r\n .attr('fill', 'none')\r\n .attr('stroke', (d: any) => {\r\n return d[0]?.category \r\n ? colors[d[0].category]\r\n : this.chartConfiguration.lineGraphColor;\r\n })\r\n .attr('stroke-width', 2.5)\r\n .attr('d', lineGen);\r\n\r\n this.renderLineDots(svg, group.values, scales, colors);\r\n });\r\n }\r\n\r\n private renderLineDots(svg: any, values: any[], scales: any, colors: any) {\r\n const dot = svg\r\n .selectAll('.line-dots')\r\n .data(values)\r\n .enter()\r\n .append('g')\r\n .on('click', (d: any) => this.handleClick(d));\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', (d: any) => {\r\n return d.category \r\n ? colors[d.category]\r\n : this.chartConfiguration.lineGraphColor;\r\n })\r\n .attr('stroke', 'none')\r\n .attr('cx', (d: any) => scales.xScale(d.name) + scales.xScale.bandwidth() / 2)\r\n .attr('cy', (d: any) => scales.lineYscale(d.value))\r\n .attr('r', 3)\r\n .style('cursor', 'pointer');\r\n\r\n if (this.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dots')\r\n .attr('fill', this.chartConfiguration.lineGraphColor)\r\n .style('font-size', '.85em')\r\n .style('font-weight', 'bold')\r\n .attr('x', (d: any) => scales.xScale(d.name) + scales.xScale.bandwidth() / 2)\r\n .attr('y', (d: any) => scales.lineYscale(d.value))\r\n .attr('dy', '-1em')\r\n .text((d: any) => this.chartConfiguration.labelFormatter(d.value));\r\n }\r\n }\r\n\r\n handleClick(d: any) {\r\n if (this.chartData?.metaData?.hasDrillDown || d?.toggleFrom) {\r\n this.clickEvent.emit(d);\r\n }\r\n }\r\n\r\n handleHeaderMenuClick(id: any) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n\r\n handleCompareByFilterSelection(event: any) {\r\n this.clickEvent.emit(event);\r\n }\r\n\r\n handleZoominZoomoutClick({ isZoomOut, event }: { isZoomOut: boolean; event: any }) {\r\n this.isZoomOutSelected(isZoomOut);\r\n }\r\n}","<meta http-equiv=\"CACHE-CONTROL\" content=\"NO-CACHE\" />\r\n<meta http-equiv=\"EXPIRES\" content=\"Sat, 01 Jun 2004 11:12:01 GMT\" />\r\n<div\r\n #verticalstackedcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n style=\"background-color: var(--card-bg);\"\r\n\r\n (resized)=\"onResized($event)\"\r\n>\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n\r\n <lib-chart-header-v3\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (compareByFilterSelection)=\"handleCompareByFilterSelection($event)\"\r\n (zoomInZoomOutClick)=\"handleZoominZoomoutClick($event)\"\r\n ></lib-chart-header-v3>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"verticalstackedchartcontainer\"\r\n #verticalstackedchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n</div>\r\n","import {\r\n Component,\r\n OnInit,\r\n ViewChild,\r\n ElementRef,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport * as d3 from 'd3';\r\nimport { ResizedEvent } from 'angular-resize-event';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-horizontal-grouped-bar-with-scroll-zoom',\r\n templateUrl: './horizontal-grouped-bar-with-scroll-zoom.component.html',\r\n styleUrls: [\r\n './horizontal-grouped-bar-with-scroll-zoom.component.less',\r\n '../common-styles.less',\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class HorizontalGroupedBarWithScrollZoomComponent\r\n extends ComponentUniqueId\r\n implements OnInit\r\n{\r\n @ViewChild('groupchartcontainer', { static: true })\r\n containerElt!: ElementRef;\r\n\r\n @ViewChild('groupcontainer', { static: true })\r\n groupcontainerElt!: ElementRef;\r\n\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n isHeaderVisible: boolean = true;\r\n legendVisible: boolean = true;\r\n isTransparentBackground: boolean = false;\r\n chartConfiguration: any = {};\r\n objectKeys = Object.keys;\r\n\r\n defaultConfiguration: any = {\r\n margin: { top: 20, right: 20, bottom: 20, left: 40 },\r\n labelFormatter: ChartHelper.defaultFormatter,\r\n svgHeight: 70,\r\n numberOfYTicks: 5,\r\n legendJustified: true,\r\n yLineAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n yAxisLabelFomatter: ChartHelper.defaultFormatter,\r\n lineGraphColor: '#F6D283',\r\n showLineChartAxis: true,\r\n showValues: true,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n xAxisGrid: undefined,\r\n yAxisGrid: false,\r\n legendVisible: false,\r\n isHeaderVisible: undefined,\r\n isTransparentBackground: undefined,\r\n isMultiChartGridLine: undefined,\r\n isFullScreen: undefined,\r\n customYscale: undefined,\r\n textsOnBar: undefined,\r\n isXaxisLabelHidden: undefined,\r\n isYaxisLabelHidden: false,\r\n isYaxisHidden: undefined,\r\n isYaxisDashed: undefined,\r\n textFormatter: undefined,\r\n isNoAlternateXaxisText: undefined,\r\n isXgridBetweenLabels: undefined,\r\n backgroundColor: '#FFFFFF',\r\n hideLegendOnTop: true,\r\n isXaxisColor: '#999999',\r\n labelOverlapMinorFix: true,\r\n noHoverEffect: true,\r\n noHoverDisplayData: true,\r\n showXaxisTop: true,\r\n displayYaxisLabels: undefined,\r\n xLabelsOnSameLine: undefined,\r\n textAlwaysHorizontal: undefined,\r\n legendAtTopRight: undefined,\r\n isDrilldownChart: true,\r\n displayTitleOnTop: undefined,\r\n isToggleVisible: undefined,\r\n isTitleHidden: undefined,\r\n isDisplayBarDetailsAtBottom: undefined,\r\n howmanyBarDetailsToDisplay: 0,\r\n barVauleColor: undefined,\r\n defaultBarHeight: 2,\r\n };\r\n\r\n uniqueId: any = this.getUniqueId();\r\n isZoomedOut: boolean = true;\r\n isDD1Open: boolean = false;\r\n isDD2Open: boolean = false;\r\n\r\n constructor() {\r\n super();\r\n }\r\n\r\n onResized(event: ResizedEvent) {\r\n let self = this;\r\n setTimeout(\r\n function () {\r\n d3.select('#' + self.uniqueId).remove();\r\n self.initializegroupChart();\r\n }.bind(self),\r\n 10\r\n );\r\n }\r\n isZoomOutSelected(isZoomOut, event) {\r\n this.isZoomedOut = isZoomOut;\r\n this.onResized(event);\r\n }\r\n handleZoominZoomoutClick({ isZoomOut, event }) {\r\n this.isZoomOutSelected(isZoomOut, event);\r\n }\r\n ngOnInit() {}\r\n isLegendVisible() {\r\n if (\r\n this.chartData &&\r\n this.chartData.metaData.colors &&\r\n Object.keys(this.chartData.metaData.colors).length > 1\r\n ) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n keepOrder = (a, b) => {\r\n return a;\r\n };\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n );\r\n } \r\n\r\ninitializegroupChart() {\r\n // ==================== VARIABLE DECLARATIONS ====================\r\n const self = this;\r\n let data = [];\r\n let metaData: any = null;\r\n let keyList = null;\r\n let lineData = null;\r\n let colorMap = {};\r\n let formatFromBackend;\r\n let formatForHugeNumbers;\r\n \r\n // Device detection\r\n const isMobile = window.innerWidth < 576;\r\n const isTablet = window.innerWidth >= 576 && window.innerWidth < 992;\r\n const isDesktop = window.innerWidth >= 992;\r\n const isria = this.customChartConfiguration.isRia;\r\n\r\n // Chart scale variables\r\n let x: any;\r\n let tempScale;\r\n\r\n // Tick length constants\r\n const SHORT_TICK_LENGTH = 4;\r\n const LONG_TICK_LENGTH = 16;\r\n const SHORT_TICK_LENGTH_BG = 5;\r\n const LONG_TICK_LENGTH_BG = 30;\r\n const LEFT_AND_RIGHT_SPACES = 50;\r\n const RIGHT_SVG_WIDTH = 60;\r\n \r\n // Flags\r\n let alternate_text = false;\r\n\r\n // ==================== CONFIGURATION SETUP ====================\r\n for (const key in this.defaultConfiguration) {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n }\r\n\r\n // Extract chart data\r\n data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n lineData = this.chartData.lineData;\r\n\r\n // Setup color mappings\r\n if (!metaData.colorAboveTarget) {\r\n metaData['colorAboveTarget'] = metaData.colors;\r\n }\r\n colorMap = metaData.colors;\r\n keyList = metaData.keyList;\r\n\r\n // ==================== CONTAINER SETUP ====================\r\n const chartContainer = d3.select(this.containerElt.nativeElement);\r\n const verticalstackedcontainer = d3.select(this.groupcontainerElt.nativeElement);\r\n const margin = this.chartConfiguration.margin;\r\n \r\n const { width, height } = this.calculateChartDimensions(\r\n chartContainer,\r\n verticalstackedcontainer,\r\n margin,\r\n self\r\n );\r\n\r\n // ==================== VISIBILITY CONFIGURATION ====================\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n\r\n if (this.chartConfiguration.legendVisible !== undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\r\n\r\n if (this.chartConfiguration.isTransparentBackground !== undefined) {\r\n this.isTransparentBackground = this.chartConfiguration.isTransparentBackground;\r\n }\r\n\r\n // ==================== DATA FORMATTING ====================\r\n if (this.chartConfiguration.textFormatter !== undefined) {\r\n formatFromBackend = ChartHelper.dataValueFormatter(this.chartConfiguration.textFormatter);\r\n formatForHugeNumbers = ChartHelper.dataValueFormatter('.2s');\r\n }\r\n\r\n // ==================== SVG CONTAINERS CREATION ====================\r\n const {\r\n outerContainer,\r\n svgYAxisLeft,\r\n svgYAxisRight,\r\n innerContainer,\r\n svg\r\n } = this.createChartContainers(chartContainer, margin, height, RIGHT_SVG_WIDTH, self, width);\r\n\r\n // Only enable horizontal scrolling on mobile/tablet when in zoomed-out\r\n // mode and there are many groups or multiple subgroups. Otherwise keep\r\n // the inner container fixed (no scrollbar).\r\n try {\r\n const groupsCount = (data as any).length || 0;\r\n const subgroupsCount = (keyList as any && (keyList as any).length) || 0;\r\n // On mobile/tablet: always enable horizontal scrolling when there is\r\n // more than one subgroup so grouped bars don't get congested.\r\n // On desktop: enable scrolling when there are many groups or\r\n // multiple subgroups (keeps previous behavior).\r\n if ((isMobile || isTablet) && subgroupsCount > 1) {\r\n innerContainer.style('overflow-x', 'auto');\r\n innerContainer.classed('scroll-enabled', true);\r\n } else if (groupsCount > 8 || subgroupsCount > 2) {\r\n innerContainer.style('overflow-x', 'auto');\r\n innerContainer.classed('scroll-enabled', true);\r\n } else {\r\n innerContainer.style('overflow-x', 'hidden');\r\n innerContainer.classed('scroll-enabled', false);\r\n }\r\n } catch (e) {\r\n // ignore\r\n }\r\n\r\n // ==================== SCALES SETUP ====================\r\n const subgroups: any = keyList;\r\n const groups = d3.map(data, (d) => d.name).keys();\r\n\r\n // X-axis scale configuration\r\n if (this.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n const paddingValue = (isria && subgroups.length === 1) ? 0.1 : 0.5;\r\n x = d3.scaleBand()\r\n .rangeRound([width, 0])\r\n .align(0.5)\r\n .padding([paddingValue])\r\n .domain(data.map((d: any) => d.name.toLowerCase()));\r\n } else {\r\n const paddingValue = (isria && self.chartData.data.length >= 8) ? 0.10 : 0.3;\r\n x = d3.scaleBand()\r\n .domain(groups)\r\n .range([LEFT_AND_RIGHT_SPACES, width - RIGHT_SVG_WIDTH - LEFT_AND_RIGHT_SPACES])\r\n .padding([paddingValue]);\r\n }\r\n\r\n const xScaleFromOrigin = d3.scaleBand()\r\n .domain(groups)\r\n .range([0, width - RIGHT_SVG_WIDTH]);\r\n\r\n // ==================== X-AXIS RENDERING ====================\r\n this.renderXAxis(svg, x, height, metaData, subgroups, data, \r\n SHORT_TICK_LENGTH_BG, LONG_TICK_LENGTH_BG, self, isria, isMobile, isTablet);\r\n\r\n // ==================== Y-AXIS SETUP ====================\r\n const y = d3.scaleLinear().rangeRound([height, 0]);\r\n let maxValue = this.calculateMaxValue(data, keyList);\r\n\r\n if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n\r\n if (this.chartData.targetLineData && maxValue < this.chartData.targetLineData.target) {\r\n maxValue = maxValue < 10 && this.chartData.targetLineData.target < 10\r\n ? this.chartData.targetLineData.target + 3\r\n : this.chartData.targetLineData.target + 20;\r\n }\r\n\r\n y.domain([0, maxValue]).nice();\r\n\r\n // ==================== LINE CHART Y-SCALE ====================\r\n let lineYscale;\r\n let yLineAxis;\r\n\r\n if (lineData != null) {\r\n const result = this.setupLineYScale(lineData, height, self);\r\n lineYscale = result.lineYscale;\r\n yLineAxis = result.yLineAxis;\r\n }\r\n\r\n // ==================== GRID LINES ====================\r\n this.renderGridLines(svg, x, y, height, width, self, isria);\r\n\r\n // ==================== BARS RENDERING ====================\r\n const xSubgroup = this.setupXSubgroupScale(subgroups, x, self);\r\n const color = d3.scaleOrdinal()\r\n .domain(subgroups)\r\n .range(Object.values(metaData.colors));\r\n\r\n this.renderBars(svg, data, subgroups, x, xSubgroup, y, height, color, \r\n metaData, self, LEFT_AND_RIGHT_SPACES, tempScale, isria);\r\n\r\n // ==================== BAR LABELS ====================\r\n if (this.chartConfiguration.textsOnBar !== undefined && !this.isZoomedOut) {\r\n this.renderBarLabels(svg, data, subgroups, x, xSubgroup, y, height, \r\n metaData, self, tempScale, isria);\r\n }\r\n\r\n // ==================== Y-AXIS RENDERING ====================\r\n this.renderYAxis(svg, svgYAxisLeft, svgYAxisRight, y, yLineAxis, \r\n lineData, self, isria, margin);\r\n\r\n // ==================== AXIS LABELS ====================\r\n this.renderAxisLabels(svg, svgYAxisLeft, svgYAxisRight, metaData, \r\n width, height, margin, self, isria, RIGHT_SVG_WIDTH);\r\n\r\n // ==================== TARGET LINE ====================\r\n if (this.chartData.targetLineData) {\r\n this.renderTargetLine(svg, svgYAxisRight, y, width, RIGHT_SVG_WIDTH, \r\n metaData, self, isria);\r\n }\r\n\r\n // ==================== LINE CHART ====================\r\n if (lineData) {\r\n this.renderLineChart(svg, lineData, x, lineYscale, metaData, self);\r\n }\r\n\r\n // ==================== ZOOM HANDLING ====================\r\n if (this.isZoomedOut) {\r\n this.handleZoomOut(svg, height, margin);\r\n }\r\n}\r\n\r\n// ==================== HELPER METHODS ====================\r\n\r\nprivate renderXAxis(svg, x, height, metaData, subgroups, data, \r\n shortTickLengthBg, longTickLengthBg, self, isria, isMobile, isTablet) {\r\n \r\n let alternate_text = false;\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n // Normal ticks for dashboard charts\r\n // Dynamically adjust Y translation for mobile\r\n let translateY = height;\r\n if (isMobile) {\r\n translateY = height + 10; // Add extra space at the top for mobile\r\n }\r\n svg.append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${translateY})`)\r\n // .attr('transform', `translate(-35,${translateY})`)\r\n // .call(d3.axisBottom(x))\r\n .call(isria ? d3.axisBottom(x).tickSize(0) : d3.axisBottom(x)) \r\n \r\n // .call((g) => g.select('.domain').remove());\r\n // .call((g) => { if (!isria) g.select('.domain').remove(); })\r\n .call(g => {\r\n // RIA + single subgroup → remove domain\r\n // if (isria && (subgroups.length > 1 && self.chartData.data.length ===1 )) {\r\n // g.select('.domain').remove();\r\n // return;\r\n \r\n // }\r\n // // Default behavior\r\n // if (!isria) {\r\n g.select('.domain').remove();\r\n // }\r\n})\r\n // .call((g) => {\r\n // Move only the axis line (domain) to the left\r\n // g.select('.domain').attr('transform', 'translate(-60,0)');})\r\n .call((g) => {\r\n // Increase spacing between axis and labels\r\n if(isria && (subgroups.length === 1 || self.chartData.data.length >1 )) {\r\n g.selectAll('.tick text')\r\n .attr('dy', '1em'); // Default is '0.71em', increase for more space\r\n }\r\n })\r\n .call((g) => {\r\n // Remove only the last tick\r\n if(isria && subgroups.length === 1) {\r\n const ticks = g.selectAll('.tick');\r\n if (ticks.size() > 0) {\r\n // d3.select(ticks.nodes()[ticks.size() - 1]).remove();\r\n d3.select(ticks.nodes()[ticks.size() - 1]).select('line').remove();\r\n }\r\n}\r\n});\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').remove();\r\n\r\n const yOffset = subgroups.length > 1 && !metaData.xLabel ? 32 : 0;\r\n \r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n // .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('class', isria \r\n ? 'lib-xaxis-labels-texts-drilldown-ria' \r\n : 'lib-xaxis-labels-texts-drilldown'\r\n)\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('y', yOffset || null);\r\n \r\n } else {\r\n // Bigger ticks for weekly charts\r\n svg.append('g')\r\n .attr('class', 'x1 axis1')\r\n .attr('transform', `translate(0,${height})`)\r\n .call(d3.axisBottom(x).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n\r\n // Alternate tick line sizes\r\n svg.selectAll('g.x1.axis1 g.tick line').attr('y2', function () {\r\n if (alternate_text && self.chartConfiguration.isNoAlternateXaxisText === undefined) {\r\n alternate_text = false;\r\n return longTickLengthBg - 7;\r\n } else {\r\n alternate_text = true;\r\n return shortTickLengthBg - 4;\r\n }\r\n });\r\n alternate_text = false;\r\n // X-axis label texts\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-weeklycharts')\r\n .attr('y', function () {\r\n if (self.chartConfiguration.isFullScreen) {\r\n return shortTickLengthBg;\r\n }\r\n if (alternate_text) {\r\n alternate_text = false;\r\n return longTickLengthBg;\r\n } else {\r\n alternate_text = true;\r\n return shortTickLengthBg;\r\n }\r\n });\r\n }\r\n \r\n // Apply labels on same line configuration\r\n if (self.chartConfiguration.xLabelsOnSameLine) {\r\n this.applyXLabelsOnSameLine(svg, subgroups, data, metaData, self, \r\n shortTickLengthBg, isMobile, isria);\r\n }\r\n\r\n // Mobile override for RIA\r\n if (isria && self.chartData.data.length >=3) {\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .classed('mobile-xaxis-override', false)\r\n // // .text((d: string) => d.substring(0, 3))\r\n // .text((d: string) => d.substring(0, 4).toLowerCase())\r\n // .text((d: string) => d.toLowerCase())\r\n .text((d: string) => d)\r\n .style('font-size', '11px')\r\n .attr('y', 5)\r\n .attr('x', 5)\r\n .style('text-anchor', 'middle');\r\n }\r\n if (isria && self.chartData.data.length >= 8) {\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('x', -20);\r\n }\r\n // if (!isria && self.chartData.data.length > 11 && !self.isZoomedOut && (x.bandwidth< 100)) {\r\n // svg.selectAll('g.x1.axis1 g.tick text')\r\n // .attr('x', -20);\r\n // }\r\n// ✅ Tablet View — Rotate if text > 10 characters\r\nif (isTablet) {\r\n const textNodes = svg.selectAll('g.x1.axis1 g.tick text');\r\n textNodes.each(function (d: any) {\r\n const text = d ? d.toString().trim() : '';\r\n\r\n // Detect date formats (to skip them)\r\n const isDateString =\r\n /^\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4}$/.test(text) || // e.g. 2025-10-29 or 10/29/2025\r\n /^(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})\\s*[-–]\\s*(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})$/.test(text); \r\n\r\n \r\n if (!isDateString && text.length > 10) {\r\n const trimmed = text.slice(0,9) + '…';\r\n textNodes\r\n .style('font-size', '10px')\r\n // .text(trimmed)\r\n \r\n }\r\n });\r\n}\r\n\r\n\r\n // Mobile/tablet override - check for single-group date charts first\r\n if (isMobile) {\r\n const textNodes = svg.selectAll('g.x1.axis1 g.tick text');\r\n const groupsCount = (data as any).length || 0;\r\n \r\n // Check if we have dates in x-axis and single group\r\n let hasDateValues = false;\r\n textNodes.each(function(d) {\r\n // Check for date values using both Date.parse and regex for date format\r\n const isDateString =\r\n /^\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4}$/.test(d.trim()) ||\r\n /^(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})\\s*[-–]\\s*(\\d{1,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4})$/.test(d.trim());\r\n if (!hasDateValues && isDateString) {\r\n hasDateValues = true;\r\n }\r\n });\r\n\r\n // Count unique x-axis labels\r\n const uniqueLabels = new Set();\r\n textNodes.each(function(d) {\r\n uniqueLabels.add(d);\r\n });\r\n const labelCount = uniqueLabels.size;\r\n if (hasDateValues && labelCount < 3) {\r\n // For 3 or fewer labels, keep horizontal display\r\n textNodes\r\n .style('writing-mode', 'horizontal-tb') // Explicitly set horizontal\r\n .classed('mobile-xaxis-override', false) // Remove vertical class\r\n .attr('transform', 'rotate(0)') // Remove any rotation\r\n .attr('text-anchor', 'middle') // Center align\r\n .attr('y', !isria ? 20 : null) // Push down a bit\r\n .attr('dx', '0') // Reset any x offset\r\n .attr('dy', '0'); // Reset any y offset\r\n } else if (labelCount >= 3) {\r\n // For more than 3 labels, use vertical alignment\r\n textNodes\r\n .style('writing-mode', 'sideways-lr') // Vertical text\r\n .classed('mobile-xaxis-override', true) // Add vertical class\r\n .attr('text-anchor', 'middle') // Center align\r\n .attr('y', 30) // Adjust vertical position\r\n .attr('x', 0); // Reset x position\r\n } else if (!this.isHeaderVisible) {\r\n // Default mobile behavior for non-date or multi-group\r\n textNodes.classed('mobile-xaxis-override', true);\r\n } \r\n }\r\n if (!isria && !self.isZoomedOut && subgroups.length > 1 && data.length > 8 && x.bandwidth() > 100) {\r\n const isGroupedBars = subgroups.length > 1; // Multiple bar types defined\r\n // Also verify bars are actually side-by-side by checking first group\r\n const firstGroupHasMultipleBars = subgroups.filter(key => {\r\n return data[0][key] != null && data[0][key] !== -1;\r\n }).length > 1;\r\n \r\n if (!firstGroupHasMultipleBars) {\r\n svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('x', -20);\r\n }\r\n }\r\n}\r\n\r\nprivate applyXLabelsOnSameLine(svg, subgroups, data, metaData, self, \r\n shortTickLengthBg, isMobile, isria) {\r\n \r\n const xAxisLabels = svg.selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('font-size', this.isHeaderVisible && !isria ? '18px' : '11px')\r\n .attr('text-anchor', 'middle')\r\n .attr('y', (d) => this.calculateXLabelYPosition(d, subgroups, data, metaData, self, shortTickLengthBg))\r\n .attr('x', (d) => (self.chartData.data.length > 8 && !self.isZoomedOut) ? 1 : 0)\r\n .text((d) => this.formatXLabelText(d, data, metaData, subgroups, self, isMobile));\r\n\r\n // Apply writing-mode for grouped charts with date labels in zoomed-out view\r\n xAxisLabels.each(function(this: SVGTextElement, d: any) {\r\n const isDateLabel = /^(\\d{2,4}[-\\/])?\\d{2,4}[-\\/]\\d{2,4}$/.test(d.trim());\r\n const isWeekLabel = /week|wk|w\\d+/i.test(d);\r\n \r\n if (subgroups.length > 1 && self.isZoomedOut && data.length > 8 && isDateLabel && !isWeekLabel) {\r\n d3.select(this).style('writing-mode', 'sideways-lr');\r\n }\r\n });\r\n\r\n // Add second line for non-date labels on desktop\r\n if (!isMobile) {\r\n svg.selectAll('g.x1.axis1 g.tick')\r\n .filter((d) => !/\\d{2,4}[-\\/]/.test(d))\r\n .append('text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .attr('y',30)\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('x', (d) => (self.chartData.data.length > 8 && !self.isZoomedOut) ? 1 : 0)\r\n .text((d) => {\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(d.indexOf(' '), d.length).toLowerCase();\r\n }\r\n return '';\r\n });\r\n }\r\n}\r\n\r\nprivate calculateXLabelYPosition(d, subgroups, data, metaData, self, shortTickLengthBg) {\r\n // For grouped bar charts with many bars and xLabel present\r\n if (subgroups.length > 1 && data.length > 8 && metaData.xLabel) {\r\n const isDateLabel = /\\d{2,4}[-\\/]/.test(d);\r\n return isDateLabel ? shortTickLengthBg + 14 : shortTickLengthBg;\r\n }\r\n\r\n // For grouped bar charts with many bars and NO xLabel\r\n if (subgroups.length > 1 && data.length > 8 && !metaData.xLabel) {\r\n const chartHasExtraBottom = self.chartConfiguration.margin && self.chartConfiguration.margin.bottom >= 40;\r\n if (self.chartConfiguration.isFullScreen) {\r\n return shortTickLengthBg + 2;\r\n }\r\n return chartHasExtraBottom ? shortTickLengthBg : shortTickLengthBg + 10;\r\n }\r\n\r\n // Default/fallback logic\r\n const isria = this.customChartConfiguration.isRia;\r\n let baseY = self.isHeaderVisible && !isria ? shortTickLengthBg + 25 : shortTickLengthBg;\r\n \r\n if (subgroups.length > 1 && !metaData.xLabel && !isria &&\r\n (/\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4}/.test(d) || /\\d{2,4}[-\\/]\\d{2,4}/.test(d))) {\r\n baseY = self.isHeaderVisible ? shortTickLengthBg + 15 : shortTickLengthBg + 25;\r\n }\r\n\r\n if (/\\d{2,4}[-\\/]\\d{2,4}/.test(d) && d.indexOf(' ') > -1 && !isria) {\r\n baseY += 4;\r\n }\r\n\r\n if (self.chartConfiguration.isFullScreen && subgroups.length > 1) {\r\n baseY = Math.max(shortTickLengthBg, baseY - 10);\r\n }\r\n\r\n return baseY;\r\n}\r\n\r\nprivate formatXLabelText(d, data, metaData, subgroups, self, isMobile) {\r\n // Check if we're on mobile or tablet\r\n const isSmallScreen = window.innerWidth < 992; // Less than 992px (mobile or tablet)\r\n \r\n // Helper to extract and format week number\r\n const extractWeekNumber = (text: string): string | null => {\r\n const match = text.match(/(?:week|wk|w)\\s*(\\d+)/i);\r\n return match ? `W${match[1]}` : null;\r\n };\r\n\r\n // Helper to extract date part\r\n const extractDate = (text: string): string | null => {\r\n const match = text.match(/\\d{2}[-\\/]\\d{2}[-\\/]\\d{2,4}/);\r\n return match ? match[0] : null;\r\n };\r\n\r\n // Check if label contains both date and week information\r\n const hasDateAndTime = (text: string) => {\r\n const dateMatch = /\\d{2,4}[-\\/]\\d{1,2}[-\\/]\\d{1,4}/.test(text);\r\n const weekMatch = /(?:week|wk|w)\\s*\\d+/i.test(text);\r\n return { isDate: dateMatch, isWeek: weekMatch };\r\n };\r\n\r\n const labelInfo = hasDateAndTime(d);\r\n\r\n // Mobile handling: format date and week parts\r\n if (isMobile) {\r\n // If header is hidden (compact mobile)\r\n if (!self.isHeaderVisible) {\r\n // If it has both date and week, format appropriately\r\n if (labelInfo.isDate && labelInfo.isWeek) {\r\n const datePart = extractDate(d);\r\n const weekPart = extractWeekNumber(d);\r\n if (datePart && weekPart) {\r\n return `${datePart}\\n${weekPart}`;\r\n }\r\n }\r\n // If it's just a date, return it unchanged\r\n if (labelInfo.isDate) {\r\n return extractDate(d) || d;\r\n }\r\n // If it has just week number, format it as W##\r\n if (labelInfo.isWeek) {\r\n const weekPart = extractWeekNumber(d);\r\n if (weekPart) {\r\n return weekPart;\r\n }\r\n }\r\n // For non-date labels, trim as before\r\n const firstPart = d.split(/[\\s\\-]+/)[0];\r\n return firstPart.substring(0, 3).toLowerCase();\r\n }\r\n }\r\n\r\n // Check if value should be ignored\r\n const isValueToBeIgnored = data.some((indiv: any) => \r\n indiv.name && indiv.name.toLowerCase() === d.trim().toLowerCase() && \r\n indiv[metaData.keyList[0]] === -1\r\n );\r\n\r\n if (isValueToBeIgnored) {\r\n return '';\r\n }\r\n\r\n // Handle date range labels\r\n const dateRangeRegex = /(\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4})\\s*-\\s*(\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4})/;\r\n if (dateRangeRegex.test(d.trim())) {\r\n return d.trim().replace(dateRangeRegex, (m, d1, d2) => `${d1} - ${d2}`);\r\n }\r\n\r\n // Handle splitting of multi-part labels\r\n if (subgroups.length > 1 && !self.isZoomedOut && data.length > 8 && \r\n d.indexOf(' ') > -1 && (labelInfo.isDate || labelInfo.isWeek)) {\r\n const first = d.substring(0, d.indexOf(' '));\r\n const second = d.substring(d.indexOf(' ') + 1).trim();\r\n return `${first}\\n${second}`;\r\n }\r\n\r\n // Handle date labels in minimized view\r\n if (labelInfo.isDate) {\r\n if (!self.isHeaderVisible && d.indexOf(' ') > -1) {\r\n const first = d.substring(0, d.indexOf(' '));\r\n const second = d.substring(d.indexOf(' ') + 1).trim();\r\n return `${first}\\n${second}`;\r\n }\r\n return d;\r\n }\r\n\r\n // Handle labels with spaces\r\n if (d.trim().indexOf(' ') > -1) {\r\n return d.trim().substring(0, d.indexOf(' ')).toLowerCase();\r\n }\r\n\r\n return d.toLowerCase();\r\n}\r\n\r\nprivate calculateMaxValue(data, keyList) {\r\n let maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key]));\r\n \r\n if (maxValue === 0) {\r\n if (this.chartData.targetLineData) {\r\n maxValue = this.chartData.targetLineData.target + 20;\r\n } else {\r\n maxValue = 100;\r\n }\r\n }\r\n\r\n return maxValue;\r\n}\r\n\r\nprivate setupLineYScale(lineData, height, self) {\r\n let maxLineValue = d3.max(lineData, (d) => +d.value);\r\n maxLineValue = maxLineValue * self.chartConfiguration.customYscale;\r\n\r\n let minLineValue = d3.min(lineData, (d) => +d.value);\r\n if (maxLineValue > 0) minLineValue = minLineValue - 3;\r\n if (minLineValue > 0) minLineValue = 0;\r\n\r\n const lineYscale = d3.scaleLinear()\r\n .domain([minLineValue, maxLineValue])\r\n .range([height, minLineValue]);\r\n\r\n const yLineAxis = d3.axisRight(lineYscale)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(0)\r\n .tickFormat(self.chartConfiguration.yLineAxisLabelFomatter);\r\n\r\n return { lineYscale, yLineAxis };\r\n}\r\n\r\nprivate renderGridLines(svg, x, y, height, width, self, isria) {\r\n // X-axis grid between labels\r\n if (self.chartConfiguration.isXgridBetweenLabels) {\r\n svg.append('g')\r\n .attr('class', 'grid')\r\n .attr('transform', `translate(${x.bandwidth() / 2},${height})`)\r\n .call(d3.axisBottom(x).tickSize(-height).tickFormat(''))\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-grid-color, #999999)')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n // Y-axis grid\r\n if (this.chartConfiguration.yAxisGrid || isria) {\r\n svg.append('g')\r\n .call(d3.axisLeft(y).ticks(self.chartConfiguration.numberOfYTicks).tickSize(-width))\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove().style('stroke', 'var(--chart-domain-color, #000000)'));\r\n } else{\r\n svg.append('g')\r\n .call(d3.axisLeft(y).ticks(self.chartConfiguration.numberOfYTicks))\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain')\r\n .style('stroke', 'var(--chart-domain-color, #000000)')\r\n .style('stroke-width', '1px'));\r\n }\r\n}\r\n\r\nprivate setupXSubgroupScale(subgroups, x, self) {\r\n const xSubgroup = d3.scaleBand().domain(subgroups);\r\n\r\n if (subgroups.length > 1 && !this.isZoomedOut) {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else if (subgroups.length === 1 && !this.isZoomedOut) {\r\n xSubgroup.range([0, 100]);\r\n } else if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n }\r\n\r\n return xSubgroup;\r\n}\r\n\r\nprivate renderBars(svg, data, subgroups, x, xSubgroup, y, height, color, \r\n metaData, self, leftAndRightSpaces, tempScale, isria) {\r\n \r\n const state = svg.append('g')\r\n .selectAll('.state')\r\n .data(data)\r\n .enter()\r\n .append('g')\r\n .attr('transform', (d) => `translate(${x(d.name)},0)`);\r\n\r\n const bars = state.selectAll('rect')\r\n .data((d) => this.prepareBarData(d, subgroups))\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', (d) => this.handleBarClick(d, metaData, self))\r\n .attr('x', (d) => this.calculateBarX(d, data, x, xSubgroup, self, tempScale))\r\n .attr('y', (d) => this.calculateBarY(d, y, height, self))\r\n .attr('width', (d) => {\r\n let width = this.calculateBarWidth(d, data, subgroups, x, xSubgroup, self, tempScale);\r\n if (isria && self.chartData.data.length >= 8) {\r\n width = Math.max(0, width - 20); // Prevent negative width\r\n }\r\n return width;\r\n})\r\n\r\n .attr('height', (d) => this.calculateBarHeight(d, y, height, self))\r\n .style('cursor', () => (metaData.hasDrillDown && !isria) ? 'pointer' : 'default')\r\n .attr('fill', (d) => this.getBarColor(d, metaData, self));\r\n\r\n // Attach mouse events if not RIA\r\n if (!isria && (this.chartConfiguration.displayTitleOnTop || \r\n (this.chartConfiguration.textsOnBar === undefined && \r\n this.chartConfiguration.displayTitleOnTop === undefined))) {\r\n bars.on('mouseout', (d, i) => this.handleMouseOut(svg))\r\n .on('mouseover', (d, i) => this.handleMouseOver(d, svg, data, x, y, height, metaData, self, leftAndRightSpaces, tempScale));\r\n }\r\n}\r\n\r\nprivate prepareBarData(d, subgroups) {\r\n const newList: any = [];\r\n subgroups.forEach((key) => {\r\n newList.push({ key: key, value: d[key], name: d.name });\r\n });\r\n return newList;\r\n}\r\n\r\nprivate handleBarClick(d, metaData, self) {\r\n if (d.key !== 'Target') {\r\n if (!metaData.barWithoutClick || !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) && \r\n !metaData.barWithoutClick.includes(d?.key))) {\r\n self.handleClick(d);\r\n }\r\n }\r\n}\r\n\r\nprivate calculateBarX(d, data, x, xSubgroup, self, tempScale) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n return this.calculateDrilldownBarX(d, data, x, self, tempScale);\r\n }\r\n return xSubgroup(d.key);\r\n}\r\n\r\n// private calculateDrilldownBarX(d, data, x, self, tempScale) {\r\n// data.forEach((indiv: any) => {\r\n// if (indiv.name === d.name) {\r\n// const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n// tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n// if (x.bandwidth() > 100) {\r\n// const reducedBarWidth = self.isZoomedOut ? 60 : 30;\r\n// const offset = (x.bandwidth() - reducedBarWidth) / 2;\r\n// tempScale.range([offset, x.bandwidth() - offset]);\r\n// }\r\n// }\r\n// });\r\n// return tempScale(d.key) || 0;\r\n// }\r\n\r\nprivate calculateDrilldownBarX(d, data, x, self, tempScale) {\r\n let calculatedScale = tempScale;\r\n \r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n const reducedBarWidth = self.isZoomedOut ? 60 : 100;\r\n const offset = (x.bandwidth() - reducedBarWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n });\r\n \r\n // Return position relative to the group (since bars are inside a translated group element)\r\n return calculatedScale(d.key) || 0;\r\n }\r\n\r\nprivate calculateBarY(d, y, height, self) {\r\n if (d.value === -1) {\r\n return y(0);\r\n }\r\n\r\n if (d.value >= 0) {\r\n const barHeight = height - y(d.value);\r\n const minHeight = self.chartConfiguration.defaultBarHeight || 2;\r\n return barHeight < minHeight ? y(0) - minHeight : y(d.value);\r\n }\r\n\r\n return y(0);\r\n}\r\n\r\nprivate calculateBarWidth(d, data, subgroups, x, xSubgroup, self, tempScale) {\r\n // Device detection for responsive sizing\r\n const isMobile = window.innerWidth < 576;\r\n const isTablet = window.innerWidth >= 576 && window.innerWidth < 992;\r\n\r\n // For grouped bar charts in zoom-in view\r\n if (subgroups.length > 1 && !self.isZoomedOut) {\r\n return isMobile ? 22 : isTablet ? 36 : 50;\r\n }\r\n\r\n // For single-bar charts in zoom-in view\r\n if (subgroups.length === 1 && !self.isZoomedOut) {\r\n return isMobile ? 60 : 80;\r\n }\r\n\r\n // Minimum bar widths for zoomed-out state\r\n const minBarWidth = (() => {\r\n if (subgroups.length > 2) {\r\n return isMobile ? 18 : isTablet ? 24 : 30;\r\n }\r\n return isMobile ? 12 : isTablet ? 16 : 20;\r\n })();\r\n\r\n // Default logic for drilldown charts\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n let calculatedScale = d3.scaleBand().domain([]).range([0, 0]);\r\n \r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n const reducedBarWidth = self.isZoomedOut ? 60 : 100;\r\n const offset = (x.bandwidth() - reducedBarWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n });\r\n \r\n // Ensure minimum width even in drilldown mode\r\n return Math.max(calculatedScale.bandwidth(), minBarWidth);\r\n }\r\n\r\n // For regular charts, ensure minimum width\r\n return Math.max(xSubgroup.bandwidth(), minBarWidth);\r\n}\r\n\r\nprivate calculateBarHeight(d, y, height, self) {\r\n if (d.value === -1) {\r\n return height - y(0);\r\n }\r\n\r\n if (d.value >= 0) {\r\n const barHeight = height - y(d.value);\r\n const minHeight = self.chartConfiguration.defaultBarHeight || 2;\r\n return Math.max(barHeight, minHeight);\r\n }\r\n\r\n return height - y(0);\r\n}\r\n\r\nprivate getBarColor(d, metaData, self) {\r\n if (d.value && self.chartData.targetLineData && \r\n d.value >= parseFloat(self.chartData.targetLineData.target) && \r\n self.chartData.metaData.colorAboveTarget) {\r\n \r\n const key = d.key.toLowerCase();\r\n const colorAboveTarget = Object.keys(self.chartData.metaData.colorAboveTarget)\r\n .find(k => k.toLowerCase() === key);\r\n \r\n if (colorAboveTarget) {\r\n return self.chartData.metaData.colorAboveTarget[colorAboveTarget];\r\n }\r\n }\r\n return self.chartData.metaData.colors[d.key];\r\n}\r\n\r\nprivate renderBarLabels(svg, data, subgroups, x, xSubgroup, y, height, \r\n metaData, self, tempScale, isria) {\r\n \r\n const state = svg.selectAll('.state');\r\n \r\n const labels = state.selectAll('text')\r\n .data((d) => this.prepareBarData(d, subgroups))\r\n .enter()\r\n .append('text')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('x', 0)\r\n .attr('y', 0)\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text((d) => this.formatBarLabel(d))\r\n .style('fill', '#000')\r\n .style('font-weight', 'bold')\r\n .style('font-size', (d) => this.calculateLabelFontSize(self))\r\n .attr('transform', (d) => this.calculateLabelTransform(d, data, x, xSubgroup, y, self, tempScale))\r\n .on('click', (d) => this.handleBarClick(d, metaData, self));\r\n\r\n if (!isria) {\r\n labels.on('mouseout', () => this.handleMouseOut(svg))\r\n .on('mouseover', (d) => this.handleMouseOver(d, svg, data, x, y, height, metaData, self, 50, tempScale));\r\n }\r\n}\r\n\r\nprivate formatBarLabel(d) {\r\n if (!d.key || !d.value) return '';\r\n return d.key.length > 20 ? d.key.substring(0, 17) + '...' : d.key;\r\n}\r\n\r\nprivate calculateLabelFontSize(self) {\r\n if (self.isZoomedOut) return '9px';\r\n\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) return '18px';\r\n if (window.innerWidth < 1400) return '10px';\r\n return '14px';\r\n }\r\n\r\n return '14px';\r\n}\r\n\r\nprivate calculateLabelTransform(d, data, x, xSubgroup, y, self, tempScale) {\r\n let calculatedScale;\r\n \r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length === 1) {\r\n const reducedWidth = Object.keys(self.chartData.data[0]).length === 2 ? 200 : 300;\r\n const offset = (x.bandwidth() - reducedWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n } else {\r\n const offset = (x.bandwidth() - 125) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n if (self.chartConfiguration.textAlwaysHorizontal) {\r\n return `translate(${xSubgroup(d.key)},${y(d.value) - 3})`;\r\n }\r\n\r\n if (!isNaN(calculatedScale(d.key))) {\r\n return `translate(${calculatedScale(d.key) + calculatedScale.bandwidth() * 0.55},${y(0) - 10}) rotate(270)`;\r\n }\r\n\r\n return 'translate(0,0)';\r\n}\r\n\r\nprivate handleMouseOver(d, svg, data, x, y, height, metaData, self, leftAndRightSpaces, tempScale) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n\r\n let calculatedScale;\r\n let elementsCounter;\r\n\r\n data.forEach((indiv: any) => {\r\n if (indiv.name === d.name) {\r\n const keys = Object.keys(indiv).filter((temp, i) => i !== 0);\r\n elementsCounter = keys.length;\r\n calculatedScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n \r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length === 1) {\r\n const reducedWidth = Object.keys(self.chartData.data[0]).length === 2 ? 200 : 300;\r\n const offset = (x.bandwidth() - reducedWidth) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n } else {\r\n const offset = (x.bandwidth() - 125) / 2;\r\n calculatedScale.range([offset, x.bandwidth() - offset]);\r\n }\r\n }\r\n }\r\n });\r\n\r\n const xPosition = this.calculateTooltipX(d, x, calculatedScale, metaData, leftAndRightSpaces);\r\n const width = this.calculateTooltipWidth(calculatedScale, metaData, leftAndRightSpaces);\r\n\r\n svg.append('foreignObject')\r\n .attr('x', xPosition)\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', y(d.value) - 3 - 40 - 10)\r\n .attr('dy', d.class)\r\n .attr('width', width)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(() => this.generateTooltipHTML(d, metaData));\r\n}\r\n\r\nprivate calculateTooltipX(d, x, calculatedScale, metaData, leftAndRightSpaces) {\r\n if (metaData.hasDrillDown) {\r\n if (calculatedScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return x(d.name) + calculatedScale(d.key) + calculatedScale.bandwidth() / 2 - 90;\r\n }\r\n return x(d.name) + calculatedScale(d.key) - \r\n (calculatedScale.bandwidth() + leftAndRightSpaces * 2) / 2 + \r\n calculatedScale.bandwidth() / 2;\r\n }\r\n return x(d.name) + calculatedScale(d.key) - \r\n (calculatedScale.bandwidth() + leftAndRightSpaces * 2) / 2 + \r\n calculatedScale.bandwidth() / 2;\r\n}\r\n\r\nprivate calculateTooltipWidth(calculatedScale, metaData, leftAndRightSpaces) {\r\n if (metaData.hasDrillDown) {\r\n if (calculatedScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return '180px';\r\n }\r\n return calculatedScale.bandwidth() + leftAndRightSpaces * 2;\r\n }\r\n return calculatedScale.bandwidth() + leftAndRightSpaces * 2;\r\n}\r\n\r\nprivate generateTooltipHTML(d, metaData) {\r\n const barLabel = d.key;\r\n const dataType = metaData.dataType || '';\r\n const value = d.value;\r\n \r\n let html = `<span class=\"title-bar-name\">${barLabel}</span>`;\r\n html += `<span class=\"title-bar-value\"><span>${value}</span>${dataType}</span>`;\r\n \r\n return html;\r\n}\r\n\r\nprivate handleMouseOut(svg) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n}\r\n\r\nprivate renderYAxis(svg, svgYAxisLeft, svgYAxisRight, y, yLineAxis, lineData, self, isria, margin) {\r\n // Hidden y-axis for reference\r\n svg.append('g')\r\n .attr('class', 'lib-stacked-y-axis-text yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n // Left y-axis\r\n svgYAxisLeft.append('g')\r\n .append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(d3.axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat((d) => {\r\n const formatted = self.chartConfiguration.yAxisLabelFomatter \r\n ? self.chartConfiguration.yAxisLabelFomatter(d) \r\n : d;\r\n return formatted >= 1000 ? formatted / 1000 + 'k' : formatted;\r\n }))\r\n .call((g) => {\r\n g.select('.domain')\r\n .style('stroke', 'var(--chart-domain-color, #000000)')\r\n .style('stroke-width', '1px');\r\n })\r\n .selectAll('text')\r\n .style('font-size', isria ? '11px' : null)\r\n .style('fill', 'var(--chart-text-color)');\r\n\r\n // Right y-axis (hidden by default)\r\n svgYAxisRight.append('g')\r\n .attr('class', 'lib-yaxis-labels-texts-drilldown yaxis-dashed')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(y)\r\n .style('display', 'none');\r\n\r\n // Line chart axis if applicable\r\n if (lineData != null && lineData && self.chartConfiguration.showLineChartAxis) {\r\n svgYAxisRight.append('g')\r\n .attr('class', 'lib-stacked-y-axis-text1')\r\n .attr('style', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yLineAxis);\r\n }\r\n\r\n // Apply axis visibility configurations\r\n this.applyAxisVisibilityConfig(self);\r\n}\r\n\r\nprivate applyAxisVisibilityConfig(self) {\r\n if (self.chartConfiguration.isXaxisLabelHidden) {\r\n d3.selectAll('g.lib-line-x-axis-text > g > text')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (self.chartConfiguration.isYaxisLabelHidden) {\r\n d3.selectAll('.yaxis-dashed > g > text')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (self.chartConfiguration.isYaxisHidden) {\r\n d3.selectAll('.yaxis-dashed')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n\r\n if (self.chartConfiguration.isYaxisDashed) {\r\n d3.selectAll('.yaxis-dashed')\r\n .style('stroke-dasharray', '5 5')\r\n .style('color', 'var(--chart-axis-color, #999999)');\r\n }\r\n}\r\n\r\nprivate renderAxisLabels(svg, svgYAxisLeft, svgYAxisRight, metaData, width, height, margin, self, isria, rightSvgWidth) {\r\n // Y-axis label pieces,uints etc\r\n if (metaData.yLabel) {\r\n const yPosition = isria ? 0 - margin.left / 2 - 30 : 0 - margin.left / 2 - 40;\r\n\r\n svgYAxisLeft.append('text')\r\n .attr('class', 'lib-axis-group-label font-size-1')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'rotate(-90)')\r\n .attr('y', yPosition)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '0.5em')\r\n .style('text-anchor', 'middle')\r\n .attr('fill', 'var(--chart-text-color)');\r\n\r\n if (this.chartConfiguration.isMultiChartGridLine === undefined) {\r\n svgYAxisLeft.selectAll('.lib-axis-group-label')\r\n .style('font-size', 'smaller')\r\n .text(metaData.yLabel);\r\n } else {\r\n svg.selectAll('.lib-axis-group-label')\r\n .attr('class', 'lib-ylabel-weeklyCharts')\r\n .text(metaData.yLabel.toLowerCase());\r\n }\r\n }\r\n\r\n // X-axis label\r\n if (metaData.xLabel) {\r\n const isAcronym = this.isLabelAcronym(metaData.xLabel);\r\n const xPosition = isria \r\n ? (height + margin.top + margin.bottom) \r\n : (height + margin.top + margin.bottom + 40);\r\n\r\n svg.append('text')\r\n .attr('class', this.getXLabelClass(self))\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr('transform', `translate(${width / 2},${xPosition})`)\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcronym ? metaData.xLabel.toUpperCase() : metaData.xLabel.toLowerCase())\r\n .style('text-transform', isAcronym ? 'none' : 'capitalize');\r\n }\r\n\r\n // Line y-axis label\r\n if (metaData.lineyLabel) {\r\n svgYAxisRight.append('text')\r\n .attr('class', 'lib-axis-group-label lib-line-axis')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('style', self.chartConfiguration.yAxisCustomlabelStyles)\r\n .attr('transform', 'translate(0,0) rotate(90)')\r\n .attr('y', -100)\r\n .attr('x', 100)\r\n .attr('dy', '5em')\r\n .style('text-anchor', 'middle')\r\n .style('font-size', 'smaller')\r\n .text(metaData.lineyLabel);\r\n }\r\n\r\n // Apply drilldown chart specific styles\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n}\r\n\r\nprivate isLabelAcronym(label) {\r\n return (label.length <= 4 && /^[A-Z]+$/.test(label)) ||\r\n (label === label.toUpperCase() && /[A-Z]/.test(label));\r\n}\r\n\r\nprivate getXLabelClass(self) {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n \r\n if (self.chartConfiguration.isDrilldownChart) {\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n }\r\n \r\n if (self.chartConfiguration.isMultiChartGridLine !== undefined) {\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n }\r\n \r\n return baseClass + ' lib-axis-waterfall-label';\r\n}\r\n\r\nprivate renderTargetLine(svg, svgYAxisRight, y, width, rightSvgWidth, metaData, self,isria) {\r\n const yZero = y(this.chartData.targetLineData.target);\r\n // Draw target line\r\n svg.append('line')\r\n // .attr('x1', 20)\r\n .attr('x1', isria ? 0 : 0)\r\n .attr('x2', width)\r\n .attr('y1', yZero)\r\n .attr('y2', yZero)\r\n .style('stroke-dasharray', '5 5')\r\n .style('stroke', this.chartData.targetLineData.color);\r\n\r\n // Add target label\r\n const dataTypeTemp = metaData.dataType || '';\r\n const targetLineName = this.chartData.targetLineData.targetName || 'target';\r\n \r\n\r\n\r\n svgYAxisRight.append('foreignObject')\r\n .attr('transform', `translate(0,${yZero - 30})`)\r\n .attr('width', rightSvgWidth)\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', isria ? 'target-display-ria' : 'target-display')\r\n .style('color', 'var(--chart-text-color)')\r\n .html(`<div>${targetLineName}</div><div>${self.chartData.targetLineData.target}${dataTypeTemp}</div>`);\r\n}\r\n\r\nprivate renderLineChart(svg, lineData, x, lineYscale, metaData, self) {\r\n // Draw line path\r\n svg.append('path')\r\n .datum(lineData)\r\n .attr('fill', 'none')\r\n .attr('stroke', self.chartConfiguration.lineGraphColor)\r\n .attr('stroke-width', 1.5)\r\n .attr('d', d3.line()\r\n .x((d) => x(d.name) + x.bandwidth() / 2)\r\n .y((d) => lineYscale(d.value)));\r\n\r\n // Add dots\r\n const dot = svg.selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', (d) => {\r\n if (!metaData.barWithoutClick || !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) && \r\n !metaData.barWithoutClick.includes(d?.key))) {\r\n self.handleClick(d);\r\n }\r\n });\r\n\r\n dot.append('circle')\r\n .attr('fill', self.chartConfiguration.lineGraphColor)\r\n .attr('stroke', 'none')\r\n .attr('cx', (d) => x(d.name) + x.bandwidth() / 2)\r\n .attr('cy', (d) => lineYscale(d.value))\r\n .style('cursor', () => self.chartData.metaData.hasDrillDown ? 'pointer' : 'default')\r\n .attr('r', 3);\r\n\r\n // Add value labels\r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot.append('text')\r\n .attr('class', 'dot')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('color', self.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: .85em')\r\n .attr('x', (d) => x(d.name) + x.bandwidth() / 2)\r\n .attr('y', (d) => lineYscale(d.value))\r\n .attr('dy', '-1em')\r\n .text((d) => self.chartConfiguration.labelFormatter(d.value));\r\n }\r\n}\r\n\r\nprivate handleZoomOut(svg, height, margin) {\r\n svg.selectAll('.lib-xaxis-labels-texts-drilldown')\r\n .each((d, i, nodes) => {\r\n const text = d3.select(nodes[i]);\r\n const label = text.text();\r\n \r\n if (label.indexOf('\\n') > -1) {\r\n const lines = label.split('\\n');\r\n text.text(null);\r\n lines.forEach((line, idx) => {\r\n text.append('tspan')\r\n .text(line)\r\n .attr('x', 0)\r\n .attr('dy', idx === 0 ? '1em' : '1.1em');\r\n });\r\n } else {\r\n const words = label.split(' ');\r\n text.text(null);\r\n words.forEach((word) => {\r\n text.append('tspan').text(word);\r\n });\r\n }\r\n })\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('transform', null);\r\n\r\n svg.select('.x-axis')\r\n .attr('transform', `translate(0, ${height - margin.bottom + 10})`);\r\n}\r\n\r\nprivate calculateChartDimensions(chartContainer: any, verticalstackedcontainer: any, margin: any, self: any) {\r\n let width = parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n const dataLength = this.chartData.data.length;\r\n const subgroupsCount = (this.chartData.metaData.keyList as any || []).length;\r\n const isMobile = window.innerWidth < 576;\r\n const isTablet = window.innerWidth >= 576 && window.innerWidth < 992;\r\n const is2K = window.innerWidth >= 2000 && window.innerWidth < 3840;\r\n const isria = this.customChartConfiguration.isRia;\r\n\r\n // Minimum width per bar group based on device and number of subgroups\r\n const minWidthPerGroup = (() => {\r\n if (subgroupsCount > 2) {\r\n return isMobile ? 100 : isTablet ? 100 : 120; // Wider for multiple subgroups\r\n }\r\n return isMobile ? 40 : isTablet ? 60 : 80; // Normal width for 1-2 subgroups\r\n })();\r\n\r\n // Calculate minimum required width for all groups\r\n const minRequiredWidth = dataLength * minWidthPerGroup;\r\n\r\n // In zoomed-out state, ensure minimum width for readability\r\n if (this.isZoomedOut) {\r\n // If we have many groups or multiple subgroups, ensure minimum width\r\n if (dataLength > 8 || subgroupsCount > 2) {\r\n width = Math.max(width, minRequiredWidth);\r\n }\r\n }\r\n\r\n // In zoomed-in state, always ensure generous spacing\r\n if (dataLength > 8 && !this.isZoomedOut) {\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < dataLength * 250\r\n ) {\r\n width = dataLength * 250;\r\n } else {\r\n // Increase width for multiple subgroups\r\n width = dataLength * (subgroupsCount > 2 ? 200 : 160);\r\n }\r\n }\r\n\r\n // ---- Height Logic (no change) ----\r\n let height =\r\n parseInt(verticalstackedcontainer.style('height')) *\r\n (self.chartConfiguration.svgHeight / 100) -\r\n margin.top -\r\n margin.bottom;\r\n\r\n if (\r\n this.chartConfiguration.isFullScreen !== undefined &&\r\n this.chartConfiguration.isFullScreen\r\n ) {\r\n height =\r\n this.chartConfiguration.svgHeight !== 70\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n const bottomDeduction = isria ? 50 : 130;\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n bottomDeduction;\r\n }\r\n\r\n if (this.chartConfiguration.isHeaderVisible) {\r\n const bottomDeduction = isria ? 60 : 100;\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n bottomDeduction;\r\n\r\n if (is2K && this.isHeaderVisible && !isria) {\r\n height -= 55; // reduce a bit more for 2K\r\n }\r\n }\r\n return { width, height };\r\n}\r\nprivate createChartContainers(\r\n chartContainer: any,\r\n margin: any,\r\n height: number,\r\n rightSvgWidth: number,\r\n self: any,\r\n width: number\r\n) {\r\n // Outer container\r\n const isria = this.customChartConfiguration.isRia;\r\n const outerContainer = chartContainer\r\n .append('div')\r\n .attr('id', self.uniqueId)\r\n .attr('class', 'outer-container')\r\n .style('width', '100%')\r\n .style('height', height)\r\n .style('overflow', 'visible') // Allow overflow to show scrollbars\r\n // .style('padding-left', `${margin.left}px`)\r\n .style('padding-left', `${isria ? margin.left + 18 : margin.left + 15}px`)\r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left', '6px');\r\n\r\n // Left Y-Axis\r\n const svgYAxisLeft = outerContainer\r\n .append('svg')\r\n .attr('width', '100')\r\n .attr('height', height + margin.top + margin.bottom + 10)\r\n .style('position', 'absolute')\r\n // .style('left', '0')\r\n .style('left', isria ? '2px' : '0')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', `translate(${margin.left + 15},${margin.top})`);\r\n\r\n // Right Y-Axis\r\n const svgYAxisRight = outerContainer\r\n .append('svg')\r\n .attr('width', rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 10)\r\n .style('position', 'absolute')\r\n .style('right', '12px')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`); \r\n\r\n // Inner scrollable container\r\n const innerContainer = outerContainer\r\n .append('div')\r\n .attr('class', 'inner-container')\r\n .style('width', '100%')\r\n .style('overflow-x', 'auto')\r\n .style('height', isria ? '242px' : null);\r\n\r\n // Main SVG\r\n const svg = innerContainer\r\n .append('svg')\r\n .attr('width', Math.max(width - rightSvgWidth, window.innerWidth * 0.8)) // Ensure minimum width\r\n .attr('height', height + margin.top + margin.bottom + 60)\r\n .style('min-width', '100%') // Prevent svg from shrinking\r\n .append('g')\r\n .attr('transform', `translate(0,${margin.top})`);\r\n\r\n return { outerContainer, svgYAxisLeft, svgYAxisRight, innerContainer, svg };\r\n}\r\n handleClick(d: any) {\r\n if (this.chartData.metaData.hasDrillDown || d?.toggleFrom)\r\n this.clickEvent.emit(d);\r\n }\r\n handleHeaderMenuClick(id) {\r\n this.headerMenuclickEvent.emit(id);\r\n }\r\n handleDD1Click(event) {\r\n this.isDD1Open = true;\r\n this.isDD2Open = false;\r\n }\r\n handleDD2Click(event) {\r\n this.isDD2Open = true;\r\n this.isDD1Open = false;\r\n }\r\n handleCompareByFilterSelection(event) {\r\n this.clickEvent.emit(event);\r\n }\r\n}\r\n","<div\r\n #groupcontainer\r\n class=\"lib-chart-wrapper\"\r\n [ngClass]=\"{ 'lib-no-background': isTransparentBackground }\"\r\n style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\"\r\n>\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n <lib-chart-header-v3\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (compareByFilterSelection)=\"handleCompareByFilterSelection($event)\"\r\n (zoomInZoomOutClick)=\"handleZoominZoomoutClick($event)\"\r\n ></lib-chart-header-v3>\r\n </div>\r\n <lib-chart-header-v1\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [isria]=\"customChartConfiguration.isRia\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n *ngIf=\"isHeaderVisible\"\r\n ></lib-chart-header-v1>\r\n <div\r\n *ngIf=\"\r\n chartData &&\r\n chartData.metaData &&\r\n chartConfiguration.legendJustified &&\r\n legendVisible &&\r\n chartConfiguration.legendAtTopRight\r\n \"\r\n class=\"legend-holder-right\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n >\r\n <ul class=\"display-flex\">\r\n <li\r\n class=\"legends-positioning-inline\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue : keepOrder\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon-drilldown\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n </div>\r\n <div\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n id=\"groupchartcontainer\"\r\n #groupchartcontainer\r\n class=\"lib-chart-svg\"\r\n ></div>\r\n\r\n\r\n <!-- <div\r\n *ngIf=\"\r\n chartData &&\r\n chartData.metaData &&\r\n chartConfiguration.legendJustified &&\r\n legendVisible &&\r\n !chartConfiguration.legendAtTopRight\r\n \"\r\n class=\"lib-donut-chart-footer\"\r\n [style.height]=\"chartConfiguration.footerHeight\"\r\n >\r\n <ul class=\"lib-donut-justified-label-wrapper\">\r\n <li\r\n class=\"lib-donut-justified-label-item\"\r\n *ngFor=\"let item of chartData.metaData.colors | keyvalue\"\r\n >\r\n <span\r\n class=\"lib-donut-justified-label-icon\"\r\n [style.background-color]=\"item.value\"\r\n ></span\r\n ><span>{{ item.key }}</span>\r\n </li>\r\n </ul>\r\n </div> -->\r\n\r\n\r\n <!-- <div *ngIf=\"chartConfiguration?.isDisplayBarDetailsAtBottom\">\r\n <div\r\n class=\"bar-values lib-display-flex lib-justify-content-center lib-align-items-center\"\r\n *ngFor=\"\r\n let item of chartData.metaData.colors | keyvalue : keepOrder;\r\n let i = index\r\n \">\r\n <div\r\n class=\"bar-name font-size-1\"\r\n *ngIf=\"\r\n chartData.data[0][item.key] &&\r\n i <= chartConfiguration.howmanyBarDetailsToDisplay\r\n \"\r\n >\r\n {{ item.key }}\r\n </div>\r\n <div\r\n class=\"bar-value lib-display-flex lib-align-items-center font-size-1\"\r\n [style.color]=\"\r\n chartConfiguration.barVauleColor ? barVauleColor : item.value\r\n \"\r\n *ngIf=\"\r\n chartData.data[0][item.key] &&\r\n i <= chartConfiguration.howmanyBarDetailsToDisplay\r\n \"\r\n >\r\n {{ chartData.data[0][item.key] }}\r\n </div>\r\n </div>\r\n </div> -->\r\n</div>\r\n","import { Component, Input } from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-chart-alert-header',\r\n templateUrl: './chart-alert-header.component.html',\r\n styleUrl: './chart-alert-header.component.less',\r\n})\r\nexport class ChartAlertHeaderComponent {\r\n @Input() isAlertEnabled: any;\r\n}\r\n","<div class=\"chart-alert-header\" *ngIf=\"isAlertEnabled\">\r\n <i class=\"fa fa-bell\"></i>\r\n</div>\r\n","import {\r\n Component,\r\n EventEmitter,\r\n HostListener,\r\n Input,\r\n OnChanges,\r\n OnDestroy,\r\n Output,\r\n SimpleChanges,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\n\r\n@Component({\r\n selector: 'lib-dropdown',\r\n templateUrl: './dropdown.component.html',\r\n styleUrls: ['./dropdown.component.less', '../common-styles.less'],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class DropdownComponent implements OnChanges, OnDestroy {\r\n @Input() dropdownHeaderName: string = 'Compare by';\r\n @Input() isDropdownOpen: boolean = false;\r\n selectedCompareBy: object = {};\r\n @Input() dropdownData: any;\r\n @Input() isCheckboxVisible: boolean = true;\r\n\r\n @Output() ddClicked = new EventEmitter<any>();\r\n @Output() selectedFromDropdown = new EventEmitter<any>();\r\n childDropdownListVisible: any = [];\r\n constructor() {\r\n window.addEventListener('storage', this.onStorageChange.bind(this));\r\n }\r\n ngOnDestroy(): void {\r\n window.removeEventListener('storage', this.onStorageChange);\r\n }\r\n ngOnChanges(changes: SimpleChanges): void {\r\n let valueFromStore = sessionStorage.getItem('childDropdownListVisible');\r\n if (valueFromStore) {\r\n this.childDropdownListVisible = JSON.parse(valueFromStore);\r\n }\r\n const selectedCompareByFromStotage =\r\n sessionStorage.getItem('selectedCompareBy');\r\n if (\r\n selectedCompareByFromStotage &&\r\n this.dropdownHeaderName == 'Compare by'\r\n ) {\r\n try {\r\n this.selectedCompareBy = JSON.parse(selectedCompareByFromStotage);\r\n } catch (e) {\r\n console.log('Error parsing selectedCompareBy from sessionStorage:', e);\r\n }\r\n }\r\n const selectedCompare2ByFromStotage =\r\n sessionStorage.getItem('selectedCompare2By');\r\n if (\r\n selectedCompare2ByFromStotage &&\r\n this.dropdownHeaderName != 'Compare by'\r\n ) {\r\n try {\r\n this.selectedCompareBy = JSON.parse(selectedCompare2ByFromStotage);\r\n this.dropdownHeaderName =\r\n Object.keys(this.selectedCompareBy) &&\r\n Object.keys(this.selectedCompareBy).length > 0\r\n ? Object.keys(this.selectedCompareBy)[0]\r\n : '';\r\n } catch (e) {\r\n console.log('Error parsing selectedCompareBy from sessionStorage:', e);\r\n }\r\n }\r\n if (\r\n sessionStorage.getItem('chartHeaderDropdown') &&\r\n this.dropdownHeaderName == 'Compare by'\r\n )\r\n this.isDropdownOpen =\r\n sessionStorage.getItem('chartHeaderDropdown') == 'true';\r\n }\r\n headerClicked(event) {\r\n event.stopPropagation();\r\n this.ddClicked.emit(true);\r\n this.isDropdownOpen = !this.isDropdownOpen;\r\n if (this.dropdownHeaderName == 'Compare by') this.setDropDownStatus();\r\n else this.setDropDown2Status();\r\n sessionStorage.setItem('isPerformanceClosed', 'true');\r\n }\r\n setDropDownStatus() {\r\n sessionStorage.setItem(\r\n 'chartHeaderDropdown',\r\n this.isDropdownOpen.toString()\r\n );\r\n sessionStorage.setItem('chartHeaderDropdown2', 'false');\r\n }\r\n setDropDown2Status() {\r\n sessionStorage.setItem('chartHeaderDropdown', 'false');\r\n sessionStorage.setItem(\r\n 'chartHeaderDropdown2',\r\n this.isDropdownOpen.toString()\r\n );\r\n }\r\n @HostListener('document:click', ['$event'])\r\n clickout() {\r\n if (this.isDropdownOpen) {\r\n this.isDropdownOpen = false;\r\n this.childDropdownListVisible = [];\r\n sessionStorage.setItem('childDropdownListVisible', JSON.stringify([]));\r\n }\r\n if (this.dropdownHeaderName != 'Compare by')\r\n sessionStorage.setItem('chartHeaderDropdown2', 'false');\r\n if (this.dropdownHeaderName == 'Compare by') this.setDropDownStatus();\r\n }\r\n handleListHeaderClick(event, data, entireList) {\r\n this.handleListPanelClick(event);\r\n if (this.dropdownHeaderName != 'Compare By' && !data.children) {\r\n this.dropdownHeaderName = data.name;\r\n this.isDropdownOpen = false;\r\n if (this.dropdownHeaderName == 'Compare by') this.setDropDownStatus();\r\n else sessionStorage.setItem('chartHeaderDropdown2', 'false');\r\n this.selectedCompareBy = {};\r\n }\r\n let keysArray = Object.keys(this.selectedCompareBy);\r\n if (!keysArray.length || !keysArray.includes(data.name)) {\r\n this.selectedCompareBy[data.name] = data.children ? data.children : data;\r\n } else if (data.children) {\r\n delete this.selectedCompareBy[data.name];\r\n }\r\n if (\r\n this.dropdownHeaderName != 'Compare by' &&\r\n ((sessionStorage.getItem('selectedCompare2By') &&\r\n sessionStorage.getItem('selectedCompare2By') != '{}' &&\r\n JSON.stringify(this.selectedCompareBy) ==\r\n sessionStorage.getItem('selectedCompare2By')) ||\r\n (!sessionStorage.getItem('selectedCompare2By') &&\r\n JSON.stringify(this.selectedCompareBy)\r\n .toLowerCase()\r\n .includes(this.dropdownHeaderName.toLowerCase())))\r\n ) {\r\n } else {\r\n this.selectedFromDropdown.emit({\r\n compareByFilters: this.selectedCompareBy,\r\n entireList: entireList,\r\n });\r\n }\r\n if (this.dropdownHeaderName == 'Compare by' && data.children)\r\n sessionStorage.setItem(\r\n 'selectedCompareBy',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n else {\r\n sessionStorage.setItem(\r\n 'selectedCompare2By',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n }\r\n }\r\n handleListChildrenClick(event, parent, child) {\r\n this.handleListPanelClick(event);\r\n let keysArray = Object.keys(this.selectedCompareBy);\r\n if (!keysArray.length || !keysArray.includes(parent.name)) {\r\n this.selectedCompareBy[parent.name] = [child];\r\n } else {\r\n /** check if the child is already present */\r\n let childObjFound = this.selectedCompareBy[parent.name].find(\r\n (childObj) => childObj.name === child.name\r\n );\r\n if (!childObjFound) {\r\n /**child not found */\r\n this.selectedCompareBy[parent.name].push(child);\r\n } else {\r\n /**child already selected - hence delete that child*/\r\n this.selectedCompareBy[parent.name] = this.selectedCompareBy[\r\n parent.name\r\n ].filter((childObj) => childObj.name !== child.name);\r\n if (\r\n this.selectedCompareBy[parent.name] &&\r\n !this.selectedCompareBy[parent.name].length\r\n ) {\r\n delete this.selectedCompareBy[parent.name];\r\n }\r\n }\r\n }\r\n this.selectedFromDropdown.emit({\r\n compareByFilters: this.selectedCompareBy,\r\n entireList: parent?.children,\r\n });\r\n if (this.dropdownHeaderName == 'Compare by' && parent.children)\r\n sessionStorage.setItem(\r\n 'selectedCompareBy',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n else {\r\n sessionStorage.setItem(\r\n 'selectedCompare2By',\r\n JSON.stringify(this.selectedCompareBy)\r\n );\r\n }\r\n }\r\n handleIfPresent(data) {\r\n let parentObj = this.dropdownData.find((obj) => obj.name === data.name);\r\n if (\r\n this.selectedCompareBy[data.name] &&\r\n parentObj.children &&\r\n parentObj.children.length == this.selectedCompareBy[data.name]?.length\r\n ) {\r\n return true;\r\n }\r\n if (this.selectedCompareBy[data.name] && !parentObj.children) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n handleIfChildPresent(parent, child) {\r\n if (!Object.keys(this.selectedCompareBy).length) {\r\n return false;\r\n }\r\n let childObjFound =\r\n this.selectedCompareBy[parent.name] &&\r\n this.selectedCompareBy[parent.name].find(\r\n (childObj) => childObj.name === child.name\r\n );\r\n if (childObjFound) {\r\n return true;\r\n }\r\n return false;\r\n }\r\n handleListPanelClick(event) {\r\n event.stopPropagation();\r\n }\r\n getDropdownHeaderName() {\r\n if (\r\n this.dropdownHeaderName != 'Compare by' &&\r\n sessionStorage.getItem('onHoveredElementClicked')\r\n ) {\r\n const reqString = sessionStorage.getItem('onHoveredElementClicked');\r\n if (reqString) this.dropdownHeaderName = reqString.replace(/\"/g, '');\r\n return this.dropdownHeaderName;\r\n }\r\n return this.dropdownHeaderName;\r\n }\r\n getDropdownVisibilityStatus() {\r\n if (\r\n sessionStorage.getItem('chartHeaderDropdown') &&\r\n this.dropdownHeaderName == 'Compare by'\r\n )\r\n this.isDropdownOpen =\r\n sessionStorage.getItem('chartHeaderDropdown') == 'true';\r\n else if (\r\n sessionStorage.getItem('chartHeaderDropdown2') &&\r\n this.dropdownHeaderName != 'Compare by'\r\n )\r\n this.isDropdownOpen =\r\n sessionStorage.getItem('chartHeaderDropdown2') == 'true';\r\n return this.isDropdownOpen;\r\n }\r\n private onStorageChange(event: StorageEvent): void {\r\n if (\r\n event.storageArea === sessionStorage &&\r\n (event.key === 'chartHeaderDropdown' ||\r\n event.key == 'chartHeaderDropdown2')\r\n ) {\r\n this.getDropdownVisibilityStatus();\r\n }\r\n }\r\n handleShowOrHideChildList(parentName: string, event: Event) {\r\n event.stopPropagation();\r\n\r\n if (this.childDropdownListVisible.includes(parentName)) {\r\n this.childDropdownListVisible = [];\r\n } else {\r\n this.childDropdownListVisible = [parentName];\r\n }\r\n\r\n sessionStorage.setItem(\r\n 'childDropdownListVisible',\r\n JSON.stringify(this.childDropdownListVisible)\r\n );\r\n }\r\n}\r\n","<div class=\"dropdown-container\">\r\n <button class=\"weeklycharts__weekbutton text-align-left\" type=\"button\" (click)=\"headerClicked($event)\"\r\n [ngClass]=\"{ 'weeklycharts__bordernormal': !isDropdownOpen }\">\r\n {{ getDropdownHeaderName() }}\r\n <div class=\"custom-select-caret\">\r\n <i class=\"bi\" [ngClass]=\"{\r\n 'bi-caret-down-fill': !isDropdownOpen,\r\n 'bi-caret-up-fill': isDropdownOpen\r\n }\"></i>\r\n </div>\r\n </button>\r\n\r\n <ul class=\"dropdown__list\" *ngIf=\"getDropdownVisibilityStatus()\" (click)=\"handleListPanelClick($event)\">\r\n <li *ngFor=\"let data of dropdownData\" class=\"position-relative\" \r\n [ngClass]=\"{\r\n 'weeklycharts-active': data.name === dropdownHeaderName,\r\n 'weeklycharts-inactive': data.name !== dropdownHeaderName\r\n }\">\r\n\r\n <!-- Parent Item -->\r\n <span class=\"display-flex align-items-center cursor-pointer gap-2\" (click)=\"handleListHeaderClick($event, data, dropdownData)\">\r\n <i class=\"fa\" [ngClass]=\"{\r\n 'fa-check-square': handleIfPresent(data),\r\n 'fa-square-o': !handleIfPresent(data)\r\n }\" *ngIf=\"isCheckboxVisible\"></i>\r\n <span class=\"list-text font-size-3\"\r\n [ngClass]=\"{ 'font-weight-600': data.name === dropdownHeaderName }\">\r\n {{ data.name }}\r\n </span>\r\n\r\n <!-- Expand/Collapse Icon -->\r\n <span class=\"sublist-arrow lib-display-flex\" *ngIf=\"data.children\" \r\n (click)=\"handleShowOrHideChildList(data.name, $event)\">\r\n <i class=\"fa font-size-1 font-weight-600\" \r\n [ngClass]=\"{\r\n 'fa-angle-right': !childDropdownListVisible.includes(data.name),\r\n 'fa-angle-down': childDropdownListVisible.includes(data.name)\r\n }\"></i>\r\n </span>\r\n </span>\r\n\r\n <!-- Children List -->\r\n <ul class=\"dropdown-sublist lib-ml-20 lib-list-children\"\r\n *ngIf=\"data.children && childDropdownListVisible.includes(data.name)\">\r\n <li *ngFor=\"let child of data.children\" \r\n class=\"display-flex align-items-center cursor-pointer gap-2\"\r\n (click)=\"handleListChildrenClick($event, data, child)\">\r\n <i class=\"fa\" [ngClass]=\"{\r\n 'fa-check-square': handleIfChildPresent(data, child),\r\n 'fa-square-o': !handleIfChildPresent(data, child)\r\n }\"></i>\r\n <span class=\"checkbox-text-styles\">{{ child.name }}</span>\r\n </li>\r\n </ul>\r\n\r\n </li>\r\n </ul>\r\n</div>\r\n","import {\r\n Component,\r\n ElementRef,\r\n EventEmitter,\r\n Input,\r\n OnChanges,\r\n OnInit,\r\n Output,\r\n ViewChild,\r\n ViewEncapsulation,\r\n} from '@angular/core';\r\nimport { ComponentUniqueId } from '../unique-id';\r\nimport ChartHelper from '../chart-helper';\r\nimport HeaderConfigHelper from '../header-config';\r\n\r\n@Component({\r\n selector: 'lib-plain-trend',\r\n templateUrl: './plain-trend.component.html',\r\n styleUrls: [\r\n './plain-trend.component.less',\r\n '../common-styles.less'\r\n ],\r\n encapsulation: ViewEncapsulation.None,\r\n})\r\nexport class PlainTrendComponent\r\n extends ComponentUniqueId\r\n implements OnInit, OnChanges {\r\n\r\n @ViewChild('plaintrendcontainer', { static: true }) containerElt!: ElementRef;\r\n @Input() chartData: any;\r\n @Input() customChartConfiguration: any;\r\n\r\n @Output() clickEvent = new EventEmitter<any>();\r\n @Output() headerMenuclickEvent = new EventEmitter<any>();\r\n\r\n chartConfiguration: any = {};\r\n uniqueId = this.getUniqueId();\r\n isHeaderVisible = true;\r\n\r\n private readonly defaultConfiguration = {\r\n isDrilldown: undefined,\r\n isHeaderVisible: undefined,\r\n isToggleVisible: undefined,\r\n isTitleHidden: undefined,\r\n selectedKpiTooltop: undefined,\r\n headerMenuOptions: HeaderConfigHelper.headerConfig.headerMenuOptions,\r\n };\r\n\r\n ngOnInit(): void {\r\n this.initializeChartConfiguration();\r\n }\r\n\r\n ngOnChanges(): void {\r\n this.initializeChartConfiguration();\r\n }\r\n\r\n handleClick(value: any): void {\r\n this.clickEvent.emit(value);\r\n }\r\n\r\n handleHeaderMenuClick(menuId: any): void {\r\n this.headerMenuclickEvent.emit(menuId);\r\n }\r\n\r\n get isAlertEnabled(): boolean {\r\n return this.chartConfiguration?.headerMenuOptions?.some(\r\n (option) => option.id === 'editAlert'\r\n );\r\n }\r\n\r\n private initializeChartConfiguration(): void {\r\n Object.keys(this.defaultConfiguration).forEach((key) => {\r\n this.chartConfiguration[key] = ChartHelper.getValueByConfigurationType(\r\n key,\r\n this.defaultConfiguration,\r\n this.customChartConfiguration\r\n );\r\n });\r\n\r\n if (this.chartConfiguration.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\r\n }\r\n }\r\n}\r\n","<div #piecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\">\r\n <lib-chart-header-v1\r\n *ngIf=\"isHeaderVisible\"\r\n [title]=\"chartData.metaData.title\"\r\n [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\"\r\n [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\"\r\n [isria]=\"customChartConfiguration.isRia\"\r\n [isAlertEnabled]=\"isAlertEnabled\"\r\n (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n ></lib-chart-header-v1>\r\n\r\n <ng-container *ngIf=\"chartConfiguration.isToggleVisible && !isHeaderVisible && chartData.data.value > 0\">\r\n <lib-chart-header-v2\r\n [chartData]=\"chartData\"\r\n [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"\r\n ></lib-chart-header-v2>\r\n </ng-container>\r\n\r\n <div\r\n #plaintrendcontainer\r\n id=\"trendchartcontainer\"\r\n class=\"lib-chart-svg trendcontainer\"\r\n [style.height]=\"chartConfiguration.svgHeight\"\r\n >\r\n <div\r\n class=\"central-content\"\r\n [ngClass]=\"{\r\n 'central-content-non-drilldown-sizes': isHeaderVisible,\r\n 'central-content-drilldown-sizes': !isHeaderVisible,\r\n 'lib-justify-content-space-around': chartData.data.bgColor,\r\n 'lib-justify-content-center': !chartData.data.bgColor\r\n }\"\r\n (click)=\"handleClick(chartData.data.daterange)\"\r\n >\r\n <span\r\n class=\"value-style\"\r\n [ngClass]=\"{\r\n 'value-style-non-drilldown': isHeaderVisible,\r\n 'value-style-drilldown': !isHeaderVisible\r\n }\"\r\n >\r\n {{ chartData.data.value | number: '1.0-2' }}\r\n </span>\r\n\r\n <span\r\n class=\"name-style\"\r\n [ngClass]=\"{\r\n 'name-style-non-drilldown': isHeaderVisible,\r\n 'name-style-drilldown': !isHeaderVisible\r\n }\"\r\n >\r\n {{ chartData.data.name }}\r\n </span>\r\n\r\n <div\r\n *ngIf=\"chartData.data.bgColor\"\r\n class=\"direction-panel\"\r\n [ngClass]=\"{\r\n 'direction-panel-non-drilldown': isHeaderVisible,\r\n 'direction-panel-drilldown': !isHeaderVisible\r\n }\"\r\n [style.backgroundColor]=\"chartData.data.bgColor\"\r\n >\r\n <ng-container [ngSwitch]=\"chartData.data.valueDirection\">\r\n <img *ngSwitchCase=\"1\" class=\"trend-img\" src=\"/assets/up-trend.png\" alt=\"up\" />\r\n <img *ngSwitchCase=\"0\" class=\"trend-img\" src=\"/assets/sameline-trend.png\" alt=\"same\" />\r\n <img *ngSwitchCase=\"-1\" class=\"trend-img\" src=\"/assets/down-trend.png\" alt=\"down\" />\r\n </ng-container>\r\n </div>\r\n </div>\r\n\r\n <div\r\n class=\"date-range\"\r\n [ngClass]=\"{ 'date-range-drilldown': !isHeaderVisible }\"\r\n >\r\n <i class=\"fa fa-calendar marginright-3\"></i>\r\n {{ chartData.data.daterange }}\r\n </div>\r\n </div>\r\n</div>\r\n","import { NgModule } from '@angular/core';\r\nimport { CommonModule } from '@angular/common';\r\nimport { AxidioStyleguideLibraryComponent } from './axidio-styleguide-library.component';\r\nimport { AreaChartComponent } from './area-chart/area-chart.component';\r\nimport { PieChartComponent } from './pie-chart/pie-chart.component';\r\nimport { HorizontalStackedChartComponent } from './horizontal-stacked-chart/horizontal-stacked-chart.component';\r\nimport { HorizontalBarChartComponent } from './horizontal-bar-chart/horizontal-bar-chart.component';\r\nimport { LineChartComponent } from './line-chart/line-chart.component';\r\nimport { DonutChartComponent } from './donut-chart/donut-chart.component';\r\nimport { VerticalStackedChartComponent } from './vertical-stacked-chart/vertical-stacked-chart.component';\r\nimport { MultiRingChartComponent } from './multi-ring-chart/multi-ring-chart.component';\r\nimport { GuageChartComponent } from './guage-chart/guage-chart.component';\r\nimport { AngularResizeEventModule } from 'angular-resize-event';\r\nimport { GroupChartComponent } from './group-chart/group-chart.component';\r\nimport { AxTableComponent } from './ax-table/ax-table.component';\r\nimport { NgbModule } from '@ng-bootstrap/ng-bootstrap';\r\nimport { WaterfallChartComponent } from './waterfall-chart/waterfall-chart.component';\r\nimport { SunburstChartComponent } from './sunburst-chart/sunburst-chart.component';\r\nimport { ProgressBarComponent } from './progress-bar/progress-bar.component';\r\nimport { RadarChartComponent } from './radar-chart/radar-chart.component';\r\nimport { LineChartCardComponent } from './line-chart-card/line-chart-card.component';\r\nimport { ChartHeaderComponent } from './chart-header/chart-header.component';\r\nimport { MultipleLineChartComponent } from './multiple-line-chart/multiple-line-chart.component';\r\nimport { SuggestionsComponent } from './suggestions/suggestions.component';\r\nimport { TableChartComponent } from './table-chart/table-chart.component';\r\nimport { MultipleProgressbarComponent } from './multiple-progressbar/multiple-progressbar.component';\r\nimport { MultichartFooterComponent } from './multichart-footer/multichart-footer.component';\r\nimport { HeaderAltComponent } from './header-alt/header-alt.component';\r\nimport { HorizontalBarsWithScrollZoomComponent } from './horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component';\r\nimport { HorizontalGroupedBarWithScrollZoomComponent } from './horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component';\r\nimport { ChartHeaderV1Component } from './chart-header-v1/chart-header-v1.component';\r\nimport { ChartAlertHeaderComponent } from './chart-alert-header/chart-alert-header.component';\r\nimport { DropdownComponent } from './dropdown/dropdown.component';\r\nimport { ChartHeaderV2Component } from './chart-header-v2/chart-header-v2.component';\r\nimport { PlainTrendComponent } from './plain-trend/plain-trend.component';\r\nimport { ChartHeaderV3Component } from './chart-header-v3/chart-header-v3.component';\r\nimport { FormsModule } from '@angular/forms';\r\n\r\n@NgModule({\r\n declarations: [\r\n AxidioStyleguideLibraryComponent,\r\n AreaChartComponent,\r\n PieChartComponent,\r\n HorizontalStackedChartComponent,\r\n HorizontalBarChartComponent,\r\n LineChartComponent,\r\n DonutChartComponent,\r\n VerticalStackedChartComponent,\r\n MultiRingChartComponent,\r\n GuageChartComponent,\r\n GroupChartComponent,\r\n AxTableComponent,\r\n WaterfallChartComponent,\r\n SunburstChartComponent,\r\n ProgressBarComponent,\r\n RadarChartComponent,\r\n LineChartCardComponent,\r\n ChartHeaderComponent,\r\n MultipleLineChartComponent,\r\n SuggestionsComponent,\r\n TableChartComponent,\r\n MultipleProgressbarComponent,\r\n MultichartFooterComponent,\r\n HeaderAltComponent,\r\n HorizontalBarsWithScrollZoomComponent,\r\n HorizontalGroupedBarWithScrollZoomComponent,\r\n ChartHeaderV1Component,\r\n ChartAlertHeaderComponent,\r\n DropdownComponent,\r\n ChartHeaderV2Component,\r\n ChartHeaderV3Component,\r\n PlainTrendComponent,\r\n ],\r\n imports: [CommonModule, AngularResizeEventModule, NgbModule, FormsModule],\r\n exports: [\r\n AxidioStyleguideLibraryComponent,\r\n AreaChartComponent,\r\n PieChartComponent,\r\n HorizontalStackedChartComponent,\r\n HorizontalBarChartComponent,\r\n LineChartComponent,\r\n DonutChartComponent,\r\n VerticalStackedChartComponent,\r\n MultiRingChartComponent,\r\n GuageChartComponent,\r\n GroupChartComponent,\r\n AxTableComponent,\r\n WaterfallChartComponent,\r\n SunburstChartComponent,\r\n ProgressBarComponent,\r\n RadarChartComponent,\r\n LineChartCardComponent,\r\n MultipleLineChartComponent,\r\n SuggestionsComponent,\r\n TableChartComponent,\r\n MultipleProgressbarComponent,\r\n MultichartFooterComponent,\r\n HorizontalBarsWithScrollZoomComponent,\r\n HorizontalGroupedBarWithScrollZoomComponent,\r\n PlainTrendComponent,\r\n ],\r\n})\r\nexport class AxidioStyleguideLibraryModule {}\r\n","/*\r\n * Public API Surface of axidio-styleguide-library\r\n */\r\n\r\nexport * from './lib/axidio-styleguide-library.service';\r\nexport * from './lib/axidio-styleguide-library.component';\r\nexport * from './lib/axidio-styleguide-library.module';\r\n\r\n//Custom chart list\r\n\r\nexport * from './lib/area-chart/area-chart.component';\r\nexport * from './lib/pie-chart/pie-chart.component';\r\nexport * from './lib/horizontal-stacked-chart/horizontal-stacked-chart.component';\r\nexport * from './lib/horizontal-bar-chart/horizontal-bar-chart.component';\r\nexport * from './lib/line-chart/line-chart.component';\r\nexport * from './lib/guage-chart/guage-chart.component';\r\nexport * from './lib/waterfall-chart/waterfall-chart.component';\r\nexport * from './lib/donut-chart/donut-chart.component';\r\nexport * from './lib/group-chart/group-chart.component';\r\nexport * from './lib/multi-ring-chart/multi-ring-chart.component';\r\nexport * from './lib/sunburst-chart/sunburst-chart.component';\r\nexport * from './lib/vertical-stacked-chart/vertical-stacked-chart.component';\r\nexport * from './lib/progress-bar/progress-bar.component';\r\nexport * from './lib/ax-table/ax-table.component';\r\nexport * from './lib/radar-chart/radar-chart.component';\r\nexport * from './lib/line-chart-card/line-chart-card.component';\r\nexport * from './lib/multiple-line-chart/multiple-line-chart.component';\r\nexport * from './lib/suggestions/suggestions.component';\r\nexport * from './lib/table-chart/table-chart.component';\r\nexport * from './lib/multiple-progressbar/multiple-progressbar.component';\r\nexport * from './lib/multichart-footer/multichart-footer.component';\r\nexport * from './lib/horizontal-bars-with-scroll-zoom/horizontal-bars-with-scroll-zoom.component';\r\nexport * from './lib/horizontal-grouped-bar-with-scroll-zoom/horizontal-grouped-bar-with-scroll-zoom.component';\r\nexport * from './lib/plain-trend/plain-trend.component';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1","i2.ChartHeaderComponent","i1.ChartHeaderComponent","i3.ChartHeaderComponent","i2.HeaderAltComponent","i3.ChartHeaderV1Component","i4.ChartHeaderV2Component","i5.ChartHeaderV3Component","i2","i3.HeaderAltComponent","i4.ChartHeaderComponent","i3.ChartHeaderV2Component","i4.ChartHeaderV3Component","i2.ChartHeaderV1Component"],"mappings":"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"}