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,474 @@
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 { staticLegendShape } from "../../Core/Common.types";
8
+ import { drawLegends, generalizedChartData, hideTooltipOnMouseOut, showTooltipOnMouseMove, } from "../../Core/CommonFunctions";
9
+ import { addDataTable, customYscaleLabelFormatting, dataTablePreCalculation, firstFunctionBeforeRender, getNumberWithFormat, getStackedData, initChartArea, initPlotArea, initSvg, initXaxisBar, initYaxisBar, marginCalculation, prepareDataForSeriesLabel, responsiveXaxisLabel, responsiveYaxisLabel, setChartTitle, setDateFormats, setXaxistitle, stacklineAnnotations, yAxistitle } from "../ChartsWithAxisFunctions";
10
+ import { actualChartTypes, } from "../ChartsWithAxisTypes.types";
11
+ const NormalizedStackHorizontalBarChart = ({ title, data, yAxisObj, xAxisObj, chartId, formatOptions, }) => {
12
+ // adding variables as per requirement
13
+ let columnWidth = 0; // coz line chart
14
+ const chartType = actualChartTypes.stackBar100;
15
+ const svgRef = useRef();
16
+ const seriesData = generalizedChartData(data.ChartData, data.DimensionList);
17
+ const dimensionList = data.DimensionList;
18
+ const barChart = true;
19
+ const isSecondaryAxisDrawn = 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 width;
40
+ let height;
41
+ let dataTable;
42
+ let dataTableHeight;
43
+ let svg;
44
+ let gTag;
45
+ let xScaleBottom;
46
+ let yScale;
47
+ let seriesLabels;
48
+ let calculatedRange;
49
+ let seriesLabelWidth;
50
+ let xAxisBottom;
51
+ let yAxis;
52
+ let filteredDimension;
53
+ let filteredData = [];
54
+ let scrollPosition = 0;
55
+ const visibleBars = 2;
56
+ let stackLineData = [];
57
+ let stackChartData = [];
58
+ const isNormalizedChart = true;
59
+ let chartJSON = {
60
+ dimensionList: dimensionList,
61
+ chartType: chartType,
62
+ chartData: [],
63
+ formatOptions: formatOptions,
64
+ legendList: [],
65
+ secondaryAxisDrawn: false,
66
+ yMaxLeft: 0,
67
+ yMaxRight: 0,
68
+ yMinLeft: 0,
69
+ yMinRight: 0,
70
+ hideZeroValues: false,
71
+ formattedDimensionListMap: new Map(),
72
+ };
73
+ //#region UseEffect
74
+ useEffect(() => {
75
+ try {
76
+ createNormalizedStackBarChart();
77
+ }
78
+ catch (error) {
79
+ logError("StackNormalizedStackBarchart", "createNormalizedStackBarChart", error);
80
+ }
81
+ }, [formatOptions]);
82
+ //#endregion
83
+ const createNormalizedStackBarChart = () => {
84
+ ({ formatOptions, svg, width, height } = firstFunctionBeforeRender(svgRef, formatOptions));
85
+ preProcessChartData(); // preaparing data related to chart creation
86
+ // Applies custom Y-axis label formatting and calculates the necessary margin based on axis extremes.
87
+ ({ maxNumberForPrimaryAxis, maxNumberForSecondaryAxis } =
88
+ customYscaleLabelFormatting(
89
+ // for calculating primary/secondary axis max number so that we can calculate margin accordinglt
90
+ formatOptions, chartJSON.yMinLeft, chartJSON.yMaxLeft, chartJSON.yMinRight, chartJSON.yMaxRight));
91
+ ({
92
+ margin,
93
+ yLabel,
94
+ xLabel,
95
+ yTitle,
96
+ xTitle,
97
+ dimensionHeightWidthArray,
98
+ chartTitleHeight,
99
+ secondaryAxisTitleWidth,
100
+ legendMargin,
101
+ secondaryYLabel,
102
+ } = marginCalculation(
103
+ // for all margin related calculations
104
+ width, height, maxNumberForPrimaryAxis, maxNumberForSecondaryAxis, chartJSON.yMaxLeft, formatOptions, chartJSON.legendList, chartJSON.dimensionList, chartJSON.yMaxRight, isSecondaryAxisDrawn, isNormalizedChart));
105
+ setSVGContainer(margin); // for innerWidth/height static width/height
106
+ ({ dataTable, dataTableHeight } = dataTablePreCalculation(
107
+ // calculations for data tables
108
+ formatOptions, yLabel, yTitle, seriesData, chartJSON.dimensionList));
109
+ initSvg(
110
+ // for svg creation
111
+ svg, width, height, formatOptions);
112
+ //d3.select(svgRef.current, width, height);
113
+ gTag = initChartArea(svg, margin); // creating chart area
114
+ initPlotArea(gTag, formatOptions, dataTableHeight, innerWidth, innerHeight, chartType);
115
+ initScale();
116
+ initAxis();
117
+ initYaxisBar(formatOptions, gTag, xLabel, innerHeight, innerWidth, yAxis, undefined, xScaleBottom, chartJSON.yMaxLeft, filteredDimension, chartType, xAxisObj[0], width, dimensionHeightWidthArray, columnWidth);
118
+ horizontalScrollBar(seriesData, height, svg, margin, innerWidth);
119
+ if (formatOptions.dataTableProperties &&
120
+ formatOptions.dataTableProperties.dataTable) {
121
+ if (formatOptions.xAxisLabel.xAxisPosition != "1") {
122
+ formatOptions.xAxisLabel.xAxisLabelVisibility = false;
123
+ }
124
+ addDataTable(formatOptions.plotArea.fitChart, svg, gTag, dataTable, columnWidth, xScaleBottom, undefined, undefined, undefined, undefined, dataTableHeight, chartType, formatOptions, yLabel, yTitle, chartJSON.dimensionList, innerWidth, calculatedRange, chartJSON.formattedDimensionListMap, chartId, margin, innerHeight);
125
+ }
126
+ setXaxistitle(formatOptions, barChart, svg, margin, xLabel, height, xTitle, chartJSON.chartType, yLabel, innerWidth, innerHeight);
127
+ yAxistitle(innerHeight, formatOptions, dataTableHeight, barChart, svg, margin, yTitle, yLabel);
128
+ setChartTitle(svg, formatOptions, width, chartTitleHeight);
129
+ drawLegends(height, svg, dimensionHeightWidthArray, chartTitleHeight, width, legendMargin, formatOptions, seriesData, chartId, staticLegendShape.rectangle);
130
+ };
131
+ const preProcessChartData = () => {
132
+ const allChartData = [];
133
+ const legendList = [];
134
+ seriesData.forEach((series, index) => {
135
+ // Prefix legend
136
+ const prefixedLegend = `${index}~$~${series.properties.legend}`;
137
+ series.properties.legend = prefixedLegend;
138
+ legendList.push(prefixedLegend);
139
+ // Flatten data & collect dimensions
140
+ for (const point of series.data) {
141
+ allChartData.push(point);
142
+ }
143
+ });
144
+ // Assign computed values
145
+ chartJSON.chartData = allChartData;
146
+ chartJSON.legendList = legendList;
147
+ // getting unique x values as dimension list
148
+ filteredData = JSON.parse(JSON.stringify(seriesData));
149
+ let tempStackLineData = getStackedData(chartJSON.dimensionList, seriesData, isNormalizedChart);
150
+ if (!formatOptions.plotArea.fitChart) {
151
+ filteredDimension = chartJSON.dimensionList.slice(scrollPosition, scrollPosition + visibleBars);
152
+ filteredData.forEach((data, i) => (filteredData[i].data = data.data.filter((d) => filteredDimension.includes(d.dimension))));
153
+ }
154
+ else {
155
+ filteredDimension = chartJSON.dimensionList;
156
+ }
157
+ const allStackDataChart = d3
158
+ .stack()
159
+ .keys(chartJSON.legendList)
160
+ .offset(d3.stackOffsetDiverging)(tempStackLineData);
161
+ createStackLineData();
162
+ // Compute min and max from stacked data in one loop
163
+ let yMinLeft = Infinity;
164
+ for (const series of allStackDataChart) {
165
+ for (const [start, end] of series) {
166
+ yMinLeft = Math.min(yMinLeft, start);
167
+ }
168
+ }
169
+ chartJSON.yMinLeft = yMinLeft;
170
+ chartJSON.yMaxLeft = 1;
171
+ let xAxisObject = xAxisObj[0];
172
+ let formatedDimesionList = (xAxisObject.groupBy == "NA" || xAxisObject.groupBy == undefined) &&
173
+ xAxisObject.dataType === "DATE"
174
+ ? setDateFormats(formatOptions.xAxisLabel.xAxisNumberFormat, chartJSON.dimensionList).map((d) => d[0])
175
+ : chartJSON.dimensionList;
176
+ chartJSON.dimensionList.forEach((d, i) => {
177
+ chartJSON.formattedDimensionListMap.set(d, formatedDimesionList[i]);
178
+ });
179
+ if (formatOptions.plotArea.hideZeroValues) {
180
+ chartJSON.hideZeroValues = true;
181
+ }
182
+ };
183
+ const initScale = () => {
184
+ // rounding the ymin & ymax
185
+ let yAxisLabelArray = responsiveYaxisLabel(customYaxisMaxValue ? customYaxisMaxValue : chartJSON.yMaxLeft, chartJSON.yMinLeft, innerHeight, formatOptions, chartJSON, customYaxisMinValue, customYaxisMaxValue, barChart, innerWidth).yAxisLabelArray;
186
+ chartJSON.yMaxLeft = yAxisLabelArray[yAxisLabelArray.length - 1];
187
+ chartJSON.yMinLeft = yAxisLabelArray[0];
188
+ if (isPrimaryAxisDrawn) {
189
+ xScaleBottom = d3
190
+ .scaleLinear()
191
+ .domain([chartJSON.yMinLeft < 0 ? -1 : 0, 1])
192
+ .range([0,
193
+ dataTableHeight > 0 ? innerWidth - dataTableHeight : innerWidth,
194
+ ]);
195
+ }
196
+ calculatedRange = [innerHeight, 0];
197
+ if (formatOptions.seriesLabel.seriesLabelVisibility) {
198
+ let labelObj = prepareDataForSeriesLabel(innerWidth, xScaleBottom, formatOptions, filteredData, undefined, isSecondaryAxisDrawn, true);
199
+ seriesLabels = labelObj.labelArray;
200
+ formatOptions.seriesLabel.seriesLabelPosition == "Right" &&
201
+ (seriesLabelWidth = labelObj.heightWidth[0]);
202
+ formatOptions.seriesLabel.seriesLabelPosition == "Right"
203
+ ? (calculatedRange = [0, innerHeight - labelObj.heightWidth[0]])
204
+ : (calculatedRange = [labelObj.heightWidth[0], innerHeight]);
205
+ }
206
+ getYScale();
207
+ };
208
+ const getYScale = () => {
209
+ columnWidth =
210
+ (0.51 +
211
+ (0.61 * (100 - parseFloat(formatOptions.plotArea.plotAreaGapWidth))) /
212
+ 100) *
213
+ (innerHeight / filteredDimension.length);
214
+ yScale = d3
215
+ .scaleBand()
216
+ .domain(filteredDimension)
217
+ .range(calculatedRange)
218
+ .padding((0.3 * parseFloat(formatOptions.plotArea.plotAreaGapWidth) / 100));
219
+ };
220
+ const initAxis = () => {
221
+ getYAxis();
222
+ if (isPrimaryAxisDrawn) {
223
+ xAxisBottom = d3
224
+ .axisBottom(xScaleBottom)
225
+ // .tickFormat((d: number) =>
226
+ // getNumberWithFormat(
227
+ // d,
228
+ // formatOptions.yAxisLabel.yAxisDisplayUnits,
229
+ // formatOptions.yAxisLabel.yAxisNumberFormat,
230
+ // formatOptions.yAxisLabel.yAxisLabelDecimalPrecision
231
+ // )
232
+ // )
233
+ .tickSize(formatOptions.plotArea.gridLinesVisibility
234
+ ? formatOptions.plotArea.gridLinesHorizontal
235
+ ? -innerHeight + (seriesLabelWidth ? seriesLabelWidth : 0)
236
+ : 0
237
+ : 0)
238
+ // .tickValues(
239
+ // responsiveYaxisLabel(
240
+ // customYaxisMaxValue ? customYaxisMaxValue : chartJSON.yMaxLeft,
241
+ // chartJSON.yMinLeft,
242
+ // innerHeight,
243
+ // formatOptions,
244
+ // chartJSON,
245
+ // customYaxisMinValue,
246
+ // customYaxisMaxValue,
247
+ // barChart,
248
+ // innerWidth
249
+ // ).yAxisLabelArray
250
+ // )
251
+ .ticks(dataTableHeight > 0
252
+ ? (innerWidth - dataTableHeight) / 30
253
+ : innerWidth / 30, "%")
254
+ .tickSizeOuter(0);
255
+ }
256
+ };
257
+ const getYAxis = () => {
258
+ yAxis = d3
259
+ .axisLeft(yScale)
260
+ .tickSize(formatOptions.plotArea.gridLinesVisibility
261
+ ? formatOptions.plotArea.gridLinesVertical
262
+ ? formatOptions.plotArea.gridLinesVertical
263
+ ? -(dataTableHeight > 0
264
+ ? innerHeight - dataTableHeight
265
+ : innerHeight)
266
+ : parseFloat(formatOptions.plotArea.ticksHeight) *
267
+ ((dataTableHeight > 0
268
+ ? innerHeight - dataTableHeight
269
+ : innerHeight) /
270
+ 100) *
271
+ (formatOptions.xAxisLabel.xAxisPosition == "1" ? 1 : -1)
272
+ : 0
273
+ : 0)
274
+ .tickSizeOuter(0)
275
+ .tickValues(responsiveXaxisLabel(filteredDimension, innerWidth));
276
+ };
277
+ const getChartType = (lineData) => {
278
+ // to convert data value to percentage
279
+ stackChartData.forEach((data, i) => data.forEach((item, position) => {
280
+ lineData[i].data[position][0] = item[0] =
281
+ item.data.total === 0 ? 0 : item[0] / item.data.total;
282
+ lineData[i].data[position][1] = item[1] =
283
+ item.data.total === 0 ? 0 : item[1] / item.data.total;
284
+ }));
285
+ lineData.forEach((lData) => {
286
+ lData.data.forEach((cData) => {
287
+ cData.hideZero = lData.properties.hideZeroValues;
288
+ cData.axis = lData.properties.axis;
289
+ });
290
+ });
291
+ // Bind dummy data to ensure a single group is created
292
+ // lineData.forEach((data) => {
293
+ // Step 1: Outer group for the whole chart
294
+ // Create parent group for columns
295
+ let columns = gTag.selectAll(".parentGroup").data([stackChartData.reverse()]);
296
+ columns = columns
297
+ .enter()
298
+ .append("g")
299
+ .attr("class", "columns parentGroup")
300
+ .merge(columns);
301
+ // JOIN: one group per stack series
302
+ let columnGroups = columns.selectAll(".column-group").data((d) => d);
303
+ // ENTER
304
+ let columnGroupsEnter = columnGroups
305
+ .enter()
306
+ .append("g")
307
+ .attr("class", (d) => "column-group " + d.key.replace(/ /g, "-"))
308
+ .attr("hoverId", (d) => d.key.includes("~$~")
309
+ ? d.key.split("~$~")[1].replace(/ /g, "-")
310
+ : d.key.replace(/ /g, "-"));
311
+ columnGroups = columnGroupsEnter.merge(columnGroups);
312
+ // JOIN rects inside each series
313
+ let rects = columnGroups.selectAll("rect").data((d) => d);
314
+ // ENTER
315
+ rects
316
+ .enter()
317
+ .append("rect")
318
+ .merge(rects)
319
+ .attr("y", (d) => yScale(d.data.dimension))
320
+ .attr("x", (d) => xScaleBottom(d[0]))
321
+ .attr("width", (d) => Math.max(0, xScaleBottom(d[1]) - xScaleBottom(d[0])))
322
+ .attr("height", yScale.bandwidth())
323
+ .attr("fill", (d, i, nodes) => {
324
+ // `nodes[i]` gives access to parent node so we can infer which group (series) we're in
325
+ const groupIndex = Array.from(columnGroups.nodes()).indexOf(nodes[i].parentNode);
326
+ return seriesData[groupIndex]?.properties?.color || "gray";
327
+ })
328
+ .attr("stroke", (d, i, nodes) => {
329
+ const groupIndex = Array.from(columnGroups.nodes()).indexOf(nodes[i].parentNode);
330
+ const props = seriesData[groupIndex]?.properties;
331
+ return props?.stackBorderStyle === 0
332
+ ? "none"
333
+ : formatOptions.column.stackBorderVisibility
334
+ ? props.stackBorderColor
335
+ : "none";
336
+ })
337
+ .attr("stroke-dasharray", (d, i, nodes) => {
338
+ const groupIndex = Array.from(columnGroups.nodes()).indexOf(nodes[i].parentNode);
339
+ return seriesData[groupIndex]?.properties.stackBorderStyle === 2
340
+ ? "5,3"
341
+ : "0";
342
+ })
343
+ .attr("stroke-width", (d, i, nodes) => {
344
+ const groupIndex = Array.from(columnGroups.nodes()).indexOf(nodes[i].parentNode);
345
+ return ((seriesData[groupIndex]?.properties.stackBorderWidth || 0) + "px");
346
+ })
347
+ // EXIT
348
+ // columnGroups.exit().remove();
349
+ .on("mousemove", (event, d) => {
350
+ showTooltipOnMouseMove([
351
+ {
352
+ key: formatOptions.xAxisTitle.xAxisTitleText.includes("~$~")
353
+ ? formatOptions.xAxisTitle.xAxisTitleText.split("~$~")[1]
354
+ : formatOptions.xAxisTitle.xAxisTitleText,
355
+ value: chartJSON.formattedDimensionListMap.get(d.data.dimension),
356
+ },
357
+ {
358
+ key: formatOptions.yAxisTitle.yAxisTitleText || d.value,
359
+ value: getNumberWithFormat(d[1] - d[0], formatOptions.toolTip.toolTipDisplayUnits, formatOptions.toolTip.toolTipNumberFormat, formatOptions.toolTip.toolTipDecimalPrecision),
360
+ },
361
+ {
362
+ key: "Legend",
363
+ value: d.key.includes("~$~") ? d.key.split("~$~")[1] : d.key,
364
+ },
365
+ ], formatOptions, event);
366
+ })
367
+ .on("mouseout", hideTooltipOnMouseOut);
368
+ // EXIT: remove old groups
369
+ columnGroups.exit().remove();
370
+ // });
371
+ };
372
+ const setSVGContainer = (margin) => {
373
+ innerWidth = width - margin.left - margin.right;
374
+ innerHeight = height - margin.bottom - margin.top;
375
+ };
376
+ const horizontalScrollBar = (seriesData, height, svg, margin, innerWidth) => {
377
+ if (!formatOptions.plotArea.fitChart) {
378
+ // Scrollbar parameters
379
+ const scrollMax = seriesData[0].data.length - visibleBars;
380
+ // Scrollbar track & handle
381
+ const scrollbarY = height - 20;
382
+ filteredDimension = chartJSON.dimensionList.slice(scrollPosition, scrollPosition + visibleBars);
383
+ getYScale();
384
+ filteredData = JSON.parse(JSON.stringify(seriesData));
385
+ filteredData.forEach((data, i) => (filteredData[i].data = data.data.filter((d) => filteredDimension.includes(d.dimension))));
386
+ createStackLineData();
387
+ getYAxis();
388
+ svg
389
+ .append("rect")
390
+ .attr("x", margin.left)
391
+ .attr("y", scrollbarY)
392
+ .attr("width", innerWidth)
393
+ .attr("height", 8)
394
+ .attr("fill", "#ddd")
395
+ .attr("rx", 4);
396
+ const handleWidth = (innerWidth * visibleBars) / chartJSON.dimensionList.length;
397
+ const handle = svg
398
+ .append("rect")
399
+ .attr("x", margin.left)
400
+ .attr("y", scrollbarY)
401
+ .attr("width", handleWidth)
402
+ .attr("height", 8)
403
+ .attr("fill", "#999")
404
+ .attr("rx", 4)
405
+ .style("cursor", "ew-resize")
406
+ .call(d3.drag().on("drag", (event) => {
407
+ let x = Math.min(Math.max(event.x, margin.left), margin.left + innerWidth - handleWidth);
408
+ handle.attr("x", x);
409
+ scrollPosition = Math.round(((x - margin.left) / (innerWidth - handleWidth)) * scrollMax);
410
+ filteredDimension = chartJSON.dimensionList.slice(scrollPosition, scrollPosition + visibleBars);
411
+ getYScale();
412
+ filteredData = JSON.parse(JSON.stringify(seriesData));
413
+ filteredData.forEach((data, i) => (filteredData[i].data = data.data.filter((d) => filteredDimension.includes(d.dimension))));
414
+ createStackLineData();
415
+ getYAxis();
416
+ drawLineChart();
417
+ }));
418
+ svg.on("wheel", (event) => {
419
+ event.preventDefault();
420
+ const scrollDelta = Math.abs(event.deltaX) > Math.abs(event.deltaY)
421
+ ? event.deltaX
422
+ : event.deltaY;
423
+ scrollPosition += scrollDelta > 0 ? 1 : -1;
424
+ scrollPosition = Math.max(0, Math.min(scrollPosition, scrollMax));
425
+ const x = margin.left +
426
+ ((innerWidth - handleWidth) * scrollPosition) / scrollMax;
427
+ handle.attr("x", x);
428
+ getYScale();
429
+ filteredData = JSON.parse(JSON.stringify(seriesData));
430
+ filteredData.forEach((data, i) => (filteredData[i].data = data.data.filter((d) => filteredDimension.includes(d.dimension))));
431
+ createStackLineData();
432
+ getYAxis();
433
+ drawLineChart();
434
+ });
435
+ }
436
+ drawLineChart();
437
+ };
438
+ const drawLineChart = () => {
439
+ // filteredData.forEach((data) => getChartType([data]));
440
+ getChartType(filteredData);
441
+ initXaxisBar(formatOptions, gTag, yLabel, innerHeight, innerWidth, xAxisBottom);
442
+ stacklineAnnotations(stackChartData, yScale, xScaleBottom, undefined, // need to pass secondary axis scale if secondary axis is drawn
443
+ margin, d3Annotation, [], //this.labelExcludeList,
444
+ [], //this.individualLabelColor,
445
+ [], //this.attributes.Id ? formatOptions.plotArea.dataLabelsCoordinates : this.parentReference.objService.tempAnnotationArray
446
+ formatOptions, chartType, height, width, innerWidth, filteredDimension, innerHeight, chartId, svg, dataTableHeight, barChart);
447
+ };
448
+ const createStackLineData = () => {
449
+ let stackLineData = getStackedData(filteredDimension, filteredData, isNormalizedChart);
450
+ // }
451
+ stackChartData = d3
452
+ .stack()
453
+ .keys(chartJSON.legendList)
454
+ .offset(d3.stackOffsetDiverging)(stackLineData);
455
+ filteredData.forEach((data, index) => data.data.forEach((axisData, position) => {
456
+ axisData["0"] = stackChartData[index][position][0];
457
+ axisData["1"] = stackChartData[index][position][1];
458
+ }));
459
+ //Appending Extra key for tooltip color
460
+ let seriesColor = formatOptions.annotation.annotationSetLabelColor;
461
+ stackChartData.forEach((K, j) => K.forEach((d) => {
462
+ d["key"] = K.key;
463
+ K["color"] = JSON.parse(JSON.stringify(seriesData[j].properties.color));
464
+ d.data.labelPosition = seriesData[j].properties.dataLabelPosition;
465
+ d.data["labelColor"] =
466
+ seriesColor == "2"
467
+ ? JSON.parse(JSON.stringify(seriesData[j].properties.color))
468
+ : seriesData[j].properties.labelColor;
469
+ d["hideZero"] = JSON.parse(JSON.stringify(seriesData[j].properties.hideZeroValues));
470
+ }));
471
+ };
472
+ return (_jsxs("div", { style: { width: "100%", height: "100%" }, children: [_jsx("div", { id: "chartTooltipDiv" }), _jsx("svg", { className: "chartSVG", ref: svgRef, id: chartId, style: { width: "100%", height: "100%" } })] }));
473
+ };
474
+ export default NormalizedStackHorizontalBarChart;
@@ -0,0 +1,4 @@
1
+ import React from "react";
2
+ import { type TChartProps } from "../ChartsWithAxisTypes.types";
3
+ declare const StackHorizontalChart: React.FC<TChartProps>;
4
+ export default StackHorizontalChart;