pace-chart-lib 0.0.7 → 0.0.9

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.
Files changed (150) hide show
  1. package/README.md +10 -10
  2. package/dist/Components1/Charts/ChartsWithAxis/ChartsWithAxisFunctions.d.ts +46 -0
  3. package/dist/Components1/Charts/ChartsWithAxis/ChartsWithAxisFunctions.js +2285 -0
  4. package/dist/Components1/Charts/ChartsWithAxis/ChartsWithAxisTypes.type.d.ts +169 -0
  5. package/dist/Components1/Charts/ChartsWithAxis/ChartsWithAxisTypes.type.js +47 -0
  6. package/dist/Components1/Charts/ChartsWithAxis/LineFamily/LineChart.d.ts +4 -0
  7. package/dist/Components1/Charts/ChartsWithAxis/LineFamily/LineChart.js +403 -0
  8. package/dist/Components1/Charts/ChartsWithoutAxis/ChartsWithoutAxisFunctions.d.ts +0 -0
  9. package/dist/Components1/Charts/ChartsWithoutAxis/ChartsWithoutAxisFunctions.js +0 -0
  10. package/dist/Components1/Charts/ChartsWithoutAxis/ChartsWithoutAxisTypes.type.d.ts +0 -0
  11. package/dist/Components1/Charts/ChartsWithoutAxis/ChartsWithoutAxisTypes.type.js +0 -0
  12. package/dist/Components1/Charts/Core/Common.type.d.ts +8 -0
  13. package/dist/Components1/Charts/Core/Common.type.js +9 -0
  14. package/dist/Components1/Charts/Core/CommonFunctions.d.ts +12 -0
  15. package/dist/Components1/Charts/Core/CommonFunctions.js +512 -0
  16. package/dist/Components1/Charts/Core/DefaultProperties.d.ts +586 -0
  17. package/dist/Components1/Charts/Core/DefaultProperties.js +585 -0
  18. package/dist/Services/ErrorLog.d.ts +1 -0
  19. package/dist/Services/ErrorLog.js +3 -0
  20. package/dist/components/Charts/ChartsWithAxis/AreaFamily/AreaChart.d.ts +4 -0
  21. package/dist/components/Charts/ChartsWithAxis/AreaFamily/AreaChart.js +497 -0
  22. package/dist/components/Charts/ChartsWithAxis/AreaFamily/LineChart.d.ts +4 -0
  23. package/dist/components/Charts/ChartsWithAxis/AreaFamily/LineChart.js +491 -0
  24. package/dist/components/Charts/ChartsWithAxis/AreaFamily/NormalizedStackAreaChart.d.ts +4 -0
  25. package/dist/components/Charts/ChartsWithAxis/AreaFamily/NormalizedStackAreaChart.js +520 -0
  26. package/dist/components/Charts/ChartsWithAxis/AreaFamily/NormalizedStackLineChart.d.ts +4 -0
  27. package/dist/components/Charts/ChartsWithAxis/AreaFamily/NormalizedStackLineChart.js +553 -0
  28. package/dist/components/Charts/ChartsWithAxis/AreaFamily/StackAreaChart.d.ts +4 -0
  29. package/dist/components/Charts/ChartsWithAxis/AreaFamily/StackAreaChart.js +519 -0
  30. package/dist/components/Charts/ChartsWithAxis/AreaFamily/StackLineChart.d.ts +4 -0
  31. package/dist/components/Charts/ChartsWithAxis/AreaFamily/StackLineChart.js +553 -0
  32. package/dist/components/Charts/ChartsWithAxis/BarFamily/BarChart.d.ts +12 -0
  33. package/dist/components/Charts/ChartsWithAxis/BarFamily/BarChart.js +9 -0
  34. package/dist/components/Charts/ChartsWithAxis/ChartsWithAxisFunctions.d.ts +623 -0
  35. package/dist/components/Charts/ChartsWithAxis/ChartsWithAxisFunctions.js +4897 -0
  36. package/dist/components/Charts/ChartsWithAxis/ChartsWithAxisTypes.type.d.ts +0 -0
  37. package/dist/components/Charts/ChartsWithAxis/ChartsWithAxisTypes.type.js +0 -0
  38. package/dist/components/Charts/ChartsWithAxis/ChartsWithAxisTypes.types.d.ts +173 -0
  39. package/dist/components/Charts/ChartsWithAxis/ChartsWithAxisTypes.types.js +49 -0
  40. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/ColumnChart copy.d.ts +4 -0
  41. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/ColumnChart copy.js +486 -0
  42. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/ColumnChart.d.ts +4 -0
  43. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/ColumnChart.js +498 -0
  44. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/ColumnHistogramChart.d.ts +4 -0
  45. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/ColumnHistogramChart.js +417 -0
  46. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/CustomColumnChart.d.ts +4 -0
  47. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/CustomColumnChart.js +1014 -0
  48. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/LayeredColumnChart.d.ts +4 -0
  49. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/LayeredColumnChart.js +479 -0
  50. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/LineChart.d.ts +4 -0
  51. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/LineChart.js +451 -0
  52. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/NormalizedStackColumnChart.d.ts +4 -0
  53. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/NormalizedStackColumnChart.js +535 -0
  54. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/NormalizedStackLineChart.d.ts +4 -0
  55. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/NormalizedStackLineChart.js +512 -0
  56. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/StackColumnChart.d.ts +4 -0
  57. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/StackColumnChart.js +532 -0
  58. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/StackLineChart.d.ts +4 -0
  59. package/dist/components/Charts/ChartsWithAxis/ColumnFamily/StackLineChart.js +512 -0
  60. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/BarChart.d.ts +12 -0
  61. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/BarChart.js +9 -0
  62. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/HorizontalBarChart.d.ts +4 -0
  63. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/HorizontalBarChart.js +498 -0
  64. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/HorizontalHistogramChart.d.ts +4 -0
  65. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/HorizontalHistogramChart.js +498 -0
  66. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/LayeredColumnChart.d.ts +4 -0
  67. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/LayeredColumnChart.js +479 -0
  68. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/LayeredHorizontalBarChart.d.ts +4 -0
  69. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/LayeredHorizontalBarChart.js +479 -0
  70. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/NormalizedStackHorizontalBarChart.d.ts +4 -0
  71. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/NormalizedStackHorizontalBarChart.js +474 -0
  72. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/StackHorizontalBarChart.d.ts +4 -0
  73. package/dist/components/Charts/ChartsWithAxis/HorizontalBarFamily/StackHorizontalBarChart.js +464 -0
  74. package/dist/components/Charts/ChartsWithAxis/LineFamily/100%StackLineChart.d.ts +0 -0
  75. package/dist/components/Charts/ChartsWithAxis/LineFamily/100%StackLineChart.js +0 -0
  76. package/dist/components/Charts/ChartsWithAxis/LineFamily/LineChart.d.ts +4 -0
  77. package/dist/components/Charts/ChartsWithAxis/LineFamily/LineChart.js +452 -0
  78. package/dist/components/Charts/ChartsWithAxis/LineFamily/NormalisedStackLineChart.d.ts +4 -0
  79. package/dist/components/Charts/ChartsWithAxis/LineFamily/NormalisedStackLineChart.js +554 -0
  80. package/dist/components/Charts/ChartsWithAxis/LineFamily/NormalizedStackLineChart.d.ts +4 -0
  81. package/dist/components/Charts/ChartsWithAxis/LineFamily/NormalizedStackLineChart.js +513 -0
  82. package/dist/components/Charts/ChartsWithAxis/LineFamily/StackLineChart.d.ts +4 -0
  83. package/dist/components/Charts/ChartsWithAxis/LineFamily/StackLineChart.js +508 -0
  84. package/dist/components/Charts/ChartsWithAxis/MiscellaneousChartFamily/TornadoChart.d.ts +4 -0
  85. package/dist/components/Charts/ChartsWithAxis/MiscellaneousChartFamily/TornadoChart.js +395 -0
  86. package/dist/components/Charts/ChartsWithAxis/MiscellaneousChartFamily/WaterfallChart.d.ts +4 -0
  87. package/dist/components/Charts/ChartsWithAxis/MiscellaneousChartFamily/WaterfallChart.js +608 -0
  88. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxis.types.d.ts +0 -0
  89. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxis.types.js +0 -0
  90. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxisFunctions.d.ts +92 -0
  91. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxisFunctions.js +815 -0
  92. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxisTypes.type.d.ts +0 -0
  93. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxisTypes.type.js +0 -0
  94. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxisTypes.types.d.ts +108 -0
  95. package/dist/components/Charts/ChartsWithoutAxis/ChartsWithoutAxisTypes.types.js +32 -0
  96. package/dist/components/Charts/ChartsWithoutAxis/Maps/Cordinates.d.ts +26 -0
  97. package/dist/components/Charts/ChartsWithoutAxis/Maps/Cordinates.js +15021 -0
  98. package/dist/components/Charts/ChartsWithoutAxis/Maps/Maps.d.ts +4 -0
  99. package/dist/components/Charts/ChartsWithoutAxis/Maps/Maps.js +391 -0
  100. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/BubbleChart.d.ts +4 -0
  101. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/BubbleChart.js +367 -0
  102. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/OrganizationChart.d.ts +4 -0
  103. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/OrganizationChart.js +569 -0
  104. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/ProgressChart.d.ts +3 -0
  105. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/ProgressChart.js +212 -0
  106. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/PyramidChart.d.ts +3 -0
  107. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/PyramidChart.js +401 -0
  108. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/RadialBarChart.d.ts +4 -0
  109. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/RadialBarChart.js +313 -0
  110. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/SankeyChart.d.ts +4 -0
  111. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/SankeyChart.js +719 -0
  112. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/ScatterChart.d.ts +4 -0
  113. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/ScatterChart.js +807 -0
  114. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/Speedometer.d.ts +3 -0
  115. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/Speedometer.js +514 -0
  116. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/VennChart.d.ts +4 -0
  117. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/VennChart.js +282 -0
  118. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/WordCloud.d.ts +4 -0
  119. package/dist/components/Charts/ChartsWithoutAxis/OtherCharts/WordCloud.js +207 -0
  120. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/DonutChart.d.ts +4 -0
  121. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/DonutChart.js +476 -0
  122. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/PieChart.d.ts +4 -0
  123. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/PieChart.js +420 -0
  124. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/PieFamilyCommonFunctions.d.ts +10 -0
  125. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/PieFamilyCommonFunctions.js +106 -0
  126. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/PieofPieChart.d.ts +3 -0
  127. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/PieofPieChart.js +507 -0
  128. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/TreemapChart.d.ts +3 -0
  129. package/dist/components/Charts/ChartsWithoutAxis/PieFamily/TreemapChart.js +246 -0
  130. package/dist/components/Charts/Core/Common.type.d.ts +0 -0
  131. package/dist/components/Charts/Core/Common.type.js +0 -0
  132. package/dist/components/Charts/Core/Common.types.d.ts +369 -0
  133. package/dist/components/Charts/Core/Common.types.js +133 -0
  134. package/dist/components/Charts/Core/CommonFunctions.d.ts +236 -0
  135. package/dist/components/Charts/Core/CommonFunctions.js +1778 -0
  136. package/dist/components/Charts/Core/DefaultChartDataProperties.d.ts +65 -0
  137. package/dist/components/Charts/Core/DefaultChartDataProperties.js +64 -0
  138. package/dist/components/Charts/Core/DefaultProperties.d.ts +0 -0
  139. package/dist/components/Charts/Core/DefaultProperties.js +0 -0
  140. package/dist/components/Charts/Core/DefaultProperties.type.d.ts +586 -0
  141. package/dist/components/Charts/Core/DefaultProperties.type.js +585 -0
  142. package/dist/components/Charts/Core/DefaultProperties.types.d.ts +592 -0
  143. package/dist/components/Charts/Core/DefaultProperties.types.js +592 -0
  144. package/dist/index.d.ts +34 -2
  145. package/dist/index.js +40 -2
  146. package/package.json +40 -29
  147. package/dist/components/charts/linechart/LineChart.d.ts +0 -12
  148. package/dist/components/charts/linechart/LineChart.js +0 -5
  149. /package/dist/{components/charts/barchart → Components1/Charts/ChartsWithAxis/BarFamily}/BarChart.d.ts +0 -0
  150. /package/dist/{components/charts/barchart → Components1/Charts/ChartsWithAxis/BarFamily}/BarChart.js +0 -0
