@apia/charts 2.0.2 → 3.0.1

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.
@@ -46,7 +46,7 @@ const Bar = ({
46
46
  );
47
47
  if (barName === parsedData[barGroup.index].columnName && columnName === parsedData[barGroup.index].columnName) {
48
48
  if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
49
- new ApiaUtil().tooltips.open({
49
+ ApiaUtil.instance.tooltips.open({
50
50
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
51
51
  /* @__PURE__ */ jsx(
52
52
  "div",
@@ -73,7 +73,7 @@ const Bar = ({
73
73
  );
74
74
  if (barName === bar.key && columnName === parsedData[barGroup.index].columnName) {
75
75
  if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
76
- new ApiaUtil().tooltips.open({
76
+ ApiaUtil.instance.tooltips.open({
77
77
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
78
78
  /* @__PURE__ */ jsx(
79
79
  "div",
@@ -93,7 +93,7 @@ const Bar = ({
93
93
  }
94
94
  } else if (barName === bar.key && currentBar && columnName === "") {
95
95
  if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
96
- new ApiaUtil().tooltips.open({
96
+ ApiaUtil.instance.tooltips.open({
97
97
  children: parsedData.map((dat, i) => {
98
98
  return /* @__PURE__ */ jsxs("div", { children: [
99
99
  /* @__PURE__ */ jsx(
@@ -108,9 +108,7 @@ const Bar = ({
108
108
  }
109
109
  ),
110
110
  chart.showValues && /* @__PURE__ */ jsx("div", { children: dat[barName] }),
111
- /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? Object.keys(dat).find(
112
- (key) => dat[key] === dat[barName]
113
- ) : "" }),
111
+ /* @__PURE__ */ jsx("div", {}),
114
112
  parsedData[i + 1] && /* @__PURE__ */ jsx("hr", {})
115
113
  ] }, `${dat.columnName}_${dat[barName]}`);
116
114
  }),
@@ -128,7 +126,7 @@ const Bar = ({
128
126
  );
129
127
  if (barName.split(" - ")[0] === bar.key && barName.split(" - ")[1] === set.key && columnName === parsedData[barGroup.index].columnName) {
130
128
  if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
131
- new ApiaUtil().tooltips.open({
129
+ ApiaUtil.instance.tooltips.open({
132
130
  children: /* @__PURE__ */ jsxs(Fragment, { children: [
133
131
  /* @__PURE__ */ jsx(
134
132
  "div",
@@ -1 +1 @@
1
- {"version":3,"file":"Bar.js","sources":["../../../src/charts/horizontalBars/Bar.tsx"],"sourcesContent":["import tinycolor from 'tinycolor2';\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\nimport {\n TApiaChartColorDisposition,\n TChartMargin,\n TChartRendererProps,\n} from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './HorizontalBars';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n effectiveMargin,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroupHorizontal<string>;\n parsedData: IParsedColumn[];\n effectiveMargin: TChartMargin;\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameColumn) {\n let barName = barNameColumn;\n let columnName = '';\n if (barNameColumn.includes('_$_')) {\n barName = barNameColumn.split('_$_')[0];\n columnName = barNameColumn.split('_$_')[1];\n if (isSingle && barNameColumn !== '' && barNameColumn !== undefined) {\n barName = barNameColumn.split('_$_')[1];\n columnName = barNameColumn.split('_$_')[1];\n }\n }\n if (barName.split(' - ').length === 1) {\n if (arrayOrArray(chart.dataSets.data).length === 1) {\n setIsHighlighted(barName === parsedData[barGroup.index].columnName);\n setIsAnyHighlighted(\n barName !== parsedData[barGroup.index].columnName && barName !== '',\n );\n if (\n barName === parsedData[barGroup.index].columnName &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n } else {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n const currentBar = document.querySelector(\n `.${parsedData[barGroup.index].columnName}__${bar.key}`,\n );\n if (\n barName === bar.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n } else if (barName === bar.key && currentBar && columnName === '') {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: parsedData.map((dat, i) => {\n return (\n <div key={`${dat.columnName}_${dat[barName]}`}>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? dat.columnName\n : chart.showLegend\n ? Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{dat[barName]}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend\n ? Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )\n : ''}\n </div>\n {parsedData[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n if (\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n new ApiaUtil().tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n }\n },\n });\n\n const { chartId } = useContext(ChartContext);\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + 5}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"start\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n )} */}\n\n <Box\n as=\"rect\"\n className={`chart__barRect ${parsedData[barGroup.index].columnName}__${\n bar.key\n }`}\n ref={ref}\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width - effectiveMargin.left,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n effectiveMargin.left,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n } else {\n legendContainerMethods.highlight(\n chartId,\n parsedData[barGroup.index].columnName,\n );\n }\n chartMethods(\n chartId,\n 'highlight',\n `${bar.key}_$_${parsedData[barGroup.index].columnName}`,\n );\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point || !chart.showValues) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n chartMethods(chartId, 'highlight', '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"width\"\n from={0}\n to={bar.width}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Bar.js","sources":["../../../src/charts/horizontalBars/Bar.tsx"],"sourcesContent":["import tinycolor from 'tinycolor2';\nimport { BarGroupBar, BarGroupHorizontal } from '@visx/shape/lib/types';\nimport {\n TApiaChartColorDisposition,\n TChartMargin,\n TChartRendererProps,\n} from '../types';\nimport { Box } from '@apia/theme';\nimport { localPoint } from '@visx/event';\nimport { IParsedColumn } from './HorizontalBars';\nimport { arrayOrArray, useImperativeComponentEvents } from '@apia/util';\nimport { legendContainerMethods } from '../util/LegendContainer';\nimport { useContext, useState, useMemo, useRef } from 'react';\nimport { ChartContext } from '../ChartContext';\nimport { TChartEvents, chartMethods } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nexport const Bar = ({\n bar,\n barGroup,\n chart,\n parsedData,\n isSingle,\n effectiveMargin,\n setsWithColor,\n}: Pick<TChartRendererProps, 'chart'> & {\n isSingle: boolean;\n bar: BarGroupBar<string>;\n barGroup: BarGroupHorizontal<string>;\n parsedData: IParsedColumn[];\n effectiveMargin: TChartMargin;\n setsWithColor: TApiaChartColorDisposition[];\n}) => {\n const column = arrayOrArray(chart.dataSets.data)[bar.index];\n const set = arrayOrArray(column?.sets)[barGroup.index];\n const currentBarColor = setsWithColor.find(\n (innerSet) =>\n innerSet.columnName === column.name && innerSet.key === set.key,\n )?.color;\n const [isHighlighted, setIsHighlighted] = useState(false);\n const [isAnyHighlighted, setIsAnyHighlighted] = useState(false);\n const ref = useRef<SVGPathElement | null>(null);\n\n useImperativeComponentEvents<TChartEvents>({\n highlight(barNameColumn) {\n let barName = barNameColumn;\n let columnName = '';\n if (barNameColumn.includes('_$_')) {\n barName = barNameColumn.split('_$_')[0];\n columnName = barNameColumn.split('_$_')[1];\n if (isSingle && barNameColumn !== '' && barNameColumn !== undefined) {\n barName = barNameColumn.split('_$_')[1];\n columnName = barNameColumn.split('_$_')[1];\n }\n }\n if (barName.split(' - ').length === 1) {\n if (arrayOrArray(chart.dataSets.data).length === 1) {\n setIsHighlighted(barName === parsedData[barGroup.index].columnName);\n setIsAnyHighlighted(\n barName !== parsedData[barGroup.index].columnName && barName !== '',\n );\n if (\n barName === parsedData[barGroup.index].columnName &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n ApiaUtil.instance.tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n } else {\n setIsHighlighted(barName === bar.key);\n setIsAnyHighlighted(barName !== bar.key && barName !== '');\n const currentBar = document.querySelector(\n `.${parsedData[barGroup.index].columnName}__${bar.key}`,\n );\n if (\n barName === bar.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n ApiaUtil.instance.tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n } else if (barName === bar.key && currentBar && columnName === '') {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n ApiaUtil.instance.tooltips.open({\n children: parsedData.map((dat, i) => {\n return (\n <div key={`${dat.columnName}_${dat[barName]}`}>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? dat.columnName\n : chart.showLegend\n ? Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{dat[barName]}</div>}\n <div>\n {/*{chart.showAxisXTitle && chart.showLegend\n ? Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )\n : ''}*/}\n </div>\n {parsedData[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setIsHighlighted(\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key,\n );\n setIsAnyHighlighted(\n barName.split(' - ')[0] !== bar.key && barName.split(' - ')[0] !== '',\n );\n if (\n barName.split(' - ')[0] === bar.key &&\n barName.split(' - ')[1] === set.key &&\n columnName === parsedData[barGroup.index].columnName\n ) {\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n ApiaUtil.instance.tooltips.open({\n children: (\n <>\n <div\n style={{\n color: currentBarColor,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? parsedData[barGroup.index].columnName\n : chart.showLegend\n ? bar.key\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{bar.value}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend ? bar.key : ''}\n </div>\n </>\n ),\n attachToElement: () => ref.current as unknown as HTMLElement,\n attachToElementAnchorPoint: 'center',\n });\n }\n }\n }\n },\n });\n\n const { chartId } = useContext(ChartContext);\n return (\n <g>\n {/* {chart.showValues && (\n <text\n x={bar.x + 5}\n y={bar.y - 5}\n width={bar.width}\n height={bar.height}\n textAnchor=\"start\"\n style={{\n display: isHighlighted ? 'block' : 'none',\n opacity: isHighlighted ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {bar.value}\n </text>\n )} */}\n\n <Box\n as=\"rect\"\n className={`chart__barRect ${parsedData[barGroup.index].columnName}__${\n bar.key\n }`}\n ref={ref}\n sx={useMemo(\n () => ({\n fill: isAnyHighlighted\n ? `#${tinycolor(currentBarColor).desaturate(70).toHex()}`\n : currentBarColor,\n '&:hover': {\n fill: `#${tinycolor(currentBarColor).saturate(25).toHex()}`,\n },\n transition: 'fill 500ms, opacity 500ms',\n x: bar.x,\n y: bar.y,\n width: bar.width - effectiveMargin.left,\n opacity: isAnyHighlighted && !isHighlighted ? 0.15 : 1,\n height: bar.height > 0 ? bar.height : 0,\n }),\n [\n bar.height,\n bar.width,\n bar.x,\n bar.y,\n currentBarColor,\n effectiveMargin.left,\n isAnyHighlighted,\n isHighlighted,\n ],\n )}\n onMouseEnter={(ev) => {\n if (!isSingle) {\n legendContainerMethods.highlight(chartId, bar.key);\n } else {\n legendContainerMethods.highlight(\n chartId,\n parsedData[barGroup.index].columnName,\n );\n }\n chartMethods(\n chartId,\n 'highlight',\n `${bar.key}_$_${parsedData[barGroup.index].columnName}`,\n );\n (ev.target as HTMLElement).classList?.add('over');\n const point = {\n x: localPoint(ev)?.x,\n y: localPoint(ev)?.y,\n };\n if (!point || !chart.showValues) return;\n }}\n onMouseLeave={(ev) => {\n legendContainerMethods.highlight(chartId, '');\n chartMethods(chartId, 'highlight', '');\n\n (ev.target as HTMLElement).classList?.remove('over');\n }}\n >\n <animate\n attributeName=\"width\"\n from={0}\n to={bar.width}\n dur=\"0.5s\"\n calcMode={'paced'}\n keySplines={'0.5 0 0.5 1;'}\n keyTimes={'0; 1'}\n />\n </Box>\n </g>\n );\n};\n"],"names":[],"mappings":";;;;;;;;;;;AAiBO,MAAM,MAAM,CAAC;AAAA,EAClB,GAAA;AAAA,EACA,QAAA;AAAA,EACA,KAAA;AAAA,EACA,UAAA;AAAA,EACA,QAAA;AAAA,EACA,eAAA;AAAA,EACA,aAAA;AACF,CAOM,KAAA;AACJ,EAAA,MAAM,SAAS,YAAa,CAAA,KAAA,CAAM,SAAS,IAAI,CAAA,CAAE,IAAI,KAAK,CAAA,CAAA;AAC1D,EAAA,MAAM,MAAM,YAAa,CAAA,MAAA,EAAQ,IAAI,CAAA,CAAE,SAAS,KAAK,CAAA,CAAA;AACrD,EAAA,MAAM,kBAAkB,aAAc,CAAA,IAAA;AAAA,IACpC,CAAC,aACC,QAAS,CAAA,UAAA,KAAe,OAAO,IAAQ,IAAA,QAAA,CAAS,QAAQ,GAAI,CAAA,GAAA;AAAA,GAC7D,EAAA,KAAA,CAAA;AACH,EAAA,MAAM,CAAC,aAAA,EAAe,gBAAgB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AACxD,EAAA,MAAM,CAAC,gBAAA,EAAkB,mBAAmB,CAAA,GAAI,SAAS,KAAK,CAAA,CAAA;AAC9D,EAAM,MAAA,GAAA,GAAM,OAA8B,IAAI,CAAA,CAAA;AAE9C,EAA2C,4BAAA,CAAA;AAAA,IACzC,UAAU,aAAe,EAAA;AACvB,MAAA,IAAI,OAAU,GAAA,aAAA,CAAA;AACd,MAAA,IAAI,UAAa,GAAA,EAAA,CAAA;AACjB,MAAI,IAAA,aAAA,CAAc,QAAS,CAAA,KAAK,CAAG,EAAA;AACjC,QAAA,OAAA,GAAU,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACtC,QAAA,UAAA,GAAa,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACzC,QAAA,IAAI,QAAY,IAAA,aAAA,KAAkB,EAAM,IAAA,aAAA,KAAkB,KAAW,CAAA,EAAA;AACnE,UAAA,OAAA,GAAU,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AACtC,UAAA,UAAA,GAAa,aAAc,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,CAAA;AAAA,SAC3C;AAAA,OACF;AACA,MAAA,IAAI,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AACrC,QAAA,IAAI,aAAa,KAAM,CAAA,QAAA,CAAS,IAAI,CAAA,CAAE,WAAW,CAAG,EAAA;AAClD,UAAA,gBAAA,CAAiB,OAAY,KAAA,UAAA,CAAW,QAAS,CAAA,KAAK,EAAE,UAAU,CAAA,CAAA;AAClE,UAAA,mBAAA;AAAA,YACE,YAAY,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,cAAc,OAAY,KAAA,EAAA;AAAA,WACnE,CAAA;AACA,UACE,IAAA,OAAA,KAAY,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UACvC,IAAA,UAAA,KAAe,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC1C,EAAA;AACA,YAAA,IAAI,KAAM,CAAA,cAAA,IAAkB,KAAM,CAAA,UAAA,IAAc,MAAM,UAAY,EAAA;AAChE,cAAS,QAAA,CAAA,QAAA,CAAS,SAAS,IAAK,CAAA;AAAA,gBAC9B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAO,EAAA;AAAA,wBACL,KAAO,EAAA,eAAA;AAAA,uBACT;AAAA,sBAEA,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EACE,QAAM,EAAA,KAAA,CAAA,cAAA,GACH,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC3B,GAAA,KAAA,CAAM,UACJ,GAAA,GAAA,CAAI,MACJ,EACR,EAAA,CAAA;AAAA,qBAAA;AAAA,mBACF;AAAA,kBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,kCACrC,GAAA,CAAC,SACE,QAAM,EAAA,KAAA,CAAA,cAAA,IAAkB,MAAM,UAAa,GAAA,GAAA,CAAI,MAAM,EACxD,EAAA,CAAA;AAAA,iBACF,EAAA,CAAA;AAAA,gBAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,gBAC3B,0BAA4B,EAAA,QAAA;AAAA,eAC7B,CAAA,CAAA;AAAA,aACH;AAAA,WACF;AAAA,SACK,MAAA;AACL,UAAiB,gBAAA,CAAA,OAAA,KAAY,IAAI,GAAG,CAAA,CAAA;AACpC,UAAA,mBAAA,CAAoB,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,OAAA,KAAY,EAAE,CAAA,CAAA;AACzD,UAAA,MAAM,aAAa,QAAS,CAAA,aAAA;AAAA,YAC1B,CAAA,CAAA,EAAI,WAAW,QAAS,CAAA,KAAK,EAAE,UAAU,CAAA,EAAA,EAAK,IAAI,GAAG,CAAA,CAAA;AAAA,WACvD,CAAA;AACA,UACE,IAAA,OAAA,KAAY,IAAI,GAChB,IAAA,UAAA,KAAe,WAAW,QAAS,CAAA,KAAK,EAAE,UAC1C,EAAA;AACA,YAAA,IAAI,KAAM,CAAA,cAAA,IAAkB,KAAM,CAAA,UAAA,IAAc,MAAM,UAAY,EAAA;AAChE,cAAS,QAAA,CAAA,QAAA,CAAS,SAAS,IAAK,CAAA;AAAA,gBAC9B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,kCAAA,GAAA;AAAA,oBAAC,KAAA;AAAA,oBAAA;AAAA,sBACC,KAAO,EAAA;AAAA,wBACL,KAAO,EAAA,eAAA;AAAA,uBACT;AAAA,sBAEA,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EACE,QAAM,EAAA,KAAA,CAAA,cAAA,GACH,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC3B,GAAA,KAAA,CAAM,UACJ,GAAA,GAAA,CAAI,MACJ,EACR,EAAA,CAAA;AAAA,qBAAA;AAAA,mBACF;AAAA,kBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,kCACrC,GAAA,CAAC,SACE,QAAM,EAAA,KAAA,CAAA,cAAA,IAAkB,MAAM,UAAa,GAAA,GAAA,CAAI,MAAM,EACxD,EAAA,CAAA;AAAA,iBACF,EAAA,CAAA;AAAA,gBAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,gBAC3B,0BAA4B,EAAA,QAAA;AAAA,eAC7B,CAAA,CAAA;AAAA,aACH;AAAA,qBACS,OAAY,KAAA,GAAA,CAAI,GAAO,IAAA,UAAA,IAAc,eAAe,EAAI,EAAA;AACjE,YAAA,IAAI,KAAM,CAAA,cAAA,IAAkB,KAAM,CAAA,UAAA,IAAc,MAAM,UAAY,EAAA;AAChE,cAAS,QAAA,CAAA,QAAA,CAAS,SAAS,IAAK,CAAA;AAAA,gBAC9B,QAAU,EAAA,UAAA,CAAW,GAAI,CAAA,CAAC,KAAK,CAAM,KAAA;AACnC,kBAAA,4BACG,KACC,EAAA,EAAA,QAAA,EAAA;AAAA,oCAAA,GAAA;AAAA,sBAAC,KAAA;AAAA,sBAAA;AAAA,wBACC,KAAO,EAAA;AAAA,0BACL,KAAO,EAAA,eAAA;AAAA,yBACT;AAAA,wBAEA,QAAA,kBAAA,GAAA,CAAC,QACE,EAAA,EAAA,QAAA,EAAA,KAAA,CAAM,cACH,GAAA,GAAA,CAAI,UACJ,GAAA,KAAA,CAAM,UACJ,GAAA,MAAA,CAAO,IAAK,CAAA,GAAG,CAAE,CAAA,IAAA;AAAA,0BACf,CAAC,GAAQ,KAAA,GAAA,CAAI,GAAG,CAAA,KAAM,IAAI,OAAO,CAAA;AAAA,4BAEnC,EACR,EAAA,CAAA;AAAA,uBAAA;AAAA,qBACF;AAAA,oBACC,MAAM,UAAc,oBAAA,GAAA,CAAC,KAAK,EAAA,EAAA,QAAA,EAAA,GAAA,CAAI,OAAO,CAAE,EAAA,CAAA;AAAA,wCACvC,KAMD,EAAA,EAAA,CAAA;AAAA,oBACC,UAAW,CAAA,CAAA,GAAI,CAAC,CAAA,wBAAM,IAAG,EAAA,EAAA,CAAA;AAAA,mBAAA,EAAA,EAxBlB,GAAG,GAAI,CAAA,UAAU,IAAI,GAAI,CAAA,OAAO,CAAC,CAyB3C,CAAA,CAAA,CAAA;AAAA,iBAEH,CAAA;AAAA,gBACD,qBAAuB,EAAA,IAAA;AAAA,eACxB,CAAA,CAAA;AAAA,aACH;AAAA,WACF;AAAA,SACF;AAAA,iBACS,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,WAAW,CAAG,EAAA;AAC5C,QAAA,gBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,GAC9B,IAAA,OAAA,CAAQ,KAAM,CAAA,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA;AAAA,SACpC,CAAA;AACA,QAAA,mBAAA;AAAA,UACE,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAA,KAAM,GAAI,CAAA,GAAA,IAAO,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,EAAA;AAAA,SACrE,CAAA;AACA,QACE,IAAA,OAAA,CAAQ,MAAM,KAAK,CAAA,CAAE,CAAC,CAAM,KAAA,GAAA,CAAI,OAChC,OAAQ,CAAA,KAAA,CAAM,KAAK,CAAE,CAAA,CAAC,MAAM,GAAI,CAAA,GAAA,IAChC,eAAe,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC1C,EAAA;AACA,UAAA,IAAI,KAAM,CAAA,cAAA,IAAkB,KAAM,CAAA,UAAA,IAAc,MAAM,UAAY,EAAA;AAChE,YAAS,QAAA,CAAA,QAAA,CAAS,SAAS,IAAK,CAAA;AAAA,cAC9B,0BAEI,IAAA,CAAA,QAAA,EAAA,EAAA,QAAA,EAAA;AAAA,gCAAA,GAAA;AAAA,kBAAC,KAAA;AAAA,kBAAA;AAAA,oBACC,KAAO,EAAA;AAAA,sBACL,KAAO,EAAA,eAAA;AAAA,qBACT;AAAA,oBAEA,QAAC,kBAAA,GAAA,CAAA,QAAA,EAAA,EACE,QAAM,EAAA,KAAA,CAAA,cAAA,GACH,UAAW,CAAA,QAAA,CAAS,KAAK,CAAA,CAAE,UAC3B,GAAA,KAAA,CAAM,UACJ,GAAA,GAAA,CAAI,MACJ,EACR,EAAA,CAAA;AAAA,mBAAA;AAAA,iBACF;AAAA,gBACC,KAAM,CAAA,UAAA,oBAAe,GAAA,CAAA,KAAA,EAAA,EAAK,cAAI,KAAM,EAAA,CAAA;AAAA,gCACrC,GAAA,CAAC,SACE,QAAM,EAAA,KAAA,CAAA,cAAA,IAAkB,MAAM,UAAa,GAAA,GAAA,CAAI,MAAM,EACxD,EAAA,CAAA;AAAA,eACF,EAAA,CAAA;AAAA,cAEF,eAAA,EAAiB,MAAM,GAAI,CAAA,OAAA;AAAA,cAC3B,0BAA4B,EAAA,QAAA;AAAA,aAC7B,CAAA,CAAA;AAAA,WACH;AAAA,SACF;AAAA,OACF;AAAA,KACF;AAAA,GACD,CAAA,CAAA;AAED,EAAA,MAAM,EAAE,OAAA,EAAY,GAAA,UAAA,CAAW,YAAY,CAAA,CAAA;AAC3C,EAAA,2BACG,GAkBC,EAAA,EAAA,QAAA,kBAAA,GAAA;AAAA,IAAC,GAAA;AAAA,IAAA;AAAA,MACC,EAAG,EAAA,MAAA;AAAA,MACH,SAAA,EAAW,kBAAkB,UAAW,CAAA,QAAA,CAAS,KAAK,CAAE,CAAA,UAAU,CAChE,EAAA,EAAA,GAAA,CAAI,GACN,CAAA,CAAA;AAAA,MACA,GAAA;AAAA,MACA,EAAI,EAAA,OAAA;AAAA,QACF,OAAO;AAAA,UACL,IAAA,EAAM,gBACF,GAAA,CAAA,CAAA,EAAI,SAAU,CAAA,eAAe,CAAE,CAAA,UAAA,CAAW,EAAE,CAAA,CAAE,KAAM,EAAC,CACrD,CAAA,GAAA,eAAA;AAAA,UACJ,SAAW,EAAA;AAAA,YACT,IAAA,EAAM,IAAI,SAAU,CAAA,eAAe,EAAE,QAAS,CAAA,EAAE,CAAE,CAAA,KAAA,EAAO,CAAA,CAAA;AAAA,WAC3D;AAAA,UACA,UAAY,EAAA,2BAAA;AAAA,UACZ,GAAG,GAAI,CAAA,CAAA;AAAA,UACP,GAAG,GAAI,CAAA,CAAA;AAAA,UACP,KAAA,EAAO,GAAI,CAAA,KAAA,GAAQ,eAAgB,CAAA,IAAA;AAAA,UACnC,OAAS,EAAA,gBAAA,IAAoB,CAAC,aAAA,GAAgB,IAAO,GAAA,CAAA;AAAA,UACrD,MAAQ,EAAA,GAAA,CAAI,MAAS,GAAA,CAAA,GAAI,IAAI,MAAS,GAAA,CAAA;AAAA,SACxC,CAAA;AAAA,QACA;AAAA,UACE,GAAI,CAAA,MAAA;AAAA,UACJ,GAAI,CAAA,KAAA;AAAA,UACJ,GAAI,CAAA,CAAA;AAAA,UACJ,GAAI,CAAA,CAAA;AAAA,UACJ,eAAA;AAAA,UACA,eAAgB,CAAA,IAAA;AAAA,UAChB,gBAAA;AAAA,UACA,aAAA;AAAA,SACF;AAAA,OACF;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AACpB,QAAA,IAAI,CAAC,QAAU,EAAA;AACb,UAAuB,sBAAA,CAAA,SAAA,CAAU,OAAS,EAAA,GAAA,CAAI,GAAG,CAAA,CAAA;AAAA,SAC5C,MAAA;AACL,UAAuB,sBAAA,CAAA,SAAA;AAAA,YACrB,OAAA;AAAA,YACA,UAAA,CAAW,QAAS,CAAA,KAAK,CAAE,CAAA,UAAA;AAAA,WAC7B,CAAA;AAAA,SACF;AACA,QAAA,YAAA;AAAA,UACE,OAAA;AAAA,UACA,WAAA;AAAA,UACA,CAAA,EAAG,IAAI,GAAG,CAAA,GAAA,EAAM,WAAW,QAAS,CAAA,KAAK,EAAE,UAAU,CAAA,CAAA;AAAA,SACvD,CAAA;AACA,QAAC,EAAG,CAAA,MAAA,CAAuB,SAAW,EAAA,GAAA,CAAI,MAAM,CAAA,CAAA;AAChD,QAAA,MAAM,KAAQ,GAAA;AAAA,UACZ,CAAA,EAAG,UAAW,CAAA,EAAE,CAAG,EAAA,CAAA;AAAA,UACnB,CAAA,EAAG,UAAW,CAAA,EAAE,CAAG,EAAA,CAAA;AAAA,SACrB,CAAA;AACA,QAAI,IAAA,CAAC,KAAS,IAAA,CAAC,KAAM,CAAA,UAAA;AAAY,UAAA,OAAA;AAAA,OACnC;AAAA,MACA,YAAA,EAAc,CAAC,EAAO,KAAA;AACpB,QAAuB,sBAAA,CAAA,SAAA,CAAU,SAAS,EAAE,CAAA,CAAA;AAC5C,QAAa,YAAA,CAAA,OAAA,EAAS,aAAa,EAAE,CAAA,CAAA;AAErC,QAAC,EAAG,CAAA,MAAA,CAAuB,SAAW,EAAA,MAAA,CAAO,MAAM,CAAA,CAAA;AAAA,OACrD;AAAA,MAEA,QAAA,kBAAA,GAAA;AAAA,QAAC,SAAA;AAAA,QAAA;AAAA,UACC,aAAc,EAAA,OAAA;AAAA,UACd,IAAM,EAAA,CAAA;AAAA,UACN,IAAI,GAAI,CAAA,KAAA;AAAA,UACR,GAAI,EAAA,MAAA;AAAA,UACJ,QAAU,EAAA,OAAA;AAAA,UACV,UAAY,EAAA,cAAA;AAAA,UACZ,QAAU,EAAA,MAAA;AAAA,SAAA;AAAA,OACZ;AAAA,KAAA;AAAA,GAEJ,EAAA,CAAA,CAAA;AAEJ;;;;"}
@@ -327,7 +327,7 @@ const HorizontalBars = ({
327
327
  {
328
328
  scale: yScale,
329
329
  left: effectiveMargin.left,
330
- label: chart.chartType !== "pie2D" && chart.showAxisYTitle ? chart.axisYTitle : "",
330
+ label: chart.chartType !== "pie2D" && chart.showAxisXTitle ? chart.axisXTitle : "",
331
331
  labelOffset: 10,
332
332
  tickLabelProps: () => ({
333
333
  display: "none"
@@ -339,7 +339,7 @@ const HorizontalBars = ({
339
339
  {
340
340
  top: innerHeight,
341
341
  scale: xScale,
342
- label: chart.chartType !== "pie2D" && chart.showAxisXTitle ? chart.axisXTitle : "",
342
+ label: chart.chartType !== "pie2D" && chart.showAxisYTitle ? chart.axisYTitle : "",
343
343
  tickLabelProps: { display: "none" },
344
344
  tickLineProps: { display: "none" },
345
345
  labelOffset: 30
@@ -1 +1 @@
1
- {"version":3,"file":"HorizontalBars.js","sources":["../../../src/charts/horizontalBars/HorizontalBars.tsx"],"sourcesContent":["import uniqueId from 'lodash-es/uniqueId';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport React, { useLayoutEffect, useMemo } from 'react';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroupHorizontal } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { Bar } from './Bar';\nimport { usePanAndZoom } from '@apia/util';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { useChartStyles } from '../util/useChartStyles';\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getYValue = (d: IParsedColumn) => d.columnName;\n\nexport type THorizontalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst HorizontalBars = ({\n margin = { top: 20, left: 50, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n outerClassName,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const yScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n innerHeight,\n ],\n domain: parsedData.map(getYValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, yScale.bandwidth()],\n });\n\n const xScaleLog = scaleLog<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const xScaleLine = scaleLinear<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const isLogScale = false;\n\n const xScale = useMemo(() => {\n if (!isLogScale) {\n return xScaleLine;\n }\n return xScaleLog;\n }, [isLogScale, xScaleLine, xScaleLog]);\n\n const id = useMemo(() => `HorizontalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(\n `#${id} .__${(chartId as string) ?? outerClassName}`,\n )\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(15deg) translateX(${width / 2}px)`;\n });\n });\n const styles = useChartStyles(chart.colorSchema);\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n let numberReference: TChartReference = [];\n if (colorReference.length === 1) {\n numberReference = arrayOrArray(\n arrayOrArray(chart.dataSets.data)[0].sets,\n ).map((data, index) => {\n return {\n color: `${index + 1}`,\n title: data.key,\n };\n });\n }\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${outerClassName ?? ''} ${chartId} ${\n chart.title\n } chartBox chartContainer`}\n sx={React.useMemo(() => {\n return {\n [`.__${(chartId as string) ?? outerClassName}`]: {\n transform: 'rotate(45deg)',\n transformOrigin: 'attr(x) 18px',\n },\n overflow: 'hidden',\n position: 'relative',\n\n height: `${chart.ratio.height}px`,\n // width: `${chart.ratio.width}px`,\n };\n }, [chart.ratio.height, chartId, outerClassName])}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} ${className ? className : ''} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n style={{\n position: 'absolute',\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={effectiveMargin.left}\n >\n <BarGroupHorizontal\n data={parsedData}\n keys={columnNames}\n width={innerWidth}\n y0={getYValue}\n y0Scale={yScale}\n y1Scale={columnGroupScale}\n xScale={xScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.y0}`}\n top={barGroup.y0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n effectiveMargin={effectiveMargin}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroupHorizontal>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n labelOffset={10}\n tickLabelProps={() => ({\n display: 'none',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={30}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer\n id={chartId}\n references={\n // hideLegendsColors\n // ? colorReference.map((ref) => {\n // return { ...ref, color: 'transparent' };\n // })\n colorReference.length === 1 && numberReference.length > 0\n ? numberReference\n : colorReference\n }\n useNumbered={colorReference.length === 1}\n />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { HorizontalBars };\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HorizontalBars.js","sources":["../../../src/charts/horizontalBars/HorizontalBars.tsx"],"sourcesContent":["import uniqueId from 'lodash-es/uniqueId';\nimport { TApiaChartColorDisposition, TChartRendererProps } from '../types';\nimport { arrayOrArray, getLabel } from '@apia/util';\nimport { parseMargin } from '../util/parseMargin';\nimport { scaleLinear, scaleBand, scaleLog, scaleOrdinal } from '@visx/scale';\nimport React, { useLayoutEffect, useMemo } from 'react';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { BarGroupHorizontal } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport { Bar } from './Bar';\nimport { usePanAndZoom } from '@apia/util';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { getBarColor } from '../util/getBarColor';\nimport { useChartStyles } from '../util/useChartStyles';\nexport interface IParsedColumn {\n columnName: string;\n [key: string]: string;\n}\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nconst getYValue = (d: IParsedColumn) => d.columnName;\n\nexport type THorizontalBarsEvents = { highlight: { barName: string } };\n\n/**\n * Acepta parámetro pieces que debe ser compuesto por...\n *\n * @example\n *\n * // Instanciar con solamente x\n * <Pie pieces={{x: 3}} />\n *\n * // Instanciar con x e y\n * <Pie pieces={{x: 3, y: 5}} />\n */\nconst HorizontalBars = ({\n margin = { top: 20, left: 50, bottom: 150, right: 20 },\n chart,\n className,\n chartId,\n outerClassName,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n let innerWidth =\n chart.ratio.width + (-effectiveMargin.left - effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height + (-effectiveMargin.top - effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const columnas = arrayOrArray(chart.dataSets?.data)\n .filter((column) => !!column.sets)\n .map((column) => {\n return {\n ...column,\n sets: column.sets,\n };\n });\n\n const xValues = arrayOrArray(columnas[0].sets).map(\n (innerCoord) => innerCoord.key,\n );\n const columnNames = columnas.map((col) => {\n return col.name;\n });\n\n const parsedData: IParsedColumn[] = xValues.map((x) => {\n const obj: IParsedColumn = columnas.reduce<IParsedColumn>(\n (acc, column) => {\n return {\n ...acc,\n [column.name]: arrayOrArray(column.sets).filter((coord) => {\n return coord.key === x;\n })[0].value,\n };\n },\n { columnName: x },\n );\n return obj;\n });\n\n const yScale = scaleBand<string>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n innerHeight,\n ],\n domain: parsedData.map(getYValue),\n padding: 0.2,\n });\n\n const columnGroupScale = scaleBand<string>({\n domain: columnNames,\n range: [0, yScale.bandwidth()],\n });\n\n const xScaleLog = scaleLog<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 1,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n base: 10,\n });\n\n const xScaleLine = scaleLinear<number>({\n range: [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ],\n domain: [\n 0,\n Math.max(\n ...parsedData.map((d) =>\n Math.max(...columnNames.map((key) => Number(d[key]))),\n ),\n ),\n ],\n });\n\n const color = scaleOrdinal<string, string>({\n domain: columnNames,\n range: columnas.map((col) => col.color),\n });\n\n const isLogScale = false;\n\n const xScale = useMemo(() => {\n if (!isLogScale) {\n return xScaleLine;\n }\n return xScaleLog;\n }, [isLogScale, xScaleLine, xScaleLog]);\n\n const id = useMemo(() => `HorizontalBars${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(\n `#${id} .__${(chartId as string) ?? outerClassName}`,\n )\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(15deg) translateX(${width / 2}px)`;\n });\n });\n const styles = useChartStyles(chart.colorSchema);\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return returnColumnsArray;\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n let numberReference: TChartReference = [];\n if (colorReference.length === 1) {\n numberReference = arrayOrArray(\n arrayOrArray(chart.dataSets.data)[0].sets,\n ).map((data, index) => {\n return {\n color: `${index + 1}`,\n title: data.key,\n };\n });\n }\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n return (\n <>\n <Box\n ref={boxRef}\n id={id}\n className={`${outerClassName ?? ''} ${chartId} ${\n chart.title\n } chartBox chartContainer`}\n sx={React.useMemo(() => {\n return {\n [`.__${(chartId as string) ?? outerClassName}`]: {\n transform: 'rotate(45deg)',\n transformOrigin: 'attr(x) 18px',\n },\n overflow: 'hidden',\n position: 'relative',\n\n height: `${chart.ratio.height}px`,\n // width: `${chart.ratio.width}px`,\n };\n }, [chart.ratio.height, chartId, outerClassName])}\n >\n <svg\n ref={elementRef}\n className={`_${chartId} ${className ? className : ''} chart__svg`}\n height={chart.ratio.height}\n width={chart.ratio.width}\n style={{\n position: 'absolute',\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n xScale={xScale}\n yScale={yScale}\n left={0}\n width={innerWidth}\n height={innerHeight}\n numTicksRows={10}\n numTicksColumns={10}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n />\n )}\n <Group\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={effectiveMargin.left}\n >\n <BarGroupHorizontal\n data={parsedData}\n keys={columnNames}\n width={innerWidth}\n y0={getYValue}\n y0Scale={yScale}\n y1Scale={columnGroupScale}\n xScale={xScale}\n color={color}\n >\n {(barGroups) =>\n barGroups.map((barGroup) => {\n return (\n <Group\n key={`bar-group-${barGroup.index}-${barGroup.y0}`}\n top={barGroup.y0}\n >\n {barGroup.bars.map((bar) => {\n const key = `${barGroup.index}-${bar.index}-${bar.key}`;\n return (\n <Bar\n isSingle={barGroup.bars.length === 1}\n key={key}\n bar={bar}\n barGroup={barGroup}\n chart={chart}\n parsedData={parsedData}\n effectiveMargin={effectiveMargin}\n setsWithColor={setsWithColor.flat()}\n />\n );\n })}\n </Group>\n );\n })\n }\n </BarGroupHorizontal>\n </Group>\n <AxisLeft\n scale={yScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n labelOffset={10}\n tickLabelProps={() => ({\n display: 'none',\n })}\n />\n <AxisBottom\n top={innerHeight}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={30}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer\n id={chartId}\n references={\n // hideLegendsColors\n // ? colorReference.map((ref) => {\n // return { ...ref, color: 'transparent' };\n // })\n colorReference.length === 1 && numberReference.length > 0\n ? numberReference\n : colorReference\n }\n useNumbered={colorReference.length === 1}\n />\n </Box>\n )}\n </Box>\n </>\n );\n};\n\nexport { HorizontalBars };\n"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { jsxs, Fragment, jsx } from '@apia/theme/jsx-runtime';
1
+ import { jsxs, jsx, Fragment } from '@apia/theme/jsx-runtime';
2
2
  import { arrayOrArray, useImperativeComponentEvents, usePanAndZoom, usePrevious, getLabel } from '@apia/util';
3
3
  import { scaleOrdinal, scaleLinear, scaleLog } from '@visx/scale';
4
4
  import { min, max } from 'd3-array';
@@ -242,6 +242,35 @@ const LineChart = ({
242
242
  highlight(barName) {
243
243
  if (barName.split(" - ").length === 1) {
244
244
  setHighlightedBar(barName);
245
+ if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
246
+ console.log({ barName, lines });
247
+ const selectedLineGroup = lines.find((l) => l.name === barName);
248
+ const selectedLineGroupIndex = lines.findIndex(
249
+ (l) => l.name === barName
250
+ );
251
+ console.log({ selectedLineGroup, selectedLineGroupIndex });
252
+ if (selectedLineGroup && selectedLineGroupIndex !== -1) {
253
+ ApiaUtil.instance.tooltips.open({
254
+ children: arrayOrArray(selectedLineGroup.sets).map((dat, i) => {
255
+ return /* @__PURE__ */ jsxs("div", { children: [
256
+ /* @__PURE__ */ jsx(
257
+ "div",
258
+ {
259
+ style: {
260
+ color: colorReference[selectedLineGroupIndex].color
261
+ },
262
+ children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? dat.key : chart.showLegend ? barName : "" })
263
+ }
264
+ ),
265
+ chart.showValues && /* @__PURE__ */ jsx("div", { children: dat.value }),
266
+ /* @__PURE__ */ jsx("div", {}),
267
+ arrayOrArray(selectedLineGroup.sets)[i + 1] && /* @__PURE__ */ jsx("hr", {})
268
+ ] }, `${dat.key}`);
269
+ }),
270
+ attachToMousePosition: true
271
+ });
272
+ }
273
+ }
245
274
  } else if (barName.split(" - ").length === 2) {
246
275
  setHighlightedBar(barName.split(" - ")[0]);
247
276
  }
@@ -311,7 +340,7 @@ const LineChart = ({
311
340
  );
312
341
  if (elementUnderCursor && elementUnderCursor.tagName === "circle") {
313
342
  if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {
314
- new ApiaUtil().tooltips.open({
343
+ ApiaUtil.instance.tooltips.open({
315
344
  children: nearNodes.sort((a, b) => Number(b.yValue) - Number(a.yValue)).map((node, i) => {
316
345
  const useSpecific = colorReference.some(
317
346
  (ref) => ref.title === node.columnName + " - " + node.xValue
@@ -328,11 +357,11 @@ const LineChart = ({
328
357
  return ref.title === (useSpecific ? node.columnName + " - " + node.xValue : node.columnName);
329
358
  })].color
330
359
  },
331
- children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? node.columnName : chart.showLegend ? node.xValue : "" })
360
+ children: /* @__PURE__ */ jsx("strong", { children: chart.showAxisXTitle ? node.xValue : chart.showLegend ? node.columnName : "" })
332
361
  }
333
362
  ),
334
363
  chart.showValues && /* @__PURE__ */ jsx("div", { children: node.yValue }),
335
- /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? node.xValue : "" }),
364
+ /* @__PURE__ */ jsx("div", { children: chart.showAxisXTitle && chart.showLegend ? node.columnName : "" }),
336
365
  nearNodesArray[i + 1] && /* @__PURE__ */ jsx("hr", {})
337
366
  ]
338
367
  },
@@ -343,7 +372,7 @@ const LineChart = ({
343
372
  });
344
373
  }
345
374
  } else {
346
- new ApiaUtil().tooltips.closeAll();
375
+ ApiaUtil.instance.tooltips.closeAll();
347
376
  }
348
377
  } else if (nearNodes.length === 0) {
349
378
  setCurrentCircle([]);
@@ -441,6 +470,36 @@ const LineChart = ({
441
470
  label: chart.chartType !== "pie2D" && chart.showAxisYTitle ? chart.axisYTitle : "",
442
471
  tickLabelProps: {
443
472
  display: chart.showAxisYTitle ? "auto" : "none"
473
+ },
474
+ tickComponent: (props) => {
475
+ let value = Number(props.formattedValue?.replace(",", ""));
476
+ let counter = -1;
477
+ const units = ["k", "M", "G", "T", "P", "E", "Z", "Y", "R", "Q"];
478
+ while (value >= 1e3) {
479
+ value = value / 1e3;
480
+ counter++;
481
+ }
482
+ let stringValue = `${value}`;
483
+ if (stringValue.length > 3) {
484
+ stringValue = stringValue.slice(0, 3);
485
+ }
486
+ if (stringValue.endsWith(".")) {
487
+ stringValue = stringValue.replace(".", "");
488
+ }
489
+ const newValue = `${stringValue}${counter >= 0 ? units[counter] : ""}`;
490
+ return /* @__PURE__ */ jsx(Fragment, { children: chart.showAxisYTitle && /* @__PURE__ */ jsx(
491
+ "text",
492
+ {
493
+ dx: props.dx,
494
+ dy: props.dy,
495
+ fill: props.fill,
496
+ fontSize: props.fontSize,
497
+ textAnchor: props.textAnchor,
498
+ x: props.x,
499
+ y: props.y,
500
+ children: newValue
501
+ }
502
+ ) });
444
503
  }
445
504
  }
446
505
  ),
@@ -1 +1 @@
1
- {"version":3,"file":"LineChart.js","sources":["../../../src/charts/linear/LineChart.tsx"],"sourcesContent":["import {\n arrayOrArray,\n getLabel,\n useImperativeComponentEvents,\n usePanAndZoom,\n usePrevious,\n} from '@apia/util';\nimport {\n TApiaChartColorDisposition,\n TApiaChartCoordinate,\n TApiaChartDefinition,\n TChartRendererProps,\n} from '../types';\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { min, max } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { useMemo, useState, useLayoutEffect } from 'react';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport * as allCurves from '@visx/curve';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { Node } from './Node';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { TChartEvents } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nfunction getX(coordinate: TApiaChartCoordinate) {\n return coordinate.key;\n}\n\nfunction getY(coordinate: TApiaChartCoordinate) {\n return Number(coordinate.value);\n}\n\nfunction parseData(chart: TApiaChartDefinition) {\n const setsArray = arrayOrArray(chart.dataSets?.data).map((col) =>\n arrayOrArray(col.sets),\n );\n let longestLine: TApiaChartCoordinate[] = [];\n let longestLineIndex = -1;\n\n for (let i = 0; i < setsArray.length; i++) {\n const array = setsArray[i];\n if (!longestLine || array.length > longestLine.length) {\n longestLine = array;\n longestLineIndex = i;\n }\n }\n\n const lines = arrayOrArray(chart.dataSets?.data);\n const nodesDataArray = lines.map((line) => line.sets);\n const nodesData = nodesDataArray.reduce<TApiaChartCoordinate[]>(\n (rec, d) => arrayOrArray(rec).concat(d),\n [],\n );\n return {\n lines,\n longestLine,\n longestLineIndex,\n tallestLine: [...new Set(nodesData.map((value) => value.value))],\n xScale: scaleOrdinal<string, number>({\n domain: longestLine.map(getX),\n }),\n yScale: scaleLinear<number>({\n domain: [\n (min(nodesData, getY) ?? 0) < 0 ? min(nodesData, getY) ?? 0 : 0,\n max(nodesData, getY) ?? 1,\n ],\n }),\n yScaleLog: scaleLog<number>({\n domain: [\n (min(nodesData, getY) ?? 1) > 0 ? min(nodesData, getY) ?? 1 : 1,\n max(nodesData, getY) ?? 10,\n ],\n }),\n };\n}\nexport type TLineChartEvents = { highlight: { barName: string } };\n\nexport type TChartNode = {\n x: number;\n y: number;\n xValue: string;\n yValue: string;\n columnName: string;\n};\n\nconst LineChart = ({\n chart,\n margin = { top: 20, left: 100, bottom: 24, right: 0 },\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width - (effectiveMargin.left + effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const { lines, xScale, yScale, yScaleLog, longestLine } = parseData(chart);\n const styles = useChartStyles(chart.colorSchema);\n const coordinates = arrayOrArray(lines[0].sets);\n const coordinatesArray = lines.map((col) => {\n return col.sets;\n });\n const divideRangeBetweenStrings = (\n min: number,\n max: number,\n strings: TApiaChartCoordinate[] | string[],\n ): number[] => {\n const numStrings = strings.length;\n const step = (max - min) / (numStrings - 1);\n\n const resultArray: number[] = [];\n let currentValue = min;\n\n for (let i = 0; i < numStrings; i++) {\n resultArray.push(currentValue);\n currentValue += step;\n }\n return resultArray;\n };\n const xScaleRange = useMemo(() => {\n const rangeArr = [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ];\n return divideRangeBetweenStrings(rangeArr[0], rangeArr[1], longestLine);\n }, [effectiveMargin, innerWidth, longestLine]);\n\n xScale.range(xScaleRange);\n const yScaleRange = useMemo(() => {\n const rangeArr = [\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom),\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ];\n\n return rangeArr;\n }, [effectiveMargin, innerHeight]);\n\n yScale.range(yScaleRange);\n yScaleLog.range([\n innerHeight,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\n\n const actualYScale = useMemo(() => {\n return yScale;\n }, [yScale]);\n const id = useMemo(() => `Linear${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n function addNameToProps(\n names: string[],\n objects: {\n xValue: string;\n yValue: string;\n x: number;\n y: number;\n }[],\n fixedValue: number,\n ) {\n return objects.map((object, index) => {\n const nameIndex = Math.floor(index / fixedValue);\n const name = names[nameIndex];\n return { ...object, columnName: name };\n });\n }\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return { returnColumnsArray, columnColor: dataColor };\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n const [highlightedBar, setHighlightedBar] = useState('');\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setHighlightedBar(barName);\n } else if (barName.split(' - ').length === 2) {\n setHighlightedBar(barName.split(' - ')[0]);\n }\n },\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const coords = coordinatesArray.flat().map((coord) => {\n return {\n xValue: coord.key,\n yValue: coord.value,\n x: xScale(getX(coord)),\n y: actualYScale(getY(coord)),\n };\n });\n const columnNames = lines.map((column) => {\n return column.name;\n });\n const nodes = addNameToProps(columnNames, coords, coordinates.length);\n\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\n const previousNearNodesArray = usePrevious(nearNodesArray);\n return (\n <>\n <Box id={id} ref={boxRef} className=\"chartBox chartContainer\">\n <svg\n ref={elementRef}\n width={innerWidth}\n height={innerHeight}\n id=\"LinesChart\"\n className={`_${chartId} chart__svg`}\n onMouseMove={(ev) => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n let clientX =\n ev.clientX - (effectiveMargin.left + effectiveMargin.right) / 2;\n let clientY =\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n\n if (rect) {\n clientX = ev.clientX - rect.left;\n clientY = ev.clientY - rect.top;\n }\n const nearNodes = nodes.filter((node) => {\n return (\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\n 20\n );\n });\n\n if (previousNearNodesArray.current && nearNodes.length > 0) {\n const currentColumns = lines\n .map((col) => {\n let colNames = '';\n nearNodes.forEach((node) => {\n if (col.name === node.columnName) {\n colNames = node.columnName;\n }\n });\n\n return colNames;\n })\n .filter((name) => name !== '');\n const currentIndex = coordinates.findIndex((coord) => {\n return coord.key === nearNodes[0].xValue;\n });\n\n if (currentColumns && currentIndex !== undefined) {\n const newCircleValues = currentColumns.map((col) => {\n return `${col}${currentIndex}`;\n });\n\n setCurrentCircle([...newCircleValues]);\n }\n setNearNodesArray(nearNodes);\n const elementUnderCursor = document.elementFromPoint(\n ev.clientX,\n ev.clientY,\n );\n if (\n elementUnderCursor &&\n elementUnderCursor.tagName === 'circle'\n ) {\n if (\n chart.showAxisXTitle ||\n chart.showLegend ||\n chart.showValues\n ) {\n new ApiaUtil().tooltips.open({\n children: nearNodes\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\n .map((node, i) => {\n const useSpecific = colorReference.some(\n (ref) =>\n ref.title === node.columnName + ' - ' + node.xValue,\n );\n\n return (\n <Box\n key={`${node.columnName}_${node.xValue}_${node.yValue}`}\n >\n <div\n style={{\n color:\n colorReference[\n colorReference.findIndex((ref) => {\n return (\n ref.title ===\n (useSpecific\n ? node.columnName +\n ' - ' +\n node.xValue\n : node.columnName)\n );\n })\n ].color,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? node.columnName\n : chart.showLegend\n ? node.xValue\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{node.yValue}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend\n ? node.xValue\n : ''}\n </div>\n {nearNodesArray[i + 1] && <hr />}\n </Box>\n );\n }),\n attachToMousePosition: true,\n });\n }\n } else {\n new ApiaUtil().tooltips.closeAll();\n }\n } else if (nearNodes.length === 0) {\n setCurrentCircle([]);\n }\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={0}\n xScale={xScale}\n yScale={actualYScale}\n width={innerWidth}\n height={innerHeight}\n stroke={styles?.grid.stroke}\n strokeOpacity={styles?.grid.opacity}\n />\n )}\n {lines.map((column, i) => {\n const currentCoordinates = arrayOrArray(column.sets);\n const newColor = setsWithColor.find(\n (data) => data.returnColumnsArray[0].columnName === column.name,\n )?.columnColor;\n\n return (\n <Group\n key={`lines-${column.name + i.toString()}`}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n style={{\n opacity:\n highlightedBar !== '' && highlightedBar !== column.name\n ? 0.15\n : 1,\n transition: 'opacity 500ms',\n }}\n >\n <LinePath\n curve={allCurves.curveMonotoneX}\n data={currentCoordinates}\n x={(coordinate) => {\n return xScale(getX(coordinate)) ?? 0;\n }}\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\n stroke={newColor ?? 'black'}\n strokeWidth={2}\n strokeOpacity={1}\n shapeRendering=\"geometricPrecision\"\n color=\"transparent\"\n />\n {currentCoordinates.map((coordinate, j) => {\n const key = column.name + j.toString();\n const realColor = setsWithColor\n .map((sets) => sets.returnColumnsArray)\n .flat()\n .find(\n (set) =>\n set.columnName === column.name &&\n set.key === coordinate.key,\n )?.color;\n\n return (\n <g key={key}>\n {chart.showValues && (\n <text\n x={xScale(getX(coordinate)) + 10}\n y={actualYScale(getY(coordinate)) - 5}\n textAnchor=\"middle\"\n style={{\n display:\n highlightedBar === column.name ? 'block' : 'none',\n opacity: highlightedBar === column.name ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {coordinate.value}\n </text>\n )}\n <Node\n color={realColor ?? 'black'}\n coordinate={coordinate}\n currentCircle={currentCircle}\n cx={xScale(getX(coordinate))}\n cy={actualYScale(getY(coordinate))}\n setCurrentCircle={setCurrentCircle}\n innerKey={key}\n column={column}\n />\n </g>\n );\n })}\n </Group>\n );\n })}\n\n <AxisLeft\n scale={actualYScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={{\n display: chart.showAxisYTitle ? 'auto' : 'none',\n }}\n />\n <AxisBottom\n top={innerHeight - (effectiveMargin.top + effectiveMargin.bottom)}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={10}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer id={chartId} references={colorReference} />\n </Box>\n )}\n </Box>\n </>\n );\n};\nexport { LineChart };\n"],"names":["min","max"],"mappings":"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"}
1
+ {"version":3,"file":"LineChart.js","sources":["../../../src/charts/linear/LineChart.tsx"],"sourcesContent":["import {\n arrayOrArray,\n getLabel,\n useImperativeComponentEvents,\n usePanAndZoom,\n usePrevious,\n} from '@apia/util';\nimport {\n TApiaChartColorDisposition,\n TApiaChartCoordinate,\n TApiaChartDefinition,\n TChartRendererProps,\n} from '../types';\nimport { scaleLinear, scaleLog, scaleOrdinal } from '@visx/scale';\nimport { min, max } from 'd3-array';\nimport { parseMargin } from '../util/parseMargin';\nimport { useMemo, useState, useLayoutEffect } from 'react';\nimport { useChartStyles } from '../util/useChartStyles';\nimport { Box, Heading } from '@apia/theme';\nimport { Grid } from '@visx/visx';\nimport { Group } from '@visx/group';\nimport { LinePath } from '@visx/shape';\nimport { AxisBottom, AxisLeft } from '@visx/axis';\nimport * as allCurves from '@visx/curve';\nimport uniqueId from 'lodash-es/uniqueId';\nimport { Node } from './Node';\nimport { getBarColor } from '../util/getBarColor';\nimport { LegendContainer, TChartReference } from '../util/LegendContainer';\nimport { TChartEvents } from '../ChartRenderer';\nimport { ApiaUtil } from '@apia/components';\n\nfunction adjustDimensions({\n width,\n height,\n maxWidth,\n}: {\n width: number;\n height: number;\n maxWidth: number;\n}) {\n if (width <= maxWidth) {\n return { width, height };\n }\n\n const ratio = width / height;\n const newWidth = maxWidth;\n const newHeight = Math.floor(newWidth / ratio);\n\n return { width: newWidth, height: newHeight };\n}\n\nfunction getX(coordinate: TApiaChartCoordinate) {\n return coordinate.key;\n}\n\nfunction getY(coordinate: TApiaChartCoordinate) {\n return Number(coordinate.value);\n}\n\nfunction parseData(chart: TApiaChartDefinition) {\n const setsArray = arrayOrArray(chart.dataSets?.data).map((col) =>\n arrayOrArray(col.sets),\n );\n let longestLine: TApiaChartCoordinate[] = [];\n let longestLineIndex = -1;\n\n for (let i = 0; i < setsArray.length; i++) {\n const array = setsArray[i];\n if (!longestLine || array.length > longestLine.length) {\n longestLine = array;\n longestLineIndex = i;\n }\n }\n\n const lines = arrayOrArray(chart.dataSets?.data);\n const nodesDataArray = lines.map((line) => line.sets);\n const nodesData = nodesDataArray.reduce<TApiaChartCoordinate[]>(\n (rec, d) => arrayOrArray(rec).concat(d),\n [],\n );\n return {\n lines,\n longestLine,\n longestLineIndex,\n tallestLine: [...new Set(nodesData.map((value) => value.value))],\n xScale: scaleOrdinal<string, number>({\n domain: longestLine.map(getX),\n }),\n yScale: scaleLinear<number>({\n domain: [\n (min(nodesData, getY) ?? 0) < 0 ? min(nodesData, getY) ?? 0 : 0,\n max(nodesData, getY) ?? 1,\n ],\n }),\n yScaleLog: scaleLog<number>({\n domain: [\n (min(nodesData, getY) ?? 1) > 0 ? min(nodesData, getY) ?? 1 : 1,\n max(nodesData, getY) ?? 10,\n ],\n }),\n };\n}\nexport type TLineChartEvents = { highlight: { barName: string } };\n\nexport type TChartNode = {\n x: number;\n y: number;\n xValue: string;\n yValue: string;\n columnName: string;\n};\n\nconst LineChart = ({\n chart,\n margin = { top: 20, left: 100, bottom: 24, right: 0 },\n chartId,\n allowZoom,\n}: TChartRendererProps) => {\n const effectiveMargin = parseMargin(margin);\n if (!chart.showAxisYTitle && effectiveMargin.left > 50) {\n effectiveMargin.left = 50;\n }\n let innerWidth =\n chart.ratio.width - (effectiveMargin.left + effectiveMargin.right) / 2;\n let innerHeight =\n chart.ratio.height - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n if (innerWidth > chart.ratio.maxWidth) {\n const newValues = adjustDimensions({\n height: innerHeight,\n width: innerWidth,\n maxWidth: chart.ratio.maxWidth,\n });\n innerWidth = newValues.width;\n innerHeight = newValues.height;\n }\n\n const { lines, xScale, yScale, yScaleLog, longestLine } = parseData(chart);\n const styles = useChartStyles(chart.colorSchema);\n const coordinates = arrayOrArray(lines[0].sets);\n const coordinatesArray = lines.map((col) => {\n return col.sets;\n });\n const divideRangeBetweenStrings = (\n min: number,\n max: number,\n strings: TApiaChartCoordinate[] | string[],\n ): number[] => {\n const numStrings = strings.length;\n const step = (max - min) / (numStrings - 1);\n\n const resultArray: number[] = [];\n let currentValue = min;\n\n for (let i = 0; i < numStrings; i++) {\n resultArray.push(currentValue);\n currentValue += step;\n }\n return resultArray;\n };\n const xScaleRange = useMemo(() => {\n const rangeArr = [\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.left,\n innerWidth,\n ];\n return divideRangeBetweenStrings(rangeArr[0], rangeArr[1], longestLine);\n }, [effectiveMargin, innerWidth, longestLine]);\n\n xScale.range(xScaleRange);\n const yScaleRange = useMemo(() => {\n const rangeArr = [\n innerHeight - (effectiveMargin.top + effectiveMargin.bottom),\n typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top,\n ];\n\n return rangeArr;\n }, [effectiveMargin, innerHeight]);\n\n yScale.range(yScaleRange);\n yScaleLog.range([\n innerHeight,\n typeof effectiveMargin === 'number' ? effectiveMargin : effectiveMargin.top,\n ]);\n\n const [currentCircle, setCurrentCircle] = useState<string[]>([]);\n\n const actualYScale = useMemo(() => {\n return yScale;\n }, [yScale]);\n const id = useMemo(() => `Linear${uniqueId()}`, []);\n useLayoutEffect(() => {\n document\n .querySelectorAll<HTMLElement>(`#${id} .tickLabel`)\n .forEach((current) => {\n const width = current.getBoundingClientRect().width;\n // eslint-disable-next-line no-param-reassign\n current.style.transformOrigin =\n (current.getAttribute('x') as string) + 'px 14px';\n // eslint-disable-next-line no-param-reassign\n current.style.transform = `rotate(25deg) translateX(${width / 2}px)`;\n });\n });\n function addNameToProps(\n names: string[],\n objects: {\n xValue: string;\n yValue: string;\n x: number;\n y: number;\n }[],\n fixedValue: number,\n ) {\n return objects.map((object, index) => {\n const nameIndex = Math.floor(index / fixedValue);\n const name = names[nameIndex];\n return { ...object, columnName: name };\n });\n }\n\n const setsWithColor = arrayOrArray(chart.dataSets.data).map((data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n const returnColumnsArray: TApiaChartColorDisposition[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnColumnsArray.push({ ...set, columnName: data.name });\n } else {\n returnColumnsArray.push({\n ...set,\n color: dataColor,\n columnName: data.name,\n });\n }\n });\n return { returnColumnsArray, columnColor: dataColor };\n });\n\n const colorReference: TChartReference = arrayOrArray(chart.dataSets.data).map(\n (data, index) => {\n const isSingle = arrayOrArray(chart.dataSets.data).length === 1;\n const dataColor =\n data.color !== '' && data.color !== undefined\n ? data.color\n : arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ).length > 0\n ? getBarColor(\n arrayOrArray(\n styles\n ? styles.schema\n : [\n '#7ad6f4',\n '#45bdee',\n '#28a7ea',\n '#006cbb',\n '#034698',\n '#032f64',\n ],\n ),\n index,\n isSingle,\n )\n : '';\n return {\n color: dataColor,\n title: data.name,\n };\n },\n );\n\n arrayOrArray(chart.dataSets.data)\n .map((data) => {\n const returnArray: { color: string; title: string }[] = [];\n arrayOrArray(data.sets).forEach((set) => {\n if (set.color !== '' && set.color !== undefined) {\n returnArray.push({\n color: set.color,\n title: data.name + ' - ' + set.key,\n });\n }\n });\n return returnArray;\n })\n .flat()\n .forEach((addRef) => colorReference.push(addRef));\n\n const [highlightedBar, setHighlightedBar] = useState('');\n useImperativeComponentEvents<TChartEvents>({\n highlight(barName) {\n if (barName.split(' - ').length === 1) {\n setHighlightedBar(barName);\n if (chart.showAxisXTitle || chart.showLegend || chart.showValues) {\n console.log({ barName, lines });\n const selectedLineGroup = lines.find((l) => l.name === barName);\n const selectedLineGroupIndex = lines.findIndex(\n (l) => l.name === barName,\n );\n console.log({ selectedLineGroup, selectedLineGroupIndex });\n\n if (selectedLineGroup && selectedLineGroupIndex !== -1) {\n ApiaUtil.instance.tooltips.open({\n children: arrayOrArray(selectedLineGroup.sets).map((dat, i) => {\n return (\n <div key={`${dat.key}`}>\n <div\n style={{\n color: colorReference[selectedLineGroupIndex].color,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? dat.key\n : chart.showLegend\n ? barName\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{dat.value}</div>}\n <div>\n {/* {chart.showAxisXTitle && chart.showLegend\n ? Object.keys(dat).find(\n (key) => dat[key] === dat[barName],\n )\n : ''} */}\n </div>\n {arrayOrArray(selectedLineGroup.sets)[i + 1] && <hr />}\n </div>\n );\n }),\n attachToMousePosition: true,\n });\n }\n }\n } else if (barName.split(' - ').length === 2) {\n setHighlightedBar(barName.split(' - ')[0]);\n }\n },\n });\n\n const { boxRef, elementRef } = usePanAndZoom<HTMLElement, SVGSVGElement>(\n undefined,\n !allowZoom ?? true,\n );\n const coords = coordinatesArray.flat().map((coord) => {\n return {\n xValue: coord.key,\n yValue: coord.value,\n x: xScale(getX(coord)),\n y: actualYScale(getY(coord)),\n };\n });\n const columnNames = lines.map((column) => {\n return column.name;\n });\n const nodes = addNameToProps(columnNames, coords, coordinates.length);\n\n const [nearNodesArray, setNearNodesArray] = useState<TChartNode[]>([]);\n const previousNearNodesArray = usePrevious(nearNodesArray);\n return (\n <>\n <Box id={id} ref={boxRef} className=\"chartBox chartContainer\">\n <svg\n ref={elementRef}\n width={innerWidth}\n height={innerHeight}\n id=\"LinesChart\"\n className={`_${chartId} chart__svg`}\n onMouseMove={(ev) => {\n const rect = elementRef.current?.getBoundingClientRect();\n\n let clientX =\n ev.clientX - (effectiveMargin.left + effectiveMargin.right) / 2;\n let clientY =\n ev.clientY - (effectiveMargin.top + effectiveMargin.bottom) / 2;\n\n if (rect) {\n clientX = ev.clientX - rect.left;\n clientY = ev.clientY - rect.top;\n }\n const nearNodes = nodes.filter((node) => {\n return (\n Math.sqrt((node.x - clientX) ** 2 + (node.y - clientY) ** 2) <\n 20\n );\n });\n\n if (previousNearNodesArray.current && nearNodes.length > 0) {\n const currentColumns = lines\n .map((col) => {\n let colNames = '';\n nearNodes.forEach((node) => {\n if (col.name === node.columnName) {\n colNames = node.columnName;\n }\n });\n\n return colNames;\n })\n .filter((name) => name !== '');\n const currentIndex = coordinates.findIndex((coord) => {\n return coord.key === nearNodes[0].xValue;\n });\n\n if (currentColumns && currentIndex !== undefined) {\n const newCircleValues = currentColumns.map((col) => {\n return `${col}${currentIndex}`;\n });\n\n setCurrentCircle([...newCircleValues]);\n }\n setNearNodesArray(nearNodes);\n const elementUnderCursor = document.elementFromPoint(\n ev.clientX,\n ev.clientY,\n );\n if (\n elementUnderCursor &&\n elementUnderCursor.tagName === 'circle'\n ) {\n if (\n chart.showAxisXTitle ||\n chart.showLegend ||\n chart.showValues\n ) {\n ApiaUtil.instance.tooltips.open({\n children: nearNodes\n .sort((a, b) => Number(b.yValue) - Number(a.yValue))\n .map((node, i) => {\n const useSpecific = colorReference.some(\n (ref) =>\n ref.title === node.columnName + ' - ' + node.xValue,\n );\n\n return (\n <Box\n key={`${node.columnName}_${node.xValue}_${node.yValue}`}\n >\n <div\n style={{\n color:\n colorReference[\n colorReference.findIndex((ref) => {\n return (\n ref.title ===\n (useSpecific\n ? node.columnName +\n ' - ' +\n node.xValue\n : node.columnName)\n );\n })\n ].color,\n }}\n >\n <strong>\n {chart.showAxisXTitle\n ? node.xValue\n : chart.showLegend\n ? node.columnName\n : ''}\n </strong>\n </div>\n {chart.showValues && <div>{node.yValue}</div>}\n <div>\n {chart.showAxisXTitle && chart.showLegend\n ? node.columnName\n : ''}\n </div>\n {nearNodesArray[i + 1] && <hr />}\n </Box>\n );\n }),\n attachToMousePosition: true,\n });\n }\n } else {\n ApiaUtil.instance.tooltips.closeAll();\n }\n } else if (nearNodes.length === 0) {\n setCurrentCircle([]);\n }\n }}\n >\n {chart.showGrid && (\n <Grid.Grid\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n left={0}\n xScale={xScale}\n yScale={actualYScale}\n width={innerWidth}\n height={innerHeight}\n stroke={styles?.grid.stroke}\n strokeOpacity={styles?.grid.opacity}\n />\n )}\n {lines.map((column, i) => {\n const currentCoordinates = arrayOrArray(column.sets);\n const newColor = setsWithColor.find(\n (data) => data.returnColumnsArray[0].columnName === column.name,\n )?.columnColor;\n\n return (\n <Group\n key={`lines-${column.name + i.toString()}`}\n top={\n (typeof effectiveMargin === 'number'\n ? effectiveMargin\n : effectiveMargin.top) - 20\n }\n style={{\n opacity:\n highlightedBar !== '' && highlightedBar !== column.name\n ? 0.15\n : 1,\n transition: 'opacity 500ms',\n }}\n >\n <LinePath\n curve={allCurves.curveMonotoneX}\n data={currentCoordinates}\n x={(coordinate) => {\n return xScale(getX(coordinate)) ?? 0;\n }}\n y={(coordinate) => actualYScale(getY(coordinate)) ?? 0}\n stroke={newColor ?? 'black'}\n strokeWidth={2}\n strokeOpacity={1}\n shapeRendering=\"geometricPrecision\"\n color=\"transparent\"\n />\n {currentCoordinates.map((coordinate, j) => {\n const key = column.name + j.toString();\n const realColor = setsWithColor\n .map((sets) => sets.returnColumnsArray)\n .flat()\n .find(\n (set) =>\n set.columnName === column.name &&\n set.key === coordinate.key,\n )?.color;\n\n return (\n <g key={key}>\n {chart.showValues && (\n <text\n x={xScale(getX(coordinate)) + 10}\n y={actualYScale(getY(coordinate)) - 5}\n textAnchor=\"middle\"\n style={{\n display:\n highlightedBar === column.name ? 'block' : 'none',\n opacity: highlightedBar === column.name ? 1 : 0,\n transition: 'opacity 500ms',\n }}\n >\n {coordinate.value}\n </text>\n )}\n <Node\n color={realColor ?? 'black'}\n coordinate={coordinate}\n currentCircle={currentCircle}\n cx={xScale(getX(coordinate))}\n cy={actualYScale(getY(coordinate))}\n setCurrentCircle={setCurrentCircle}\n innerKey={key}\n column={column}\n />\n </g>\n );\n })}\n </Group>\n );\n })}\n\n <AxisLeft\n scale={actualYScale}\n left={effectiveMargin.left}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisYTitle\n ? chart.axisYTitle\n : ''\n }\n tickLabelProps={{\n display: chart.showAxisYTitle ? 'auto' : 'none',\n }}\n tickComponent={(props) => {\n let value = Number(props.formattedValue?.replace(',', ''));\n let counter = -1;\n const units = ['k', 'M', 'G', 'T', 'P', 'E', 'Z', 'Y', 'R', 'Q'];\n while (value >= 1000) {\n value = value / 1000;\n counter++;\n }\n let stringValue = `${value}`;\n if (stringValue.length > 3) {\n stringValue = stringValue.slice(0, 3);\n }\n if (stringValue.endsWith('.')) {\n stringValue = stringValue.replace('.', '');\n }\n const newValue = `${stringValue}${\n counter >= 0 ? units[counter] : ''\n }`;\n\n return (\n <>\n {chart.showAxisYTitle && (\n <text\n dx={props.dx}\n dy={props.dy}\n fill={props.fill}\n fontSize={props.fontSize}\n textAnchor={props.textAnchor}\n x={props.x}\n y={props.y}\n >\n {newValue}\n </text>\n )}\n </>\n );\n }}\n />\n <AxisBottom\n top={innerHeight - (effectiveMargin.top + effectiveMargin.bottom)}\n scale={xScale}\n label={\n chart.chartType !== 'pie2D' && chart.showAxisXTitle\n ? chart.axisXTitle\n : ''\n }\n tickLabelProps={{ display: 'none' }}\n tickLineProps={{ display: 'none' }}\n labelOffset={10}\n />\n </svg>\n </Box>\n <Box className=\"chartLegend__Wrapper\">\n {chart.showLegend && colorReference.length !== 0 && (\n <Box className=\"chart__legend__wrapper\">\n {/* TODO LABEL */}\n <Heading as={'h6'}>{getLabel('mnuLeyends').text}</Heading>\n <LegendContainer id={chartId} references={colorReference} />\n </Box>\n )}\n </Box>\n </>\n );\n};\nexport { LineChart };\n"],"names":["min","max"],"mappings":"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"}