axidio-styleguide-library1-v2 0.2.13 → 0.2.14

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\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div class=\"header-alt-title\">\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 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-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 {\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: 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 dataType: any = '';\r\n datatype_status: boolean = false;\r\n uniqueId: any = this.getUniqueId();\r\n isHeaderVisible: boolean = true;\r\n\r\n defaultConfiguration: any = {\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(option => option.id === 'editAlert');\r\n}\r\n\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).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 this.initializeLineChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeLineChart() {\r\n var self = this;\r\n let data = [];\r\n let metaData: any = null;\r\n let colorMaps = [];\r\n let angleValue = [];\r\n let data_ready: any = [];\r\n let labelArray: any = [];\r\n let colorType = null;\r\n\r\n let isria = this.customChartConfiguration.isRia\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 data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n colorType = metaData.colorType;\r\n if (colorType == 'low') {\r\n colorMaps = this.chartConfiguration.low_colorMap;\r\n } else {\r\n colorMaps = this.chartConfiguration.high_colorMap;\r\n }\r\n if (metaData.dataType) {\r\n this.dataType = metaData.dataType;\r\n if (this.dataType == 'USD') {\r\n this.datatype_status = true;\r\n this.dataType = '$ ';\r\n }\r\n }\r\n\r\n data.map(function (dataUnit, i) {\r\n if (i < data.length - 1) {\r\n let diff = data[i + 1] - data[i];\r\n data_ready.push(diff);\r\n }\r\n });\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var guagecontainer = d3.select(this.guagecontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n\r\n var height =\r\n parseInt(guagecontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n 56; //chart header height\r\n\r\n if (this.chartConfiguration.isHeaderVisible != undefined)\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\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\r\n var radius = Math.min(width, height) / 2;\r\n\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n this.chartConfiguration.currentValueWidthScaleFactor += 40;\r\n this.chartConfiguration.currentValueHeightScaleFactor += 20;\r\n } else {\r\n if (window.innerWidth > 1400) {\r\n this.chartConfiguration.currentValueHeightScaleFactor += 15;\r\n this.chartConfiguration.currentValueWidthScaleFactor *= 2;\r\n }\r\n }\r\n let topTextPosition = radius / 2 - 10;\r\n let midTextPosition =\r\n topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n let bottomTextPosition =\r\n midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n var data_length = data.length;\r\n\r\n function deg2rad(deg) {\r\n return (deg * Math.PI) / 180;\r\n }\r\n let tempArray: any = [];\r\n let total = 0;\r\n data_ready.map(function (unit) {\r\n total += unit;\r\n });\r\n data_ready.map(function (unit, i) {\r\n var angle = (unit / total) * 180;\r\n if (i === 0) {\r\n tempArray.push(angle);\r\n } else {\r\n let currentAngle = tempArray[i - 1] + angle;\r\n tempArray.push(currentAngle);\r\n }\r\n });\r\n angleValue = tempArray;\r\n\r\n var arc = d3\r\n .arc()\r\n .innerRadius(\r\n radius -\r\n self.chartConfiguration.ringWidth -\r\n self.chartConfiguration.ringInset\r\n )\r\n .outerRadius(radius)\r\n .startAngle(function (d, i) {\r\n var ratio;\r\n if (i === 0) {\r\n ratio = self.chartConfiguration.minAngle;\r\n } else {\r\n ratio = self.chartConfiguration.minAngle + angleValue[i - 1];\r\n }\r\n return deg2rad(ratio);\r\n })\r\n .endAngle(function (d, i) {\r\n var ratio;\r\n if (i === data_ready.length - 1) {\r\n ratio = self.chartConfiguration.maxAngle;\r\n } else {\r\n ratio = self.chartConfiguration.minAngle + angleValue[i];\r\n }\r\n return deg2rad(ratio);\r\n });\r\n\r\n function centerTranslation() {\r\n return 'translate(' + radius + ',' + radius + ')';\r\n }\r\n\r\n var centerTx = centerTranslation();\r\n var tickData = d3\r\n .range(self.chartConfiguration.majorTicks)\r\n .map(function (i) {\r\n return 1 / self.chartConfiguration.majorTicks;\r\n });\r\n\r\n var arcs = svg.append('g').attr('class', 'arc').attr('transform', centerTx);\r\n\r\n arcs\r\n .selectAll('path')\r\n .data(data_ready)\r\n .enter()\r\n .append('path')\r\n .on('click', function (d) {\r\n if (!metaData.hasDrillDown || metaData.currentValue == 0) {\r\n return;\r\n }\r\n let range = getRange(d);\r\n self.handleClick(range);\r\n })\r\n .attr('fill', function (d, i) {\r\n return colorMaps[i];\r\n })\r\n .attr('id', function (d, i) {\r\n return colorMaps[i];\r\n })\r\n .attr('d', arc)\r\n // .style('cursor', 'pointer');\r\n .style('cursor', function (d) {\r\n if (metaData.currentValue > 0 && metaData.hasDrillDown && !isria)\r\n return 'pointer';\r\n else return 'default';\r\n });\r\n\r\n let getRange = function (d) {\r\n let index = data_ready.indexOf(d);\r\n return data[0] + ' and ' + data[data.length - 1];\r\n };\r\n\r\n let pointerHeadLength = Math.round(\r\n radius * self.chartConfiguration.pointerHeadLengthPercent\r\n );\r\n\r\n var lineData = [\r\n [self.chartConfiguration.pointerWidth / 2, 0],\r\n [0, -pointerHeadLength],\r\n [-(self.chartConfiguration.pointerWidth / 2), 0],\r\n [0, self.chartConfiguration.pointerTailLength],\r\n [self.chartConfiguration.pointerWidth / 2, 0],\r\n ];\r\n\r\n var pointerLine = d3.line();\r\n var pg = svg\r\n .append('g')\r\n .data([lineData])\r\n .attr('class', 'pointer')\r\n .attr('transform', centerTx);\r\n\r\n var pointerValue = metaData.currentValue - data[0];\r\n var range = data[data_length - 1] - data[0];\r\n var pointerAngle =\r\n self.chartConfiguration.minAngle + (pointerValue / range) * 180;\r\n pg.append('path')\r\n .attr('d', pointerLine)\r\n .attr('fill', self.chartConfiguration.pointerColor)\r\n .attr(\r\n 'transform',\r\n 'rotate(' +\r\n pointerAngle +\r\n ') translate(0,' +\r\n (-radius + self.chartConfiguration.ringWidth + pointerHeadLength) +\r\n ')'\r\n );\r\n\r\n var lg = svg.append('g').attr('class', 'label').attr('transform', centerTx);\r\n let labelArrayTemp = [{ name: data[0], value: 0 }];\r\n let count = 0;\r\n data_ready.map(function (dataUnit, i) {\r\n count += dataUnit;\r\n let temp = { name: data[i + 1], value: count };\r\n labelArrayTemp.push(temp);\r\n });\r\n labelArray = labelArrayTemp;\r\n\r\n lg.selectAll('.bubble')\r\n .data(labelArray)\r\n .enter()\r\n .append('g')\r\n .attr('transform', function (d) {\r\n var newAngle =\r\n self.chartConfiguration.minAngle + (d.value / range) * 180;\r\n return (\r\n 'rotate(' +\r\n newAngle +\r\n ') translate(0,' +\r\n (self.chartConfiguration.labelInset - radius - 20) +\r\n ')'\r\n );\r\n })\r\n .append('g')\r\n .attr('transform', function (d, i) {\r\n var newAngle =\r\n self.chartConfiguration.minAngle + (d.value / range) * 180;\r\n if (i == 0 && self.chartConfiguration.isValueLableAdjust) {\r\n return 'rotate(' + (0 - newAngle) + ') translate(-27,0)';\r\n }\r\n if (\r\n i == labelArray.length - 1 &&\r\n self.chartConfiguration.isValueLableAdjust\r\n ) {\r\n return 'rotate(' + (0 - newAngle) + ') translate(-15,0)';\r\n }\r\n return 'rotate(' + (0 - newAngle) + ') translate(-17,0)';\r\n })\r\n .append('text')\r\n .attr('style', function (d) {\r\n if (window.innerWidth < 1400)\r\n return 'font-size: ' + '12px' + '; font-weight:' + '600;';\r\n else return 'font-size: ' + '14px' + '; font-weight:' + '600;';\r\n })\r\n .attr('fill', 'var(--chart-text-color)')\r\n .text(function (d) {\r\n if (metaData.dataType) {\r\n return d.name + metaData.dataType;\r\n }\r\n return d.name;\r\n });\r\n\r\n svg\r\n .append('foreignObject')\r\n .attr(\r\n 'transform',\r\n 'translate(' +\r\n (radius - this.chartConfiguration.currentValueWidthScaleFactor / 2) +\r\n ',' +\r\n topTextPosition +\r\n ')'\r\n )\r\n .attr('width', this.chartConfiguration.currentValueWidthScaleFactor + 8)\r\n .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)\r\n .append('xhtml:div')\r\n .attr('class', 'value-display')\r\n .style(\r\n 'height',\r\n this.chartConfiguration.currentValueHeightScaleFactor + 10 + 'px'\r\n )\r\n .style('font-size', function () {\r\n if (window.innerWidth > 1500) {\r\n self.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px';\r\n } else {\r\n self.chartConfiguration.currentValueHeightScaleFactor - 15 + 'px';\r\n }\r\n })\r\n .html(metaData.currentValue + metaData.dataType);\r\n if (metaData.status) {\r\n let widthTemp = metaData.status.length > 4 ? 210 : 120;\r\n svg\r\n .append('foreignObject')\r\n .attr(\r\n 'transform',\r\n 'translate(' + (radius - widthTemp / 2) + ',' + midTextPosition + ')'\r\n )\r\n .attr('width', widthTemp)\r\n .attr(\r\n 'height',\r\n this.chartConfiguration.currentValueHeightScaleFactor + 10\r\n )\r\n .append('xhtml:div')\r\n .attr('class', 'status-display')\r\n .style(\r\n 'font-size',\r\n this.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px'\r\n )\r\n .html(metaData.status);\r\n }\r\n svg\r\n .append('foreignObject')\r\n .attr(\r\n 'transform',\r\n 'translate(' + (radius - 105) + ',' + bottomTextPosition + ')'\r\n )\r\n .attr('width', 210)\r\n .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)\r\n .append('xhtml:div')\r\n .attr('class', 'daterange-display')\r\n .style('font-size', function () {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n {\r\n if (window.innerWidth < 1400) return '14px';\r\n else return '18px';\r\n }\r\n } else {\r\n if (window.innerWidth < 1400) return '14px';\r\n else return '18px';\r\n }\r\n })\r\n .html(function () {\r\n var desiredSize;\r\n if (window.innerWidth < 1400) desiredSize = '14px';\r\n else desiredSize = '18px';\r\n if (metaData.dateRange)\r\n return (\r\n '<span class=\"marginright-3\"><i class=\"fa fa-calendar\"></i></span><span> ' +\r\n metaData.dateRange +\r\n '</span>'\r\n );\r\n else return '';\r\n });\r\n\r\n var containerMidWidth = parseInt(chartContainer.style('width')) / 2;\r\n var nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;\r\n var updatedStartingPoint = containerMidWidth - nodeHalfWidth;\r\n\r\n svg.attr(\r\n 'transform',\r\n 'translate(' +\r\n (updatedStartingPoint + margin.left) +\r\n ',' +\r\n margin.top +\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}","<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></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\n import { ComponentUniqueId } from '../unique-id';\r\n import ChartHelper from '../chart-helper';\r\n import * as d3 from 'd3';\r\n import { ResizedEvent } from 'angular-resize-event';\r\n import HeaderConfigHelper from '../header-config';\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\n export 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 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: true,\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: undefined,\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 };\r\n \r\n uniqueId: any = this.getUniqueId();\r\n isZoomedOut: boolean = false;\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(option => option.id === 'editAlert');\r\n}\r\n initializegroupChart() {\r\n var 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 var formatFromBackend;\r\n var formatForHugeNumbers;\r\n\r\n let isria = this.customChartConfiguration.isRia\r\n\r\n \r\n var x: any;\r\n \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 = 5;\r\n var long_tick_length_bg = 30;\r\n var leftAndRightSpaces = 50;\r\n var rightSvgWidth = 60;\r\n var tempScale;\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 data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n lineData = this.chartData.lineData;\r\n \r\n // if (lineData || this.chartData.targetLineData) {\r\n // rightSvgWidth = 60;\r\n // }\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 var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var verticalstackedcontainer = d3.select(\r\n this.groupcontainerElt.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 if (this.chartData.data.length > 30 && this.isZoomedOut) {\r\n width =\r\n width > this.chartData.data.length * 40\r\n ? this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : width\r\n : this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : this.chartData.data.length * 40;\r\n \r\n width =\r\n width > this.chartData.data.length * 40\r\n ? width\r\n : this.chartData.data.length * 40;\r\n }\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 120 &&\r\n this.isZoomedOut\r\n ) {\r\n width = this.chartData.data.length * 120;\r\n }\r\n if (this.chartData.data.length > 8 && !this.isZoomedOut) {\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 250\r\n ) {\r\n width = this.chartData.data.length * 250;\r\n } else width = this.chartData.data.length * 160;\r\n }\r\n // if (this.chartData.data.length > 8) {\r\n // width = this.chartData.data.length * 140;\r\n // }\r\n \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 /**\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 != 70\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n 130;\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 /**\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 (this.chartConfiguration.legendVisible != undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\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 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 \r\n .style('overflow-x', 'hidden')\r\n .style('padding-left', `${margin.left}px`)\r\n // .call(ChartHelper.responsivefy)\r\n \r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left','15px');\r\n var 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('z-index', 1)\r\n .append('g')\r\n .attr('transform', 'translate(' + (margin.left + 15) + ',' + margin.top + ')');\r\n \r\n var 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 var 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 \r\n var svg = innerContainer\r\n .append('svg')\r\n // .attr('id', self.uniqueId)\r\n .attr('width', width - rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 30)\r\n // .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + margin.top + ')');\r\n \r\n var subgroups: any = keyList;\r\n \r\n var groups = d3\r\n .map(data, function (d) {\r\n return d.name;\r\n })\r\n .keys();\r\n \r\n /**\r\n * x axis range made similar to line chart or vertical stack so that all the charts will get aligned with each other.\r\n */\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(\r\n data.map(function (d: any) {\r\n return d.name.toLowerCase();\r\n })\r\n );\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 // x.bandwidth(96);\r\n var xScaleFromOrigin = d3\r\n .scaleBand()\r\n .domain(groups)\r\n .range([0, width - rightSvgWidth]);\r\n // .padding([0.2]);\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('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n // .attr('style', self.chartConfiguration.xAxisCustomTextStyles)\r\n // .call(d3.axisBottom(x).tickSize(0));\r\n // }\r\n // d3.svg.axis().scale(x).orient('bottom').ticks(1).innerTickSize(-height);\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n /**\r\n * normal ticks for all dashboard charts\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))\r\n .call((g) => g.select('.domain').remove());\r\n \r\n svg.selectAll('g.x1.axis1 g.tick line').remove();\r\n\r\n if (subgroups.length > 1 && !metaData.xLabel) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('y', 32); // Increase distance from bars (default is ~9)\r\n } else {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)');\r\n }\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 } else {\r\n /**\r\n * bigger ticks for weekly charts and more space from x axis to labels\r\n */\r\n /**\r\n * draw x axis\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 * tick line size in alternate fashion\r\n */\r\n svg.selectAll('g.x1.axis1 g.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 * reset the flag so that values can be shown in same alternate fashion\r\n */\r\n alternate_text = false;\r\n /**\r\n * print x-axis label texts\r\n * used by weekly charts\r\n */\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 if (self.chartConfiguration.xLabelsOnSameLine) {\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(function (d) {\r\n var isValueToBeIgnored = false;\r\n data.map((indiv: any) => {\r\n if (\r\n indiv.name.toLowerCase() == d.trim().toLowerCase() &&\r\n indiv[metaData.keyList[0]] == -1\r\n ) {\r\n isValueToBeIgnored = true;\r\n }\r\n });\r\n if (isValueToBeIgnored) {\r\n 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 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(function (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 /**y scale for left y axis */\r\n var y = d3.scaleLinear().rangeRound([height, 0]);\r\n var maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key]));\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 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', '#B9B9B9')\r\n // .style('opacity', '0.5')\r\n // .call((g) => g.select('.domain').remove());\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n /**\r\n * increase y-scale so that values wont cross or exceed out of range\r\n * used in weekly charts\r\n */\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n if (\r\n this.chartData.targetLineData &&\r\n maxValue < this.chartData.targetLineData.target\r\n ) {\r\n maxValue =\r\n 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 y.domain([0, maxValue]).nice();\r\n let lineYscale;\r\n \r\n if (lineData != null) {\r\n let maxLineValue = d3.max(lineData, function (d) {\r\n return +d.value;\r\n });\r\n \r\n maxLineValue = maxLineValue * this.chartConfiguration.customYscale;\r\n \r\n let minLineValue = d3.min(lineData, function (d) {\r\n return +d.value;\r\n });\r\n if (maxLineValue > 0) minLineValue = minLineValue - 3;\r\n if (minLineValue > 0) {\r\n minLineValue = 0;\r\n }\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([minLineValue, maxLineValue])\r\n .range([height, minLineValue]);\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 * show x-axis grid between labels\r\n * used by weekly 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(' + x.bandwidth() / 2 + ',' + height + ')'\r\n )\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 if (this.chartConfiguration.yAxisGrid) {\r\n /**\r\n * draw y axis\r\n */\r\n svg\r\n .append('g')\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n )\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove());\r\n } else {\r\n svg\r\n .append('g')\r\n .call(d3.axisLeft(y).ticks(self.chartConfiguration.numberOfYTicks))\r\n .style('color', '#B9B9B9')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n \r\n var xSubgroup = d3.scaleBand().domain(subgroups);\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else {\r\n /**\r\n * used to make grouped bars with lesser width as we are not using padding for width\r\n * used by weekly charts\r\n */\r\n xSubgroup.range([0, x.bandwidth()]);\r\n }\r\n // if (this.chartConfiguration.isDrilldownChart) {\r\n \r\n // }\r\n var color = d3\r\n .scaleOrdinal()\r\n .domain(subgroups)\r\n .range(Object.values(metaData.colors));\r\n // var colorAboveTarget = d3\r\n // .scaleOrdinal()\r\n // .domain(subgroups)\r\n // .range(Object.values(metaData.colorAboveTarget));\r\n var 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', function (d) {\r\n return 'translate(' + x(d.name) + ',0)';\r\n });\r\n state\r\n .selectAll('rect')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n // if (key !== \"group\") {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n // }\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', function (d) {\r\n if (d.key != 'Target') {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n // self.handleClick(d.data.name);\r\n self.handleClick(d);\r\n }\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n return tempScale(d.key);\r\n }\r\n return xSubgroup(d.key);\r\n })\r\n .attr('y', function (d) {\r\n return y(d.value);\r\n })\r\n .attr('width', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n // var tempScale;\r\n \r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n var temp;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n return tempScale.bandwidth();\r\n }\r\n return xSubgroup.bandwidth();\r\n })\r\n .attr('height', function (d) {\r\n if (d.value == -1) {\r\n return height - y(0);\r\n }\r\n if (d.value) return height - y(d.value);\r\n return height - y(0);\r\n })\r\n // .style('cursor', 'pointer')\r\n .style('cursor', function (d) {\r\n if (metaData.hasDrillDown && !isria) return 'pointer';\r\n else return 'default';\r\n })\r\n .attr('fill', function (d) {\r\n if (\r\n d.value &&\r\n self.chartData.targetLineData &&\r\n d.value >= parseInt(self.chartData.targetLineData.target) &&\r\n self.chartData.metaData.colorAboveTarget\r\n )\r\n return self.chartData.metaData.colorAboveTarget[d.key];\r\n return self.chartData.metaData.colors[d.key];\r\n });\r\n \r\n /**\r\n * display angled texts on the bars\r\n */\r\n if (this.chartConfiguration.textsOnBar != undefined && !this.isZoomedOut) {\r\n state\r\n .selectAll('text')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('text')\r\n .attr('x', function (d) {\r\n return 0;\r\n })\r\n .attr('y', function (d) {\r\n return 0;\r\n })\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text(function (d) {\r\n return d.key && d.value\r\n ? d.key.length > 20\r\n ? d.key.substring(0, 17) + '...'\r\n : d.key\r\n : '';\r\n })\r\n .style('fill', function (d) {\r\n return '#000';\r\n })\r\n .style('font-weight', 'bold')\r\n .style('font-size', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) {\r\n return '18px';\r\n } else if (window.innerWidth < 1400) {\r\n return '10px';\r\n } else {\r\n return '14px';\r\n }\r\n } else {\r\n return '14px';\r\n }\r\n })\r\n .attr('transform', function (d) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n var temp;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n /**\r\n * if set, then all texts ll be horizontal\r\n */\r\n if (self.chartConfiguration.textAlwaysHorizontal) {\r\n return (\r\n 'translate(' + xSubgroup(d.key) + ',' + (y(d.value) - 3) + ')'\r\n );\r\n }\r\n /**\r\n * rotate texts having more than one digits\r\n */\r\n // if (d.value > 9)\r\n if (!isNaN(tempScale(d.key)))\r\n return (\r\n 'translate(' +\r\n (tempScale(d.key) + tempScale.bandwidth() * 0.55) +\r\n ',' +\r\n (y(0) - 10) +\r\n ') rotate(270)'\r\n );\r\n return 'translate(0,0)';\r\n // else\r\n // return (\r\n // 'translate(' +\r\n // (tempScale(d.key) + tempScale.bandwidth() / 2) +\r\n // ',' +\r\n // y(0) +\r\n // ')'\r\n // );\r\n })\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n if (!isria) {\r\n state.selectAll('.lib-data-labels-weeklycharts')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n if (this.chartConfiguration.displayTitleOnTop || (\r\n this.chartConfiguration.textsOnBar == undefined &&\r\n this.chartConfiguration.displayTitleOnTop == undefined\r\n )) {\r\n\r\n if (!isria) {\r\n state\r\n .selectAll('rect')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n function handleMouseOver(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n svg\r\n .append('foreignObject')\r\n .attr('x', function () {\r\n // var tempScale;\r\n var elementsCounter;\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n elementsCounter = keys.length;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return (\r\n x(d.name) + tempScale(d.key) + tempScale.bandwidth() / 2 - 90\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 } else return x(d.name) + tempScale(d.key) - (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 + tempScale.bandwidth() / 2;\r\n })\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', function () {\r\n return y(d.value) - 3 - 40;\r\n })\r\n .attr('dy', function () {\r\n return d.class;\r\n })\r\n .attr('width', function () {\r\n // var tempScale;\r\n \r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\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 } else return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n })\r\n .attr('height', 40)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(function () {\r\n let dataType = metaData.dataType ? metaData.dataType : '';\r\n if (!self.isZoomedOut) {\r\n let desiredText =\r\n '<span class=\"title-bar-name\">' + d.name + '</span>';\r\n desiredText +=\r\n '<span class=\"title-bar-value\"><span>' +\r\n d.value +\r\n '</span>' +\r\n dataType +\r\n '</span>';\r\n return desiredText;\r\n } else {\r\n let tempKey =\r\n d.name.length <= 8 ? d.name : d.name.substring(0, 5) + '...';\r\n let desiredText =\r\n '<span class=\"title-bar-name\">' +\r\n tempKey +\r\n ':' +\r\n d.value +\r\n dataType +\r\n '</span>';\r\n desiredText +=\r\n '<span class=\"title-bar-value\">' + d.name + '</span>';\r\n return desiredText;\r\n }\r\n });\r\n }\r\n function handleMouseOut(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n 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 \r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\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(y)\r\n .style('display', 'none');\r\n svgYAxisLeft\r\n .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(\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 .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n svgYAxisRight\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(y)\r\n .style('display', 'none');\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('g.lib-line-x-axis-text > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.yaxis-dashed > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.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 if (lineData != null) {\r\n if (lineData && self.chartConfiguration.showLineChartAxis) {\r\n svgYAxisRight\r\n .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 /**\r\n * used to display y label\r\n */\r\n if (this.isZoomedOut) {\r\n svg\r\n .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n \r\n /**\r\n * used to write y labels based on configuration\r\n */\r\n if (metaData.yLabel) {\r\n svgYAxisLeft\r\n .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', 0 - margin.left / 2 - 30)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .attr('fill', 'var(--chart-text-color)');\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n svgYAxisLeft\r\n .selectAll('.lib-axis-group-label')\r\n .style('font-size', 'smaller')\r\n .text(metaData.yLabel);\r\n } else {\r\n /**\r\n * used by weekly charts\r\n */\r\n svg\r\n .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 if (metaData.xLabel) {\r\n function isAcronym(label) {\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 const xLabelText = metaData.xLabel;\r\n const isAcr = isAcronym(xLabelText.replace(/[^A-Za-z]/g, ''));\r\n svg\r\n .append('text')\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\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 .style('fill', 'var(--chart-text-color)')\r\n .text(isAcr ? xLabelText.toUpperCase() : xLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\r\n }\r\n if (this.chartData.targetLineData) {\r\n const yZero = y(this.chartData.targetLineData.target);\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', this.chartData.targetLineData.color);\r\n // svgYAxisRight\r\n // .append('line')\r\n // .attr('x1', 0)\r\n // .attr('x2', rightSvgWidth)\r\n // .attr('y1', yZero)\r\n // .attr('y2', yZero)\r\n // .style('stroke', this.chartData.targetLineData.color);\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(function () {\r\n let dataTypeTemp = '';\r\n let targetLineName = 'target';\r\n if (metaData.dataType) {\r\n dataTypeTemp = metaData.dataType;\r\n }\r\n if (\r\n self.chartData.targetLineData &&\r\n self.chartData.targetLineData.targetName\r\n ) {\r\n targetLineName = self.chartData.targetLineData.targetName;\r\n }\r\n return (\r\n `<div>${targetLineName}</div>` +\r\n '<div>' +\r\n self.chartData.targetLineData.target +\r\n '' +\r\n dataTypeTemp +\r\n '</div>'\r\n );\r\n });\r\n }\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n /**\r\n * used by drilldown charts\r\n */\r\n // svg\r\n // .selectAll('.lib-axis-group-label')\r\n // .attr('class', 'lib-ylabel-drilldowncharts')\r\n // .text(metaData.yLabel.toLowerCase());\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n if (metaData.lineyLabel) {\r\n svgYAxisRight\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(0,0) rotate(90)')\r\n .attr('y', 0 - 100)\r\n .attr('x', 0 + 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 if (lineData) {\r\n svg\r\n .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(\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 lineYscale(d.value);\r\n })\r\n );\r\n \r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n \r\n dot\r\n .append('circle')\r\n .attr('fill', function (d) {\r\n return self.chartConfiguration.lineGraphColor;\r\n })\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 lineYscale(d.value);\r\n })\r\n .style('cursor', 'pointer')\r\n .attr('r', 3);\r\n \r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dot')\r\n .attr('color', self.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: ' + '.85em')\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 lineYscale(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 }\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 }","<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\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: any;\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 masterList: any[] = [];\r\n itemList: any[] = [];\r\n currentList: any[] = [];\r\n\r\n pageSize = 10;\r\n currentPage = 1;\r\n totalItems = 0;\r\n totalPages = 1;\r\n goToPageNumber = 1;\r\n pagesToShow: number[] = [];\r\n\r\n sortColumn = '';\r\n sortDirection: 'asc' | 'desc' | '' = '';\r\n\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {};\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n if (!this.tableData || !this.tableData.data?.length) return;\r\n\r\n this.initializeTable();\r\n }\r\n\r\n private initializeTable(): void {\r\n this.tableHeadList = Object.keys(this.tableData.data[0]);\r\n this.setupChartConfiguration();\r\n this.masterList = [...this.tableData.data];\r\n this.itemList = [...this.masterList];\r\n this.totalItems = this.itemList.length;\r\n\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n this.setHeaderVisibility();\r\n this.loadPage();\r\n }\r\n\r\n private setupChartConfiguration(): 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 setHeaderVisibility(): void {\r\n const meta = this.tableData.metaData;\r\n if (meta.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = meta.isHeaderVisible;\r\n }\r\n }\r\n\r\n private loadPage(): void {\r\n if (this.tableData.metaData.isPaginationHidden) {\r\n this.currentList = this.itemList;\r\n return;\r\n }\r\n\r\n const start = (this.currentPage - 1) * this.pageSize;\r\n const end = start + this.pageSize;\r\n this.currentList = this.itemList.slice(start, end);\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 const maxPagesToShow = 5;\r\n let start = Math.max(1, this.currentPage - Math.floor(maxPagesToShow / 2));\r\n let end = Math.min(this.totalPages, start + maxPagesToShow - 1);\r\n\r\n if (end - start + 1 < maxPagesToShow) {\r\n start = Math.max(1, end - maxPagesToShow + 1);\r\n }\r\n\r\n this.pagesToShow = Array.from({ length: end - start + 1 }, (_, i) => start + i);\r\n }\r\n\r\n private refreshPagination(): 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.refreshPagination();\r\n }\r\n }\r\n\r\n goToPreviousPage(): void {\r\n if (this.currentPage > 1) {\r\n this.currentPage--;\r\n this.refreshPagination();\r\n }\r\n }\r\n\r\n goToNextPage(): void {\r\n if (this.currentPage < this.totalPages) {\r\n this.currentPage++;\r\n this.refreshPagination();\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.refreshPagination();\r\n }\r\n }\r\n\r\n goToSpecificPage(): void {\r\n let pageNum = Number(this.goToPageNumber);\r\n\r\n if (isNaN(pageNum) || pageNum < 1) pageNum = 1;\r\n if (pageNum > this.totalPages) pageNum = this.totalPages;\r\n\r\n this.currentPage = pageNum;\r\n this.refreshPagination();\r\n }\r\n\r\n preventNegative(event: KeyboardEvent): void {\r\n const invalidKeys = ['-', '+', 'e'];\r\n if (invalidKeys.includes(event.key.toLowerCase())) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n sortByColumn(id: string): void {\r\n const meta = this.tableData.metaData;\r\n if (id === 'viewDetails' || meta.isHeaderSortHidden) return;\r\n\r\n this.isUserSort = true;\r\n\r\n if (id !== this.sortColumn) {\r\n this.sortColumn = id;\r\n this.sortDirection = 'asc';\r\n } else if (this.sortDirection === 'asc') {\r\n this.sortDirection = 'desc';\r\n } else {\r\n this.resetSort();\r\n return;\r\n }\r\n\r\n this.sortItemList();\r\n this.currentPage = 1;\r\n this.refreshPagination();\r\n }\r\n\r\n private sortItemList(): void {\r\n const compare = (a: any, b: any): number => {\r\n const numA = parseFloat(a);\r\n const numB = parseFloat(b);\r\n if (!isNaN(numA) && !isNaN(numB)) return numA - numB;\r\n return a < b ? -1 : a > b ? 1 : 0;\r\n };\r\n\r\n this.itemList.sort((a, b) => {\r\n const result = compare(a[this.sortColumn], b[this.sortColumn]);\r\n return this.sortDirection === 'asc' ? result : -result;\r\n });\r\n }\r\n\r\n private resetSort(): void {\r\n this.sortColumn = '';\r\n this.sortDirection = '';\r\n this.itemList = [...this.masterList];\r\n this.currentPage = 1;\r\n this.refreshPagination();\r\n }\r\n\r\n checkIfColumnCurrentlyBeingSorted(id: string): boolean {\r\n return this.sortColumn === id;\r\n }\r\n\r\n onSearch(event: any): void {\r\n const searchText = (event.target.value || '').trim().toLowerCase();\r\n this.itemList = searchText\r\n ? this.masterList.filter(row =>\r\n this.tableHeadList.some(\r\n col => row[col]?.toString().toLowerCase().includes(searchText)\r\n )\r\n )\r\n : [...this.masterList];\r\n\r\n this.currentPage = 1;\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.refreshPagination();\r\n }\r\n\r\n getWidthById(_: string, index: number): string {\r\n if (this.tableHeadList.length === 3) {\r\n return index === 1 ? '60%' : '20%';\r\n }\r\n return `${100 / this.tableHeadList.length}%`;\r\n }\r\n\r\n handleClick(row: any): void {\r\n this.clickEvent.emit(row);\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\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input\r\n *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n type=\"text\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\"\r\n placeholder=\"Search\"\r\n autocomplete=\"off\"\r\n (keyup)=\"onSearch($event)\"\r\n />\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\r\n *ngFor=\"let header of tableHeadList; index as i\"\r\n (click)=\"sortByColumn(header)\"\r\n [ngClass]=\"\r\n !tableData.metaData.isHeaderAlignedToCenter\r\n ? i === tableHeadList.length - 1\r\n ? 'textalign-right'\r\n : 'textalign-left'\r\n : 'textalign-center'\r\n \"\r\n [style.width]=\"getWidthById(header, i)\"\r\n [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\"\r\n >\r\n <span\r\n *ngIf=\"(!tableData.metaData.isFirstColumnHeaderHidden && i === 0) || i > 0\"\r\n [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden ? 'cursor-pointer' : 'cursor-default'\r\n \"\r\n >\r\n {{ header }}\r\n </span>\r\n\r\n <i\r\n *ngIf=\"checkIfColumnCurrentlyBeingSorted(header) || !isUserSort\"\r\n class=\"sort-icons fa\"\r\n [ngClass]=\"\r\n sortColumn === header\r\n ? (sortDirection === 'asc'\r\n ? 'fa-sort-asc'\r\n : sortDirection === 'desc'\r\n ? 'fa-sort-desc'\r\n : 'fa-sort')\r\n : 'fa-sort'\r\n \"\r\n ></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr\r\n *ngFor=\"let row of currentList\"\r\n [ngClass]=\"tableData?.highlightedTexts?.includes(row[tableHeadList[0]]) ? 'font-weight-bold' : ''\"\r\n >\r\n <td\r\n *ngFor=\"let header of tableHeadList; index as i\"\r\n (click)=\"handleClick(row)\"\r\n class=\"table-cell\"\r\n [style.width]=\"getWidthById(header, i)\"\r\n [ngClass]=\"\r\n !tableData.metaData.isAllAlignedToRight\r\n ? i === tableHeadList.length - 1\r\n ? 'textalign-right last-column-color'\r\n : 'textalign-left'\r\n : 'textalign-right'\r\n \"\r\n [style.cursor]=\"tableData.metaData.hasDrillDown ? 'pointer' : 'default'\"\r\n >\r\n <span>{{ row[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\">\r\n <span>Go To</span>\r\n <input\r\n type=\"number\"\r\n class=\"page-input\"\r\n min=\"1\"\r\n [max]=\"totalPages\"\r\n [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n (keyup.enter)=\"goToSpecificPage()\"\r\n />\r\n\r\n <span>\r\n {{ currentList.length > 0 ? (currentPage - 1) * pageSize + 1 : 0 }} -\r\n {{ (currentPage - 1) * pageSize + currentList.length }} of {{ totalItems | number }}\r\n </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\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"goToNextPage()\"\r\n class=\"pagination-btn\"\r\n title=\"Next Page\"\r\n >\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"goToLastPage()\"\r\n class=\"pagination-btn\"\r\n title=\"Last Page\"\r\n >\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} 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-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 OnInit {\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: 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 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 isCC: boolean = false;\r\n isZoomedOut: boolean = true;\r\n\r\n constructor() {\r\n super();\r\n }\r\n isZoomOutSelected(isZoomOut) {\r\n this.isZoomedOut = isZoomOut;\r\n this.ngOnChanges();\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 setTimeout(\r\n function () {\r\n d3.select('#' + self.uniqueId).remove();\r\n self.initializeStackedChart();\r\n }.bind(self),\r\n 10\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 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 = 5;\r\n var long_tick_length_bg = 30;\r\n var formatFromBackend;\r\n var formatForHugeNumbers;\r\n var tempObjectHolder = {};\r\n var rightSvgWidth = 60;\r\n var leftAndRightSpaces = 50;\r\n\r\n let isria = this.customChartConfiguration.isRia\r\n\r\n // Responsive breakpoints\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\r\n // Adjust margins and font sizes based on device\r\n if (isMobile) {\r\n this.chartConfiguration.margin = { top: 20, right: 10, bottom: 40, left: 30 };\r\n this.chartConfiguration.numberOfYTicks = 4;\r\n this.chartConfiguration.svgHeight = 60;\r\n } else if (isTablet) {\r\n this.chartConfiguration.margin = { top: 25, right: 20, bottom: 45, left: 40 };\r\n this.chartConfiguration.numberOfYTicks = 6;\r\n this.chartConfiguration.svgHeight = 70;\r\n } else {\r\n this.chartConfiguration.margin = { top: 30, right: 30, bottom: 50, left: 60 };\r\n this.chartConfiguration.numberOfYTicks = 7;\r\n this.chartConfiguration.svgHeight = 80;\r\n }\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 if (metaData.barWithoutClick && metaData.barWithoutClick.length) {\r\n metaData.barWithoutClick = metaData.barWithoutClick.map((ele) =>\r\n ele.toLowerCase()\r\n );\r\n } else {\r\n metaData.barWithoutClick = [];\r\n }\r\n lineData = this.chartData.lineData;\r\n colors = metaData.colors;\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 let parsedNum = parseFloat(this.chartData?.targetLineData?.target);\r\n if (!isNaN(parsedNum)) {\r\n if (Number.isInteger(parsedNum)) {\r\n parsedNum = parseInt(this.chartData.targetLineData.target);\r\n } else {\r\n parsedNum = parseFloat(this.chartData.targetLineData.target);\r\n }\r\n }\r\n var margin = this.chartConfiguration.margin;\r\n\r\n // Responsive width and height\r\n var containerWidth = chartContainer.node().getBoundingClientRect().width;\r\n var containerHeight = verticalstackedcontainer.node().getBoundingClientRect().height;\r\n var width = containerWidth - margin.left - margin.right;\r\n var height = containerHeight * (self.chartConfiguration.svgHeight / 100) - margin.top - margin.bottom;\r\n\r\n // Adjust width for large datasets and zoom\r\n if (this.chartData.data.length > 30 && this.isZoomedOut) {\r\n width = width > this.chartData.data.length * (isMobile ? 15 : 25)\r\n ? width\r\n : this.chartData.data.length * (isMobile ? 15 : 25);\r\n }\r\n if (this.chartData.data.length > 8 && !this.isZoomedOut) {\r\n width = this.chartData.data.length * (isMobile ? 60 : 130);\r\n }\r\n\r\n // Fullscreen and drilldown adjustments\r\n if (this.chartConfiguration.isFullScreen != undefined && this.chartConfiguration.isFullScreen) {\r\n height = this.chartConfiguration.svgHeight != 80\r\n ? this.chartConfiguration.svgHeight\r\n : containerHeight;\r\n }\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n height = containerHeight - margin.top - margin.bottom - (isMobile ? 60 : 130);\r\n }\r\n\r\n // ...existing code...\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 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\r\n .style('overflow-x', 'hidden')\r\n .style('padding-left', `${margin.left}px`)\r\n .style('margin-left', '10px')\r\n .style('padding-right', `${rightSvgWidth}px`);\r\n\r\n var svgYAxisLeft = outerContainer\r\n .append('svg')\r\n .attr('width', '80')\r\n .attr('height', height + margin.top + margin.bottom)\r\n .style('position', 'absolute')\r\n .style('left', '0')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', 'translate(' + (margin.left + 10) + ',' + margin.top + ')');\r\n\r\n var svgYAxisRight = outerContainer\r\n .append('svg')\r\n .attr('width', rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .style('position', 'absolute')\r\n .style('right', '2px')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + margin.top + ')');\r\n\r\n var 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\r\n\r\n // Calculate bar width and padding for mobile to avoid overlap and add space between bars\r\n let barWidth;\r\n let barPadding = 12; // px, space between bars on mobile\r\n let requiredSvgWidth;\r\n if (isMobile) {\r\n // Use a minimum width per bar and add padding between bars\r\n const minBarWidth = 32; // px, can adjust as needed\r\n barWidth = minBarWidth;\r\n requiredSvgWidth = Math.max(\r\n width - rightSvgWidth,\r\n (barWidth + barPadding) * data.length + leftAndRightSpaces * 2 + rightSvgWidth - barPadding // no padding after last bar\r\n );\r\n innerContainer.style('overflow-x', 'auto');\r\n } else {\r\n barWidth = Math.max(40, (width - rightSvgWidth - leftAndRightSpaces * 2) / data.length);\r\n barPadding = 0;\r\n requiredSvgWidth = width - rightSvgWidth;\r\n }\r\n\r\n var svg = innerContainer\r\n .append('svg')\r\n .attr('width', requiredSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 30)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + 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 // Calculate bar width for mobile to avoid overlap\r\n // ...barWidth is now calculated above, remove duplicate...\r\n\r\n var xScale = d3\r\n .scaleBand()\r\n .rangeRound([\r\n leftAndRightSpaces,\r\n width - rightSvgWidth - leftAndRightSpaces\r\n ])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name;\r\n }).reverse()\r\n )\r\n .padding(isMobile ? 0.2 : 0.5);\r\n\r\n var xScaleFromOrigin = d3\r\n .scaleBand()\r\n .rangeRound([width - rightSvgWidth, 0])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name;\r\n }).reverse()\r\n );\r\n // ...existing code...\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('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n .attr('style', self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(d3.axisBottom(xScale).tickSize(0));\r\n svg.selectAll('.x-axis > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n /**\r\n * draw second x axis on top\r\n */\r\n // if (self.chartConfiguration.showXaxisAtTarget) {\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', self.chartConfiguration.xAxisCustomTextStyles)\r\n // .call(d3.axisBottom(xScale).tickSize(0));\r\n // svg.selectAll('.x-axis > g > text').attr('class', 'lib-display-hidden');\r\n // }\r\nif (this.chartConfiguration.xAxisGrid) {\r\n for (var 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)') // Use CSS variable instead of hardcoded\r\n .attr(\r\n 'transform',\r\n 'translate(0,' + height * this.chartConfiguration.xAxisGrid[j] + ')'\r\n )\r\n .call(d3.axisBottom(xScale).tickSize(0).ticks(5).tickFormat(''))\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n}\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 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 if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n if (\r\n this.chartData.targetLineData &&\r\n maxValue < this.chartData.targetLineData.target\r\n ) {\r\n maxValue =\r\n 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 yScale.domain([0, maxValue]).nice();\r\n\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\nif (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 // Remove hardcoded colors and use CSS variables\r\n .style('color', 'var(--chart-grid-color)')\r\n .style('opacity', '1')\r\n // .call((g) => g.select('.domain').remove());\r\n}\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\r\n rect\r\n .append('rect')\r\n .on('click', function (d) {\r\n if (!lineData || self.chartConfiguration.forComparison) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n !metaData.barWithoutClick.includes(d.data.name.toLowerCase())\r\n )\r\n self.handleClick(d.data.name);\r\n }\r\n })\r\n .attr('y', function (d) {\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', function (d, i) {\r\n if (isMobile) {\r\n // On mobile, position bars with padding\r\n return leftAndRightSpaces + i * (barWidth + barPadding);\r\n }\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined) {\r\n return xScale(d.data.name);\r\n } else {\r\n if (\r\n self.chartConfiguration.isDrilldownChart &&\r\n self.chartData.data.length <= 3\r\n ) {\r\n return xScale(d.data.name) + xScale.bandwidth() / 2 - 35;\r\n }\r\n return xScale(d.data.name) + xScale.bandwidth() * 0.1;\r\n }\r\n })\r\n .attr('height', function (d) {\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', function (d) {\r\n // Use calculated barWidth for mobile, otherwise scale\r\n if (isMobile) {\r\n return barWidth;\r\n }\r\n return self.chartConfiguration.isMultiChartGridLine == undefined\r\n ? xScale.bandwidth()\r\n : self.chartConfiguration.isDrilldownChart &&\r\n self.chartData.data.length <= 3\r\n ? 70\r\n : xScale.bandwidth() * 0.8;\r\n })\r\n // .style('cursor', 'pointer');\r\n .style('cursor', function (d) {\r\n if (metaData.hasDrillDown) {\r\n if (\r\n metaData.barWithoutClick.length > 0 &&\r\n metaData.barWithoutClick.includes(d.data.name.toLowerCase())\r\n ) {\r\n return 'default';\r\n }\r\n return 'pointer';\r\n } else return 'default';\r\n })\r\n .style('fill', function (d) {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n self.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >=\r\n parseFloat(self.chartData.targetLineData.target)\r\n )\r\n return self.chartData?.targetLineData?.barAboveTargetColor;\r\n\r\n return metaData.colors[d.key];\r\n });\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 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 /**\r\n svg\r\n .append('foreignObject')\r\n .attr('transform', 'translate(' + 0 + ',' + (yZero - 25) + ')')\r\n .attr('width', width)\r\n .attr('height', 30)\r\n .append('xhtml:div')\r\n .attr('class', 'target-display')\r\n .style('color', this.chartData.targetLineData.color)\r\n */\r\n\r\n /**\r\n * on hover, display title on top\r\n */\r\n function handleMouseOver(d, i) {\r\n if (!self.chartConfiguration.displayTitleOnTop) {\r\n return;\r\n }\r\n svg\r\n .selectAll('rect')\r\n .filter(function (data) {\r\n return data == d;\r\n })\r\n .style('fill', function (d) {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n self.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >=\r\n parseFloat(self.chartData.targetLineData.target)\r\n )\r\n return self.chartData.targetLineData.barAboveTargetHoverColor\r\n ? self.chartData.targetLineData.barAboveTargetHoverColor\r\n : self.chartData?.targetLineData?.barAboveTargetColor\r\n ? self.chartData?.targetLineData?.barAboveTargetColor\r\n : '';\r\n\r\n return metaData.hoverColor ? metaData.hoverColor : '';\r\n });\r\n\r\n svg\r\n .append('foreignObject')\r\n .attr('x', function () {\r\n if (xScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return (\r\n xScale(d.data.name) -\r\n leftAndRightSpaces +\r\n (xScale.bandwidth() + leftAndRightSpaces * 2 - 180) / 2\r\n );\r\n }\r\n return xScale(d.data.name) - leftAndRightSpaces;\r\n })\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', function () {\r\n // Increase the gap between the bar and the tooltip (was -1 - 40)\r\n return yScale(d[1]) - 1 - 50; // 10px more gap\r\n })\r\n .attr('dy', function () {\r\n return d.class;\r\n })\r\n .attr('width', function () {\r\n if (d.data.name && /week/i.test(d.data.name) && /\\d{4}-\\d{2}-\\d{2}/.test(d.data.name)) {\r\n return '250px'; // increase for week + date\r\n }\r\n\r\n if (xScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return '180px';\r\n }\r\n return xScale.bandwidth() + leftAndRightSpaces * 2;\r\n })\r\n .attr('height', 40)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(function () {\r\n // Tooltip content without any arrow mark\r\n if (!isNaN(d[1] - d[0])) {\r\n if (d[1] - d[0] === 0) {\r\n return '<span class=\"title-top-text\">0</span>';\r\n }\r\n var dataType = metaData.dataType ? metaData.dataType : '';\r\n var desiredText = '';\r\n // Always show the full x-axis label (category name) in the tooltip\r\n desiredText =\r\n '<span class=\"title-bar-name\">' +\r\n (d.data.name ? d.data.name : '') +\r\n '</span>';\r\n\r\n desiredText += metaData.unit\r\n ? '<span class=\"title-top-text\">' +\r\n metaData.unit +\r\n (d[1] - d[0]) + ' ' +\r\n dataType +\r\n '</span>'\r\n : '<span class=\"title-top-text\">' +\r\n (d[1] - d[0]) + ' ' +\r\n dataType +\r\n '</span>';\r\n\r\n // No arrow mark or arrow HTML/CSS in tooltip\r\n return desiredText;\r\n } else return;\r\n });\r\n\r\n }\r\n function handleMouseOut(d, i) {\r\n if (!self.chartConfiguration.displayTitleOnTop) {\r\n return;\r\n }\r\n // svg.selectAll('rect').style('fill', metaData.colors[d.key]);\r\n svg.selectAll('rect').style('fill', function (d) {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n self.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >=\r\n parseFloat(self.chartData.targetLineData.target)\r\n )\r\n return self.chartData?.targetLineData?.barAboveTargetColor;\r\n\r\n return metaData.colors[d.key];\r\n });\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\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] == 0) {\r\n return;\r\n }\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\nif (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n if (isMobile) {\r\n // Custom x-axis label rendering for mobile: evenly distribute under each bar\r\n svg.selectAll('.custom-x-label').remove();\r\n data.forEach(function (d, i) {\r\n const xVal = leftAndRightSpaces + i * (barWidth + barPadding) + barWidth / 2;\r\n svg.append('text')\r\n .attr('class', 'custom-x-label')\r\n .attr('x', 0)\r\n .attr('y', height + 18)\r\n .attr('text-anchor', 'middle')\r\n .attr('transform', 'translate(' + (xVal + 20) + ',0)') // current value + 20\r\n .style('font-size', '10px')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('writing-mode', 'sideways-lr') // writing mode for mobile\r\n .text(d.name.substring(0, 3));\r\n });\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')\r\n .call(xAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('font-size', '12px')\r\n .attr('text-anchor', 'middle')\r\n .attr('dx', '0')\r\n .attr('dy', '0.71em')\r\n .attr('transform', null)\r\n .text(function (d) {\r\n return d;\r\n });\r\n }\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 .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n}else if (this.chartConfiguration.isDrilldownChart) {\r\n svg\r\n .append('g')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .attr('class', 'lib-stacked-x-axis-text multichart1')\r\n .call(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', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(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', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis)\r\n .style('display', 'none')\r\n}\r\nelse {\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 .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', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\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 .style('color', '#000')\r\n\r\n .call(d3.axisBottom(xScale).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n 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\r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n svg.selectAll('.axis2 > g > text').attr('class', 'lib-display-hidden');\r\n // svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\r\n svg.selectAll('.x1.axis1 .tick line').attr('y2', function () {\r\n if (self.chartConfiguration.hideXaxisTick) {\r\n return 0;\r\n }\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('class', function () {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (data && data.length > 8) {\r\n return 'lib-xaxis-labels-texts-drilldown-alt';\r\n }\r\n return 'lib-xaxis-labels-texts-drilldown';\r\n } else return 'lib-xaxis-labels-texts-weeklycharts';\r\n })\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 if (self.chartConfiguration.xLabelsOnSameLine) {\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(function (d, i) {\r\n if (isMobile) {\r\n // If label has more than one word, show only first 3 letters of first word\r\n var firstWord = d.split(' ')[0];\r\n return firstWord.substring(0, 3);\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 .attr('transform', function(this: SVGTextElement, d, i) {\r\n if (isMobile) {\r\n var totalBars = 0;\r\n if (this.parentNode && this.parentNode.parentNode) {\r\n totalBars = d3.select(this.parentNode.parentNode).selectAll('g.tick').size();\r\n }\r\n if (totalBars === 2) {\r\n return 'translate(0,0)';\r\n } else {\r\n return 'translate(' + (i * 30) + ',0)';\r\n }\r\n }\r\n return null;\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(function (d) {\r\n // For mobile, do not print the second word at all\r\n if (isMobile) {\r\n return '';\r\n }\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 .attr('transform', function(d, i) {\r\n if (isMobile && i === 0) {\r\n return 'translate(20,0)';\r\n }\r\n return null;\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\nif (\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', 'var(--chart-grid-color)'); // Use CSS variable\r\n}\r\n /**\r\n * x axis color\r\n * used by weekly charts\r\n */\r\nif (this.chartConfiguration.isXaxisColor != undefined) {\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 * used to display y label\r\n */\r\nif (this.isZoomedOut && this.chartData.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\nfunction styleAxisDomain() {\r\n svg.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n \r\n svgYAxisLeft.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n \r\n svgYAxisRight.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n}\r\n\r\nstyleAxisDomain();\r\n\r\n if (metaData.yLabel) {\r\n svgYAxisLeft.selectAll('.lib-axis-group-label, .lib-ylabel-drilldowncharts, .lib-ylabel-weeklyCharts').remove();\r\n function isAcronym(label) {\r\n return (label.length <= 4 && /^[A-Z]+$/.test(label)) || (label === label.toUpperCase() && /[A-Z]/.test(label));\r\n }\r\n const yLabelText = metaData.yLabel;\r\n const isAcr = isAcronym(yLabelText.replace(/[^A-Za-z]/g, ''));\r\n\r\n const yPosition = isria ? 0 - margin.left / 2 - 30 : 0 - margin.left / 2 - 40;\r\n\r\n svgYAxisLeft\r\n .append('text')\r\n\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-ylabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-ylabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\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', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('color', 'var(--chart-text-color)')\r\n .text(isAcr ? yLabelText.toUpperCase() : yLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\r\n }\r\n if (this.chartData.targetLineData) {\r\n const yZero = yScale(parsedNum);\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', this.chartData.targetLineData.color);\r\n // svgYAxisRight\r\n // .append('line')\r\n // .attr('x1', 0)\r\n // .attr('x2', rightSvgWidth)\r\n // .attr('y1', yZero)\r\n // .attr('y2', yZero)\r\n // .style('stroke', this.chartData.targetLineData.color);\r\n svgYAxisRight\r\n .append('foreignObject')\r\n // .attr('transform', 'translate(' + 0 + ',' + (yZero - 30) + ')')\r\n .attr('transform', 'translate(' + 0 + ',' + (yZero - 13) + ')')\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\r\n .html(function (d, i) {\r\n let dataTypeTemp = '';\r\n let targetLineName = 'target';\r\n if (metaData.dataType) {\r\n dataTypeTemp = metaData.dataType;\r\n }\r\n if (\r\n self.chartData.targetLineData &&\r\n self.chartData.targetLineData.targetName\r\n ) {\r\n targetLineName = self.chartData.targetLineData.targetName;\r\n }\r\n return (\r\n `<div>${targetLineName}</div>` +\r\n '<div>' +\r\n self.chartData.targetLineData.target +\r\n '' +\r\n dataTypeTemp +\r\n '</div>'\r\n );\r\n });\r\n }\r\n rect\r\n .selectAll('rect')\r\n .on('mouseenter', handleMouseOver)\r\n .on('mouseout', handleMouseOut);\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\r\n if (metaData.xLabel) {\r\n function isAcronym(label) {\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 const xLabelText = metaData.xLabel;\r\n const isAcr = isAcronym(xLabelText.replace(/[^A-Za-z]/g, ''));\r\n\r\n const xPosition = isria ? (height + margin.top + margin.bottom) : (height + margin.top + margin.bottom + 10);\r\n\r\n svg\r\n .append('text')\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + xPosition + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcr ? xLabelText.toUpperCase() : xLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\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 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 // svg.attr('width', 150).style('max-width', 150).style('overflow-x', 'auto');\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 handleCompareByFilterSelection(event) {\r\n this.clickEvent.emit(event);\r\n }\r\n handleZoominZoomoutClick({ isZoomOut, event }) {\r\n // this.isZoomOutSelected(isZoomOut, event);\r\n this.isZoomOutSelected(isZoomOut);\r\n }\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 <!-- <span *ngIf=\"chartConfiguration.isComparebyDropdownVisible\">\r\n <lib-dropdown></lib-dropdown>\r\n </span> -->\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 initializegroupChart() {\r\n var 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 var formatFromBackend;\r\n var formatForHugeNumbers;\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\r\n let isria = this.customChartConfiguration.isRia\r\n\r\n var x: any;\r\n\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 = 5;\r\n var long_tick_length_bg = 30;\r\n var leftAndRightSpaces = 50;\r\n var rightSvgWidth = 60;\r\n var tempScale;\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 data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n lineData = this.chartData.lineData;\r\n\r\n // if (lineData || this.chartData.targetLineData) {\r\n // rightSvgWidth = 60;\r\n // }\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 var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var verticalstackedcontainer = d3.select(\r\n this.groupcontainerElt.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 if (this.chartData.data.length > 30 && this.isZoomedOut) {\r\n width =\r\n width > this.chartData.data.length * 40\r\n ? this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : width\r\n : this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : this.chartData.data.length * 40;\r\n\r\n width =\r\n width > this.chartData.data.length * 40\r\n ? width\r\n : this.chartData.data.length * 40;\r\n }\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 120 &&\r\n this.isZoomedOut\r\n ) {\r\n width = this.chartData.data.length * 120;\r\n }\r\n if (this.chartData.data.length > 8 && !this.isZoomedOut) {\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 250\r\n ) {\r\n width = this.chartData.data.length * 250;\r\n } else width = this.chartData.data.length * 160;\r\n }\r\n // if (this.chartData.data.length > 8) {\r\n // width = this.chartData.data.length * 140;\r\n // }\r\n\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 != 70\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n 130;\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 /**\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 (this.chartConfiguration.legendVisible != undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\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 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\r\n .style('overflow-x', 'hidden')\r\n .style('padding-left', `${margin.left}px`)\r\n // .call(ChartHelper.responsivefy)\r\n\r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left', '15px');\r\n var 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('z-index', 1)\r\n .append('g')\r\n .attr(\r\n 'transform',\r\n 'translate(' + (margin.left + 15) + ',' + margin.top + ')'\r\n );\r\n\r\n var 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 var 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\r\n var svg = innerContainer\r\n .append('svg')\r\n // .attr('id', self.uniqueId)\r\n .attr('width', width - rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 60)\r\n // .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + margin.top + ')');\r\n\r\n var subgroups: any = keyList;\r\n\r\n var groups = d3\r\n .map(data, function (d) {\r\n return d.name;\r\n })\r\n .keys();\r\n\r\n /**\r\n * x axis range made similar to line chart or vertical stack so that all the charts will get aligned with each other.\r\n */\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(\r\n data.map(function (d: any) {\r\n return d.name.toLowerCase();\r\n })\r\n );\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 // x.bandwidth(96);\r\n var xScaleFromOrigin = d3\r\n .scaleBand()\r\n .domain(groups)\r\n .range([0, width - rightSvgWidth]);\r\n // .padding([0.2]);\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('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n // .attr('style', self.chartConfiguration.xAxisCustomTextStyles)\r\n // .call(d3.axisBottom(x).tickSize(0));\r\n // }\r\n // d3.svg.axis().scale(x).orient('bottom').ticks(1).innerTickSize(-height);\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n /**\r\n * normal ticks for all dashboard charts\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))\r\n .call((g) => g.select('.domain').remove());\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').remove();\r\n\r\n // Only move x-axis labels further down for grouped charts if there is no xLabel\r\n if (subgroups.length > 1 && !metaData.xLabel) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('y', 32); // Increase distance from bars (default is ~9)\r\n } else {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n\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 } else {\r\n /**\r\n * bigger ticks for weekly charts and more space from x axis to labels\r\n */\r\n /**\r\n * draw x axis\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 * tick line size in alternate fashion\r\n */\r\n svg.selectAll('g.x1.axis1 g.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 * reset the flag so that values can be shown in same alternate fashion\r\n */\r\n alternate_text = false;\r\n /**\r\n * print x-axis label texts\r\n * used by weekly charts\r\n */\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 // Minimize gap in maximized (fullscreen) view for weekly charts\r\n if (self.chartConfiguration.isFullScreen) {\r\n return short_tick_length_bg;\r\n }\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 if (self.chartConfiguration.xLabelsOnSameLine) {\r\n const xAxisLabels = svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('font-size', this.isHeaderVisible ? '18px' : '14px')\r\n .attr('text-anchor', 'middle')\r\n .attr('y', function(d) {\r\n // For grouped bar charts with many bars and xLabel present, only add 5 if the label is a date\r\n if (subgroups.length > 1 && data.length > 8 && metaData.xLabel) {\r\n const isDateLabel = /\\d{2,4}[-\\/]/.test(d);\r\n if (self.chartConfiguration.isFullScreen) {\r\n return isDateLabel ? short_tick_length_bg + 14 : short_tick_length_bg;\r\n }\r\n return isDateLabel ? short_tick_length_bg + 14 : short_tick_length_bg;\r\n }\r\n // For grouped bar charts with many bars and NO xLabel, add space as before, but reduce in fullscreen\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 // Reduce extra gap in maximized view\r\n return short_tick_length_bg + 2;\r\n }\r\n return chartHasExtraBottom ? short_tick_length_bg : short_tick_length_bg + 10;\r\n }\r\n // Default/fallback logic for other cases\r\n let baseY = self.isHeaderVisible ? short_tick_length_bg + 25 : short_tick_length_bg;\r\n if (\r\n subgroups.length > 1 &&\r\n !metaData.xLabel &&\r\n (/\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4}/.test(d) || /\\d{2,4}[-\\/]\\d{2,4}/.test(d))\r\n ) {\r\n baseY = self.isHeaderVisible ? short_tick_length_bg + 15 : short_tick_length_bg + 25;\r\n }\r\n if (/\\d{2,4}[-\\/]\\d{2,4}/.test(d) && d.indexOf(' ') > -1) {\r\n baseY += 4;\r\n }\r\n // In maximized view, reduce baseY slightly for grouped bars\r\n if (self.chartConfiguration.isFullScreen && subgroups.length > 1) {\r\n baseY = Math.max(short_tick_length_bg, baseY - 10);\r\n }\r\n return baseY;\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartData.data.length > 8 && !self.isZoomedOut) {\r\n return 1; // Move first line text slightly to the left in zoom-in view for better alignment\r\n }\r\n return 0; // Default position\r\n })\r\n .text(function (d) {\r\n var isValueToBeIgnored = false;\r\n if (isMobile && !self.isHeaderVisible) {\r\n let firstPart = d.split(/[\\s\\-]+/)[0];\r\n return firstPart.substring(0, 3).toLowerCase();\r\n }\r\n (data as any[]).map((indiv: any) => {\r\n if (\r\n indiv.name &&\r\n indiv.name.toLowerCase() == d.trim().toLowerCase() &&\r\n indiv[metaData.keyList[0]] == -1\r\n ) {\r\n isValueToBeIgnored = true;\r\n }\r\n });\r\n if (isValueToBeIgnored) {\r\n return '';\r\n }\r\n // Always add space before and after hyphen for date range labels, even when header is visible and label is single line\r\n // Apply for grouped bar charts and single bar charts, header visible, single line\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 // Split date and week labels into two lines in grouped bar zoom-in view (and minimized view)\r\n const isDateLabel = /\\d{2,4}[-\\/]/.test(d);\r\n const isWeekLabel = /week|wk|w\\d+/i.test(d);\r\n if (\r\n subgroups.length > 1 && !self.isZoomedOut && data.length > 8 && d.indexOf(' ') > -1 && (isDateLabel || isWeekLabel)\r\n ) {\r\n var first = d.substring(0, d.indexOf(' '));\r\n var second = d.substring(d.indexOf(' ') + 1).trim();\r\n return first + '\\n' + second;\r\n }\r\n // Also keep previous logic for minimized view\r\n if (isDateLabel) {\r\n if (!self.isHeaderVisible && data.length > 8 && d.indexOf(' ') > -1) {\r\n var first = d.substring(0, d.indexOf(' '));\r\n var second = d.substring(d.indexOf(' ') + 1).trim();\r\n return first + '\\n' + second;\r\n } else {\r\n return d;\r\n }\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 // If label looks like a date (contains digits and - or /)\r\n const isDateLabel2 = /\\d{2,4}[-\\/]/.test(d);\r\n // Only split date/week labels if there are many grouped bars and header is not visible\r\n if (isDateLabel) {\r\n if (!self.isHeaderVisible && data.length > 8 && d.indexOf(' ') > -1) {\r\n var first = d.substring(0, d.indexOf(' '));\r\n var second = d.substring(d.indexOf(' ') + 1).trim();\r\n return first + '\\n' + second;\r\n } else {\r\n return d;\r\n }\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 // Now apply writing-mode: sideways-lr for grouped charts with date labels in zoomed-out view and many bars\r\n xAxisLabels.each(function(this: SVGTextElement, d: any) {\r\n // Only apply writing-mode for exact date labels, not those containing 'week' or similar\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 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 if (!isMobile) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick')\r\n .filter(function (d) {\r\n return !/\\d{2,4}[-\\/]/.test(d); // Only process non-date labels\r\n })\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', 'var(--chart-text-color)')\r\n .attr('x', function (d) {\r\n if (self.chartData.data.length > 8 && !self.isZoomedOut) {\r\n return 1; // Move text slightly to the left\r\n }\r\n return 0; // Default position\r\n })\r\n .text(function (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 if (isria && self.chartData.data.length > 8) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .classed('mobile-xaxis-override', true)\r\n .text(function (d: string) {\r\n return d.substring(0, 3);\r\n })\r\n .style('font-size', '12px') \r\n .attr('y', 5) \r\n .attr('x', 5) \r\n .style('text-anchor', 'middle');\r\n }\r\n if (isMobile && !this.isHeaderVisible) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .classed('mobile-xaxis-override', true);\r\n }\r\n /**y scale for left y axis */\r\n var y = d3.scaleLinear().rangeRound([height, 0]);\r\n var maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key]));\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 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', '#B9B9B9')\r\n // .style('opacity', '0.5')\r\n // .call((g) => g.select('.domain').remove());\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n /**\r\n * increase y-scale so that values wont cross or exceed out of range\r\n * used in weekly charts\r\n */\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n if (\r\n this.chartData.targetLineData &&\r\n maxValue < this.chartData.targetLineData.target\r\n ) {\r\n maxValue =\r\n 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 y.domain([0, maxValue]).nice();\r\n let lineYscale;\r\n\r\n if (lineData != null) {\r\n let maxLineValue = d3.max(lineData, function (d) {\r\n return +d.value;\r\n });\r\n\r\n maxLineValue = maxLineValue * this.chartConfiguration.customYscale;\r\n\r\n let minLineValue = d3.min(lineData, function (d) {\r\n return +d.value;\r\n });\r\n if (maxLineValue > 0) minLineValue = minLineValue - 3;\r\n if (minLineValue > 0) {\r\n minLineValue = 0;\r\n }\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([minLineValue, maxLineValue])\r\n .range([height, minLineValue]);\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 * show x-axis grid between labels\r\n * used by weekly 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(' + x.bandwidth() / 2 + ',' + height + ')'\r\n )\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)') // Use CSS variable\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n if (this.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append('g')\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n )\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => {\r\n g.select('.domain')\r\n .remove()\r\n .style('stroke', 'var(--chart-domain-color, #000000)'); // Add CSS variable for domain\r\n });\r\n } else {\r\n svg\r\n .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) => {\r\n g.select('.domain')\r\n .style('stroke', 'var(--chart-domain-color, #000000)') // Add CSS variable for domain\r\n .style('stroke-width', '1px'); // Ensure visibility\r\n });\r\n }\r\n\r\n var xSubgroup = d3.scaleBand().domain(subgroups);\r\n if (subgroups.length > 1 && !this.isZoomedOut) {\r\n // For grouped bar charts in zoom-in view, use full x.bandwidth() for subgroups\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else if (subgroups.length === 1 && !this.isZoomedOut) {\r\n // For single-bar (non-grouped) charts in zoom-in view, set bar width to 100 (increased from 80)\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 // used to make grouped bars with lesser width as we are not using padding for width\r\n xSubgroup.range([0, x.bandwidth()]);\r\n }\r\n // if (this.chartConfiguration.isDrilldownChart) {\r\n\r\n // }\r\n var color = d3\r\n .scaleOrdinal()\r\n .domain(subgroups)\r\n .range(Object.values(metaData.colors));\r\n // var colorAboveTarget = d3\r\n // .scaleOrdinal()\r\n // .domain(subgroups)\r\n // .range(Object.values(metaData.colorAboveTarget));\r\n var 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', function (d) {\r\n return 'translate(' + x(d.name) + ',0)';\r\n });\r\n state\r\n .selectAll('rect')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n // if (key !== \"group\") {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n // }\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', function (d) {\r\n if (d.key != 'Target') {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n // self.handleClick(d.data.name);\r\n self.handleClick(d);\r\n }\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 // Increase bar width a bit in zoom-in view\r\n let reducedBarWidth = 60;\r\n if (!self.isZoomedOut) {\r\n reducedBarWidth = 30;\r\n }\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n }\r\n }\r\n });\r\n return tempScale(d.key);\r\n }\r\n return xSubgroup(d.key);\r\n })\r\n .attr('y', function (d) {\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 .attr('width', function (d) {\r\n // For grouped bar charts in zoom-in view, set bar width to 50 for maximum thickness\r\n if (subgroups.length > 1 && !self.isZoomedOut) {\r\n return 50;\r\n }\r\n // For single-bar (non-grouped) charts in zoom-in view, set bar width to 80\r\n if (subgroups.length === 1 && !self.isZoomedOut) {\r\n return 80;\r\n }\r\n let tempScale = d3.scaleBand().domain([]).range([0, 0]);\r\n // Default logic for other chart types\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 // Increase bar width a bit in zoom-in view\r\n let reducedBarWidth = 60;\r\n if (!self.isZoomedOut) {\r\n reducedBarWidth = 100;\r\n }\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n }\r\n }\r\n });\r\n return self.isZoomedOut\r\n ? tempScale.bandwidth()\r\n : self.chartData.data.length && self.chartData.data.length > 8\r\n ? tempScale.bandwidth() \r\n : tempScale.bandwidth();\r\n }\r\n return self.isZoomedOut\r\n ? tempScale.bandwidth()\r\n : self.chartData.data.length && self.chartData.data.length > 8\r\n ? tempScale.bandwidth()\r\n : tempScale.bandwidth();\r\n })\r\n .attr('height', function (d) {\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 .style('cursor', function (d) {\r\n if (metaData.hasDrillDown && !isria) return 'pointer';\r\n else return 'default';\r\n })\r\n .attr('fill', function (d) {\r\n if (\r\n d.value &&\r\n 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).find(\r\n 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\n /**\r\n * display angled texts on the bars\r\n */\r\n if (this.chartConfiguration.textsOnBar != undefined && !this.isZoomedOut) {\r\n state\r\n .selectAll('text')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('text')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('x', function (d) {\r\n return 0;\r\n })\r\n .attr('y', function (d) {\r\n return 0;\r\n })\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text(function (d) {\r\n return d.key && d.value\r\n ? d.key.length > 20\r\n ? d.key.substring(0, 17) + '...'\r\n : d.key\r\n : '';\r\n })\r\n .style('fill', function (d) {\r\n return '#000';\r\n })\r\n .style('font-weight', 'bold')\r\n .style('font-size', function (d) {\r\n if (self.isZoomedOut) {\r\n return '9px'; // 👈 Zoomed out mode\r\n }\r\n\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) {\r\n return '18px';\r\n } else if (window.innerWidth < 1400) {\r\n return '10px';\r\n } else {\r\n return '14px';\r\n }\r\n } else {\r\n return '14px';\r\n }\r\n })\r\n .attr('transform', function (d) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n var temp;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n /**\r\n * if set, then all texts ll be horizontal\r\n */\r\n if (self.chartConfiguration.textAlwaysHorizontal) {\r\n return (\r\n 'translate(' + xSubgroup(d.key) + ',' + (y(d.value) - 3) + ')'\r\n );\r\n }\r\n /**\r\n * rotate texts having more than one digits\r\n */\r\n // if (d.value > 9)\r\n if (!isNaN(tempScale(d.key)))\r\n return (\r\n 'translate(' +\r\n (tempScale(d.key) + tempScale.bandwidth() * 0.55) +\r\n ',' +\r\n (y(0) - 10) +\r\n ') rotate(270)'\r\n );\r\n return 'translate(0,0)';\r\n // else\r\n // return (\r\n // 'translate(' +\r\n // (tempScale(d.key) + tempScale.bandwidth() / 2) +\r\n // ',' +\r\n // y(0) +\r\n // ')'\r\n // );\r\n })\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n if (!isria) {\r\n state\r\n .selectAll('.lib-data-labels-weeklycharts')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n if (this.chartConfiguration.displayTitleOnTop || (\r\n this.chartConfiguration.textsOnBar == undefined &&\r\n this.chartConfiguration.displayTitleOnTop == undefined\r\n )) {\r\n\r\n if (!isria) {\r\n state\r\n .selectAll('rect')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n function handleMouseOver(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n svg\r\n .append('foreignObject')\r\n .attr('x', function () {\r\n // ...existing code for tempScale calculation...\r\n var elementsCounter;\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n elementsCounter = keys.length;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 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 }\r\n });\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return (\r\n x(d.name) + tempScale(d.key) + tempScale.bandwidth() / 2 - 90\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 } else return x(d.name) + tempScale(d.key) - (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 + tempScale.bandwidth() / 2;\r\n })\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', function () {\r\n return y(d.value) - 3 - 40 - 10;\r\n })\r\n .attr('dy', function () {\r\n return d.class;\r\n })\r\n .attr('width', function () {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 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 }\r\n });\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 } else return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n })\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(function () {\r\n let barLabel = d.key;\r\n let dataType = metaData.dataType ? metaData.dataType : '';\r\n let value = d.value;\r\n let desiredText =\r\n '<span class=\"title-bar-name\">' + barLabel + '</span>';\r\n desiredText +=\r\n '<span class=\"title-bar-value\"><span>' +\r\n value +\r\n '</span>' +\r\n dataType +\r\n '</span>';\r\n return desiredText;\r\n });\r\n }\r\n function handleMouseOut(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n svg\r\n .append('g')\r\n .attr('class', 'x2 axis2')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .style('color', 'var(--chart-axis-color, #000)') // Use CSS variable instead of hardcoded #000\r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\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(y)\r\n .style('display', 'none');\r\n svgYAxisLeft\r\n .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(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat(function (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 )\r\n .call((g) => {\r\n // Style the domain line for theme support\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('fill', 'var(--chart-text-color)');\r\n svgYAxisRight\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(y)\r\n .style('display', 'none');\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('g.lib-line-x-axis-text > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.yaxis-dashed > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.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', 'var(--chart-axis-color, #999999)'); // Use CSS variable\r\n }\r\n if (lineData != null) {\r\n if (lineData && self.chartConfiguration.showLineChartAxis) {\r\n svgYAxisRight\r\n .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 /**\r\n * used to display y label\r\n */\r\n\r\n // if (this.isZoomedOut) {\r\n // svg\r\n // .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n // .attr('class', 'lib-display-hidden');\r\n // }\r\n\r\n if (this.isZoomedOut) {\r\n // svg\r\n // .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n // .attr('transform', 'rotate(-30)')\r\n // .attr('text-anchor', 'end')\r\n // .attr('x', '-5')\r\n // .attr('dy', null)\r\n // .style('fill', 'var(--chart-text-color)');\r\n svg\r\n .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 // If label contains \\n, split and use tspan for each line\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 // Fallback: split by space for other labels\r\n const words = label.split(' ');\r\n text.text(null);\r\n words.forEach((word, index) => {\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); // Remove rotate if using line breaks\r\n\r\n // Optional: Adjust bottom margin or chart layout\r\n svg\r\n .select('.x-axis')\r\n .attr('transform', `translate(0, ${height - margin.bottom + 10})`);\r\n }\r\n\r\n /**\r\n * used to write y labels based on configuration\r\n */\r\nif (metaData.yLabel) {\r\n const yPosition = isria ? 0 - margin.left / 2 - 30 : 0 - margin.left / 2 - 40;\r\n\r\n svgYAxisLeft\r\n .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', '1em')\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\r\n .selectAll('.lib-axis-group-label')\r\n .style('font-size', 'smaller')\r\n .text(metaData.yLabel);\r\n } else {\r\n svg\r\n .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 if (this.chartData.targetLineData) {\r\n const yZero = y(this.chartData.targetLineData.target);\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', this.chartData.targetLineData.color);\r\n // svgYAxisRight\r\n // .append('line')\r\n // .attr('x1', 0)\r\n // .attr('x2', rightSvgWidth)\r\n // .attr('y1', yZero)\r\n // .attr('y2', yZero)\r\n // .style('stroke', this.chartData.targetLineData.color);\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(function () {\r\n let dataTypeTemp = '';\r\n let targetLineName = 'target';\r\n if (metaData.dataType) {\r\n dataTypeTemp = metaData.dataType;\r\n }\r\n if (\r\n self.chartData.targetLineData &&\r\n self.chartData.targetLineData.targetName\r\n ) {\r\n targetLineName = self.chartData.targetLineData.targetName;\r\n }\r\n return (\r\n `<div>${targetLineName}</div>` +\r\n '<div>' +\r\n self.chartData.targetLineData.target +\r\n '' +\r\n dataTypeTemp +\r\n '</div>'\r\n );\r\n });\r\n }\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n /**\r\n * used by drilldown charts\r\n */\r\n // svg\r\n // .selectAll('.lib-axis-group-label')\r\n // .attr('class', 'lib-ylabel-drilldowncharts')\r\n // .text(metaData.yLabel.toLowerCase());\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n\r\n if (metaData.xLabel) {\r\n function isAcronym(label) {\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 const xLabelText = metaData.xLabel;\r\n const isAcr = isAcronym(xLabelText.replace(/[^A-Za-z]/g, ''));\r\n\r\n const xPosition = isria ? (height + margin.top + margin.bottom) : (height + margin.top + margin.bottom + 40);\r\n\r\n svg\r\n .append('text')\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + xPosition + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcr ? xLabelText.toUpperCase() : xLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\r\n }\r\n if (metaData.lineyLabel) {\r\n svgYAxisRight\r\n .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', 0 - 100)\r\n .attr('x', 0 + 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 if (lineData) {\r\n svg\r\n .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(\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 lineYscale(d.value);\r\n })\r\n );\r\n\r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', function (d) {\r\n return self.chartConfiguration.lineGraphColor;\r\n })\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 lineYscale(d.value);\r\n })\r\n .style('cursor', () =>\r\n self.chartData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n )\r\n .attr('r', 3);\r\n\r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot\r\n .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', function (d, i) {\r\n return x(d.name) + x.bandwidth() / 2;\r\n })\r\n .attr('y', function (d) {\r\n return lineYscale(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 }\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\r\n constructor() {}\r\n\r\n ngOnInit(): void {}\r\n}\r\n","<div class=\"header-alt-title\">\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 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-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 {\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: 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 dataType: any = '';\r\n datatype_status: boolean = false;\r\n uniqueId: any = this.getUniqueId();\r\n isHeaderVisible: boolean = true;\r\n\r\n defaultConfiguration: any = {\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(option => option.id === 'editAlert');\r\n}\r\n\r\n ngOnChanges() {\r\n let self = this;\r\n d3.select('#' + self.uniqueId).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 this.initializeLineChart();\r\n }\r\n ngOnInit() {}\r\n\r\n initializeLineChart() {\r\n var self = this;\r\n let data = [];\r\n let metaData: any = null;\r\n let colorMaps = [];\r\n let angleValue = [];\r\n let data_ready: any = [];\r\n let labelArray: any = [];\r\n let colorType = null;\r\n\r\n let isria = this.customChartConfiguration.isRia\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 data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n\r\n colorType = metaData.colorType;\r\n if (colorType == 'low') {\r\n colorMaps = this.chartConfiguration.low_colorMap;\r\n } else {\r\n colorMaps = this.chartConfiguration.high_colorMap;\r\n }\r\n if (metaData.dataType) {\r\n this.dataType = metaData.dataType;\r\n if (this.dataType == 'USD') {\r\n this.datatype_status = true;\r\n this.dataType = '$ ';\r\n }\r\n }\r\n\r\n data.map(function (dataUnit, i) {\r\n if (i < data.length - 1) {\r\n let diff = data[i + 1] - data[i];\r\n data_ready.push(diff);\r\n }\r\n });\r\n\r\n var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var guagecontainer = d3.select(this.guagecontainerElt.nativeElement);\r\n var margin = this.chartConfiguration.margin;\r\n var width =\r\n parseInt(chartContainer.style('width')) - margin.left - margin.right;\r\n\r\n var height =\r\n parseInt(guagecontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n 56; //chart header height\r\n\r\n if (this.chartConfiguration.isHeaderVisible != undefined)\r\n this.isHeaderVisible = this.chartConfiguration.isHeaderVisible;\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\r\n var radius = Math.min(width, height) / 2;\r\n\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n this.chartConfiguration.currentValueWidthScaleFactor += 40;\r\n this.chartConfiguration.currentValueHeightScaleFactor += 20;\r\n } else {\r\n if (window.innerWidth > 1400) {\r\n this.chartConfiguration.currentValueHeightScaleFactor += 15;\r\n this.chartConfiguration.currentValueWidthScaleFactor *= 2;\r\n }\r\n }\r\n let topTextPosition = radius / 2 - 10;\r\n let midTextPosition =\r\n topTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n let bottomTextPosition =\r\n midTextPosition + this.chartConfiguration.currentValueHeightScaleFactor;\r\n var data_length = data.length;\r\n\r\n function deg2rad(deg) {\r\n return (deg * Math.PI) / 180;\r\n }\r\n let tempArray: any = [];\r\n let total = 0;\r\n data_ready.map(function (unit) {\r\n total += unit;\r\n });\r\n data_ready.map(function (unit, i) {\r\n var angle = (unit / total) * 180;\r\n if (i === 0) {\r\n tempArray.push(angle);\r\n } else {\r\n let currentAngle = tempArray[i - 1] + angle;\r\n tempArray.push(currentAngle);\r\n }\r\n });\r\n angleValue = tempArray;\r\n\r\n var arc = d3\r\n .arc()\r\n .innerRadius(\r\n radius -\r\n self.chartConfiguration.ringWidth -\r\n self.chartConfiguration.ringInset\r\n )\r\n .outerRadius(radius)\r\n .startAngle(function (d, i) {\r\n var ratio;\r\n if (i === 0) {\r\n ratio = self.chartConfiguration.minAngle;\r\n } else {\r\n ratio = self.chartConfiguration.minAngle + angleValue[i - 1];\r\n }\r\n return deg2rad(ratio);\r\n })\r\n .endAngle(function (d, i) {\r\n var ratio;\r\n if (i === data_ready.length - 1) {\r\n ratio = self.chartConfiguration.maxAngle;\r\n } else {\r\n ratio = self.chartConfiguration.minAngle + angleValue[i];\r\n }\r\n return deg2rad(ratio);\r\n });\r\n\r\n function centerTranslation() {\r\n return 'translate(' + radius + ',' + radius + ')';\r\n }\r\n\r\n var centerTx = centerTranslation();\r\n var tickData = d3\r\n .range(self.chartConfiguration.majorTicks)\r\n .map(function (i) {\r\n return 1 / self.chartConfiguration.majorTicks;\r\n });\r\n\r\n var arcs = svg.append('g').attr('class', 'arc').attr('transform', centerTx);\r\n\r\n arcs\r\n .selectAll('path')\r\n .data(data_ready)\r\n .enter()\r\n .append('path')\r\n .on('click', function (d) {\r\n if (!metaData.hasDrillDown || metaData.currentValue == 0) {\r\n return;\r\n }\r\n let range = getRange(d);\r\n self.handleClick(range);\r\n })\r\n .attr('fill', function (d, i) {\r\n return colorMaps[i];\r\n })\r\n .attr('id', function (d, i) {\r\n return colorMaps[i];\r\n })\r\n .attr('d', arc)\r\n // .style('cursor', 'pointer');\r\n .style('cursor', function (d) {\r\n if (metaData.currentValue > 0 && metaData.hasDrillDown && !isria)\r\n return 'pointer';\r\n else return 'default';\r\n });\r\n\r\n let getRange = function (d) {\r\n let index = data_ready.indexOf(d);\r\n return data[0] + ' and ' + data[data.length - 1];\r\n };\r\n\r\n let pointerHeadLength = Math.round(\r\n radius * self.chartConfiguration.pointerHeadLengthPercent\r\n );\r\n\r\n var lineData = [\r\n [self.chartConfiguration.pointerWidth / 2, 0],\r\n [0, -pointerHeadLength],\r\n [-(self.chartConfiguration.pointerWidth / 2), 0],\r\n [0, self.chartConfiguration.pointerTailLength],\r\n [self.chartConfiguration.pointerWidth / 2, 0],\r\n ];\r\n\r\n var pointerLine = d3.line();\r\n var pg = svg\r\n .append('g')\r\n .data([lineData])\r\n .attr('class', 'pointer')\r\n .attr('transform', centerTx);\r\n\r\n var pointerValue = metaData.currentValue - data[0];\r\n var range = data[data_length - 1] - data[0];\r\n var pointerAngle =\r\n self.chartConfiguration.minAngle + (pointerValue / range) * 180;\r\n pg.append('path')\r\n .attr('d', pointerLine)\r\n .attr('fill', self.chartConfiguration.pointerColor)\r\n .attr(\r\n 'transform',\r\n 'rotate(' +\r\n pointerAngle +\r\n ') translate(0,' +\r\n (-radius + self.chartConfiguration.ringWidth + pointerHeadLength) +\r\n ')'\r\n );\r\n\r\n var lg = svg.append('g').attr('class', 'label').attr('transform', centerTx);\r\n let labelArrayTemp = [{ name: data[0], value: 0 }];\r\n let count = 0;\r\n data_ready.map(function (dataUnit, i) {\r\n count += dataUnit;\r\n let temp = { name: data[i + 1], value: count };\r\n labelArrayTemp.push(temp);\r\n });\r\n labelArray = labelArrayTemp;\r\n\r\n lg.selectAll('.bubble')\r\n .data(labelArray)\r\n .enter()\r\n .append('g')\r\n .attr('transform', function (d) {\r\n var newAngle =\r\n self.chartConfiguration.minAngle + (d.value / range) * 180;\r\n return (\r\n 'rotate(' +\r\n newAngle +\r\n ') translate(0,' +\r\n (self.chartConfiguration.labelInset - radius - 20) +\r\n ')'\r\n );\r\n })\r\n .append('g')\r\n .attr('transform', function (d, i) {\r\n var newAngle =\r\n self.chartConfiguration.minAngle + (d.value / range) * 180;\r\n if (i == 0 && self.chartConfiguration.isValueLableAdjust) {\r\n return 'rotate(' + (0 - newAngle) + ') translate(-27,0)';\r\n }\r\n if (\r\n i == labelArray.length - 1 &&\r\n self.chartConfiguration.isValueLableAdjust\r\n ) {\r\n return 'rotate(' + (0 - newAngle) + ') translate(-15,0)';\r\n }\r\n return 'rotate(' + (0 - newAngle) + ') translate(-17,0)';\r\n })\r\n .append('text')\r\n .attr('style', function (d) {\r\n if (window.innerWidth < 1400)\r\n return 'font-size: ' + '12px' + '; font-weight:' + '600;';\r\n else return 'font-size: ' + '14px' + '; font-weight:' + '600;';\r\n })\r\n .attr('fill', 'var(--chart-text-color)')\r\n .text(function (d) {\r\n if (metaData.dataType) {\r\n return d.name + metaData.dataType;\r\n }\r\n return d.name;\r\n });\r\n\r\n svg\r\n .append('foreignObject')\r\n .attr(\r\n 'transform',\r\n 'translate(' +\r\n (radius - this.chartConfiguration.currentValueWidthScaleFactor / 2) +\r\n ',' +\r\n topTextPosition +\r\n ')'\r\n )\r\n .attr('width', this.chartConfiguration.currentValueWidthScaleFactor + 8)\r\n .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)\r\n .append('xhtml:div')\r\n .attr('class', 'value-display')\r\n .style(\r\n 'height',\r\n this.chartConfiguration.currentValueHeightScaleFactor + 10 + 'px'\r\n )\r\n .style('font-size', function () {\r\n if (window.innerWidth > 1500) {\r\n self.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px';\r\n } else {\r\n self.chartConfiguration.currentValueHeightScaleFactor - 15 + 'px';\r\n }\r\n })\r\n .html(metaData.currentValue + metaData.dataType);\r\n if (metaData.status) {\r\n let widthTemp = metaData.status.length > 4 ? 210 : 120;\r\n svg\r\n .append('foreignObject')\r\n .attr(\r\n 'transform',\r\n 'translate(' + (radius - widthTemp / 2) + ',' + midTextPosition + ')'\r\n )\r\n .attr('width', widthTemp)\r\n .attr(\r\n 'height',\r\n this.chartConfiguration.currentValueHeightScaleFactor + 10\r\n )\r\n .append('xhtml:div')\r\n .attr('class', 'status-display')\r\n .style(\r\n 'font-size',\r\n this.chartConfiguration.currentValueHeightScaleFactor - 25 + 'px'\r\n )\r\n .html(metaData.status);\r\n }\r\n svg\r\n .append('foreignObject')\r\n .attr(\r\n 'transform',\r\n 'translate(' + (radius - 105) + ',' + bottomTextPosition + ')'\r\n )\r\n .attr('width', 210)\r\n .attr('height', this.chartConfiguration.currentValueHeightScaleFactor)\r\n .append('xhtml:div')\r\n .attr('class', 'daterange-display')\r\n .style('font-size', function () {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n {\r\n if (window.innerWidth < 1400) return '14px';\r\n else return '18px';\r\n }\r\n } else {\r\n if (window.innerWidth < 1400) return '14px';\r\n else return '18px';\r\n }\r\n })\r\n .html(function () {\r\n var desiredSize;\r\n if (window.innerWidth < 1400) desiredSize = '14px';\r\n else desiredSize = '18px';\r\n if (metaData.dateRange)\r\n return (\r\n '<span class=\"marginright-3\"><i class=\"fa fa-calendar\"></i></span><span> ' +\r\n metaData.dateRange +\r\n '</span>'\r\n );\r\n else return '';\r\n });\r\n\r\n var containerMidWidth = parseInt(chartContainer.style('width')) / 2;\r\n var nodeHalfWidth = svg.node().getBoundingClientRect().width / 2;\r\n var updatedStartingPoint = containerMidWidth - nodeHalfWidth;\r\n\r\n svg.attr(\r\n 'transform',\r\n 'translate(' +\r\n (updatedStartingPoint + margin.left) +\r\n ',' +\r\n margin.top +\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}","<div #guagecontainer class=\"lib-chart-wrapper\" style=\"background-color: var(--card-bg);\"\r\n (resized)=\"onResized($event)\">\r\n <div class=\"header-alt\" *ngIf=\"!isHeaderVisible\">\r\n <lib-chart-header-v2 [chartData]=\"chartData\" [chartConfiguration]=\"chartConfiguration\"\r\n (clickEvent)=\"handleClick($event)\"></lib-chart-header-v2>\r\n </div>\r\n <lib-chart-header-v1 [title]=\"chartData.metaData.title\" [hasDrillDown]=\"chartData.metaData.hasDrillDown\"\r\n [isEditEnabled]=\"chartData.metaData.isEditEnabled\" [isria]=\"customChartConfiguration.isRia\" [menuOptions]=\"chartConfiguration.headerMenuOptions\"\r\n [selectedKpiTooltop]=\"chartConfiguration.selectedKpiTooltop\" (menuOptionClickEvent)=\"handleHeaderMenuClick($event)\"\r\n [isAlertEnabled]=\"isAlertEnabled\" *ngIf=\"isHeaderVisible\"></lib-chart-header-v1>\r\n <div [style.height]=\"chartConfiguration.svgHeight\" id=\"guagechartcontainer\" #guagechartcontainer\r\n class=\"lib-chart-svg guagecontainer\"></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\n import { ComponentUniqueId } from '../unique-id';\r\n import ChartHelper from '../chart-helper';\r\n import * as d3 from 'd3';\r\n import { ResizedEvent } from 'angular-resize-event';\r\n import HeaderConfigHelper from '../header-config';\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\n export 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 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: true,\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: undefined,\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 };\r\n \r\n uniqueId: any = this.getUniqueId();\r\n isZoomedOut: boolean = false;\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(option => option.id === 'editAlert');\r\n}\r\n initializegroupChart() {\r\n var 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 var formatFromBackend;\r\n var formatForHugeNumbers;\r\n\r\n let isria = this.customChartConfiguration.isRia\r\n\r\n \r\n var x: any;\r\n \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 = 5;\r\n var long_tick_length_bg = 30;\r\n var leftAndRightSpaces = 50;\r\n var rightSvgWidth = 60;\r\n var tempScale;\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 data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n lineData = this.chartData.lineData;\r\n \r\n // if (lineData || this.chartData.targetLineData) {\r\n // rightSvgWidth = 60;\r\n // }\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 var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var verticalstackedcontainer = d3.select(\r\n this.groupcontainerElt.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 if (this.chartData.data.length > 30 && this.isZoomedOut) {\r\n width =\r\n width > this.chartData.data.length * 40\r\n ? this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : width\r\n : this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : this.chartData.data.length * 40;\r\n \r\n width =\r\n width > this.chartData.data.length * 40\r\n ? width\r\n : this.chartData.data.length * 40;\r\n }\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 120 &&\r\n this.isZoomedOut\r\n ) {\r\n width = this.chartData.data.length * 120;\r\n }\r\n if (this.chartData.data.length > 8 && !this.isZoomedOut) {\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 250\r\n ) {\r\n width = this.chartData.data.length * 250;\r\n } else width = this.chartData.data.length * 160;\r\n }\r\n // if (this.chartData.data.length > 8) {\r\n // width = this.chartData.data.length * 140;\r\n // }\r\n \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 /**\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 != 70\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n 130;\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 /**\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 (this.chartConfiguration.legendVisible != undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\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 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 \r\n .style('overflow-x', 'hidden')\r\n .style('padding-left', `${margin.left}px`)\r\n // .call(ChartHelper.responsivefy)\r\n \r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left','15px');\r\n var 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('z-index', 1)\r\n .append('g')\r\n .attr('transform', 'translate(' + (margin.left + 15) + ',' + margin.top + ')');\r\n \r\n var 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 var 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 \r\n var svg = innerContainer\r\n .append('svg')\r\n // .attr('id', self.uniqueId)\r\n .attr('width', width - rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 30)\r\n // .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + margin.top + ')');\r\n \r\n var subgroups: any = keyList;\r\n \r\n var groups = d3\r\n .map(data, function (d) {\r\n return d.name;\r\n })\r\n .keys();\r\n \r\n /**\r\n * x axis range made similar to line chart or vertical stack so that all the charts will get aligned with each other.\r\n */\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(\r\n data.map(function (d: any) {\r\n return d.name.toLowerCase();\r\n })\r\n );\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 // x.bandwidth(96);\r\n var xScaleFromOrigin = d3\r\n .scaleBand()\r\n .domain(groups)\r\n .range([0, width - rightSvgWidth]);\r\n // .padding([0.2]);\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('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n // .attr('style', self.chartConfiguration.xAxisCustomTextStyles)\r\n // .call(d3.axisBottom(x).tickSize(0));\r\n // }\r\n // d3.svg.axis().scale(x).orient('bottom').ticks(1).innerTickSize(-height);\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n /**\r\n * normal ticks for all dashboard charts\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))\r\n .call((g) => g.select('.domain').remove());\r\n \r\n svg.selectAll('g.x1.axis1 g.tick line').remove();\r\n\r\n if (subgroups.length > 1 && !metaData.xLabel) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('y', 32); // Increase distance from bars (default is ~9)\r\n } else {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)');\r\n }\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 } else {\r\n /**\r\n * bigger ticks for weekly charts and more space from x axis to labels\r\n */\r\n /**\r\n * draw x axis\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 * tick line size in alternate fashion\r\n */\r\n svg.selectAll('g.x1.axis1 g.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 * reset the flag so that values can be shown in same alternate fashion\r\n */\r\n alternate_text = false;\r\n /**\r\n * print x-axis label texts\r\n * used by weekly charts\r\n */\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 if (self.chartConfiguration.xLabelsOnSameLine) {\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(function (d) {\r\n var isValueToBeIgnored = false;\r\n data.map((indiv: any) => {\r\n if (\r\n indiv.name.toLowerCase() == d.trim().toLowerCase() &&\r\n indiv[metaData.keyList[0]] == -1\r\n ) {\r\n isValueToBeIgnored = true;\r\n }\r\n });\r\n if (isValueToBeIgnored) {\r\n 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 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(function (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 /**y scale for left y axis */\r\n var y = d3.scaleLinear().rangeRound([height, 0]);\r\n var maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key]));\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 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', '#B9B9B9')\r\n // .style('opacity', '0.5')\r\n // .call((g) => g.select('.domain').remove());\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n /**\r\n * increase y-scale so that values wont cross or exceed out of range\r\n * used in weekly charts\r\n */\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n if (\r\n this.chartData.targetLineData &&\r\n maxValue < this.chartData.targetLineData.target\r\n ) {\r\n maxValue =\r\n 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 y.domain([0, maxValue]).nice();\r\n let lineYscale;\r\n \r\n if (lineData != null) {\r\n let maxLineValue = d3.max(lineData, function (d) {\r\n return +d.value;\r\n });\r\n \r\n maxLineValue = maxLineValue * this.chartConfiguration.customYscale;\r\n \r\n let minLineValue = d3.min(lineData, function (d) {\r\n return +d.value;\r\n });\r\n if (maxLineValue > 0) minLineValue = minLineValue - 3;\r\n if (minLineValue > 0) {\r\n minLineValue = 0;\r\n }\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([minLineValue, maxLineValue])\r\n .range([height, minLineValue]);\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 * show x-axis grid between labels\r\n * used by weekly 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(' + x.bandwidth() / 2 + ',' + height + ')'\r\n )\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 if (this.chartConfiguration.yAxisGrid) {\r\n /**\r\n * draw y axis\r\n */\r\n svg\r\n .append('g')\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n )\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove());\r\n } else {\r\n svg\r\n .append('g')\r\n .call(d3.axisLeft(y).ticks(self.chartConfiguration.numberOfYTicks))\r\n .style('color', '#B9B9B9')\r\n .style('opacity', '0.5')\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n \r\n var xSubgroup = d3.scaleBand().domain(subgroups);\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else {\r\n /**\r\n * used to make grouped bars with lesser width as we are not using padding for width\r\n * used by weekly charts\r\n */\r\n xSubgroup.range([0, x.bandwidth()]);\r\n }\r\n // if (this.chartConfiguration.isDrilldownChart) {\r\n \r\n // }\r\n var color = d3\r\n .scaleOrdinal()\r\n .domain(subgroups)\r\n .range(Object.values(metaData.colors));\r\n // var colorAboveTarget = d3\r\n // .scaleOrdinal()\r\n // .domain(subgroups)\r\n // .range(Object.values(metaData.colorAboveTarget));\r\n var 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', function (d) {\r\n return 'translate(' + x(d.name) + ',0)';\r\n });\r\n state\r\n .selectAll('rect')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n // if (key !== \"group\") {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n // }\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', function (d) {\r\n if (d.key != 'Target') {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n // self.handleClick(d.data.name);\r\n self.handleClick(d);\r\n }\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n return tempScale(d.key);\r\n }\r\n return xSubgroup(d.key);\r\n })\r\n .attr('y', function (d) {\r\n return y(d.value);\r\n })\r\n .attr('width', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n // var tempScale;\r\n \r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n var temp;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n return tempScale.bandwidth();\r\n }\r\n return xSubgroup.bandwidth();\r\n })\r\n .attr('height', function (d) {\r\n if (d.value == -1) {\r\n return height - y(0);\r\n }\r\n if (d.value) return height - y(d.value);\r\n return height - y(0);\r\n })\r\n // .style('cursor', 'pointer')\r\n .style('cursor', function (d) {\r\n if (metaData.hasDrillDown && !isria) return 'pointer';\r\n else return 'default';\r\n })\r\n .attr('fill', function (d) {\r\n if (\r\n d.value &&\r\n self.chartData.targetLineData &&\r\n d.value >= parseInt(self.chartData.targetLineData.target) &&\r\n self.chartData.metaData.colorAboveTarget\r\n )\r\n return self.chartData.metaData.colorAboveTarget[d.key];\r\n return self.chartData.metaData.colors[d.key];\r\n });\r\n \r\n /**\r\n * display angled texts on the bars\r\n */\r\n if (this.chartConfiguration.textsOnBar != undefined && !this.isZoomedOut) {\r\n state\r\n .selectAll('text')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('text')\r\n .attr('x', function (d) {\r\n return 0;\r\n })\r\n .attr('y', function (d) {\r\n return 0;\r\n })\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text(function (d) {\r\n return d.key && d.value\r\n ? d.key.length > 20\r\n ? d.key.substring(0, 17) + '...'\r\n : d.key\r\n : '';\r\n })\r\n .style('fill', function (d) {\r\n return '#000';\r\n })\r\n .style('font-weight', 'bold')\r\n .style('font-size', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) {\r\n return '18px';\r\n } else if (window.innerWidth < 1400) {\r\n return '10px';\r\n } else {\r\n return '14px';\r\n }\r\n } else {\r\n return '14px';\r\n }\r\n })\r\n .attr('transform', function (d) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n var temp;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n /**\r\n * if set, then all texts ll be horizontal\r\n */\r\n if (self.chartConfiguration.textAlwaysHorizontal) {\r\n return (\r\n 'translate(' + xSubgroup(d.key) + ',' + (y(d.value) - 3) + ')'\r\n );\r\n }\r\n /**\r\n * rotate texts having more than one digits\r\n */\r\n // if (d.value > 9)\r\n if (!isNaN(tempScale(d.key)))\r\n return (\r\n 'translate(' +\r\n (tempScale(d.key) + tempScale.bandwidth() * 0.55) +\r\n ',' +\r\n (y(0) - 10) +\r\n ') rotate(270)'\r\n );\r\n return 'translate(0,0)';\r\n // else\r\n // return (\r\n // 'translate(' +\r\n // (tempScale(d.key) + tempScale.bandwidth() / 2) +\r\n // ',' +\r\n // y(0) +\r\n // ')'\r\n // );\r\n })\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n if (!isria) {\r\n state.selectAll('.lib-data-labels-weeklycharts')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n if (this.chartConfiguration.displayTitleOnTop || (\r\n this.chartConfiguration.textsOnBar == undefined &&\r\n this.chartConfiguration.displayTitleOnTop == undefined\r\n )) {\r\n\r\n if (!isria) {\r\n state\r\n .selectAll('rect')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n function handleMouseOver(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n svg\r\n .append('foreignObject')\r\n .attr('x', function () {\r\n // var tempScale;\r\n var elementsCounter;\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n elementsCounter = keys.length;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return (\r\n x(d.name) + tempScale(d.key) + tempScale.bandwidth() / 2 - 90\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 } else return x(d.name) + tempScale(d.key) - (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 + tempScale.bandwidth() / 2;\r\n })\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', function () {\r\n return y(d.value) - 3 - 40;\r\n })\r\n .attr('dy', function () {\r\n return d.class;\r\n })\r\n .attr('width', function () {\r\n // var tempScale;\r\n \r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\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 } else return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n })\r\n .attr('height', 40)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(function () {\r\n let dataType = metaData.dataType ? metaData.dataType : '';\r\n if (!self.isZoomedOut) {\r\n let desiredText =\r\n '<span class=\"title-bar-name\">' + d.name + '</span>';\r\n desiredText +=\r\n '<span class=\"title-bar-value\"><span>' +\r\n d.value +\r\n '</span>' +\r\n dataType +\r\n '</span>';\r\n return desiredText;\r\n } else {\r\n let tempKey =\r\n d.name.length <= 8 ? d.name : d.name.substring(0, 5) + '...';\r\n let desiredText =\r\n '<span class=\"title-bar-name\">' +\r\n tempKey +\r\n ':' +\r\n d.value +\r\n dataType +\r\n '</span>';\r\n desiredText +=\r\n '<span class=\"title-bar-value\">' + d.name + '</span>';\r\n return desiredText;\r\n }\r\n });\r\n }\r\n function handleMouseOut(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n 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 \r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\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(y)\r\n .style('display', 'none');\r\n svgYAxisLeft\r\n .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(\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 .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n svgYAxisRight\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(y)\r\n .style('display', 'none');\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('g.lib-line-x-axis-text > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.yaxis-dashed > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.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 if (lineData != null) {\r\n if (lineData && self.chartConfiguration.showLineChartAxis) {\r\n svgYAxisRight\r\n .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 /**\r\n * used to display y label\r\n */\r\n if (this.isZoomedOut) {\r\n svg\r\n .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n .attr('class', 'lib-display-hidden');\r\n }\r\n \r\n /**\r\n * used to write y labels based on configuration\r\n */\r\n if (metaData.yLabel) {\r\n svgYAxisLeft\r\n .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', 0 - margin.left / 2 - 30)\r\n .attr('x', 0 - height / 2)\r\n .attr('dy', '1em')\r\n .style('text-anchor', 'middle')\r\n .attr('fill', 'var(--chart-text-color)');\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n svgYAxisLeft\r\n .selectAll('.lib-axis-group-label')\r\n .style('font-size', 'smaller')\r\n .text(metaData.yLabel);\r\n } else {\r\n /**\r\n * used by weekly charts\r\n */\r\n svg\r\n .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 if (metaData.xLabel) {\r\n function isAcronym(label) {\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 const xLabelText = metaData.xLabel;\r\n const isAcr = isAcronym(xLabelText.replace(/[^A-Za-z]/g, ''));\r\n svg\r\n .append('text')\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\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 .style('fill', 'var(--chart-text-color)')\r\n .text(isAcr ? xLabelText.toUpperCase() : xLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\r\n }\r\n if (this.chartData.targetLineData) {\r\n const yZero = y(this.chartData.targetLineData.target);\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', this.chartData.targetLineData.color);\r\n // svgYAxisRight\r\n // .append('line')\r\n // .attr('x1', 0)\r\n // .attr('x2', rightSvgWidth)\r\n // .attr('y1', yZero)\r\n // .attr('y2', yZero)\r\n // .style('stroke', this.chartData.targetLineData.color);\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(function () {\r\n let dataTypeTemp = '';\r\n let targetLineName = 'target';\r\n if (metaData.dataType) {\r\n dataTypeTemp = metaData.dataType;\r\n }\r\n if (\r\n self.chartData.targetLineData &&\r\n self.chartData.targetLineData.targetName\r\n ) {\r\n targetLineName = self.chartData.targetLineData.targetName;\r\n }\r\n return (\r\n `<div>${targetLineName}</div>` +\r\n '<div>' +\r\n self.chartData.targetLineData.target +\r\n '' +\r\n dataTypeTemp +\r\n '</div>'\r\n );\r\n });\r\n }\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n /**\r\n * used by drilldown charts\r\n */\r\n // svg\r\n // .selectAll('.lib-axis-group-label')\r\n // .attr('class', 'lib-ylabel-drilldowncharts')\r\n // .text(metaData.yLabel.toLowerCase());\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n if (metaData.lineyLabel) {\r\n svgYAxisRight\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(0,0) rotate(90)')\r\n .attr('y', 0 - 100)\r\n .attr('x', 0 + 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 if (lineData) {\r\n svg\r\n .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(\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 lineYscale(d.value);\r\n })\r\n );\r\n \r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n \r\n dot\r\n .append('circle')\r\n .attr('fill', function (d) {\r\n return self.chartConfiguration.lineGraphColor;\r\n })\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 lineYscale(d.value);\r\n })\r\n .style('cursor', 'pointer')\r\n .attr('r', 3);\r\n \r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot\r\n .append('text')\r\n .attr('class', 'dot')\r\n .attr('color', self.chartConfiguration.lineGraphColor)\r\n .attr('style', 'font-size: ' + '.85em')\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 lineYscale(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 }\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 }","<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\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: any;\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 masterList: any[] = [];\r\n itemList: any[] = [];\r\n currentList: any[] = [];\r\n\r\n pageSize = 10;\r\n currentPage = 1;\r\n totalItems = 0;\r\n totalPages = 1;\r\n goToPageNumber = 1;\r\n pagesToShow: number[] = [];\r\n\r\n sortColumn = '';\r\n sortDirection: 'asc' | 'desc' | '' = '';\r\n\r\n chartConfiguration: any = {};\r\n defaultConfiguration: any = {};\r\n\r\n constructor() {}\r\n\r\n ngOnInit(): void {\r\n if (!this.tableData || !this.tableData.data?.length) return;\r\n\r\n this.initializeTable();\r\n }\r\n\r\n private initializeTable(): void {\r\n this.tableHeadList = Object.keys(this.tableData.data[0]);\r\n this.setupChartConfiguration();\r\n this.masterList = [...this.tableData.data];\r\n this.itemList = [...this.masterList];\r\n this.totalItems = this.itemList.length;\r\n\r\n this.calculateTotalPages();\r\n this.generatePagesToShow();\r\n this.setHeaderVisibility();\r\n this.loadPage();\r\n }\r\n\r\n private setupChartConfiguration(): 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 setHeaderVisibility(): void {\r\n const meta = this.tableData.metaData;\r\n if (meta.isHeaderVisible !== undefined) {\r\n this.isHeaderVisible = meta.isHeaderVisible;\r\n }\r\n }\r\n\r\n private loadPage(): void {\r\n if (this.tableData.metaData.isPaginationHidden) {\r\n this.currentList = this.itemList;\r\n return;\r\n }\r\n\r\n const start = (this.currentPage - 1) * this.pageSize;\r\n const end = start + this.pageSize;\r\n this.currentList = this.itemList.slice(start, end);\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 const maxPagesToShow = 5;\r\n let start = Math.max(1, this.currentPage - Math.floor(maxPagesToShow / 2));\r\n let end = Math.min(this.totalPages, start + maxPagesToShow - 1);\r\n\r\n if (end - start + 1 < maxPagesToShow) {\r\n start = Math.max(1, end - maxPagesToShow + 1);\r\n }\r\n\r\n this.pagesToShow = Array.from({ length: end - start + 1 }, (_, i) => start + i);\r\n }\r\n\r\n private refreshPagination(): 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.refreshPagination();\r\n }\r\n }\r\n\r\n goToPreviousPage(): void {\r\n if (this.currentPage > 1) {\r\n this.currentPage--;\r\n this.refreshPagination();\r\n }\r\n }\r\n\r\n goToNextPage(): void {\r\n if (this.currentPage < this.totalPages) {\r\n this.currentPage++;\r\n this.refreshPagination();\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.refreshPagination();\r\n }\r\n }\r\n\r\n goToSpecificPage(): void {\r\n let pageNum = Number(this.goToPageNumber);\r\n\r\n if (isNaN(pageNum) || pageNum < 1) pageNum = 1;\r\n if (pageNum > this.totalPages) pageNum = this.totalPages;\r\n\r\n this.currentPage = pageNum;\r\n this.refreshPagination();\r\n }\r\n\r\n preventNegative(event: KeyboardEvent): void {\r\n const invalidKeys = ['-', '+', 'e'];\r\n if (invalidKeys.includes(event.key.toLowerCase())) {\r\n event.preventDefault();\r\n }\r\n }\r\n\r\n sortByColumn(id: string): void {\r\n const meta = this.tableData.metaData;\r\n\r\n if (id === 'viewDetails' || meta.isHeaderSortHidden) return;\r\n\r\n this.isUserSort = true;\r\n\r\n if (this.sortColumn !== id) {\r\n this.sortColumn = id;\r\n this.sortDirection = 'asc';\r\n } else if (this.sortDirection === 'asc') {\r\n this.sortDirection = 'desc';\r\n } else {\r\n this.resetSort();\r\n return;\r\n }\r\n\r\n this.sortItemList();\r\n this.currentPage = 1;\r\n this.refreshPagination();\r\n }\r\n\r\n getSortIcon(header: string): string {\r\n if (!this.isUserSort || !this.sortColumn) {\r\n return 'fa-sort';\r\n }\r\n\r\n if (this.sortColumn === header) {\r\n return this.sortDirection === 'asc'\r\n ? 'fa-sort-asc'\r\n : this.sortDirection === 'desc'\r\n ? 'fa-sort-desc'\r\n : 'fa-sort';\r\n }\r\n\r\n return 'fa-sort';\r\n }\r\n\r\n\r\n private sortItemList(): void {\r\n const compare = (a: any, b: any): number => {\r\n const numA = parseFloat(a);\r\n const numB = parseFloat(b);\r\n if (!isNaN(numA) && !isNaN(numB)) return numA - numB;\r\n return a < b ? -1 : a > b ? 1 : 0;\r\n };\r\n\r\n this.itemList.sort((a, b) => {\r\n const result = compare(a[this.sortColumn], b[this.sortColumn]);\r\n return this.sortDirection === 'asc' ? result : -result;\r\n });\r\n }\r\n\r\n private resetSort(): void {\r\n this.sortColumn = '';\r\n this.sortDirection = '';\r\n this.itemList = [...this.masterList];\r\n this.currentPage = 1;\r\n this.refreshPagination();\r\n }\r\n\r\n\r\n onSearch(event: any): void {\r\n const searchText = (event.target.value || '').trim().toLowerCase();\r\n this.itemList = searchText\r\n ? this.masterList.filter(row =>\r\n this.tableHeadList.some(\r\n col => row[col]?.toString().toLowerCase().includes(searchText)\r\n )\r\n )\r\n : [...this.masterList];\r\n\r\n this.currentPage = 1;\r\n this.totalItems = this.itemList.length;\r\n this.calculateTotalPages();\r\n this.refreshPagination();\r\n }\r\n\r\n getWidthById(_: string, index: number): string {\r\n if (this.tableHeadList.length === 3) {\r\n return index === 1 ? '60%' : '20%';\r\n }\r\n return `${100 / this.tableHeadList.length}%`;\r\n }\r\n\r\n handleClick(row: any): void {\r\n this.clickEvent.emit(row);\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\" *ngIf=\"!isHeaderVisible\"></lib-header-alt>\r\n </div>\r\n\r\n <input\r\n *ngIf=\"!tableData.metaData.isSearchHidden\"\r\n type=\"text\"\r\n class=\"form-control custom-input medium-font-size textbox-ax-common\"\r\n placeholder=\"Search\"\r\n autocomplete=\"off\"\r\n (keyup)=\"onSearch($event)\"\r\n />\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\r\n *ngFor=\"let header of tableHeadList; index as i\"\r\n (click)=\"sortByColumn(header)\"\r\n [ngClass]=\"\r\n !tableData.metaData.isHeaderAlignedToCenter\r\n ? i === tableHeadList.length - 1\r\n ? 'textalign-right'\r\n : 'textalign-left'\r\n : 'textalign-center'\r\n \"\r\n [style.width]=\"getWidthById(header, i)\"\r\n [style.backgroundColor]=\"tableData.metaData.headerColor\"\r\n [style.color]=\"tableData.metaData.headerTextColor\"\r\n >\r\n <span\r\n *ngIf=\"(!tableData.metaData.isFirstColumnHeaderHidden && i === 0) || i > 0\"\r\n [ngClass]=\"\r\n !tableData.metaData.isHeaderSortHidden ? 'cursor-pointer' : 'cursor-default'\r\n \"\r\n >\r\n {{ header }}\r\n </span>\r\n\r\n<i\r\n class=\"sort-icons fa\"\r\n [ngClass]=\"getSortIcon(header)\"\r\n></i>\r\n </th>\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr\r\n *ngFor=\"let row of currentList\"\r\n [ngClass]=\"tableData?.highlightedTexts?.includes(row[tableHeadList[0]]) ? 'font-weight-bold' : ''\"\r\n >\r\n <td\r\n *ngFor=\"let header of tableHeadList; index as i\"\r\n (click)=\"handleClick(row)\"\r\n class=\"table-cell\"\r\n [style.width]=\"getWidthById(header, i)\"\r\n [ngClass]=\"\r\n !tableData.metaData.isAllAlignedToRight\r\n ? i === tableHeadList.length - 1\r\n ? 'textalign-right last-column-color'\r\n : 'textalign-left'\r\n : 'textalign-right'\r\n \"\r\n [style.cursor]=\"tableData.metaData.hasDrillDown ? 'pointer' : 'default'\"\r\n >\r\n <span>{{ row[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\">\r\n <span>Go To</span>\r\n <input\r\n type=\"number\"\r\n class=\"page-input\"\r\n min=\"1\"\r\n [max]=\"totalPages\"\r\n [(ngModel)]=\"goToPageNumber\"\r\n (keypress)=\"preventNegative($event)\"\r\n (keyup.enter)=\"goToSpecificPage()\"\r\n />\r\n\r\n <span>\r\n {{ currentList.length > 0 ? (currentPage - 1) * pageSize + 1 : 0 }} -\r\n {{ (currentPage - 1) * pageSize + currentList.length }} of {{ totalItems | number }}\r\n </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\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"goToNextPage()\"\r\n class=\"pagination-btn\"\r\n title=\"Next Page\"\r\n >\r\n <i class=\"bi bi-chevron-right\"></i>\r\n </button>\r\n <button\r\n [disabled]=\"currentPage === totalPages\"\r\n (click)=\"goToLastPage()\"\r\n class=\"pagination-btn\"\r\n title=\"Last Page\"\r\n >\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} 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-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 OnInit {\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: 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 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 isCC: boolean = false;\r\n isZoomedOut: boolean = true;\r\n\r\n constructor() {\r\n super();\r\n }\r\n isZoomOutSelected(isZoomOut) {\r\n this.isZoomedOut = isZoomOut;\r\n this.ngOnChanges();\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 setTimeout(\r\n function () {\r\n d3.select('#' + self.uniqueId).remove();\r\n self.initializeStackedChart();\r\n }.bind(self),\r\n 10\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 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 = 5;\r\n var long_tick_length_bg = 30;\r\n var formatFromBackend;\r\n var formatForHugeNumbers;\r\n var tempObjectHolder = {};\r\n var rightSvgWidth = 60;\r\n var leftAndRightSpaces = 50;\r\n\r\n let isria = this.customChartConfiguration.isRia\r\n\r\n // Responsive breakpoints\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\r\n // Adjust margins and font sizes based on device\r\n if (isMobile) {\r\n this.chartConfiguration.margin = { top: 20, right: 10, bottom: 40, left: 30 };\r\n this.chartConfiguration.numberOfYTicks = 4;\r\n this.chartConfiguration.svgHeight = 60;\r\n } else if (isTablet) {\r\n this.chartConfiguration.margin = { top: 25, right: 20, bottom: 45, left: 40 };\r\n this.chartConfiguration.numberOfYTicks = 6;\r\n this.chartConfiguration.svgHeight = 70;\r\n } else {\r\n this.chartConfiguration.margin = { top: 30, right: 30, bottom: 50, left: 60 };\r\n this.chartConfiguration.numberOfYTicks = 7;\r\n this.chartConfiguration.svgHeight = 80;\r\n }\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 if (metaData.barWithoutClick && metaData.barWithoutClick.length) {\r\n metaData.barWithoutClick = metaData.barWithoutClick.map((ele) =>\r\n ele.toLowerCase()\r\n );\r\n } else {\r\n metaData.barWithoutClick = [];\r\n }\r\n lineData = this.chartData.lineData;\r\n colors = metaData.colors;\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 let parsedNum = parseFloat(this.chartData?.targetLineData?.target);\r\n if (!isNaN(parsedNum)) {\r\n if (Number.isInteger(parsedNum)) {\r\n parsedNum = parseInt(this.chartData.targetLineData.target);\r\n } else {\r\n parsedNum = parseFloat(this.chartData.targetLineData.target);\r\n }\r\n }\r\n var margin = this.chartConfiguration.margin;\r\n\r\n // Responsive width and height\r\n var containerWidth = chartContainer.node().getBoundingClientRect().width;\r\n var containerHeight = verticalstackedcontainer.node().getBoundingClientRect().height;\r\n var width = containerWidth - margin.left - margin.right;\r\n var height = containerHeight * (self.chartConfiguration.svgHeight / 100) - margin.top - margin.bottom;\r\n\r\n // Adjust width for large datasets and zoom\r\n if (this.chartData.data.length > 30 && this.isZoomedOut) {\r\n width = width > this.chartData.data.length * (isMobile ? 15 : 25)\r\n ? width\r\n : this.chartData.data.length * (isMobile ? 15 : 25);\r\n }\r\n if (this.chartData.data.length > 8 && !this.isZoomedOut) {\r\n width = this.chartData.data.length * (isMobile ? 60 : 130);\r\n }\r\n\r\n // Fullscreen and drilldown adjustments\r\n if (this.chartConfiguration.isFullScreen != undefined && this.chartConfiguration.isFullScreen) {\r\n height = this.chartConfiguration.svgHeight != 80\r\n ? this.chartConfiguration.svgHeight\r\n : containerHeight;\r\n }\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n height = containerHeight - margin.top - margin.bottom - (isMobile ? 60 : 130);\r\n }\r\n\r\n // ...existing code...\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 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\r\n .style('overflow-x', 'hidden')\r\n .style('padding-left', `${margin.left}px`)\r\n .style('margin-left', '10px')\r\n .style('padding-right', `${rightSvgWidth}px`);\r\n\r\n var svgYAxisLeft = outerContainer\r\n .append('svg')\r\n .attr('width', '80')\r\n .attr('height', height + margin.top + margin.bottom)\r\n .style('position', 'absolute')\r\n .style('left', '0')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', 'translate(' + (margin.left + 10) + ',' + margin.top + ')');\r\n\r\n var svgYAxisRight = outerContainer\r\n .append('svg')\r\n .attr('width', rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom)\r\n .style('position', 'absolute')\r\n .style('right', '2px')\r\n .style('z-index', 1)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + margin.top + ')');\r\n\r\n var 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\r\n\r\n // Calculate bar width and padding for mobile to avoid overlap and add space between bars\r\n let barWidth;\r\n let barPadding = 12; // px, space between bars on mobile\r\n let requiredSvgWidth;\r\n if (isMobile) {\r\n // Use a minimum width per bar and add padding between bars\r\n const minBarWidth = 32; // px, can adjust as needed\r\n barWidth = minBarWidth;\r\n requiredSvgWidth = Math.max(\r\n width - rightSvgWidth,\r\n (barWidth + barPadding) * data.length + leftAndRightSpaces * 2 + rightSvgWidth - barPadding // no padding after last bar\r\n );\r\n innerContainer.style('overflow-x', 'auto');\r\n } else {\r\n barWidth = Math.max(40, (width - rightSvgWidth - leftAndRightSpaces * 2) / data.length);\r\n barPadding = 0;\r\n requiredSvgWidth = width - rightSvgWidth;\r\n }\r\n\r\n var svg = innerContainer\r\n .append('svg')\r\n .attr('width', requiredSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 30)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + 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 // Calculate bar width for mobile to avoid overlap\r\n // ...barWidth is now calculated above, remove duplicate...\r\n\r\n var xScale = d3\r\n .scaleBand()\r\n .rangeRound([\r\n leftAndRightSpaces,\r\n width - rightSvgWidth - leftAndRightSpaces\r\n ])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name;\r\n }).reverse()\r\n )\r\n .padding(isMobile ? 0.2 : 0.5);\r\n\r\n var xScaleFromOrigin = d3\r\n .scaleBand()\r\n .rangeRound([width - rightSvgWidth, 0])\r\n .domain(\r\n data.map(function (d) {\r\n return d.name;\r\n }).reverse()\r\n );\r\n // ...existing code...\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('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n .attr('style', self.chartConfiguration.xAxisCustomTextStyles)\r\n .call(d3.axisBottom(xScale).tickSize(0));\r\n svg.selectAll('.x-axis > g > text').attr('class', 'lib-display-hidden');\r\n }\r\n /**\r\n * draw second x axis on top\r\n */\r\n // if (self.chartConfiguration.showXaxisAtTarget) {\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', self.chartConfiguration.xAxisCustomTextStyles)\r\n // .call(d3.axisBottom(xScale).tickSize(0));\r\n // svg.selectAll('.x-axis > g > text').attr('class', 'lib-display-hidden');\r\n // }\r\nif (this.chartConfiguration.xAxisGrid) {\r\n for (var 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)') // Use CSS variable instead of hardcoded\r\n .attr(\r\n 'transform',\r\n 'translate(0,' + height * this.chartConfiguration.xAxisGrid[j] + ')'\r\n )\r\n .call(d3.axisBottom(xScale).tickSize(0).ticks(5).tickFormat(''))\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n}\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 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 if (this.chartConfiguration.customYscale) {\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n if (\r\n this.chartData.targetLineData &&\r\n maxValue < this.chartData.targetLineData.target\r\n ) {\r\n maxValue =\r\n 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 yScale.domain([0, maxValue]).nice();\r\n\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\nif (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 // Remove hardcoded colors and use CSS variables\r\n .style('color', 'var(--chart-grid-color)')\r\n .style('opacity', '1')\r\n // .call((g) => g.select('.domain').remove());\r\n}\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\r\n rect\r\n .append('rect')\r\n .on('click', function (d) {\r\n if (!lineData || self.chartConfiguration.forComparison) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n !metaData.barWithoutClick.includes(d.data.name.toLowerCase())\r\n )\r\n self.handleClick(d.data.name);\r\n }\r\n })\r\n .attr('y', function (d) {\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', function (d, i) {\r\n if (isMobile) {\r\n // On mobile, position bars with padding\r\n return leftAndRightSpaces + i * (barWidth + barPadding);\r\n }\r\n if (self.chartConfiguration.isMultiChartGridLine == undefined) {\r\n return xScale(d.data.name);\r\n } else {\r\n if (\r\n self.chartConfiguration.isDrilldownChart &&\r\n self.chartData.data.length <= 3\r\n ) {\r\n return xScale(d.data.name) + xScale.bandwidth() / 2 - 35;\r\n }\r\n return xScale(d.data.name) + xScale.bandwidth() * 0.1;\r\n }\r\n })\r\n .attr('height', function (d) {\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', function (d) {\r\n // Use calculated barWidth for mobile, otherwise scale\r\n if (isMobile) {\r\n return barWidth;\r\n }\r\n return self.chartConfiguration.isMultiChartGridLine == undefined\r\n ? xScale.bandwidth()\r\n : self.chartConfiguration.isDrilldownChart &&\r\n self.chartData.data.length <= 3\r\n ? 70\r\n : xScale.bandwidth() * 0.8;\r\n })\r\n // .style('cursor', 'pointer');\r\n .style('cursor', function (d) {\r\n if (metaData.hasDrillDown) {\r\n if (\r\n metaData.barWithoutClick.length > 0 &&\r\n metaData.barWithoutClick.includes(d.data.name.toLowerCase())\r\n ) {\r\n return 'default';\r\n }\r\n return 'pointer';\r\n } else return 'default';\r\n })\r\n .style('fill', function (d) {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n self.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >=\r\n parseFloat(self.chartData.targetLineData.target)\r\n )\r\n return self.chartData?.targetLineData?.barAboveTargetColor;\r\n\r\n return metaData.colors[d.key];\r\n });\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 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 /**\r\n svg\r\n .append('foreignObject')\r\n .attr('transform', 'translate(' + 0 + ',' + (yZero - 25) + ')')\r\n .attr('width', width)\r\n .attr('height', 30)\r\n .append('xhtml:div')\r\n .attr('class', 'target-display')\r\n .style('color', this.chartData.targetLineData.color)\r\n */\r\n\r\n /**\r\n * on hover, display title on top\r\n */\r\n function handleMouseOver(d, i) {\r\n if (!self.chartConfiguration.displayTitleOnTop) {\r\n return;\r\n }\r\n svg\r\n .selectAll('rect')\r\n .filter(function (data) {\r\n return data == d;\r\n })\r\n .style('fill', function (d) {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n self.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >=\r\n parseFloat(self.chartData.targetLineData.target)\r\n )\r\n return self.chartData.targetLineData.barAboveTargetHoverColor\r\n ? self.chartData.targetLineData.barAboveTargetHoverColor\r\n : self.chartData?.targetLineData?.barAboveTargetColor\r\n ? self.chartData?.targetLineData?.barAboveTargetColor\r\n : '';\r\n\r\n return metaData.hoverColor ? metaData.hoverColor : '';\r\n });\r\n\r\n svg\r\n .append('foreignObject')\r\n .attr('x', function () {\r\n if (xScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return (\r\n xScale(d.data.name) -\r\n leftAndRightSpaces +\r\n (xScale.bandwidth() + leftAndRightSpaces * 2 - 180) / 2\r\n );\r\n }\r\n return xScale(d.data.name) - leftAndRightSpaces;\r\n })\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', function () {\r\n // Increase the gap between the bar and the tooltip (was -1 - 40)\r\n return yScale(d[1]) - 1 - 50; // 10px more gap\r\n })\r\n .attr('dy', function () {\r\n return d.class;\r\n })\r\n .attr('width', function () {\r\n if (d.data.name && /week/i.test(d.data.name) && /\\d{4}-\\d{2}-\\d{2}/.test(d.data.name)) {\r\n return '250px'; // increase for week + date\r\n }\r\n\r\n if (xScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return '180px';\r\n }\r\n return xScale.bandwidth() + leftAndRightSpaces * 2;\r\n })\r\n .attr('height', 40)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(function () {\r\n // Tooltip content without any arrow mark\r\n if (!isNaN(d[1] - d[0])) {\r\n if (d[1] - d[0] === 0) {\r\n return '<span class=\"title-top-text\">0</span>';\r\n }\r\n var dataType = metaData.dataType ? metaData.dataType : '';\r\n var desiredText = '';\r\n // Always show the full x-axis label (category name) in the tooltip\r\n desiredText =\r\n '<span class=\"title-bar-name\">' +\r\n (d.data.name ? d.data.name : '') +\r\n '</span>';\r\n\r\n desiredText += metaData.unit\r\n ? '<span class=\"title-top-text\">' +\r\n metaData.unit +\r\n (d[1] - d[0]) + ' ' +\r\n dataType +\r\n '</span>'\r\n : '<span class=\"title-top-text\">' +\r\n (d[1] - d[0]) + ' ' +\r\n dataType +\r\n '</span>';\r\n\r\n // No arrow mark or arrow HTML/CSS in tooltip\r\n return desiredText;\r\n } else return;\r\n });\r\n\r\n }\r\n function handleMouseOut(d, i) {\r\n if (!self.chartConfiguration.displayTitleOnTop) {\r\n return;\r\n }\r\n // svg.selectAll('rect').style('fill', metaData.colors[d.key]);\r\n svg.selectAll('rect').style('fill', function (d) {\r\n if (\r\n !isNaN(d[0]) &&\r\n !isNaN(d[1]) &&\r\n self.chartData.targetLineData &&\r\n parseFloat(d[1]) - parseFloat(d[0]) >=\r\n parseFloat(self.chartData.targetLineData.target)\r\n )\r\n return self.chartData?.targetLineData?.barAboveTargetColor;\r\n\r\n return metaData.colors[d.key];\r\n });\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\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] == 0) {\r\n return;\r\n }\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\nif (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n if (isMobile) {\r\n // Custom x-axis label rendering for mobile: evenly distribute under each bar\r\n svg.selectAll('.custom-x-label').remove();\r\n data.forEach(function (d, i) {\r\n const xVal = leftAndRightSpaces + i * (barWidth + barPadding) + barWidth / 2;\r\n svg.append('text')\r\n .attr('class', 'custom-x-label')\r\n .attr('x', 0)\r\n .attr('y', height + 18)\r\n .attr('text-anchor', 'middle')\r\n .attr('transform', 'translate(' + (xVal + 20) + ',0)') // current value + 20\r\n .style('font-size', '10px')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('writing-mode', 'sideways-lr') // writing mode for mobile\r\n .text(d.name.substring(0, 3));\r\n });\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')\r\n .call(xAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('font-size', '12px')\r\n .attr('text-anchor', 'middle')\r\n .attr('dx', '0')\r\n .attr('dy', '0.71em')\r\n .attr('transform', null)\r\n .text(function (d) {\r\n return d;\r\n });\r\n }\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 .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\r\n}else if (this.chartConfiguration.isDrilldownChart) {\r\n svg\r\n .append('g')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .attr('class', 'lib-stacked-x-axis-text multichart1')\r\n .call(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', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(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', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis)\r\n .style('display', 'none')\r\n}\r\nelse {\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 .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', self.chartConfiguration.yAxisCustomTextStyles)\r\n .attr('transform', 'translate(0,0)')\r\n .call(yAxis)\r\n .selectAll('text')\r\n .style('fill', 'var(--chart-text-color)');\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 .style('color', '#000')\r\n\r\n .call(d3.axisBottom(xScale).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n 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\r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n svg.selectAll('.axis2 > g > text').attr('class', 'lib-display-hidden');\r\n // svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\r\n svg.selectAll('.x1.axis1 .tick line').attr('y2', function () {\r\n if (self.chartConfiguration.hideXaxisTick) {\r\n return 0;\r\n }\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('class', function () {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (data && data.length > 8) {\r\n return 'lib-xaxis-labels-texts-drilldown-alt';\r\n }\r\n return 'lib-xaxis-labels-texts-drilldown';\r\n } else return 'lib-xaxis-labels-texts-weeklycharts';\r\n })\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 if (self.chartConfiguration.xLabelsOnSameLine) {\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(function (d, i) {\r\n if (isMobile) {\r\n // If label has more than one word, show only first 3 letters of first word\r\n var firstWord = d.split(' ')[0];\r\n return firstWord.substring(0, 3);\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 .attr('transform', function(this: SVGTextElement, d, i) {\r\n if (isMobile) {\r\n var totalBars = 0;\r\n if (this.parentNode && this.parentNode.parentNode) {\r\n totalBars = d3.select(this.parentNode.parentNode).selectAll('g.tick').size();\r\n }\r\n if (totalBars === 2) {\r\n return 'translate(0,0)';\r\n } else {\r\n return 'translate(' + (i * 30) + ',0)';\r\n }\r\n }\r\n return null;\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(function (d) {\r\n // For mobile, do not print the second word at all\r\n if (isMobile) {\r\n return '';\r\n }\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 .attr('transform', function(d, i) {\r\n if (isMobile && i === 0) {\r\n return 'translate(20,0)';\r\n }\r\n return null;\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\nif (\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', 'var(--chart-grid-color)'); // Use CSS variable\r\n}\r\n /**\r\n * x axis color\r\n * used by weekly charts\r\n */\r\nif (this.chartConfiguration.isXaxisColor != undefined) {\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 * used to display y label\r\n */\r\nif (this.isZoomedOut && this.chartData.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\nfunction styleAxisDomain() {\r\n svg.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n \r\n svgYAxisLeft.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n \r\n svgYAxisRight.selectAll('.domain')\r\n .style('stroke', 'var(--chart-axis-color)')\r\n .style('stroke-width', '1px');\r\n}\r\n\r\nstyleAxisDomain();\r\n\r\n if (metaData.yLabel) {\r\n svgYAxisLeft.selectAll('.lib-axis-group-label, .lib-ylabel-drilldowncharts, .lib-ylabel-weeklyCharts').remove();\r\n function isAcronym(label) {\r\n return (label.length <= 4 && /^[A-Z]+$/.test(label)) || (label === label.toUpperCase() && /[A-Z]/.test(label));\r\n }\r\n const yLabelText = metaData.yLabel;\r\n const isAcr = isAcronym(yLabelText.replace(/[^A-Za-z]/g, ''));\r\n\r\n const yPosition = isria ? 0 - margin.left / 2 - 30 : 0 - margin.left / 2 - 40;\r\n\r\n svgYAxisLeft\r\n .append('text')\r\n\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-ylabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-ylabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\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', '1em')\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .style('color', 'var(--chart-text-color)')\r\n .text(isAcr ? yLabelText.toUpperCase() : yLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\r\n }\r\n if (this.chartData.targetLineData) {\r\n const yZero = yScale(parsedNum);\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', this.chartData.targetLineData.color);\r\n // svgYAxisRight\r\n // .append('line')\r\n // .attr('x1', 0)\r\n // .attr('x2', rightSvgWidth)\r\n // .attr('y1', yZero)\r\n // .attr('y2', yZero)\r\n // .style('stroke', this.chartData.targetLineData.color);\r\n svgYAxisRight\r\n .append('foreignObject')\r\n // .attr('transform', 'translate(' + 0 + ',' + (yZero - 30) + ')')\r\n .attr('transform', 'translate(' + 0 + ',' + (yZero - 13) + ')')\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\r\n .html(function (d, i) {\r\n let dataTypeTemp = '';\r\n let targetLineName = 'target';\r\n if (metaData.dataType) {\r\n dataTypeTemp = metaData.dataType;\r\n }\r\n if (\r\n self.chartData.targetLineData &&\r\n self.chartData.targetLineData.targetName\r\n ) {\r\n targetLineName = self.chartData.targetLineData.targetName;\r\n }\r\n return (\r\n `<div>${targetLineName}</div>` +\r\n '<div>' +\r\n self.chartData.targetLineData.target +\r\n '' +\r\n dataTypeTemp +\r\n '</div>'\r\n );\r\n });\r\n }\r\n rect\r\n .selectAll('rect')\r\n .on('mouseenter', handleMouseOver)\r\n .on('mouseout', handleMouseOut);\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\r\n if (metaData.xLabel) {\r\n function isAcronym(label) {\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 const xLabelText = metaData.xLabel;\r\n const isAcr = isAcronym(xLabelText.replace(/[^A-Za-z]/g, ''));\r\n\r\n const xPosition = isria ? (height + margin.top + margin.bottom) : (height + margin.top + margin.bottom + 10);\r\n\r\n svg\r\n .append('text')\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + xPosition + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcr ? xLabelText.toUpperCase() : xLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\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 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 // svg.attr('width', 150).style('max-width', 150).style('overflow-x', 'auto');\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 handleCompareByFilterSelection(event) {\r\n this.clickEvent.emit(event);\r\n }\r\n handleZoominZoomoutClick({ isZoomOut, event }) {\r\n // this.isZoomOutSelected(isZoomOut, event);\r\n this.isZoomOutSelected(isZoomOut);\r\n }\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 <!-- <span *ngIf=\"chartConfiguration.isComparebyDropdownVisible\">\r\n <lib-dropdown></lib-dropdown>\r\n </span> -->\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 initializegroupChart() {\r\n var 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 var formatFromBackend;\r\n var formatForHugeNumbers;\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\r\n let isria = this.customChartConfiguration.isRia\r\n\r\n var x: any;\r\n\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 = 5;\r\n var long_tick_length_bg = 30;\r\n var leftAndRightSpaces = 50;\r\n var rightSvgWidth = 60;\r\n var tempScale;\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 data = this.chartData.data;\r\n metaData = this.chartData.metaData;\r\n lineData = this.chartData.lineData;\r\n\r\n // if (lineData || this.chartData.targetLineData) {\r\n // rightSvgWidth = 60;\r\n // }\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 var chartContainer = d3.select(this.containerElt.nativeElement);\r\n var verticalstackedcontainer = d3.select(\r\n this.groupcontainerElt.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 if (this.chartData.data.length > 30 && this.isZoomedOut) {\r\n width =\r\n width > this.chartData.data.length * 40\r\n ? this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : width\r\n : this.chartData.dropdownData1\r\n ? this.chartData.data.length * 60\r\n : this.chartData.data.length * 40;\r\n\r\n width =\r\n width > this.chartData.data.length * 40\r\n ? width\r\n : this.chartData.data.length * 40;\r\n }\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 120 &&\r\n this.isZoomedOut\r\n ) {\r\n width = this.chartData.data.length * 120;\r\n }\r\n if (this.chartData.data.length > 8 && !this.isZoomedOut) {\r\n if (\r\n this.chartData.dropdownData2 &&\r\n width < this.chartData.data.length * 250\r\n ) {\r\n width = this.chartData.data.length * 250;\r\n } else width = this.chartData.data.length * 160;\r\n }\r\n // if (this.chartData.data.length > 8) {\r\n // width = this.chartData.data.length * 140;\r\n // }\r\n\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 != 70\r\n ? this.chartConfiguration.svgHeight\r\n : parseInt(verticalstackedcontainer.style('height'));\r\n }\r\n if (this.chartConfiguration.isDrilldownChart && !this.isHeaderVisible) {\r\n height =\r\n parseInt(verticalstackedcontainer.style('height')) -\r\n margin.top -\r\n margin.bottom -\r\n 130;\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 /**\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 (this.chartConfiguration.legendVisible != undefined) {\r\n this.legendVisible = this.chartConfiguration.legendVisible;\r\n }\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 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\r\n .style('overflow-x', 'hidden')\r\n .style('padding-left', `${margin.left}px`)\r\n // .call(ChartHelper.responsivefy)\r\n\r\n .style('padding-right', `${rightSvgWidth}px`)\r\n .style('margin-left', '15px');\r\n var 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('z-index', 1)\r\n .append('g')\r\n .attr(\r\n 'transform',\r\n 'translate(' + (margin.left + 15) + ',' + margin.top + ')'\r\n );\r\n\r\n var 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 var 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\r\n var svg = innerContainer\r\n .append('svg')\r\n // .attr('id', self.uniqueId)\r\n .attr('width', width - rightSvgWidth)\r\n .attr('height', height + margin.top + margin.bottom + 60)\r\n // .call(ChartHelper.responsivefy)\r\n .append('g')\r\n .attr('transform', 'translate(' + 0 + ',' + margin.top + ')');\r\n\r\n var subgroups: any = keyList;\r\n\r\n var groups = d3\r\n .map(data, function (d) {\r\n return d.name;\r\n })\r\n .keys();\r\n\r\n /**\r\n * x axis range made similar to line chart or vertical stack so that all the charts will get aligned with each other.\r\n */\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(\r\n data.map(function (d: any) {\r\n return d.name.toLowerCase();\r\n })\r\n );\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 // x.bandwidth(96);\r\n var xScaleFromOrigin = d3\r\n .scaleBand()\r\n .domain(groups)\r\n .range([0, width - rightSvgWidth]);\r\n // .padding([0.2]);\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('class', 'lib-line-axis-text lib-line-x-axis-text x-axis')\r\n // .attr('style', self.chartConfiguration.xAxisCustomTextStyles)\r\n // .call(d3.axisBottom(x).tickSize(0));\r\n // }\r\n // d3.svg.axis().scale(x).orient('bottom').ticks(1).innerTickSize(-height);\r\n if (this.chartConfiguration.isMultiChartGridLine == undefined) {\r\n /**\r\n * normal ticks for all dashboard charts\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))\r\n .call((g) => g.select('.domain').remove());\r\n\r\n svg.selectAll('g.x1.axis1 g.tick line').remove();\r\n\r\n // Only move x-axis labels further down for grouped charts if there is no xLabel\r\n if (subgroups.length > 1 && !metaData.xLabel) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)')\r\n .attr('y', 32); // Increase distance from bars (default is ~9)\r\n } else {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('fill', 'var(--chart-text-color)');\r\n }\r\n\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 } else {\r\n /**\r\n * bigger ticks for weekly charts and more space from x axis to labels\r\n */\r\n /**\r\n * draw x axis\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 * tick line size in alternate fashion\r\n */\r\n svg.selectAll('g.x1.axis1 g.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 * reset the flag so that values can be shown in same alternate fashion\r\n */\r\n alternate_text = false;\r\n /**\r\n * print x-axis label texts\r\n * used by weekly charts\r\n */\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 // Minimize gap in maximized (fullscreen) view for weekly charts\r\n if (self.chartConfiguration.isFullScreen) {\r\n return short_tick_length_bg;\r\n }\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 if (self.chartConfiguration.xLabelsOnSameLine) {\r\n const xAxisLabels = svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .attr('class', 'lib-xaxis-labels-texts-drilldown')\r\n .style('font-size', this.isHeaderVisible ? '18px' : '14px')\r\n .attr('text-anchor', 'middle')\r\n .attr('y', function(d) {\r\n // For grouped bar charts with many bars and xLabel present, only add 5 if the label is a date\r\n if (subgroups.length > 1 && data.length > 8 && metaData.xLabel) {\r\n const isDateLabel = /\\d{2,4}[-\\/]/.test(d);\r\n if (self.chartConfiguration.isFullScreen) {\r\n return isDateLabel ? short_tick_length_bg + 14 : short_tick_length_bg;\r\n }\r\n return isDateLabel ? short_tick_length_bg + 14 : short_tick_length_bg;\r\n }\r\n // For grouped bar charts with many bars and NO xLabel, add space as before, but reduce in fullscreen\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 // Reduce extra gap in maximized view\r\n return short_tick_length_bg + 2;\r\n }\r\n return chartHasExtraBottom ? short_tick_length_bg : short_tick_length_bg + 10;\r\n }\r\n // Default/fallback logic for other cases\r\n let baseY = self.isHeaderVisible ? short_tick_length_bg + 25 : short_tick_length_bg;\r\n if (\r\n subgroups.length > 1 &&\r\n !metaData.xLabel &&\r\n (/\\d{2,4}[-\\/]\\d{2}[-\\/]\\d{2,4}/.test(d) || /\\d{2,4}[-\\/]\\d{2,4}/.test(d))\r\n ) {\r\n baseY = self.isHeaderVisible ? short_tick_length_bg + 15 : short_tick_length_bg + 25;\r\n }\r\n if (/\\d{2,4}[-\\/]\\d{2,4}/.test(d) && d.indexOf(' ') > -1) {\r\n baseY += 4;\r\n }\r\n // In maximized view, reduce baseY slightly for grouped bars\r\n if (self.chartConfiguration.isFullScreen && subgroups.length > 1) {\r\n baseY = Math.max(short_tick_length_bg, baseY - 10);\r\n }\r\n return baseY;\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartData.data.length > 8 && !self.isZoomedOut) {\r\n return 1; // Move first line text slightly to the left in zoom-in view for better alignment\r\n }\r\n return 0; // Default position\r\n })\r\n .text(function (d) {\r\n var isValueToBeIgnored = false;\r\n if (isMobile && !self.isHeaderVisible) {\r\n let firstPart = d.split(/[\\s\\-]+/)[0];\r\n return firstPart.substring(0, 3).toLowerCase();\r\n }\r\n (data as any[]).map((indiv: any) => {\r\n if (\r\n indiv.name &&\r\n indiv.name.toLowerCase() == d.trim().toLowerCase() &&\r\n indiv[metaData.keyList[0]] == -1\r\n ) {\r\n isValueToBeIgnored = true;\r\n }\r\n });\r\n if (isValueToBeIgnored) {\r\n return '';\r\n }\r\n // Always add space before and after hyphen for date range labels, even when header is visible and label is single line\r\n // Apply for grouped bar charts and single bar charts, header visible, single line\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 // Split date and week labels into two lines in grouped bar zoom-in view (and minimized view)\r\n const isDateLabel = /\\d{2,4}[-\\/]/.test(d);\r\n const isWeekLabel = /week|wk|w\\d+/i.test(d);\r\n if (\r\n subgroups.length > 1 && !self.isZoomedOut && data.length > 8 && d.indexOf(' ') > -1 && (isDateLabel || isWeekLabel)\r\n ) {\r\n var first = d.substring(0, d.indexOf(' '));\r\n var second = d.substring(d.indexOf(' ') + 1).trim();\r\n return first + '\\n' + second;\r\n }\r\n // Also keep previous logic for minimized view\r\n if (isDateLabel) {\r\n if (!self.isHeaderVisible && data.length > 8 && d.indexOf(' ') > -1) {\r\n var first = d.substring(0, d.indexOf(' '));\r\n var second = d.substring(d.indexOf(' ') + 1).trim();\r\n return first + '\\n' + second;\r\n } else {\r\n return d;\r\n }\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 // If label looks like a date (contains digits and - or /)\r\n const isDateLabel2 = /\\d{2,4}[-\\/]/.test(d);\r\n // Only split date/week labels if there are many grouped bars and header is not visible\r\n if (isDateLabel) {\r\n if (!self.isHeaderVisible && data.length > 8 && d.indexOf(' ') > -1) {\r\n var first = d.substring(0, d.indexOf(' '));\r\n var second = d.substring(d.indexOf(' ') + 1).trim();\r\n return first + '\\n' + second;\r\n } else {\r\n return d;\r\n }\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 // Now apply writing-mode: sideways-lr for grouped charts with date labels in zoomed-out view and many bars\r\n xAxisLabels.each(function(this: SVGTextElement, d: any) {\r\n // Only apply writing-mode for exact date labels, not those containing 'week' or similar\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 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 if (!isMobile) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick')\r\n .filter(function (d) {\r\n return !/\\d{2,4}[-\\/]/.test(d); // Only process non-date labels\r\n })\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', 'var(--chart-text-color)')\r\n .attr('x', function (d) {\r\n if (self.chartData.data.length > 8 && !self.isZoomedOut) {\r\n return 1; // Move text slightly to the left\r\n }\r\n return 0; // Default position\r\n })\r\n .text(function (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 if (isria && self.chartData.data.length > 8) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .classed('mobile-xaxis-override', true)\r\n .text(function (d: string) {\r\n return d.substring(0, 3);\r\n })\r\n .style('font-size', '12px') \r\n .attr('y', 5) \r\n .attr('x', 5) \r\n .style('text-anchor', 'middle');\r\n }\r\n if (isMobile && !this.isHeaderVisible) {\r\n svg\r\n .selectAll('g.x1.axis1 g.tick text')\r\n .classed('mobile-xaxis-override', true);\r\n }\r\n /**y scale for left y axis */\r\n var y = d3.scaleLinear().rangeRound([height, 0]);\r\n var maxValue = d3.max(data, (d) => d3.max(keyList, (key) => +d[key]));\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 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', '#B9B9B9')\r\n // .style('opacity', '0.5')\r\n // .call((g) => g.select('.domain').remove());\r\n }\r\n if (this.chartConfiguration.customYscale) {\r\n /**\r\n * increase y-scale so that values wont cross or exceed out of range\r\n * used in weekly charts\r\n */\r\n maxValue = maxValue * this.chartConfiguration.customYscale;\r\n }\r\n if (\r\n this.chartData.targetLineData &&\r\n maxValue < this.chartData.targetLineData.target\r\n ) {\r\n maxValue =\r\n 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 y.domain([0, maxValue]).nice();\r\n let lineYscale;\r\n\r\n if (lineData != null) {\r\n let maxLineValue = d3.max(lineData, function (d) {\r\n return +d.value;\r\n });\r\n\r\n maxLineValue = maxLineValue * this.chartConfiguration.customYscale;\r\n\r\n let minLineValue = d3.min(lineData, function (d) {\r\n return +d.value;\r\n });\r\n if (maxLineValue > 0) minLineValue = minLineValue - 3;\r\n if (minLineValue > 0) {\r\n minLineValue = 0;\r\n }\r\n lineYscale = d3\r\n .scaleLinear()\r\n .domain([minLineValue, maxLineValue])\r\n .range([height, minLineValue]);\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 * show x-axis grid between labels\r\n * used by weekly 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(' + x.bandwidth() / 2 + ',' + height + ')'\r\n )\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)') // Use CSS variable\r\n .call((g) => g.select('.domain').remove());\r\n }\r\n\r\n if (this.chartConfiguration.yAxisGrid) {\r\n svg\r\n .append('g')\r\n .call(\r\n d3\r\n .axisLeft(y)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickSize(-width)\r\n )\r\n .style('color', 'var(--chart-axis-color, #B9B9B9)')\r\n .style('opacity', '0.5')\r\n .call((g) => {\r\n g.select('.domain')\r\n .remove()\r\n .style('stroke', 'var(--chart-domain-color, #000000)'); // Add CSS variable for domain\r\n });\r\n } else {\r\n svg\r\n .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) => {\r\n g.select('.domain')\r\n .style('stroke', 'var(--chart-domain-color, #000000)') // Add CSS variable for domain\r\n .style('stroke-width', '1px'); // Ensure visibility\r\n });\r\n }\r\n\r\n var xSubgroup = d3.scaleBand().domain(subgroups);\r\n if (subgroups.length > 1 && !this.isZoomedOut) {\r\n // For grouped bar charts in zoom-in view, use full x.bandwidth() for subgroups\r\n xSubgroup.range([0, x.bandwidth()]);\r\n } else if (subgroups.length === 1 && !this.isZoomedOut) {\r\n // For single-bar (non-grouped) charts in zoom-in view, set bar width to 100 (increased from 80)\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 // used to make grouped bars with lesser width as we are not using padding for width\r\n xSubgroup.range([0, x.bandwidth()]);\r\n }\r\n // if (this.chartConfiguration.isDrilldownChart) {\r\n\r\n // }\r\n var color = d3\r\n .scaleOrdinal()\r\n .domain(subgroups)\r\n .range(Object.values(metaData.colors));\r\n // var colorAboveTarget = d3\r\n // .scaleOrdinal()\r\n // .domain(subgroups)\r\n // .range(Object.values(metaData.colorAboveTarget));\r\n var 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', function (d) {\r\n return 'translate(' + x(d.name) + ',0)';\r\n });\r\n state\r\n .selectAll('rect')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n // if (key !== \"group\") {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n // }\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('rect')\r\n .attr('class', 'bars')\r\n .on('click', function (d) {\r\n if (d.key != 'Target') {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n // self.handleClick(d.data.name);\r\n self.handleClick(d);\r\n }\r\n })\r\n .attr('x', function (d) {\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 // Increase bar width a bit in zoom-in view\r\n let reducedBarWidth = 60;\r\n if (!self.isZoomedOut) {\r\n reducedBarWidth = 30;\r\n }\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n }\r\n }\r\n });\r\n return tempScale(d.key);\r\n }\r\n return xSubgroup(d.key);\r\n })\r\n .attr('y', function (d) {\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 .attr('width', function (d) {\r\n // For grouped bar charts in zoom-in view, set bar width to 50 for maximum thickness\r\n if (subgroups.length > 1 && !self.isZoomedOut) {\r\n return 50;\r\n }\r\n // For single-bar (non-grouped) charts in zoom-in view, set bar width to 80\r\n if (subgroups.length === 1 && !self.isZoomedOut) {\r\n return 80;\r\n }\r\n let tempScale = d3.scaleBand().domain([]).range([0, 0]);\r\n // Default logic for other chart types\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 // Increase bar width a bit in zoom-in view\r\n let reducedBarWidth = 60;\r\n if (!self.isZoomedOut) {\r\n reducedBarWidth = 100;\r\n }\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - reducedBarWidth) / 2,\r\n x.bandwidth() - (x.bandwidth() - reducedBarWidth) / 2,\r\n ]);\r\n }\r\n }\r\n });\r\n return self.isZoomedOut\r\n ? tempScale.bandwidth()\r\n : self.chartData.data.length && self.chartData.data.length > 8\r\n ? tempScale.bandwidth() \r\n : tempScale.bandwidth();\r\n }\r\n return self.isZoomedOut\r\n ? tempScale.bandwidth()\r\n : self.chartData.data.length && self.chartData.data.length > 8\r\n ? tempScale.bandwidth()\r\n : tempScale.bandwidth();\r\n })\r\n .attr('height', function (d) {\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 .style('cursor', function (d) {\r\n if (metaData.hasDrillDown && !isria) return 'pointer';\r\n else return 'default';\r\n })\r\n .attr('fill', function (d) {\r\n if (\r\n d.value &&\r\n 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).find(\r\n 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\n /**\r\n * display angled texts on the bars\r\n */\r\n if (this.chartConfiguration.textsOnBar != undefined && !this.isZoomedOut) {\r\n state\r\n .selectAll('text')\r\n .data(function (d) {\r\n let newList: any = [];\r\n subgroups.map(function (key) {\r\n let obj: any = { key: key, value: d[key], name: d.name };\r\n newList.push(obj);\r\n });\r\n return newList;\r\n })\r\n .enter()\r\n .append('text')\r\n .attr('fill', 'var(--chart-text-color)')\r\n .attr('x', function (d) {\r\n return 0;\r\n })\r\n .attr('y', function (d) {\r\n return 0;\r\n })\r\n .attr('class', 'lib-data-labels-weeklycharts')\r\n .text(function (d) {\r\n return d.key && d.value\r\n ? d.key.length > 20\r\n ? d.key.substring(0, 17) + '...'\r\n : d.key\r\n : '';\r\n })\r\n .style('fill', function (d) {\r\n return '#000';\r\n })\r\n .style('font-weight', 'bold')\r\n .style('font-size', function (d) {\r\n if (self.isZoomedOut) {\r\n return '9px'; // 👈 Zoomed out mode\r\n }\r\n\r\n if (self.chartConfiguration.isDrilldownChart) {\r\n if (window.innerWidth > 1900) {\r\n return '18px';\r\n } else if (window.innerWidth < 1400) {\r\n return '10px';\r\n } else {\r\n return '14px';\r\n }\r\n } else {\r\n return '14px';\r\n }\r\n })\r\n .attr('transform', function (d) {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n var temp;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n // .padding(0.05);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 2,\r\n ]);\r\n // .padding(0.05);\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 }\r\n });\r\n /**\r\n * if set, then all texts ll be horizontal\r\n */\r\n if (self.chartConfiguration.textAlwaysHorizontal) {\r\n return (\r\n 'translate(' + xSubgroup(d.key) + ',' + (y(d.value) - 3) + ')'\r\n );\r\n }\r\n /**\r\n * rotate texts having more than one digits\r\n */\r\n // if (d.value > 9)\r\n if (!isNaN(tempScale(d.key)))\r\n return (\r\n 'translate(' +\r\n (tempScale(d.key) + tempScale.bandwidth() * 0.55) +\r\n ',' +\r\n (y(0) - 10) +\r\n ') rotate(270)'\r\n );\r\n return 'translate(0,0)';\r\n // else\r\n // return (\r\n // 'translate(' +\r\n // (tempScale(d.key) + tempScale.bandwidth() / 2) +\r\n // ',' +\r\n // y(0) +\r\n // ')'\r\n // );\r\n })\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n if (!isria) {\r\n state\r\n .selectAll('.lib-data-labels-weeklycharts')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n if (this.chartConfiguration.displayTitleOnTop || (\r\n this.chartConfiguration.textsOnBar == undefined &&\r\n this.chartConfiguration.displayTitleOnTop == undefined\r\n )) {\r\n\r\n if (!isria) {\r\n state\r\n .selectAll('rect')\r\n .on('mouseout', handleMouseOut)\r\n .on('mouseover', handleMouseOver);\r\n }\r\n }\r\n function handleMouseOver(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n svg\r\n .append('foreignObject')\r\n .attr('x', function () {\r\n // ...existing code for tempScale calculation...\r\n var elementsCounter;\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let keys = Object.keys(indiv).filter((temp, i) => i != 0);\r\n elementsCounter = keys.length;\r\n tempScale = d3.scaleBand().domain(keys).range([0, x.bandwidth()]);\r\n if (x.bandwidth() > 100) {\r\n if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 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 }\r\n });\r\n if (metaData.hasDrillDown) {\r\n if (tempScale.bandwidth() + leftAndRightSpaces * 2 > 180) {\r\n return (\r\n x(d.name) + tempScale(d.key) + tempScale.bandwidth() / 2 - 90\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 } else return x(d.name) + tempScale(d.key) - (tempScale.bandwidth() + leftAndRightSpaces * 2) / 2 + tempScale.bandwidth() / 2;\r\n })\r\n .attr('class', 'lib-verticalstack-title-ontop')\r\n .attr('y', function () {\r\n return y(d.value) - 3 - 40 - 10;\r\n })\r\n .attr('dy', function () {\r\n return d.class;\r\n })\r\n .attr('width', function () {\r\n data.map((indiv: any) => {\r\n if (indiv.name == d.name) {\r\n let 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 if (self.chartData.data.length == 1) {\r\n if (Object.keys(self.chartData.data[0]).length == 2) {\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 200) / 2,\r\n x.bandwidth() - (x.bandwidth() - 200) / 2,\r\n ]);\r\n } else\r\n tempScale.range([\r\n 0 + (x.bandwidth() - 300) / 2,\r\n x.bandwidth() - (x.bandwidth() - 300) / 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 }\r\n });\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 } else return tempScale.bandwidth() + leftAndRightSpaces * 2;\r\n })\r\n .attr('height', 50)\r\n .append('xhtml:div')\r\n .attr('class', 'title')\r\n .style('z-index', 99)\r\n .html(function () {\r\n let barLabel = d.key;\r\n let dataType = metaData.dataType ? metaData.dataType : '';\r\n let value = d.value;\r\n let desiredText =\r\n '<span class=\"title-bar-name\">' + barLabel + '</span>';\r\n desiredText +=\r\n '<span class=\"title-bar-value\"><span>' +\r\n value +\r\n '</span>' +\r\n dataType +\r\n '</span>';\r\n return desiredText;\r\n });\r\n }\r\n function handleMouseOut(d, i) {\r\n svg.selectAll('.lib-verticalstack-title-ontop').remove();\r\n }\r\n svg\r\n .append('g')\r\n .attr('class', 'x2 axis2')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .style('color', 'var(--chart-axis-color, #000)') // Use CSS variable instead of hardcoded #000\r\n .call(d3.axisBottom(xScaleFromOrigin).tickSize(0))\r\n .call((g) => g.select('.domain').attr('fill', 'none'));\r\n svg.selectAll('g.x2.axis2 g.tick text').style('display', 'none');\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(y)\r\n .style('display', 'none');\r\n svgYAxisLeft\r\n .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(\r\n d3\r\n .axisLeft(y)\r\n .tickSize(0)\r\n .ticks(self.chartConfiguration.numberOfYTicks)\r\n .tickFormat(function (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 )\r\n .call((g) => {\r\n // Style the domain line for theme support\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('fill', 'var(--chart-text-color)');\r\n svgYAxisRight\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(y)\r\n .style('display', 'none');\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('g.lib-line-x-axis-text > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.yaxis-dashed > g > text').attr(\r\n 'class',\r\n 'lib-display-hidden'\r\n );\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('.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', 'var(--chart-axis-color, #999999)'); // Use CSS variable\r\n }\r\n if (lineData != null) {\r\n if (lineData && self.chartConfiguration.showLineChartAxis) {\r\n svgYAxisRight\r\n .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 /**\r\n * used to display y label\r\n */\r\n\r\n // if (this.isZoomedOut) {\r\n // svg\r\n // .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n // .attr('class', 'lib-display-hidden');\r\n // }\r\n\r\n if (this.isZoomedOut) {\r\n // svg\r\n // .selectAll('.lib-xaxis-labels-texts-drilldown')\r\n // .attr('transform', 'rotate(-30)')\r\n // .attr('text-anchor', 'end')\r\n // .attr('x', '-5')\r\n // .attr('dy', null)\r\n // .style('fill', 'var(--chart-text-color)');\r\n svg\r\n .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 // If label contains \\n, split and use tspan for each line\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 // Fallback: split by space for other labels\r\n const words = label.split(' ');\r\n text.text(null);\r\n words.forEach((word, index) => {\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); // Remove rotate if using line breaks\r\n\r\n // Optional: Adjust bottom margin or chart layout\r\n svg\r\n .select('.x-axis')\r\n .attr('transform', `translate(0, ${height - margin.bottom + 10})`);\r\n }\r\n\r\n /**\r\n * used to write y labels based on configuration\r\n */\r\nif (metaData.yLabel) {\r\n const yPosition = isria ? 0 - margin.left / 2 - 30 : 0 - margin.left / 2 - 40;\r\n\r\n svgYAxisLeft\r\n .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', '1em')\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\r\n .selectAll('.lib-axis-group-label')\r\n .style('font-size', 'smaller')\r\n .text(metaData.yLabel);\r\n } else {\r\n svg\r\n .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 if (this.chartData.targetLineData) {\r\n const yZero = y(this.chartData.targetLineData.target);\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', this.chartData.targetLineData.color);\r\n // svgYAxisRight\r\n // .append('line')\r\n // .attr('x1', 0)\r\n // .attr('x2', rightSvgWidth)\r\n // .attr('y1', yZero)\r\n // .attr('y2', yZero)\r\n // .style('stroke', this.chartData.targetLineData.color);\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(function () {\r\n let dataTypeTemp = '';\r\n let targetLineName = 'target';\r\n if (metaData.dataType) {\r\n dataTypeTemp = metaData.dataType;\r\n }\r\n if (\r\n self.chartData.targetLineData &&\r\n self.chartData.targetLineData.targetName\r\n ) {\r\n targetLineName = self.chartData.targetLineData.targetName;\r\n }\r\n return (\r\n `<div>${targetLineName}</div>` +\r\n '<div>' +\r\n self.chartData.targetLineData.target +\r\n '' +\r\n dataTypeTemp +\r\n '</div>'\r\n );\r\n });\r\n }\r\n if (this.chartConfiguration.isDrilldownChart) {\r\n /**\r\n * used by drilldown charts\r\n */\r\n // svg\r\n // .selectAll('.lib-axis-group-label')\r\n // .attr('class', 'lib-ylabel-drilldowncharts')\r\n // .text(metaData.yLabel.toLowerCase());\r\n svg.selectAll('g.x1.axis1 g.tick line').style('display', 'none');\r\n }\r\n\r\n if (metaData.xLabel) {\r\n function isAcronym(label) {\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 const xLabelText = metaData.xLabel;\r\n const isAcr = isAcronym(xLabelText.replace(/[^A-Za-z]/g, ''));\r\n\r\n const xPosition = isria ? (height + margin.top + margin.bottom) : (height + margin.top + margin.bottom + 40);\r\n\r\n svg\r\n .append('text')\r\n .attr('class', function () {\r\n let baseClass = 'lib-axis-group-label font-size-1';\r\n if (self.chartConfiguration.isDrilldownChart)\r\n return baseClass + ' lib-xlabel-drilldowncharts';\r\n if (self.chartConfiguration.isMultiChartGridLine != undefined)\r\n return baseClass + ' lib-xlabel-weeklyCharts';\r\n return baseClass + ' lib-axis-waterfall-label';\r\n })\r\n .attr('style', self.chartConfiguration.xAxisCustomlabelStyles)\r\n .attr(\r\n 'transform',\r\n 'translate(' + width / 2 + ' ,' + xPosition + ')'\r\n )\r\n .style('text-anchor', 'middle')\r\n .style('fill', 'var(--chart-text-color)')\r\n .text(isAcr ? xLabelText.toUpperCase() : xLabelText.toLowerCase())\r\n .style('text-transform', isAcr ? 'none' : 'capitalize');\r\n }\r\n if (metaData.lineyLabel) {\r\n svgYAxisRight\r\n .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', 0 - 100)\r\n .attr('x', 0 + 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 if (lineData) {\r\n svg\r\n .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(\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 lineYscale(d.value);\r\n })\r\n );\r\n\r\n var dot = svg\r\n .selectAll('myCircles')\r\n .data(lineData)\r\n .enter()\r\n .append('g')\r\n .on('click', function (d) {\r\n if (\r\n !metaData.barWithoutClick ||\r\n !metaData.barWithoutClick.length ||\r\n (!metaData.barWithoutClick.includes(d?.name) &&\r\n !metaData.barWithoutClick.includes(d?.key))\r\n )\r\n self.handleClick(d);\r\n });\r\n\r\n dot\r\n .append('circle')\r\n .attr('fill', function (d) {\r\n return self.chartConfiguration.lineGraphColor;\r\n })\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 lineYscale(d.value);\r\n })\r\n .style('cursor', () =>\r\n self.chartData.metaData.hasDrillDown ? 'pointer' : 'default'\r\n )\r\n .attr('r', 3);\r\n\r\n if (self.chartConfiguration.lineGraphColor) {\r\n dot\r\n .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', function (d, i) {\r\n return x(d.name) + x.bandwidth() / 2;\r\n })\r\n .attr('y', function (d) {\r\n return lineYscale(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 }\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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"}