@@ -0,0 +1,479 @@
1
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
2
+ //#region Imports
3
+ import * as d3 from "d3";
4
+ import * as d3Annotation from "d3-svg-annotation";
5
+ import { useEffect, useRef } from "react";
6
+ import { logError } from "../../../../Services/ErrorLog";
7
+ import { drawLegends, hideTooltipOnMouseOut, showTooltipOnMouseMove, } from "../../Core/CommonFunctions";
8
+ import { addDataTable, customYscaleLabelFormatting, dataTablePreCalculation, firstFunctionBeforeRender, getNumberWithFormat, initChartArea, initPlotArea, initSvg, initXaxis, initYaxis, commonAnnotations, marginCalculation, prepareDataForSeriesLabel, responsiveSecondaryYaxisLabel, responsiveXaxisLabel, responsiveYaxisLabel, setChartTitle, setDateFormats, setXaxistitle, yAxistitle, yAxistitleRight, } from "../ChartsWithAxisFunctions";
9
+ import { actualChartTypes, } from "../ChartsWithAxisTypes.types";
10
+ import { staticLegendShape } from "../../Core/Common.types";
11
+ const LayeredColumnChart = ({ title, width, height, data, yAxisObj, xAxisObj, chartId, formatOptions, }) => {
12
+ // adding variables as per requirement
13
+ let columnWidth = 0; // coz line chartO
14
+ const chartType = actualChartTypes.layeredColumnChart;
15
+ const svgRef = useRef();
16
+ const seriesData = data;
17
+ const barChart = false;
18
+ const isSecondaryAxisDrawn = false;
19
+ const isNormalizedChart = false;
20
+ let isPrimaryAxisDrawn = true;
21
+ let customYaxisMinValue = parseFloat(formatOptions.yAxisLabel.yAxisMinText);
22
+ let customYaxisMaxValue = parseFloat(formatOptions.yAxisLabel.yAxisMaxText);
23
+ let secondaryCustomYaxisMinValue = parseFloat(formatOptions.secondaryYAxisLabel.secondaryYAxisMinText);
24
+ let secondaryCustomYaxisMaxValue = parseFloat(formatOptions.secondaryYAxisLabel.secondaryYAxisMaxText);
25
+ let margin;
26
+ let yLabel;
27
+ let xLabel;
28
+ let yTitle;
29
+ let xTitle;
30
+ let dimensionHeightWidthArray;
31
+ let chartTitleHeight;
32
+ let secondaryAxisTitleWidth;
33
+ let legendMargin;
34
+ let secondaryYLabel;
35
+ let maxNumberForPrimaryAxis;
36
+ let maxNumberForSecondaryAxis;
37
+ let innerWidth;
38
+ let innerHeight;
39
+ let dataTable;
40
+ let dataTableHeight;
41
+ let svg;
42
+ let gTag;
43
+ let yScaleLeft;
44
+ let yScaleRight;
45
+ let xScale;
46
+ let xScaleForLegends;
47
+ let seriesLabels;
48
+ let calculatedRange;
49
+ let seriesLabelWidth;
50
+ let yAxisLeft;
51
+ let xAxis;
52
+ let yAxisRight;
53
+ let filteredDimension;
54
+ let filteredData = [];
55
+ let scrollPosition = 0;
56
+ const visibleBars = 2;
57
+ let chartJSON = {
58
+ dimensionList: [],
59
+ chartType: chartType,
60
+ chartData: [],
61
+ formatOptions: formatOptions,
62
+ legendList: [],
63
+ secondaryAxisDrawn: false,
64
+ yMaxLeft: 0,
65
+ yMaxRight: 0,
66
+ yMinLeft: 0,
67
+ yMinRight: 0,
68
+ hideZeroValues: false,
69
+ formattedDimensionListMap: new Map(),
70
+ };
71
+ //#region UseEffect
72
+ useEffect(() => {
73
+ try {
74
+ createLayeredColumnChart();
75
+ }
76
+ catch (error) {
77
+ logError("LayeredColumnchart", "createLayeredColumnChart", error);
78
+ }
79
+ }, [formatOptions]);
80
+ //#endregion
81
+ const createLayeredColumnChart = () => {
82
+ ({ formatOptions, svg, width, height } = firstFunctionBeforeRender(svgRef, formatOptions));
83
+ preProcessChartData(); // preaparing data related to chart creation
84
+ // Applies custom Y-axis label formatting and calculates the necessary margin based on axis extremes.
85
+ ({ maxNumberForPrimaryAxis, maxNumberForSecondaryAxis } =
86
+ customYscaleLabelFormatting(
87
+ // for calculating primary/secondary axis max number so that we can calculate margin accordinglt
88
+ formatOptions, chartJSON.yMinLeft, chartJSON.yMaxLeft, chartJSON.yMinRight, chartJSON.yMaxRight));
89
+ ({
90
+ margin,
91
+ yLabel,
92
+ xLabel,
93
+ yTitle,
94
+ xTitle,
95
+ dimensionHeightWidthArray,
96
+ chartTitleHeight,
97
+ secondaryAxisTitleWidth,
98
+ legendMargin,
99
+ secondaryYLabel,
100
+ } = marginCalculation(
101
+ // for all margin related calculations
102
+ width, height, maxNumberForPrimaryAxis, maxNumberForSecondaryAxis, chartJSON.yMaxLeft, formatOptions, chartJSON.legendList, chartJSON.dimensionList, chartJSON.yMaxRight, isSecondaryAxisDrawn, isNormalizedChart));
103
+ setSVGContainer(margin); // for innerWidth/height static width/height
104
+ ({ dataTable, dataTableHeight } = dataTablePreCalculation(
105
+ // calculations for data tables
106
+ formatOptions, yLabel, yTitle, seriesData, chartJSON.dimensionList));
107
+ initSvg(
108
+ // for svg creation
109
+ svg, width, height, formatOptions);
110
+ gTag = initChartArea(svg, margin); // creating chart area
111
+ initPlotArea(gTag, formatOptions, dataTableHeight, innerWidth, innerHeight, chartType);
112
+ initScale();
113
+ initAxis();
114
+ initYaxis(gTag, formatOptions, dataTableHeight, yLabel, yAxisLeft, innerHeight);
115
+ // initYaxisRight(
116
+ // gTag,
117
+ // formatOptions,
118
+ // dataTableHeight,
119
+ // secondaryYLabel,
120
+ // yAxisRight,
121
+ // innerHeight,
122
+ // innerWidth
123
+ // );
124
+ horizontalScrollBar(seriesData, height, svg, margin, innerWidth);
125
+ if (formatOptions.dataTableProperties &&
126
+ formatOptions.dataTableProperties.dataTable) {
127
+ if (formatOptions.xAxisLabel.xAxisPosition != "1")
128
+ formatOptions.xAxisLabel.xAxisLabelVisibility = false;
129
+ addDataTable(formatOptions.plotArea.fitChart, svg, gTag, dataTable, columnWidth, yScaleLeft, xScale, undefined, undefined, undefined, dataTableHeight, actualChartTypes.column, formatOptions, yLabel, yTitle, chartJSON.dimensionList, innerWidth, calculatedRange, chartJSON.formattedDimensionListMap, chartId, margin, innerHeight);
130
+ }
131
+ setXaxistitle(formatOptions, barChart, svg, margin, xLabel, height, xTitle, chartJSON.chartType, yLabel, innerWidth, innerHeight);
132
+ yAxistitle(innerHeight, formatOptions, dataTableHeight, barChart, svg, margin, yTitle, yLabel);
133
+ yAxistitleRight(svg, isSecondaryAxisDrawn, margin, formatOptions, dataTableHeight, innerHeight, innerWidth, secondaryYLabel, secondaryAxisTitleWidth); // to be added later
134
+ setChartTitle(svg, formatOptions, width, chartTitleHeight);
135
+ drawLegends(height, svg, dimensionHeightWidthArray, chartTitleHeight, width, legendMargin, formatOptions, seriesData, chartId, staticLegendShape.rectangle);
136
+ };
137
+ const preProcessChartData = () => {
138
+ const allChartData = [];
139
+ const legendList = [];
140
+ const dimensionSet = new Set();
141
+ let formatedDimesionList = [];
142
+ let yMaxLeft = -Infinity;
143
+ let yMinLeft = Infinity;
144
+ let yMaxRight = -Infinity;
145
+ let yMinRight = Infinity;
146
+ seriesData.forEach((series) => {
147
+ legendList.push(series.legend);
148
+ series.data.forEach((point) => {
149
+ allChartData.push(point);
150
+ dimensionSet.add(point.dimension);
151
+ // if (series.properties.axis === "Secondary") {
152
+ // isSecondaryAxisDrawn = true;
153
+ // yMaxRight = Math.max(yMaxRight, point.value);
154
+ // yMinRight = Math.min(yMinRight, point.value);
155
+ // } else {
156
+ yMaxLeft = Math.max(yMaxLeft, point.value);
157
+ yMinLeft = Math.min(yMinLeft, point.value);
158
+ // }
159
+ });
160
+ });
161
+ chartJSON.chartData = allChartData;
162
+ chartJSON.legendList = legendList;
163
+ chartJSON.dimensionList = Array.from(dimensionSet);
164
+ chartJSON.yMaxLeft = yMaxLeft;
165
+ chartJSON.yMinLeft = yMinLeft;
166
+ chartJSON.yMaxRight = yMaxRight;
167
+ chartJSON.yMinRight = yMinRight;
168
+ // Apply formatted dimensions
169
+ let xAxisObject = xAxisObj[0];
170
+ formatedDimesionList =
171
+ (xAxisObject.groupBy == "NA" || xAxisObject.groupBy == undefined) &&
172
+ xAxisObject.dataType === "DATE"
173
+ ? setDateFormats(formatOptions.xAxisLabel.xAxisNumberFormat, chartJSON.dimensionList).map((d) => d[0])
174
+ : chartJSON.dimensionList;
175
+ chartJSON.dimensionList.forEach((dim, i) => {
176
+ chartJSON.formattedDimensionListMap.set(dim, formatedDimesionList[i]);
177
+ });
178
+ filteredData = JSON.parse(JSON.stringify(seriesData));
179
+ if (!formatOptions.plotArea.fitChart) {
180
+ filteredDimension = chartJSON.dimensionList.slice(scrollPosition, scrollPosition + visibleBars);
181
+ }
182
+ else {
183
+ filteredDimension = chartJSON.dimensionList;
184
+ }
185
+ if (formatOptions.plotArea.hideZeroValues) {
186
+ chartJSON.hideZeroValues = true;
187
+ }
188
+ };
189
+ const initScale = () => {
190
+ // cal col width
191
+ columnWidth =
192
+ (0.51 +
193
+ (0.61 * (100 - parseFloat(formatOptions.plotArea.plotAreaGapWidth))) /
194
+ 100) *
195
+ (innerWidth / filteredDimension.length);
196
+ // rounding the ymin & ymax
197
+ let yAxisLabelArray = responsiveYaxisLabel(customYaxisMaxValue ? customYaxisMaxValue : chartJSON.yMaxLeft, chartJSON.yMinLeft, innerHeight, formatOptions, chartJSON, customYaxisMinValue, customYaxisMaxValue).yAxisLabelArray;
198
+ chartJSON.yMaxLeft = yAxisLabelArray[yAxisLabelArray.length - 1];
199
+ chartJSON.yMinLeft = yAxisLabelArray[0];
200
+ if (isPrimaryAxisDrawn) {
201
+ yScaleLeft = d3
202
+ .scaleLinear()
203
+ .domain([
204
+ customYaxisMinValue !== undefined &&
205
+ !Number.isNaN(customYaxisMinValue)
206
+ ? customYaxisMinValue
207
+ : chartJSON.yMinLeft < 0
208
+ ? chartJSON.yMinLeft * 1.1
209
+ : chartJSON.yMinLeft * 0.9,
210
+ chartJSON.yMaxLeft <= 0
211
+ ? 0
212
+ : customYaxisMaxValue !== undefined &&
213
+ !Number.isNaN(customYaxisMaxValue)
214
+ ? customYaxisMaxValue
215
+ : chartJSON.yMaxLeft * 1.1,
216
+ ])
217
+ .range([
218
+ dataTableHeight > 0 ? innerHeight - dataTableHeight : innerHeight,
219
+ 0,
220
+ ]);
221
+ }
222
+ calculatedRange = [0, innerWidth];
223
+ if (formatOptions.seriesLabel.seriesLabelVisibility) {
224
+ let labelObj = prepareDataForSeriesLabel(innerWidth, yScaleLeft, formatOptions, filteredData, yScaleRight, isSecondaryAxisDrawn);
225
+ seriesLabels = labelObj.labelArray;
226
+ formatOptions.seriesLabel.seriesLabelPosition == "Right" &&
227
+ (seriesLabelWidth = labelObj.heightWidth[0]);
228
+ formatOptions.seriesLabel.seriesLabelPosition == "Right"
229
+ ? (calculatedRange = [0, innerWidth - labelObj.heightWidth[0]])
230
+ : (calculatedRange = [labelObj.heightWidth[0], innerWidth]);
231
+ }
232
+ getXScale();
233
+ };
234
+ const getXScale = () => {
235
+ xScaleForLegends = d3
236
+ .scaleBand()
237
+ // .domain(barLegendList.map((d) => d.legend))
238
+ .domain(["layeredLegend"])
239
+ .range([0, columnWidth])
240
+ .paddingInner(chartJSON.legendList.length > 1
241
+ ? (0.3 * parseFloat(formatOptions.plotArea.plotAreaSeriesWidth)) / 100
242
+ : 0);
243
+ xScale = d3
244
+ .scalePoint()
245
+ .domain(filteredDimension)
246
+ .range(calculatedRange)
247
+ .padding(0.5);
248
+ };
249
+ const initAxis = () => {
250
+ getXAxis();
251
+ if (isPrimaryAxisDrawn) {
252
+ yAxisLeft = d3
253
+ .axisLeft(yScaleLeft)
254
+ .tickFormat((d) => getNumberWithFormat(d, formatOptions.yAxisLabel.yAxisDisplayUnits, formatOptions.yAxisLabel.yAxisNumberFormat, formatOptions.yAxisLabel.yAxisLabelDecimalPrecision))
255
+ .tickSize(formatOptions.plotArea.gridLinesVisibility
256
+ ? formatOptions.plotArea.gridLinesHorizontal
257
+ ? -innerWidth + (seriesLabelWidth ? seriesLabelWidth : 0)
258
+ : 0
259
+ : 0)
260
+ .tickValues(responsiveYaxisLabel(customYaxisMaxValue ? customYaxisMaxValue : chartJSON.yMaxLeft, chartJSON.yMinLeft, innerHeight, formatOptions, chartJSON, customYaxisMinValue, customYaxisMaxValue).yAxisLabelArray)
261
+ .ticks(responsiveYaxisLabel(customYaxisMaxValue ? customYaxisMaxValue : chartJSON.yMaxLeft, chartJSON.yMinLeft, innerHeight, formatOptions, chartJSON, customYaxisMinValue, customYaxisMaxValue).customTickValue ??
262
+ (dataTableHeight > 0
263
+ ? (innerHeight - dataTableHeight) / 30
264
+ : innerHeight / 30))
265
+ .tickSizeOuter(0);
266
+ }
267
+ if (isSecondaryAxisDrawn) {
268
+ yAxisRight = d3
269
+ .axisRight(yScaleRight)
270
+ .tickFormat((d) => getNumberWithFormat(d, formatOptions.secondaryYAxisLabel.secondaryYAxisDisplayUnits, formatOptions.secondaryYAxisLabel.secondaryYAxisNumberFormat, formatOptions.secondaryYAxisLabel
271
+ .secondaryYAxisLabelDecimalPrecision))
272
+ .tickValues(responsiveSecondaryYaxisLabel(secondaryCustomYaxisMaxValue
273
+ ? secondaryCustomYaxisMaxValue
274
+ : chartJSON.yMaxRight, chartJSON.yMinRight, formatOptions, chartJSON).secondaryYAxisLabelArray)
275
+ .ticks(responsiveSecondaryYaxisLabel(secondaryCustomYaxisMaxValue
276
+ ? secondaryCustomYaxisMaxValue
277
+ : chartJSON.yMaxRight, chartJSON.yMinRight, formatOptions, chartJSON).secondaryCustomTickValue ?? innerHeight / 30)
278
+ .tickSize(formatOptions.plotArea.gridLinesVisibility
279
+ ? formatOptions.plotArea.gridLinesHorizontal
280
+ ? -innerWidth
281
+ : 0
282
+ : 0)
283
+ .tickSizeOuter(0);
284
+ }
285
+ };
286
+ const getXAxis = () => {
287
+ xAxis = d3
288
+ .axisBottom(xScale)
289
+ .tickSize(formatOptions.plotArea.gridLinesVisibility
290
+ ? formatOptions.plotArea.gridLinesVertical
291
+ ? formatOptions.plotArea.gridLinesVertical
292
+ ? -(dataTableHeight > 0
293
+ ? innerHeight - dataTableHeight
294
+ : innerHeight)
295
+ : parseFloat(formatOptions.plotArea.ticksHeight) *
296
+ ((dataTableHeight > 0
297
+ ? innerHeight - dataTableHeight
298
+ : innerHeight) /
299
+ 100) *
300
+ (formatOptions.xAxisLabel.xAxisPosition == "1" ? 1 : -1)
301
+ : 0
302
+ : 0)
303
+ .tickSizeOuter(0)
304
+ .tickValues(responsiveXaxisLabel(filteredDimension, innerWidth));
305
+ };
306
+ const getChartType = (lineData) => {
307
+ lineData.forEach((lData) => {
308
+ lData.data.forEach((cData) => {
309
+ cData.hideZero = lData.properties.hideZeroValues;
310
+ cData.axis = lData.properties.axis;
311
+ });
312
+ });
313
+ // Bind dummy data to ensure a single group is created
314
+ lineData.forEach((data, index) => {
315
+ // Step 1: Outer group for the whole chart
316
+ let column = gTag.selectAll(".parentGroup").data([data], (d) => d.legend); // use key so exit works
317
+ column = column
318
+ .enter()
319
+ .append("g")
320
+ .attr("class", `column parentGroup`)
321
+ .merge(column);
322
+ // Step 2: JOIN each data point inside the series
323
+ let columnGroups = column
324
+ .selectAll(".column-group")
325
+ .data(data.data, (d) => d.legend + d.dimension); // key on dimension + legend
326
+ // Step 3: ENTER - one group per bar (optional if you need transform)
327
+ let columnGroupsEnter = columnGroups
328
+ .enter()
329
+ .append("g")
330
+ .attr("class", "column-group")
331
+ .attr("hoverId", (d) => d.legend.includes("-")
332
+ ? d.legend.replace("-", "`").split("`")[1].replace(/ /g, "-")
333
+ : d.legend.replace(/ /g, "-"))
334
+ .attr("transform", (d) => index === 0
335
+ ? `translate(${xScale(d.dimension) - columnWidth / 2}, 0)`
336
+ : `translate(${xScale(d.dimension) - columnWidth / (2 + index * 2)}, 0)`);
337
+ // ✨ Add this to handle UPDATE:
338
+ columnGroups.attr("transform", (d) => index === 0
339
+ ? `translate(${xScale(d.dimension) - columnWidth / 2}, 0)`
340
+ : `translate(${xScale(d.dimension) - columnWidth / (2 + index * 2)}, 0)`);
341
+ // Merge ENTER + UPDATE
342
+ columnGroupsEnter
343
+ .merge(columnGroups)
344
+ .attr("transform", (d) => index === 0
345
+ ? `translate(${xScale(d.dimension) - columnWidth / 2}, 0)`
346
+ : `translate(${xScale(d.dimension) - columnWidth / (2 + index * 2)}, 0)`);
347
+ // Step 4: Draw the rects
348
+ columnGroupsEnter
349
+ .append("rect")
350
+ .attr("x", (d) => xScaleForLegends(d.dimension))
351
+ .attr("width", index === 0 ? columnWidth : columnWidth / 2 + index * 2)
352
+ .attr("y", (d) => {
353
+ const yScale = data.properties.axis === "Primary" ? yScaleLeft : yScaleRight;
354
+ return d.value > 0 ? yScale(d.value) : yScale(0);
355
+ })
356
+ .attr("height", (d) => {
357
+ const yScale = data.properties.axis === "Primary" ? yScaleLeft : yScaleRight;
358
+ return Math.abs(yScale(d.value) - yScale(0));
359
+ })
360
+ .attr("fill", data.properties.color)
361
+ .attr("stroke-dasharray", (d) => d.stackBorderStyle === 2 ? "5,3" : "0")
362
+ .attr("stroke-width", (d) => `${d.stackBorderWidth}px`)
363
+ .attr("stroke", (d) => data.properties.stackBorderStyle === 0
364
+ ? "none"
365
+ : formatOptions.column.stackBorderVisibility
366
+ ? data.properties.stackBorderStyle
367
+ : "none")
368
+ .style("clip-path", "inset(0px) fill-box")
369
+ .style("shape-rendering", "crispEdges")
370
+ .attr("opacity", 0.7)
371
+ .attr("visibility", (d) => d.value === 0 && formatOptions.xAxisLabel.hideZeroValues
372
+ ? "hidden"
373
+ : "visible")
374
+ .on("mousemove", (event, d) => {
375
+ showTooltipOnMouseMove([
376
+ {
377
+ key: formatOptions.xAxisTitle.xAxisTitleText.includes("~$~")
378
+ ? formatOptions.xAxisTitle.xAxisTitleText.split("~$~")[1]
379
+ : formatOptions.xAxisTitle.xAxisTitleText,
380
+ value: chartJSON.formattedDimensionListMap.get(Array.isArray(d.dimension) ? d.dimension[0] : d.dimension),
381
+ },
382
+ {
383
+ key: formatOptions.yAxisTitle.yAxisTitleText || d.value,
384
+ value: getNumberWithFormat([
385
+ actualChartTypes.stackLine100,
386
+ actualChartTypes.stackArea100,
387
+ "",
388
+ ].includes(chartType)
389
+ ? d[1] - d[0]
390
+ : d.value, formatOptions.toolTip.toolTipDisplayUnits, formatOptions.toolTip.toolTipNumberFormat, formatOptions.toolTip.toolTipDecimalPrecision),
391
+ },
392
+ {
393
+ key: "Legend",
394
+ value: d.legend.includes("~$~")
395
+ ? d.legend.split("~$~")[1]
396
+ : d.legend,
397
+ },
398
+ ], formatOptions, event);
399
+ })
400
+ .on("mouseout", hideTooltipOnMouseOut);
401
+ // Step 5: EXIT - remove old bars
402
+ columnGroups.exit().remove();
403
+ });
404
+ };
405
+ const setSVGContainer = (margin) => {
406
+ innerWidth = width - margin.left - margin.right;
407
+ innerHeight = height - margin.bottom - margin.top;
408
+ };
409
+ const horizontalScrollBar = (seriesData, height, svg, margin, innerWidth) => {
410
+ if (!formatOptions.plotArea.fitChart) {
411
+ // Scrollbar parameters
412
+ const scrollMax = seriesData[0].data.length - visibleBars;
413
+ // Scrollbar track & handle
414
+ const scrollbarY = height - 20;
415
+ filteredDimension = chartJSON.dimensionList.slice(scrollPosition, scrollPosition + visibleBars);
416
+ getXScale();
417
+ filteredData = JSON.parse(JSON.stringify(seriesData));
418
+ filteredData.forEach((data, i) => (filteredData[i].data = data.data.filter((d) => filteredDimension.includes(d.dimension))));
419
+ getXAxis();
420
+ svg
421
+ .append("rect")
422
+ .attr("x", margin.left)
423
+ .attr("y", scrollbarY)
424
+ .attr("width", innerWidth)
425
+ .attr("height", 8)
426
+ .attr("fill", "#ddd")
427
+ .attr("rx", 4);
428
+ const handleWidth = (innerWidth * visibleBars) / chartJSON.dimensionList.length;
429
+ const handle = svg
430
+ .append("rect")
431
+ .attr("x", margin.left)
432
+ .attr("y", scrollbarY)
433
+ .attr("width", handleWidth)
434
+ .attr("height", 8)
435
+ .attr("fill", "#999")
436
+ .attr("rx", 4)
437
+ .style("cursor", "ew-resize")
438
+ .call(d3.drag().on("drag", (event) => {
439
+ let x = Math.min(Math.max(event.x, margin.left), margin.left + innerWidth - handleWidth);
440
+ handle.attr("x", x);
441
+ scrollPosition = Math.round(((x - margin.left) / (innerWidth - handleWidth)) * scrollMax);
442
+ filteredDimension = chartJSON.dimensionList.slice(scrollPosition, scrollPosition + visibleBars);
443
+ getXScale();
444
+ filteredData = JSON.parse(JSON.stringify(seriesData));
445
+ filteredData.forEach((data, i) => (filteredData[i].data = data.data.filter((d) => filteredDimension.includes(d.dimension))));
446
+ getXAxis();
447
+ drawColumnChart();
448
+ }));
449
+ svg.on("wheel", (event) => {
450
+ event.preventDefault();
451
+ const scrollDelta = Math.abs(event.deltaX) > Math.abs(event.deltaY)
452
+ ? event.deltaX
453
+ : event.deltaY;
454
+ scrollPosition += scrollDelta > 0 ? 1 : -1;
455
+ scrollPosition = Math.max(0, Math.min(scrollPosition, scrollMax));
456
+ const x = margin.left +
457
+ ((innerWidth - handleWidth) * scrollPosition) / scrollMax;
458
+ handle.attr("x", x);
459
+ getXScale();
460
+ filteredData = JSON.parse(JSON.stringify(seriesData));
461
+ filteredData.forEach((data, i) => (filteredData[i].data = data.data.filter((d) => filteredDimension.includes(d.dimension))));
462
+ getXAxis();
463
+ drawColumnChart();
464
+ });
465
+ }
466
+ drawColumnChart();
467
+ };
468
+ const drawColumnChart = () => {
469
+ getChartType(filteredData);
470
+ initXaxis(gTag, chartJSON, xLabel, formatOptions, xAxisObj[0], dataTableHeight, yScaleLeft, xAxis, dimensionHeightWidthArray, height, columnWidth, xAxisObj[0].dataType, innerWidth, innerHeight, filteredDimension);
471
+ commonAnnotations(seriesData, xScale, yScaleLeft, undefined, // need to pass secondary axis scale if secondary axis is drawn
472
+ margin, d3Annotation, [], //this.labelExcludeList,
473
+ [], //this.individualLabelColor,
474
+ [], //this.attributes.Id ? formatOptions.plotArea.dataLabelsCoordinates : this.parentReference.objService.tempAnnotationArray
475
+ formatOptions, chartType, height, width, innerWidth, filteredDimension, innerHeight, chartId, svg, undefined, columnWidth);
476
+ };
477
+ return (_jsxs("div", { children: [_jsx("div", { id: "chartTooltipDiv" }), _jsx("svg", { className: "chartSVG", ref: svgRef, id: chartId, width: width, height: height })] }));
478
+ };
479
+ export default LayeredColumnChart;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { type TChartProps } from "../ChartsWithAxisTypes.types";
3
+ declare const LayeredHorizontalBarChart: React.FC<TChartProps>;
4
+ export default LayeredHorizontalBarChart;