UNPKG

@asoftwareworld/charts

Version:

`ASW Charts` helps you with the Highcharts library comes with all the tools you need to create reliable and secure data visualizations and Built on Angular.

1 lines 18.2 kB
{"version":3,"file":"asoftwareworld-charts-line.mjs","sources":["../../src/app/component/line/component/line.ts","../../src/app/component/line/component/line.html","../../src/app/component/line/line.module.ts","../../src/app/component/line/public_api.ts","../../src/app/component/line/asoftwareworld-charts-line.ts"],"sourcesContent":["import { CurrencyPipe } from '@angular/common';\nimport {\n AfterViewInit,\n Component,\n ElementRef,\n EventEmitter,\n HostListener,\n Input,\n OnChanges,\n Output,\n ViewChild\n} from '@angular/core';\nimport {\n AswChartConstants,\n AswCurrencyPipe,\n ChartLegendTypeEnum,\n ChartPointerEvent,\n CurrencyCodeEnum,\n GridOptionsEnum,\n LegendLayoutEnum,\n LegendPositionEnum,\n} from '@asoftwareworld/charts/core';\nimport { ObjectUtils } from '@asoftwareworld/charts/utils';\nimport * as Highcharts from 'highcharts';\nimport {\n AlignValue,\n Options,\n PointClickEventObject,\n PointOptionsObject,\n Point,\n Series,\n SeriesPieOptions,\n VerticalAlignValue\n} from 'highcharts';\n\n@Component({\n selector: 'asw-line',\n templateUrl: './line.html',\n styleUrls: ['./line.scss']\n})\nexport class AswLine implements OnChanges, AfterViewInit {\n\n private cloneConfiguration!: Options;\n public deviceSize: GridOptionsEnum = GridOptionsEnum.Large;\n private viewInitialized = false;\n @Input() config!: Options;\n @Input() isLegendSort = true;\n @Input() isLegendDisplay = true;\n @Input() currencyCode: CurrencyCodeEnum = CurrencyCodeEnum.INR;\n @Input() legendPosition: LegendPositionEnum = LegendPositionEnum.Right;\n @Input() legendType: ChartLegendTypeEnum = ChartLegendTypeEnum.Both;\n @Input() legendWidthPx = 250;\n @Input() legendLayout: LegendLayoutEnum = LegendLayoutEnum.Vertical;\n\n @Output() linePointClick: EventEmitter<any> = new EventEmitter<any>();\n\n @ViewChild('lineChart', { static: true }) lineChart!: ElementRef;\n constructor(\n private currencyPipe: CurrencyPipe,\n private aswCurrencyPipe: AswCurrencyPipe) { }\n\n ngOnChanges(): void {\n if (!this.viewInitialized) {\n return;\n }\n this.initializeChart();\n }\n\n ngAfterViewInit(): void {\n this.viewInitialized = true;\n this.initializeChart();\n }\n\n initializeChart(): void {\n if (this.config) {\n this.cloneConfiguration = this.config;\n const containerWidth = this.lineChart.nativeElement.clientWidth;\n this.deviceSize = ObjectUtils.findDeviceSize(containerWidth);\n this.removeChartCredit();\n this.setLineChartTooltip();\n const series: SeriesPieOptions[] = this.cloneConfiguration.series as SeriesPieOptions[];\n this.setLineChartSeriesOptions(series);\n if (this.legendLayout === LegendLayoutEnum.Vertical) {\n this.setLineChartLegendOption(this.legendWidthPx);\n }\n this.clickOnLinePoint();\n Highcharts.chart(this.lineChart.nativeElement, this.cloneConfiguration);\n }\n }\n\n @HostListener('window:resize')\n onResize(): void {\n this.initializeChart();\n }\n\n private removeChartCredit(): void {\n this.cloneConfiguration.credits = {\n enabled: false\n };\n }\n\n private setLineChartTooltip(): void {\n const this$: this = this;\n this.cloneConfiguration.tooltip = {\n useHTML: true,\n split: false,\n backgroundColor: AswChartConstants.blackColor,\n borderColor: AswChartConstants.blackColor,\n style: {\n color: AswChartConstants.whiteColor,\n fontWeight: AswChartConstants.fontWeight\n },\n borderRadius: 0,\n enabled: true,\n formatter(): string {\n return `\n <div class=\"row\">\n <div class=\"col-md-12 text-end text-right\">\n <strong>${this.point.category}</strong>\n </div>\n <div class=\"col-md-12 text-end text-right\">\n <span style=\"color: ${this.point.color}\">\\u25A0</span>\n <strong>${this.point.series.name}</strong>\n </div>\n <div class=\"col-md-12 text-end text-right\">\n ${this$.currencyPipe.transform(this.point.options.y, this$.currencyCode)}\n </div>\n </div>\n `;\n }\n };\n }\n\n private clickOnLinePoint(): void {\n // tslint:disable-next-line:no-non-null-assertion\n this.cloneConfiguration.plotOptions!.line = {\n point: {\n events: {\n click: ((event: PointClickEventObject) => {\n const pointClickEvent: ChartPointerEvent = {\n name: event.point.series.name,\n index: event.point.index,\n value: event.point.options.y,\n category: event.point.category\n };\n this.linePointClick.emit(pointClickEvent);\n })\n }\n }\n };\n }\n\n private setLineChartSeriesOptions(series: SeriesPieOptions[]): void {\n series.forEach((seriesOption: SeriesPieOptions) => {\n seriesOption.allowPointSelect = true;\n seriesOption.showInLegend = true;\n seriesOption.cursor = AswChartConstants.pointer;\n const data: PointOptionsObject[] = seriesOption.data as PointOptionsObject[];\n // this.handleNegativeSeriesData(data);\n // const sortedSeriesOptionData: PointOptionsObject[] = this.isLegendSort ? this.sortSeriesData(data) : data;\n // seriesOption.data = sortedSeriesOptionData;\n });\n }\n\n private sortSeriesData(data: PointOptionsObject[]): PointOptionsObject[] {\n if (this.legendType === ChartLegendTypeEnum.Default) {\n data.sort((a: any, b: any) => {\n return ('' + a.name).localeCompare(b.name);\n });\n return data;\n } else {\n data.sort((a: any, b: any) => {\n if (a.y && b.y) {\n return a.value - b.value;\n } else {\n return 0;\n }\n });\n data.reverse();\n return data;\n }\n }\n\n private handleNegativeSeriesData(data: PointOptionsObject[]): void {\n data.forEach((element: PointOptionsObject) => {\n element.value = element.y;\n element.y = element.y ? Math.abs(element.y) : 0.001;\n });\n }\n\n private setLineChartLegendOption(legendWidthPx: number): void {\n const this$: this = this;\n this.cloneConfiguration.legend = {\n useHTML: true,\n enabled: this.isLegendDisplay,\n floating: false,\n align: this.setLegendAlignment(),\n layout: 'vertical',\n verticalAlign: this.setLegendVerticalAlignment(),\n symbolHeight: 10,\n symbolWidth: 10,\n symbolRadius: 0,\n itemMarginTop: 3, // Space between each category in the legend\n itemMarginBottom: 3,\n itemStyle: {\n fontSize: this.deviceSize === GridOptionsEnum.ExtraSmall ? '12px' : '14px',\n fontWeight: AswChartConstants.fontWeight\n },\n width: legendWidthPx + 15,\n title: {\n text: this$.setLineChartLegendWithHeader(legendWidthPx + 15),\n style: {\n fontSize: this.deviceSize === GridOptionsEnum.ExtraSmall\n ? AswChartConstants.fontSize12 : AswChartConstants.fontSize14,\n color: '#6c757d',\n fontWeight: AswChartConstants.fontWeight,\n fontFamily: '500 14px/20px Google Sans Text,Arial,Helvetica,sans-serif'\n }\n },\n labelFormatter(): string {\n const point: any = this as Point;\n const value = point.yData.reduce((acc: any, cur: any) => acc + cur, 0);\n return this$.setLineChartLegendWithHeader(\n legendWidthPx,\n point.name,\n value);\n }\n };\n }\n\n private setLegendAlignment(): AlignValue {\n if (this.deviceSize === GridOptionsEnum.ExtraSmall) {\n return 'center';\n } else if (this.legendPosition === LegendPositionEnum.Right) {\n return LegendPositionEnum.Right;\n } else if (this.legendPosition === LegendPositionEnum.Left) {\n return LegendPositionEnum.Left;\n } else {\n return 'center';\n }\n }\n\n private setLegendVerticalAlignment(): VerticalAlignValue {\n if (this.deviceSize === GridOptionsEnum.ExtraSmall) {\n return LegendPositionEnum.Bottom;\n } else if (this.legendPosition === LegendPositionEnum.Right) {\n return 'middle';\n } else if (this.legendPosition === LegendPositionEnum.Left) {\n return 'middle';\n } else {\n return LegendPositionEnum.Bottom;\n }\n }\n\n private setLineChartLegendWithHeader(\n legendWidthPx: number,\n name?: string | null,\n value?: number | null | undefined): string {\n let legendCategoryWidthPx: number;\n let legendValueWidthPx: number;\n if (this.legendType === ChartLegendTypeEnum.Default) {\n return `\n <div style=\"width:${legendWidthPx}px\">\n <div class=\"row\">\n <div class=\"col-md-12 col-sm-12 col-12\">\n ${name ? name : 'Category'}\n </div>\n </div>\n </div>`;\n } else {\n legendCategoryWidthPx = legendWidthPx * 0.5;\n legendValueWidthPx = legendWidthPx * 0.5;\n return `\n <div style=\"width:${legendCategoryWidthPx + legendValueWidthPx}px\">\n <div class=\"row\">\n <div class=\"col-md-6 col-sm-6 col-6\">\n ${name ? name : 'Category'}\n </div>\n <div class=\"col-md-6 col-sm-6 col-6 text-end text-right\">\n ${value ? this.currencyPipe.transform(value, this.currencyCode, 'symbol', '.2') : 'Total'}\n </div>\n </div>\n </div>`;\n }\n }\n}\n","<div #lineChart></div>","import { NgModule } from '@angular/core';\nimport { CommonModule, CurrencyPipe, PercentPipe } from '@angular/common';\nimport { AswLine } from './component/line';\nimport { AswCurrencyPipe } from '@asoftwareworld/charts/core';\n\n@NgModule({\n declarations: [\n AswLine\n ],\n imports: [\n CommonModule\n ],\n exports: [\n AswLine\n ],\n providers: [\n PercentPipe,\n AswCurrencyPipe,\n CurrencyPipe\n ]\n})\nexport class AswLineModule { }\n","/**\r\n * @license\r\n * Copyright ASW (A Software World) All Rights Reserved.\r\n *\r\n * Use of this source code is governed by an MIT-style license that can be\r\n * found in the LICENSE file\r\n */\r\n\r\nexport * from './component/line';\r\nexport * from './line.module';\r\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public_api';\n"],"names":[],"mappings":"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"}