@evergis/react 4.0.101 → 4.0.102
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.
- package/dist/components/Dashboard/componentTypes.d.ts +1 -1
- package/dist/components/Dashboard/components/Chart/FillContext.d.ts +15 -0
- package/dist/components/Dashboard/components/Chart/styled.d.ts +1 -0
- package/dist/components/Dashboard/containers/EditContainer/styled.d.ts +2 -0
- package/dist/components/Dashboard/containers/styled.d.ts +4 -1
- package/dist/components/Dashboard/hooks/index.d.ts +1 -1
- package/dist/components/Dashboard/hooks/useResizeBox.d.ts +17 -0
- package/dist/components/Dashboard/types.d.ts +6 -2
- package/dist/index.js +110 -28
- package/dist/index.js.map +1 -1
- package/dist/react.esm.js +110 -28
- package/dist/react.esm.js.map +1 -1
- package/package.json +3 -3
- package/dist/components/Dashboard/components/Chart/ChartFillContext.d.ts +0 -8
- package/dist/components/Dashboard/hooks/useResizeWidth.d.ts +0 -12
package/dist/react.esm.js
CHANGED
|
@@ -100,7 +100,30 @@ const ChartWrapperContainer = styled.div.withConfig({ displayName: "ChartWrapper
|
|
|
100
100
|
position: relative;
|
|
101
101
|
width: 100%;
|
|
102
102
|
`;
|
|
103
|
-
|
|
103
|
+
/*
|
|
104
|
+
* fill-режим: обёртка забирает всю доступную ячейку (её высоту задаёт флекс-цепочка, а не контент графика),
|
|
105
|
+
* на неё вешается ref для ResizeObserver — меряем обе оси без цикла. Плоский div (не Flex uilib), как соседний
|
|
106
|
+
* ChartWrapperContainer, чтобы ref гарантированно дошёл до DOM-узла. Тело графика центрируется внутри.
|
|
107
|
+
*/
|
|
108
|
+
const ChartFillMeasure = styled.div.withConfig({ displayName: "ChartFillMeasure", componentId: "sc-1r4oerb" }) `
|
|
109
|
+
position: relative;
|
|
110
|
+
display: flex;
|
|
111
|
+
align-items: center;
|
|
112
|
+
justify-content: center;
|
|
113
|
+
width: 100%;
|
|
114
|
+
height: 100%;
|
|
115
|
+
min-width: 0;
|
|
116
|
+
min-height: 0;
|
|
117
|
+
overflow: hidden;
|
|
118
|
+
|
|
119
|
+
/* SVG по умолчанию inline, поэтому под ним остаётся зазор базовой линии (~4px при line-height
|
|
120
|
+
18.4px): вне fill его скрывал запас высоты, а тело, точно заполнившее ячейку, из-за него
|
|
121
|
+
вылезает за нижнюю границу. Блочный SVG зазора не даёт. */
|
|
122
|
+
svg {
|
|
123
|
+
display: block;
|
|
124
|
+
}
|
|
125
|
+
`;
|
|
126
|
+
const Tooltip = styled.div.withConfig({ displayName: "Tooltip", componentId: "sc-1va8cy3" }) `
|
|
104
127
|
position: relative;
|
|
105
128
|
border-radius: 0.25rem;
|
|
106
129
|
background-color: rgba(28, 33, 48);
|
|
@@ -193,7 +216,7 @@ const LineChartStyles = createGlobalStyle `
|
|
|
193
216
|
fill: ${({ theme: { palette } }) => palette.textDisabled};
|
|
194
217
|
}
|
|
195
218
|
`;
|
|
196
|
-
const StyledBarChart = styled(BarChart$1).withConfig({ displayName: "StyledBarChart", componentId: "sc-
|
|
219
|
+
const StyledBarChart = styled(BarChart$1).withConfig({ displayName: "StyledBarChart", componentId: "sc-1l1kx80" }) `
|
|
197
220
|
.domain {
|
|
198
221
|
display: none;
|
|
199
222
|
}
|
|
@@ -7630,30 +7653,33 @@ const useRenderElement = (type = WidgetType.Dashboard, elementConfig) => {
|
|
|
7630
7653
|
]);
|
|
7631
7654
|
};
|
|
7632
7655
|
|
|
7656
|
+
/** Пустой бокс на отключённом пути — стабильная ссылка, чтобы не плодить ре-рендеры. */
|
|
7657
|
+
const EMPTY_BOX = {};
|
|
7633
7658
|
/**
|
|
7634
|
-
* Измеряет
|
|
7659
|
+
* Измеряет фактические ширину и высоту DOM-элемента и обновляет их на любой ресайз (ResizeObserver).
|
|
7635
7660
|
*
|
|
7636
|
-
* Возвращает `[ref,
|
|
7637
|
-
* не измерен. Используется для «резинового» графика: d3-графикам
|
|
7638
|
-
*
|
|
7661
|
+
* Возвращает `[ref, box]`, где `box` — `{ width, height }` в пикселях (content-box) либо пустой объект,
|
|
7662
|
+
* пока элемент ещё не измерен. Используется для «резинового» графика: d3-графикам нужны конкретные
|
|
7663
|
+
* пиксельные размеры, а не CSS `100%`, а для вписывания (fit) нужны обе оси.
|
|
7639
7664
|
*
|
|
7640
7665
|
* `enabled: false` полностью отключает наблюдение — обычные (не fill) графики не измеряются
|
|
7641
7666
|
* и не вызывают лишних ре-рендеров.
|
|
7642
7667
|
*/
|
|
7643
|
-
const
|
|
7668
|
+
const useResizeBox = (enabled) => {
|
|
7644
7669
|
const ref = useRef(null);
|
|
7645
|
-
const [
|
|
7670
|
+
const [box, setBox] = useState(EMPTY_BOX);
|
|
7646
7671
|
useEffect(() => {
|
|
7647
7672
|
const node = ref.current;
|
|
7648
7673
|
if (!enabled || !node)
|
|
7649
7674
|
return;
|
|
7650
7675
|
const observer = new ResizeObserver(([entry]) => {
|
|
7651
|
-
|
|
7676
|
+
const { width, height } = entry.contentRect;
|
|
7677
|
+
setBox({ width, height });
|
|
7652
7678
|
});
|
|
7653
7679
|
observer.observe(node);
|
|
7654
7680
|
return () => observer.disconnect();
|
|
7655
7681
|
}, [enabled]);
|
|
7656
|
-
return [ref, enabled ?
|
|
7682
|
+
return [ref, enabled ? box : EMPTY_BOX];
|
|
7657
7683
|
};
|
|
7658
7684
|
|
|
7659
7685
|
const useShownOtherItems = (options) => {
|
|
@@ -7775,6 +7801,19 @@ const ContainerChart = styled(Flex).withConfig({ displayName: "ContainerChart",
|
|
|
7775
7801
|
justify-content: center;
|
|
7776
7802
|
width: 100%;
|
|
7777
7803
|
}
|
|
7804
|
+
|
|
7805
|
+
/* fill: слот забирает остаток высоты ячейки (под слотами title/alias/legend) и центрирует тело графика. */
|
|
7806
|
+
${({ $fill }) => $fill &&
|
|
7807
|
+
css `
|
|
7808
|
+
flex: 1 1 auto;
|
|
7809
|
+
min-height: 0;
|
|
7810
|
+
align-items: center;
|
|
7811
|
+
justify-content: center;
|
|
7812
|
+
|
|
7813
|
+
> * {
|
|
7814
|
+
height: 100%;
|
|
7815
|
+
}
|
|
7816
|
+
`}
|
|
7778
7817
|
`;
|
|
7779
7818
|
const ContainerLegend = styled(Flex).withConfig({ displayName: "ContainerLegend", componentId: "sc-z1n1s8" }) ``;
|
|
7780
7819
|
const ContainerUnits = styled.div.withConfig({ displayName: "ContainerUnits", componentId: "sc-1vurgy9" }) `
|
|
@@ -7790,6 +7829,13 @@ const ContainerValue = styled(Flex).withConfig({ displayName: "ContainerValue",
|
|
|
7790
7829
|
font-size: ${({ big }) => (big ? 1.5 : 1)}rem;
|
|
7791
7830
|
color: ${({ fontColor, theme: { palette } }) => fontColor || palette.textPrimary};
|
|
7792
7831
|
|
|
7832
|
+
/* fill: строка со слотом chart+legend забирает остаток высоты Container'а (гейт — только у Chart-контейнера). */
|
|
7833
|
+
${({ $fill }) => $fill &&
|
|
7834
|
+
css `
|
|
7835
|
+
flex: 1 1 auto;
|
|
7836
|
+
min-height: 0;
|
|
7837
|
+
`}
|
|
7838
|
+
|
|
7793
7839
|
> * {
|
|
7794
7840
|
width: ${({ column }) => (column ? "100%" : "auto")};
|
|
7795
7841
|
}
|
|
@@ -8421,6 +8467,10 @@ const ChartContainerWrapper = styled(FlexSpan).withConfig({ displayName: "ChartC
|
|
|
8421
8467
|
/* Заданная высота контейнера достаётся телу графика — за вычетом заголовка. */
|
|
8422
8468
|
${({ $sizeCss }) => !!$sizeCss?.height &&
|
|
8423
8469
|
css `
|
|
8470
|
+
/* Раздача высоты требует, чтобы обёртка была flex-колонкой (FlexSpan сам по себе не flex),
|
|
8471
|
+
иначе Container с flex:1 1 auto не растянется на заданную высоту, а fill-график не впишется по высоте. */
|
|
8472
|
+
display: flex;
|
|
8473
|
+
|
|
8424
8474
|
> ${Container} {
|
|
8425
8475
|
flex: 1 1 auto;
|
|
8426
8476
|
min-height: 0;
|
|
@@ -8431,17 +8481,19 @@ const ChartContainerWrapper = styled(FlexSpan).withConfig({ displayName: "ChartC
|
|
|
8431
8481
|
`;
|
|
8432
8482
|
|
|
8433
8483
|
/**
|
|
8434
|
-
*
|
|
8484
|
+
* Контекст вписывания графика (`options.fill` контейнера Chart).
|
|
8435
8485
|
*
|
|
8436
8486
|
* Компонент `Chart` рендерится через `renderElement({ id: "chart" })` и получает только дочерний
|
|
8437
8487
|
* узел `{ id: "chart" }` — опции контейнера до него не доходят. `ChartContainer` оборачивает
|
|
8438
|
-
* график в провайдер этого контекста, а `Chart` читает
|
|
8488
|
+
* график в провайдер этого контекста, а `Chart` читает значение через `useContext`.
|
|
8439
8489
|
*/
|
|
8440
|
-
const
|
|
8490
|
+
const FillContext = createContext({ fill: false, fitHeight: false });
|
|
8441
8491
|
|
|
8442
8492
|
const ChartContainer = memo(({ elementConfig, isVisible, type, renderElement }) => {
|
|
8443
8493
|
const { options, children } = elementConfig || {};
|
|
8444
|
-
const { twoColumns, hideEmpty,
|
|
8494
|
+
const { twoColumns, hideEmpty, height } = options || {};
|
|
8495
|
+
const fill = options?.fill;
|
|
8496
|
+
const fillContextValue = useMemo(() => ({ fill: !!fill, fitHeight: !!fill && height != null }), [fill, height]);
|
|
8445
8497
|
const aliasElement = children.find(child => child.id === "alias");
|
|
8446
8498
|
const chartElement = children.find(child => child.id === "chart");
|
|
8447
8499
|
const legendElement = children.find(child => child.id === "legend");
|
|
@@ -8456,7 +8508,7 @@ const ChartContainer = memo(({ elementConfig, isVisible, type, renderElement })
|
|
|
8456
8508
|
const hasItems = !!data[0]?.items?.length;
|
|
8457
8509
|
if (!loading && !hasItems && hideEmpty)
|
|
8458
8510
|
return null;
|
|
8459
|
-
return (jsxs(ChartContainerWrapper, { ...root, children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxs(Container, { isColumn: true, children: [aliasElement && jsx(ContainerAlias, { hasBottomMargin: true, children: renderElement({ id: "alias" }) }), jsx(ContainerValue, { column: !twoColumns, alignItems: "center", children: hasItems ? (jsxs(Fragment$1, { children: [jsx(ContainerChart, { children: jsx(
|
|
8511
|
+
return (jsxs(ChartContainerWrapper, { ...root, children: [jsx(ExpandableTitle, { elementConfig: elementConfig, type: type, renderElement: renderElement }), isVisible && (jsxs(Container, { isColumn: true, children: [aliasElement && jsx(ContainerAlias, { hasBottomMargin: true, children: renderElement({ id: "alias" }) }), jsx(ContainerValue, { column: !twoColumns, alignItems: twoColumns && fill ? "stretch" : "center", "$fill": !!fill, children: hasItems ? (jsxs(Fragment$1, { children: [jsx(ContainerChart, { "$fill": !!fill, children: jsx(FillContext.Provider, { value: fillContextValue, children: renderElement({ id: "chart" }) }) }), jsx(ContainerLegend, { justifyContent: legendElement?.options?.center ? "center" : "flex-start", children: renderElement({ id: "legend" }) })] })) : (jsx(Fragment$1, { children: "\u2014" })) })] }))] }));
|
|
8460
8512
|
});
|
|
8461
8513
|
|
|
8462
8514
|
const PagesContainer = memo(({ type = WidgetType.Dashboard, noBorders }) => {
|
|
@@ -11463,6 +11515,8 @@ const tagTypography = (tag) => ({ $typography }) => {
|
|
|
11463
11515
|
${style.fontSize && `font-size: ${style.fontSize};`}
|
|
11464
11516
|
${style.lineHeight && `line-height: ${style.lineHeight};`}
|
|
11465
11517
|
${style.fontWeight != null && `font-weight: ${style.fontWeight};`}
|
|
11518
|
+
${style.marginTop && `margin-top: ${style.marginTop};`}
|
|
11519
|
+
${style.marginBottom && `margin-bottom: ${style.marginBottom};`}
|
|
11466
11520
|
`;
|
|
11467
11521
|
};
|
|
11468
11522
|
const MarkdownWrapper = styled.div.withConfig({ displayName: "MarkdownWrapper", componentId: "sc-1iv8z8a" }) `
|
|
@@ -12695,7 +12749,8 @@ const ChartLoading = ({ column }) => (jsx(Flex, { position: "absolute", width: "
|
|
|
12695
12749
|
|
|
12696
12750
|
const ContainerLoading = () => (jsx(Flex, { alignContent: "center", justifyContent: "center", width: "100%", children: jsx(CircularProgress, { diameter: 1.5, mono: true }) }));
|
|
12697
12751
|
|
|
12698
|
-
// forwardRef
|
|
12752
|
+
// forwardRef сохранён для совместимости; в fill-режиме ResizeObserver меряет внешнюю обёртку
|
|
12753
|
+
// ChartFillMeasure (см. Chart/index.tsx), а не сам ChartWrapper.
|
|
12699
12754
|
const ChartWrapper = memo(forwardRef(({ width, height, column, loading, children }, ref) => {
|
|
12700
12755
|
return (jsxs(ChartWrapperContainer, { ref: ref, column: column, style: { width, height }, children: [loading && jsx(ChartLoading, { column: column }), jsx(Flex, { opacity: loading ? FILTERED_VALUE_OPACITY / 100 : 1, children: children })] }));
|
|
12701
12756
|
}));
|
|
@@ -14032,10 +14087,10 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14032
14087
|
const primaryColor = palette.primary;
|
|
14033
14088
|
const { t } = useGlobalContext();
|
|
14034
14089
|
const { expandedContainers, attributes, dataSources } = useWidgetContext(type);
|
|
14035
|
-
//
|
|
14036
|
-
// т.к. d3-графики (и useChartChange для line) требуют
|
|
14037
|
-
const fill = useContext(
|
|
14038
|
-
const [chartRef, measuredWidth] =
|
|
14090
|
+
// fill контейнера: вписываем тело графика в контейнер. Размеры ячейки измеряем реально (ResizeObserver),
|
|
14091
|
+
// т.к. d3-графики (и useChartChange для line) требуют пиксельные числа, а не CSS "100%".
|
|
14092
|
+
const { fill, fitHeight } = useContext(FillContext);
|
|
14093
|
+
const [chartRef, { width: measuredWidth, height: measuredHeight }] = useResizeBox(fill);
|
|
14039
14094
|
const { id, options, children } = element || {};
|
|
14040
14095
|
const { column, markers: configMarkers, showLabels, showMarkers, showTotal, totalWord: configTotalWord, totalAttribute, expandable, expanded, chartType, relatedDataSources, defaultColor, dotSnapping, } = options || {};
|
|
14041
14096
|
const isLineChart = chartType === "line";
|
|
@@ -14071,11 +14126,19 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14071
14126
|
const chartWidth = fill
|
|
14072
14127
|
? measuredWidth ?? DEFAULT_CHART_WIDTH
|
|
14073
14128
|
: toPxNumber(width) ?? DEFAULT_CHART_WIDTH;
|
|
14129
|
+
// Фит по высоте включается только при заданной высоте контейнера (fitHeight) и уже измеренной
|
|
14130
|
+
// ячейке; иначе — прежняя фикс. высота options.height. Флаг важен и ниже: он различает два
|
|
14131
|
+
// смысла chartHeight — «высота тела» (вне fill) и «вся доступная высота» (в fill).
|
|
14132
|
+
const fitsHeight = useMemo(() => !!(fill && fitHeight && measuredHeight), [fill, fitHeight, measuredHeight]);
|
|
14133
|
+
// fill по высоте: тянем тело графика на измеренную доступную высоту ячейки (content-box минус слоты).
|
|
14134
|
+
const chartHeight = useMemo(() => (fitsHeight && measuredHeight ? measuredHeight : height), [fitsHeight, measuredHeight, height]);
|
|
14135
|
+
// Круглый график вписываем по короткой стороне (object-fit: contain), центрируя в ячейке.
|
|
14136
|
+
const pieSide = useMemo(() => (fitsHeight && measuredHeight ? Math.min(chartWidth, measuredHeight) : chartWidth), [fitsHeight, measuredHeight, chartWidth]);
|
|
14074
14137
|
const [customize] = useChartChange({
|
|
14075
14138
|
dataSources: config.dataSources,
|
|
14076
14139
|
chartId: elementConfig?.id,
|
|
14077
14140
|
width: chartWidth,
|
|
14078
|
-
height,
|
|
14141
|
+
height: chartHeight,
|
|
14079
14142
|
fontColor,
|
|
14080
14143
|
relatedAttributes,
|
|
14081
14144
|
defaultColor: primaryColor,
|
|
@@ -14175,26 +14238,37 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14175
14238
|
.flat()
|
|
14176
14239
|
.map(({ values }) => values)
|
|
14177
14240
|
.flat();
|
|
14178
|
-
return (jsxs(AnyChartWrapper, { height:
|
|
14241
|
+
return (jsxs(AnyChartWrapper, { height: chartHeight, children: [jsx(LineChartStyles, {}), jsx(LineChart, { data: lineChartData, labels: labels, markers: markers, width: chartWidth, height: chartHeight, xAxisPadding: 15, yAxisPadding: 0, min: Math.min(...chartValues), customYAxisSelection: yAxis => {
|
|
14179
14242
|
if (isHidedY) {
|
|
14180
14243
|
yAxis.remove();
|
|
14181
14244
|
}
|
|
14182
14245
|
}, customYAxis: yAxis => yAxis.ticks(4), renderTooltip: renderLineChartTooltip, customize: customize, dotSnapping: dotSnapping, dynamicTooltipEnable: true, stackedTooltip: true, tooltipClassName: "dashboardLineChartTooltip", drawGridX: !isHidedY, margin: margin })] }));
|
|
14183
14246
|
}
|
|
14184
14247
|
if (isStackBar) {
|
|
14185
|
-
|
|
14248
|
+
// Вне fill chartHeight — высота самой полосы, и обёртка честно становится выше на строку
|
|
14249
|
+
// итога. В fill chartHeight — уже ВСЯ доступная высота ячейки, поэтому строку итога надо
|
|
14250
|
+
// вычесть из неё (обёртка остаётся ровно по ячейке), а не прибавить сверху — иначе тело
|
|
14251
|
+
// вылезает за нижнюю границу на STACK_BAR_TOTAL_HEIGHT.
|
|
14252
|
+
const stackBarHeight = showTotal && !fitsHeight ? chartHeight + STACK_BAR_TOTAL_HEIGHT : chartHeight;
|
|
14186
14253
|
return (jsx(AnyChartWrapper, { height: stackBarHeight, children: jsx(StackBar, { data: data, filterName: filterName, type: type, alias: elementConfig?.children?.find(child => child.id === "alias"), options: options, renderTooltip: renderPieChartTooltip, renderElement: renderElement }) }));
|
|
14187
14254
|
}
|
|
14188
14255
|
if (isPieChart) {
|
|
14189
|
-
return (jsx(AnyChartWrapper, { height: height, children: jsx(PieChart, { data: (data[0]?.items
|
|
14256
|
+
return (jsx(AnyChartWrapper, { height: fill ? pieSide : height, children: jsx(PieChart, { data: (data[0]?.items
|
|
14190
14257
|
?.filter(({ value }) => !isEmptyValue(value))
|
|
14191
14258
|
?.map(item => ({
|
|
14192
14259
|
...item,
|
|
14193
14260
|
color: formatFilterColor(item.name, item.color, defaultColor),
|
|
14194
|
-
})) || []), width:
|
|
14261
|
+
})) || []), width: pieSide, height: pieSide, padAngle: angle, outerRadius: radius, cornerRadius: cornerRadius, renderTooltip: renderPieChartTooltip, withTooltip: true, onClick: filterName ? item => onFilter(item.name) : undefined, children: showTotal && (jsx(PieChartCenter, { children: totalWord || roundTotalSum(+totalSum) })) }) }));
|
|
14195
14262
|
}
|
|
14196
14263
|
const barChartData = getDataFromFilterItems(data[0]?.items);
|
|
14197
|
-
|
|
14264
|
+
// Тот же случай, что у stack: обёртка выше тела на подписи оси X (margin.bottom). В fill
|
|
14265
|
+
// chartHeight — вся доступная высота, поэтому подписи вычитаем из неё, а не прибавляем.
|
|
14266
|
+
// BAR_CHART_FOOTER_MARGIN — это внешний margin-bottom самой BarChartWrapper: в её height он
|
|
14267
|
+
// не входит, но место в ячейке занимает, поэтому его тоже вычитаем.
|
|
14268
|
+
const barBodyHeight = fitsHeight
|
|
14269
|
+
? chartHeight - margin.bottom - BAR_CHART_FOOTER_MARGIN
|
|
14270
|
+
: chartHeight;
|
|
14271
|
+
return (jsx(BarChartWrapper, { height: barBodyHeight + margin.bottom, children: jsx(BarChartContainer, { children: jsx(StyledBarChart, { data: barChartData, colors: getColorsFromFilterItems(data[0]?.items, defaultColor, formatFilterColor), minValue: getMinValueFromFilterItems(data[0]?.items), markers: markers, width: chartWidth, height: barBodyHeight, barWidth: barWidth, barPadding: padding, customYAxisLeft: customYAxisLeft, customXAxisBottom: xAxisBottom => customXAxisBottom(xAxisBottom, barChartData), customYAxis: axis => !showLabels && axis.remove(), customBars: ({ bars }) => {
|
|
14198
14272
|
bars.attr("rx", radius);
|
|
14199
14273
|
bars.attr("ry", radius);
|
|
14200
14274
|
}, margin: margin, xAxisPadding: 0, yAxisPadding: 0, formatTooltipValue: formatTooltipValue, formatTooltipName: formatTooltipName, hideTooltipGroupName: true, dynamicTooltipEnable: true, isBarTooltip: true, onBarClick: filterName ? item => onFilter(item.name) : undefined }) }) }));
|
|
@@ -14212,6 +14286,10 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14212
14286
|
defaultColor,
|
|
14213
14287
|
formatFilterColor,
|
|
14214
14288
|
chartWidth,
|
|
14289
|
+
chartHeight,
|
|
14290
|
+
fitsHeight,
|
|
14291
|
+
pieSide,
|
|
14292
|
+
fill,
|
|
14215
14293
|
barWidth,
|
|
14216
14294
|
showLabels,
|
|
14217
14295
|
padding,
|
|
@@ -14239,7 +14317,11 @@ const Chart = memo(({ config, element, elementConfig, type, renderElement }) =>
|
|
|
14239
14317
|
]);
|
|
14240
14318
|
if (!isVisibleContainer(id, expandable, expanded, expandedContainers))
|
|
14241
14319
|
return null;
|
|
14242
|
-
|
|
14320
|
+
const chartBody = (jsx(ChartWrapper, { width: isPieChart && fill ? pieSide : width, height: isStackBar ? "auto" : isPieChart ? (fill ? pieSide : width) : chartHeight, column: column, loading: loading, children: renderChart }));
|
|
14321
|
+
if (!fill)
|
|
14322
|
+
return chartBody;
|
|
14323
|
+
// fill: тело центрируется в измеряемой обёртке, ref которой питает ResizeObserver обеими осями.
|
|
14324
|
+
return jsx(ChartFillMeasure, { ref: chartRef, children: chartBody });
|
|
14243
14325
|
});
|
|
14244
14326
|
|
|
14245
14327
|
const ChartLegend = ({ data, chartElement, fontSize, type, twoColumns, loading }) => {
|
|
@@ -14967,5 +15049,5 @@ const Map$1 = ({ zIndex, lowerSiblings, upperSiblings, onError, children, ...res
|
|
|
14967
15049
|
}, children: children }), upperSiblings] }));
|
|
14968
15050
|
};
|
|
14969
15051
|
|
|
14970
|
-
export { ALIGNMENTS, ALIGN_ITEMS, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, BaseMapTheme, CHART_TYPES, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EMPTY_DATA_SOURCE_LAYER_INFO, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILL_SIZE, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardBackgroundHeader, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFontColorMixin, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OBJECT_FITS, OneColumnContainer, POLL_SUBTASK_INTERVAL_MS, POLL_SUBTASK_TIMEOUT_MS, PROVIDER_PREFIX, PageNavigator, PageTitle, PageTitleContainer, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, ProviderPrefix, RoundedBackgroundContainer, SAVE_HOOK_RESULT_DURATION, SERVER_NOTIFICATION_EVENT, STACK_BAR_TOTAL_HEIGHT, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, StyligClassificationTypes, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, VIEW_MODES, WidgetType, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyTreeFilterToCondition, applyVarsToCondition, asAttributeName, asChartId, asContainerId, asDataSourceName, asFilterName, asLayerName, asModalId, asResourceId, asTabId, checkEqualOrIncludes, checkIsLoading, createConfigLayer, createConfigPage, createNewPageId, createSaveNotificationId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, geometryToEwkt, getActualExtrusionHeight, getAttributeByName, getAttributeConfigurationByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDataSourceLayerInfo, getDate, getDefaultConfig, getDisplayTemplateNameFromAttribute, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerInfo, getLayerInfoAttribute, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getStyleAttributes, getSvgUrl, getTemplateNameFromAttribute, getThemeByName, getTotalFromAttributes, getTotalFromRelatedFeatures, getWrapperSizeStyle, hexToRgba, isEmptyElementValue, isEmptyValue, isFillSize, isHiddenEmptyValue, isHookActive, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isTreeFilterValue, isVisibleContainer, mergeAttributeConfigurations, metersPerPixel, numberOptions, parseIconNames, parseIconNamesFromClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sizeCssMixin, sliceShownOtherItems, stretchPalette, timeOptions, toCssSize, toPxNumber, toRenderableValue, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, updateDataSource, useAfterSave, useAppHeight, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useChartChange, useChartData, useContainerAttributes, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, useExpandableContainers, useExportPdf, useFeatureSaveHooks, useFetchImageWithAuth, useFetchWithAuth, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource, useIconsFromLayers, useLayerHiddenAttributes, useLayerParams, useMapContext, useMapDraw, useMapImages, useMaxZoomTo, useProjectDashboardInit, usePythonSandbox, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRemoteTask, useRenderElement,
|
|
15052
|
+
export { ALIGNMENTS, ALIGN_ITEMS, AddFeatureButton, AddFeatureContainer, AlertIconContainer, AttachmentContainer, AttributeGalleryContainer, AttributeLabel, BASE_CONTAINER_STYLE, BaseMapTheme, CHART_TYPES, CONFIG_PAGES_ID, CONFIG_PAGE_ID, CameraContainer, Chart, ChartContainer, ChartLegend, ChartLoading, Container, ContainerChildren, ContainerLoading, ContainerTemplate, ContainerWrapper, ContainersGroupContainer, DEFAULT_ATTRIBUTE_NAME, DEFAULT_BARCHART_RADIUS, DEFAULT_BASE_MAP, DEFAULT_CHART_ANGLE, DEFAULT_CHART_HEIGHT, DEFAULT_CHART_WIDTH, DEFAULT_CIRCLE_PAINT, DEFAULT_DASHBOARD_CONFIG, DEFAULT_DATA_SOURCE_LIMIT, DEFAULT_DROPDOWN_WIDTH, DEFAULT_FILL_EXTRUSION_PAINT, DEFAULT_FILL_PAINT, DEFAULT_FILTER_PADDING, DEFAULT_ID_ATTRIBUTE_NAME, DEFAULT_LAT, DEFAULT_LINE_PAINT, DEFAULT_LNG, DEFAULT_PAGES_CONFIG, DEFAULT_PIECHART_RADIUS, DEFAULT_ZOOM, Dashboard, DashboardCheckbox, DashboardChip, DashboardContent, DashboardContext, DashboardDefaultHeader, DashboardHeader, DashboardLoading, DashboardPlaceholder, DashboardPlaceholderWrap, DashboardProvider, DashboardWrapper, DataSourceContainer, DataSourceError, DataSourceErrorContainer, DataSourceInnerContainer, DataSourceProgressContainer, DateFormat, DefaultAttributesContainer, DefaultHeaderContainer, DefaultHeaderWrapper, DividerContainer, EMPTY_DATA_SOURCE_LAYER_INFO, EditGeometryType, ElementButton, ElementCamera, ElementChart, ElementChips, ElementControl, ElementIcon, ElementImage, ElementLegend, ElementLink, ElementMarkdown, ElementSlideshow, ElementSvg, ElementTooltip, ElementValueWrapper, ExpandableTitle, FEATURE_CARD_DEFAULT_COLORS, FEATURE_CARD_OTHER_COLOR, FILL_SIZE, FILTERED_VALUE_OPACITY, FILTER_PREFIX, FeatureCardBackgroundHeader, FeatureCardButtons, FeatureCardContext, FeatureCardDefaultHeader, FeatureCardHeader, FeatureCardProvider, FeatureCardSlideshowHeader, FeatureCardTitle, FeatureControls, FeatureTitleContainer, FiltersContainer, GEOMETRY_ATTRIBUTE, GlobalContext, GlobalProvider, Header, HeaderContainer, HeaderFontColorMixin, HeaderFrontView, HeaderTemplate, HeaderTitleContainer, HiddenTitleItems, IconContainer, ImageContainer, LEFT_PANEL_HEADER_HEIGHT, Layer, LayerDescription, LayerGroup, LayerGroupList, LayerIcon, LayerIconContainer, LayerListContainer, LayerTree, LayersContainer, LayersListWrapper, LinearProgressContainer, LogTerminal, LogoContainer, MAX_CHART_WIDTH, Map$1 as Map, MapContext, MapProvider, NO_CONTENT_VALUE, NUMERIC_ATTRIBUTE_TYPES, NoLiveSnapshotContainer, OBJECT_FITS, OneColumnContainer, POLL_SUBTASK_INTERVAL_MS, POLL_SUBTASK_TIMEOUT_MS, PROVIDER_PREFIX, PageNavigator, PageTitle, PageTitleContainer, PagesContainer, Pagination, PresentationHeader, PresentationHeaderButtons, PresentationHeaderTools, PresentationPanelContainer, PresentationPanelWrapper, PresentationWrapper, ProgressContainer, ProviderPrefix, RoundedBackgroundContainer, SAVE_HOOK_RESULT_DURATION, SERVER_NOTIFICATION_EVENT, STACK_BAR_TOTAL_HEIGHT, ScalingFactor, ServerNotificationsContext, ServerNotificationsProvider, SlideshowContainer, SmallPreviewContainer$1 as SmallPreviewContainer, SmallPreviewControl, SmallPreviewCounter, SmallPreviewImages, SmallPreviewLeft, SmallPreviewRight, StackBar, StyligClassificationTypes, SvgImage, TIME_ZONE_FORMAT, TabsContainer, TextTrim, ThemeName, TitleContainer, TopContainer, TopContainerButtons, TwoColumnContainer, UploadContainer, VIEW_MODES, WidgetType, addDataSource, addDataSources, adjustColor, applyFiltersToCondition, applyQueryFilters, applyTreeFilterToCondition, applyVarsToCondition, asAttributeName, asChartId, asContainerId, asDataSourceName, asFilterName, asLayerName, asModalId, asResourceId, asTabId, checkEqualOrIncludes, checkIsLoading, createConfigLayer, createConfigPage, createNewPageId, createSaveNotificationId, createTreeNode, dateOptions, debounce, decimalOpacityToHex, eqlParametersToPayload, findAttributeInExpression, formatArea, formatAttributeValue, formatChartRelatedValue, formatConditionValue, formatDataSourceCondition, formatDate$1 as formatDate, formatElementValue, formatLength, formatNumber, formatPolygonMeasure, geometryToEwkt, getActualExtrusionHeight, getAttributeByName, getAttributeConfigurationByName, getAttributeValue, getAttributesConfiguration, getChartAxes, getChartFilterName, getChartMarkers, getConfigFilter, getContainerComponent, getDashboardHeader, getDataFromAttributes, getDataFromRelatedFeatures, getDataSource, getDataSourceFilterValue, getDataSourceLayerInfo, getDate, getDefaultConfig, getDisplayTemplateNameFromAttribute, getElementValue, getFeatureAttributes, getFeatureCardHeader, getFilterComponent, getFilterSelectedItems, getFilterValue, getFormattedAttributes, getGradientColors, getLayerInfo, getLayerInfoAttribute, getLayerInfoFromDataSources, getPagesFromConfig, getPagesFromProjectInfo, getProxyService, getRelatedAttribute, getRenderElement, getResourceUrl, getRootElementId, getSelectedFilterValue, getSlideshowImages, getStyleAttributes, getSvgUrl, getTemplateNameFromAttribute, getThemeByName, getTotalFromAttributes, getTotalFromRelatedFeatures, getWrapperSizeStyle, hexToRgba, isEmptyElementValue, isEmptyValue, isFillSize, isHiddenEmptyValue, isHookActive, isLayerService, isNotValidSelectedTab, isNumeric, isObject, isProxyService, isTreeFilterValue, isVisibleContainer, mergeAttributeConfigurations, metersPerPixel, numberOptions, parseIconNames, parseIconNamesFromClientStyle, pieChartTooltipFromAttributes, pieChartTooltipFromRelatedFeatures, pointOptions, removeDataSource, rgbToHex, roundTotalSum, sizeCssMixin, sliceShownOtherItems, stretchPalette, timeOptions, toCssSize, toPxNumber, toRenderableValue, tooltipNameFromAttributes, tooltipValueFromAttributes, tooltipValueFromRelatedFeatures, transparentizeColor, treeNodesToProjectItems, updateDataSource, useAfterSave, useAppHeight, useAttachmentItems, useAttachmentPreviewImages, useAutoCompleteControl, useBeforeSave, useChartChange, useChartData, useContainerAttributes, useCurrentPageLayers, useCustomFeatureSelect, useDashboardHeader, useDataSources, useDebouncedCallback, useDiffPage, useEditGroupAttributes, useExpandableContainers, useExportPdf, useFeatureSaveHooks, useFetchImageWithAuth, useFetchWithAuth, useGetConfigLayer, useGlobalContext, useHeaderRender, useHideIfEmptyDataSource, useIconsFromLayers, useLayerHiddenAttributes, useLayerParams, useMapContext, useMapDraw, useMapImages, useMaxZoomTo, useProjectDashboardInit, usePythonSandbox, usePythonTask, useRedrawLayer, useRelatedDataSourceAttributes, useRemoteTask, useRenderElement, useResizeBox, useSavePrototypeBuilder, useServerNotificationsContext, useShownOtherItems, useToggle, useUpdateDataSource, useVisibleProjectItems, useWidgetConfig, useWidgetContext, useWidgetFilters, useWidgetPage, useWindowResize, useWrapperSize, useZoomToFeatures, useZoomToPoint };
|
|
14971
15053
|
//# sourceMappingURL=react.esm.js.map
|