@platox/pivot-table 0.0.94 → 0.0.96
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/es/dashboard-workbench/components/InputWrapper/index.js.map +1 -1
- package/es/dashboard-workbench/components/SelectWrapper/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-btn/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/custome-data.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/index.js +20 -2
- package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/CombinationChartOptionPicker.js +0 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/CombinationChartOptionPicker.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/GroupFieldConfigPicker.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/config.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-data.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-styles.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/index.js +31 -2
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/interface.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-data.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-styles.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/index.js +27 -2
- package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js +2 -2
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/config.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/index.js.map +1 -1
- package/es/dashboard-workbench/components/add-module-modal/components/select-color/index.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/ConditionRowItem.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/FieldPicker.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/index.js +1 -2
- package/es/dashboard-workbench/components/global-filter-condition/index.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/useContext.js.map +1 -1
- package/es/dashboard-workbench/components/global-filter-condition/util.js.map +1 -1
- package/es/dashboard-workbench/components/modal-editor-header/index.js.map +1 -1
- package/es/dashboard-workbench/components/modal-editor-header/index.module.less.js +3 -3
- package/es/dashboard-workbench/components/module-content/calendar-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/calendar-module/locales/zh.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/Empty.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/base-chart/index.js +27 -1
- package/es/dashboard-workbench/components/module-content/chart-module/base-chart/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/index.js +90 -39
- package/es/dashboard-workbench/components/module-content/chart-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/utils.d.ts +1 -1
- package/es/dashboard-workbench/components/module-content/chart-module/utils.js +153 -35
- package/es/dashboard-workbench/components/module-content/chart-module/utils.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/statistics-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/statistics-module/utils.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/editor/index.js +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/editor/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/editor/useDebounce.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/text-module/index.js.map +1 -1
- package/es/dashboard-workbench/components/module-content/utils.js.map +1 -1
- package/es/dashboard-workbench/components/module-header/index.js.map +1 -1
- package/es/dashboard-workbench/context.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-Filter.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-bar-percentage.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-bar-pile.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-bar.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-calendar.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-chart-combination.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-drag.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-editor.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-empty.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-line-smooth.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-line.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-move.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-pie-circular.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-pie.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-statistics.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-strip-bar-percentage.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-strip-bar-pile.js.map +1 -1
- package/es/dashboard-workbench/icon/icon-strip-bar.js.map +1 -1
- package/es/dashboard-workbench/index.js +204 -43
- package/es/dashboard-workbench/index.js.map +1 -1
- package/es/dashboard-workbench/lang/en-US.d.ts +7 -0
- package/es/dashboard-workbench/lang/en-US.js +9 -2
- package/es/dashboard-workbench/lang/en-US.js.map +1 -1
- package/es/dashboard-workbench/lang/index.js.map +1 -1
- package/es/dashboard-workbench/lang/zh-CN.d.ts +7 -0
- package/es/dashboard-workbench/lang/zh-CN.js +9 -2
- package/es/dashboard-workbench/lang/zh-CN.js.map +1 -1
- package/es/dashboard-workbench/utils/index.js +2 -2
- package/es/dashboard-workbench/utils/index.js.map +1 -1
- package/es/style.css +1 -1
- package/package.json +3 -3
- package/umd/pivot-table.umd.cjs +49 -47
- package/umd/style.css +1 -1
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { jsx, jsxs, Fragment } from "react/jsx-runtime";
|
|
2
|
-
import React, { useEffect, useState, useRef } from "react";
|
|
3
|
-
import { Empty as Empty$1, Modal, message } from "antd";
|
|
4
|
-
import { ExclamationCircleOutlined } from "@ant-design/icons";
|
|
2
|
+
import React, { useEffect, useState, useRef, useMemo } from "react";
|
|
3
|
+
import { Dropdown, Button, Tooltip, Empty as Empty$1, Spin, Modal, message } from "antd";
|
|
4
|
+
import { AppstoreOutlined, ExclamationCircleOutlined } from "@ant-design/icons";
|
|
5
5
|
import { WidthProvider, Responsive } from "react-grid-layout";
|
|
6
6
|
import { useTranslation } from "react-i18next";
|
|
7
7
|
import { useControllableValue, useScroll } from "ahooks";
|
|
@@ -34,23 +34,62 @@ const DashboardWorkbench = ({
|
|
|
34
34
|
}) => {
|
|
35
35
|
const { t } = useTranslation();
|
|
36
36
|
const { readOnly } = useAppContext();
|
|
37
|
-
const
|
|
37
|
+
const normalizeModules = (data) => (data == null ? void 0 : data.map((item) => ({
|
|
38
|
+
...item,
|
|
39
|
+
i: item.i ? item.i : item.id
|
|
40
|
+
}))) || [];
|
|
41
|
+
const [modules, setModules] = useState(() => normalizeModules(moduleConfigData));
|
|
38
42
|
const [activeId, setActiveId] = useState();
|
|
43
|
+
const [isArranging, setIsArranging] = useState(false);
|
|
44
|
+
const [gridKey, setGridKey] = useState(0);
|
|
45
|
+
const layoutRef = useRef([]);
|
|
39
46
|
useEffect(() => {
|
|
40
|
-
setModules(
|
|
41
|
-
(moduleConfigData == null ? void 0 : moduleConfigData.map((item) => ({
|
|
42
|
-
...item,
|
|
43
|
-
i: item.i ? item.i : item.id
|
|
44
|
-
}))) || []
|
|
45
|
-
);
|
|
47
|
+
setModules(normalizeModules(moduleConfigData));
|
|
46
48
|
}, [moduleConfigData]);
|
|
49
|
+
const findNextPosition = (newW, newH) => {
|
|
50
|
+
const layout = layoutRef.current;
|
|
51
|
+
if (!(layout == null ? void 0 : layout.length)) return { x: 0, y: 0 };
|
|
52
|
+
const totalCols = cols.lg || 12;
|
|
53
|
+
const maxY = layout.reduce((max, m) => Math.max(max, (m.y || 0) + (m.h || 2)), 0);
|
|
54
|
+
const gridH = maxY + newH;
|
|
55
|
+
const grid = Array.from({ length: gridH }, () => new Array(totalCols).fill(false));
|
|
56
|
+
for (const m of layout) {
|
|
57
|
+
for (let y = m.y || 0; y < (m.y || 0) + (m.h || 2); y++) {
|
|
58
|
+
for (let x = m.x || 0; x < (m.x || 0) + (m.w || 2); x++) {
|
|
59
|
+
if (y < gridH && x < totalCols) grid[y][x] = true;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
for (let y = 0; y <= gridH; y++) {
|
|
64
|
+
for (let x = 0; x <= totalCols - newW; x++) {
|
|
65
|
+
let fits = true;
|
|
66
|
+
for (let dy = 0; dy < newH && fits; dy++) {
|
|
67
|
+
for (let dx = 0; dx < newW && fits; dx++) {
|
|
68
|
+
if (y + dy < gridH && grid[y + dy][x + dx]) fits = false;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
if (fits) return { x, y };
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
return { x: 0, y: maxY };
|
|
75
|
+
};
|
|
76
|
+
const getDefaultSize = (type) => {
|
|
77
|
+
const isPie = type === "chart-pie" || type === "chart-pie-circular";
|
|
78
|
+
const isChart = (type == null ? void 0 : type.includes("chart")) && !isPie;
|
|
79
|
+
const isStatistics = type === "statistics";
|
|
80
|
+
const isText = type === "text";
|
|
81
|
+
const isCalendar = type === "calendar";
|
|
82
|
+
const w = isStatistics ? 3 : isText ? 6 : isPie ? 6 : isCalendar ? 12 : 12;
|
|
83
|
+
const h = isCalendar ? 6 : isChart ? 6 : 4;
|
|
84
|
+
return { w, h };
|
|
85
|
+
};
|
|
47
86
|
const addModule = async (data) => {
|
|
48
|
-
const wMultiple = data.type
|
|
49
|
-
const hMultiple = data.type === "calendar" ? 5 : 3;
|
|
87
|
+
const { w: wMultiple, h: hMultiple } = getDefaultSize(data.type || "");
|
|
50
88
|
if (Array.isArray(modules) && data.type) {
|
|
89
|
+
const { x, y } = findNextPosition(wMultiple, hMultiple);
|
|
51
90
|
const newModuleData = {
|
|
52
|
-
x
|
|
53
|
-
y
|
|
91
|
+
x,
|
|
92
|
+
y,
|
|
54
93
|
w: wMultiple,
|
|
55
94
|
h: hMultiple,
|
|
56
95
|
title: data.type.includes("chart") ? t("chartText") : title[data.type],
|
|
@@ -103,6 +142,92 @@ const DashboardWorkbench = ({
|
|
|
103
142
|
message.error(error.message || "Failed to update modules");
|
|
104
143
|
}
|
|
105
144
|
};
|
|
145
|
+
const binPack = (items, startY = 0, preserveOrder = false) => {
|
|
146
|
+
const totalCols = cols.lg || 12;
|
|
147
|
+
const sorted = preserveOrder ? items : [...items].sort((a, b) => b.h - a.h || b.w - a.w);
|
|
148
|
+
const grid = [];
|
|
149
|
+
const ensureRows = (maxY) => {
|
|
150
|
+
while (grid.length < maxY) grid.push(new Array(totalCols).fill(false));
|
|
151
|
+
};
|
|
152
|
+
const positions = /* @__PURE__ */ new Map();
|
|
153
|
+
for (const item of sorted) {
|
|
154
|
+
const w = item.w, h = item.h;
|
|
155
|
+
let placed = false;
|
|
156
|
+
ensureRows(1);
|
|
157
|
+
for (let y = 0; !placed; y++) {
|
|
158
|
+
ensureRows(y + h);
|
|
159
|
+
for (let x = 0; x <= totalCols - w && !placed; x++) {
|
|
160
|
+
let fits = true;
|
|
161
|
+
for (let dy = 0; dy < h && fits; dy++) {
|
|
162
|
+
for (let dx = 0; dx < w && fits; dx++) {
|
|
163
|
+
if (grid[y + dy][x + dx]) fits = false;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
if (fits) {
|
|
167
|
+
for (let dy = 0; dy < h; dy++) {
|
|
168
|
+
for (let dx = 0; dx < w; dx++) {
|
|
169
|
+
grid[y + dy][x + dx] = true;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
positions.set(item.id, { x, y: y + startY });
|
|
173
|
+
placed = true;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
return { positions, height: grid.length };
|
|
179
|
+
};
|
|
180
|
+
const compactArrange = async () => {
|
|
181
|
+
if (!(modules == null ? void 0 : modules.length)) return;
|
|
182
|
+
setIsArranging(true);
|
|
183
|
+
try {
|
|
184
|
+
const sorted = [...modules].sort((a, b) => (a.y || 0) - (b.y || 0) || (a.x || 0) - (b.x || 0));
|
|
185
|
+
const items = sorted.map((m) => ({ id: m.id, w: m.w || 2, h: m.h || 2 }));
|
|
186
|
+
const { positions } = binPack(items, 0, true);
|
|
187
|
+
const arranged = modules.map((m) => {
|
|
188
|
+
const pos = positions.get(m.id);
|
|
189
|
+
return { ...m, x: (pos == null ? void 0 : pos.x) ?? 0, y: (pos == null ? void 0 : pos.y) ?? 0 };
|
|
190
|
+
});
|
|
191
|
+
await updateModules(arranged);
|
|
192
|
+
setGridKey((k) => k + 1);
|
|
193
|
+
} finally {
|
|
194
|
+
setIsArranging(false);
|
|
195
|
+
}
|
|
196
|
+
};
|
|
197
|
+
const resetArrange = async () => {
|
|
198
|
+
if (!(modules == null ? void 0 : modules.length)) return;
|
|
199
|
+
setIsArranging(true);
|
|
200
|
+
try {
|
|
201
|
+
const typeOrder = {
|
|
202
|
+
statistics: 0,
|
|
203
|
+
"chart-pie": 1,
|
|
204
|
+
"chart-pie-circular": 1
|
|
205
|
+
};
|
|
206
|
+
const getOrder = (type) => {
|
|
207
|
+
if (!type) return 99;
|
|
208
|
+
if (typeOrder[type] !== void 0) return typeOrder[type];
|
|
209
|
+
if (type.includes("chart")) return 2;
|
|
210
|
+
if (type === "text") return 3;
|
|
211
|
+
if (type === "calendar") return 4;
|
|
212
|
+
return 99;
|
|
213
|
+
};
|
|
214
|
+
const sorted = [...modules].sort((a, b) => getOrder(a.type) - getOrder(b.type));
|
|
215
|
+
const items = sorted.map((m) => {
|
|
216
|
+
const { w, h } = getDefaultSize(m.type || "");
|
|
217
|
+
return { id: m.id, w, h };
|
|
218
|
+
});
|
|
219
|
+
const { positions } = binPack(items, 0, true);
|
|
220
|
+
const arranged = modules.map((m) => {
|
|
221
|
+
const { w, h } = getDefaultSize(m.type || "");
|
|
222
|
+
const pos = positions.get(m.id);
|
|
223
|
+
return { ...m, x: (pos == null ? void 0 : pos.x) ?? 0, y: (pos == null ? void 0 : pos.y) ?? 0, w, h };
|
|
224
|
+
});
|
|
225
|
+
await updateModules(arranged);
|
|
226
|
+
setGridKey((k) => k + 1);
|
|
227
|
+
} finally {
|
|
228
|
+
setIsArranging(false);
|
|
229
|
+
}
|
|
230
|
+
};
|
|
106
231
|
const deleteModule = async (id) => {
|
|
107
232
|
if (modules == null ? void 0 : modules.length) {
|
|
108
233
|
setModules(modules.filter((m) => m.id !== id));
|
|
@@ -112,6 +237,13 @@ const DashboardWorkbench = ({
|
|
|
112
237
|
const margins = [10, 10];
|
|
113
238
|
const [rowWidth, setRowWidth] = useState(0);
|
|
114
239
|
const [, setCurrentCols] = useState(cols.lg);
|
|
240
|
+
const lastRowModuleIds = useMemo(() => {
|
|
241
|
+
var _a;
|
|
242
|
+
const layout = ((_a = layoutRef.current) == null ? void 0 : _a.length) ? layoutRef.current : (modules == null ? void 0 : modules.map((m) => ({ i: m.id, x: m.x || 0, y: m.y || 0, w: m.w || 2, h: m.h || 2 }))) || [];
|
|
243
|
+
if (!layout.length) return /* @__PURE__ */ new Set();
|
|
244
|
+
const maxBottom = layout.reduce((max, m) => Math.max(max, (m.y || 0) + (m.h || 2)), 0);
|
|
245
|
+
return new Set(layout.filter((m) => (m.y || 0) + (m.h || 2) >= maxBottom).map((m) => m.i));
|
|
246
|
+
}, [modules]);
|
|
115
247
|
const [isDragOrResize, setIsDragOrResize] = useState(false);
|
|
116
248
|
const [isDragOrResizeEnd, setIsDragOrResizeEnd] = useState(false);
|
|
117
249
|
const onBreakpointChange = (_breakpoint, cols2) => {
|
|
@@ -196,8 +328,15 @@ const DashboardWorkbench = ({
|
|
|
196
328
|
const ref = useRef(null);
|
|
197
329
|
const scroll = useScroll(ref);
|
|
198
330
|
const isShadowShow = ((scroll == null ? void 0 : scroll.top) ?? 0) > 0;
|
|
331
|
+
const isInitialMount = useRef(true);
|
|
332
|
+
useEffect(() => {
|
|
333
|
+
isInitialMount.current = true;
|
|
334
|
+
if (ref.current) {
|
|
335
|
+
ref.current.scrollTop = 0;
|
|
336
|
+
}
|
|
337
|
+
}, []);
|
|
199
338
|
return /* @__PURE__ */ jsxs("div", { className: "pivot-table", children: [
|
|
200
|
-
/* @__PURE__ */
|
|
339
|
+
/* @__PURE__ */ jsxs(
|
|
201
340
|
"div",
|
|
202
341
|
{
|
|
203
342
|
className: clsx(
|
|
@@ -205,32 +344,41 @@ const DashboardWorkbench = ({
|
|
|
205
344
|
isShadowShow && "bitable-toolbar--shadow"
|
|
206
345
|
// isShadowShow &&
|
|
207
346
|
),
|
|
208
|
-
children:
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
/* @__PURE__ */
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
347
|
+
children: [
|
|
348
|
+
/* @__PURE__ */ jsxs("div", { className: "bitable-block-dashboard-toolbar--left", children: [
|
|
349
|
+
renderToolbarLeft == null ? void 0 : renderToolbarLeft(),
|
|
350
|
+
!readOnly && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
351
|
+
/* @__PURE__ */ jsx(
|
|
352
|
+
AddModuleBtn,
|
|
353
|
+
{
|
|
354
|
+
onOk: (val) => {
|
|
355
|
+
handleOpenCreateModal(val);
|
|
356
|
+
}
|
|
216
357
|
}
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
358
|
+
),
|
|
359
|
+
/* @__PURE__ */ jsx(
|
|
360
|
+
"div",
|
|
361
|
+
{
|
|
362
|
+
style: {
|
|
363
|
+
width: "1px",
|
|
364
|
+
height: "1rem",
|
|
365
|
+
backgroundColor: "rgba(217, 217, 217, 1)",
|
|
366
|
+
marginLeft: "12px",
|
|
367
|
+
marginRight: "4px"
|
|
368
|
+
}
|
|
228
369
|
}
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
] })
|
|
233
|
-
|
|
370
|
+
),
|
|
371
|
+
/* @__PURE__ */ jsx(GlobalFilterCondition, {})
|
|
372
|
+
] })
|
|
373
|
+
] }),
|
|
374
|
+
!readOnly && /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", marginLeft: "auto" }, children: /* @__PURE__ */ jsx(Dropdown, { menu: {
|
|
375
|
+
items: [
|
|
376
|
+
{ key: "compact", label: /* @__PURE__ */ jsx(Tooltip, { title: t("compactLayoutTip"), placement: "left", children: t("compactLayout") }) },
|
|
377
|
+
{ key: "reset", label: /* @__PURE__ */ jsx(Tooltip, { title: t("resetLayoutTip"), placement: "left", children: t("resetLayout") }) }
|
|
378
|
+
],
|
|
379
|
+
onClick: ({ key }) => key === "compact" ? compactArrange() : resetArrange()
|
|
380
|
+
}, children: /* @__PURE__ */ jsx(Button, { type: "text", icon: /* @__PURE__ */ jsx(AppstoreOutlined, {}) }) }) })
|
|
381
|
+
]
|
|
234
382
|
}
|
|
235
383
|
),
|
|
236
384
|
(modules == null ? void 0 : modules.length) === 0 && /* @__PURE__ */ jsx("div", { style: {
|
|
@@ -239,7 +387,7 @@ const DashboardWorkbench = ({
|
|
|
239
387
|
alignItems: "center",
|
|
240
388
|
"height": "100%"
|
|
241
389
|
}, children: /* @__PURE__ */ jsx(Empty$1, { image: Empty$1.PRESENTED_IMAGE_SIMPLE }) }),
|
|
242
|
-
/* @__PURE__ */ jsx("div", { className: "bitable-block-dashboard__mount", ref, children: /* @__PURE__ */ jsx("div", { className: "dashboard-container", children: /* @__PURE__ */ jsx(
|
|
390
|
+
/* @__PURE__ */ jsx("div", { className: "bitable-block-dashboard__mount", ref, children: /* @__PURE__ */ jsx(Spin, { spinning: isArranging, children: /* @__PURE__ */ jsx("div", { className: "dashboard-container", children: /* @__PURE__ */ jsx(
|
|
243
391
|
"div",
|
|
244
392
|
{
|
|
245
393
|
className: `dashboard-content-container ${isDragOrResize ? "isDragOrResize" : ""} ${isDragOrResizeEnd ? "isDragOrResizeEnd" : ""}`,
|
|
@@ -257,6 +405,17 @@ const DashboardWorkbench = ({
|
|
|
257
405
|
rowHeight,
|
|
258
406
|
measureBeforeMount: false,
|
|
259
407
|
draggableHandle: ".isCanDrag",
|
|
408
|
+
onLayoutChange: (layout) => {
|
|
409
|
+
layoutRef.current = layout;
|
|
410
|
+
if (isInitialMount.current) {
|
|
411
|
+
isInitialMount.current = false;
|
|
412
|
+
requestAnimationFrame(() => {
|
|
413
|
+
if (ref.current) {
|
|
414
|
+
ref.current.scrollTop = 0;
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
}
|
|
418
|
+
},
|
|
260
419
|
onWidthChange: (containerWidth, _margin, cols2) => {
|
|
261
420
|
setRowWidth(containerWidth / cols2 - 1);
|
|
262
421
|
},
|
|
@@ -293,7 +452,8 @@ const DashboardWorkbench = ({
|
|
|
293
452
|
w: module.w || 2,
|
|
294
453
|
h: module.h || 2,
|
|
295
454
|
minW: 2,
|
|
296
|
-
minH: 2
|
|
455
|
+
minH: 2,
|
|
456
|
+
...lastRowModuleIds.has(module.id) ? { resizeHandles: ["ne"] } : {}
|
|
297
457
|
},
|
|
298
458
|
children: [
|
|
299
459
|
/* @__PURE__ */ jsx(
|
|
@@ -383,10 +543,11 @@ const DashboardWorkbench = ({
|
|
|
383
543
|
},
|
|
384
544
|
module.id
|
|
385
545
|
))
|
|
386
|
-
}
|
|
546
|
+
},
|
|
547
|
+
gridKey
|
|
387
548
|
)
|
|
388
549
|
}
|
|
389
|
-
) }) }),
|
|
550
|
+
) }) }) }),
|
|
390
551
|
/* @__PURE__ */ jsx(
|
|
391
552
|
AddStatisticsModal,
|
|
392
553
|
{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../packages/dashboard-workbench/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useRef, useState } from 'react'\nimport { message, Modal, Empty as AntdEmpty } from 'antd'\nimport { ExclamationCircleOutlined } from '@ant-design/icons'\nimport { Layout, Responsive, WidthProvider } from 'react-grid-layout'\nimport { useTranslation } from 'react-i18next'\nimport { useControllableValue, useScroll } from 'ahooks'\nimport { omit, pick } from 'lodash-es'\nimport AddModuleBtn, { ModuleValueType } from './components/add-module-btn'\nimport AddCalendarModal from './components/add-module-modal/add-calendar-modal'\nimport AddChartModal from './components/add-module-modal/add-chart-modal'\nimport AddStatisticsModal from './components/add-module-modal/add-statistics-modal'\nimport { GlobalFilterCondition } from './components/global-filter-condition'\nimport { ConditionBlockWrapper } from './components/global-filter-condition/interface'\nimport ModuleContent, { ModuleData } from './components/module-content'\nimport ModuleHeader from './components/module-header'\nimport { AppContext, setContextRef, useAppContext } from './context'\nimport { EnumDataApi, ModuleConfigDataTypes, ModuleDataApi, SourceDataItem } from './types'\nimport { findChangedItems } from './utils'\nimport './lang/index'\nimport '/node_modules/react-grid-layout/css/styles.css'\nimport './styles/index.less'\nimport clsx from 'clsx'\nimport { read } from 'fs'\n\nconst ResponsiveReactGridLayout = WidthProvider(Responsive)\n\ninterface DashboardWorkbenchProps {\n sourceData?: SourceDataItem[]\n moduleConfigData?: ModuleConfigDataTypes\n fieldMap?: Record<string, string>\n lang?: 'zh-CN' | 'en-US'\n moduleDataApi?: ModuleDataApi\n enumDataApi?: EnumDataApi\n onCreateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onUpdateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onDeleteModule?: (val: string) => Promise<{ data: ModuleData }>\n onLayoutChange?: (layout: Layout[]) => void\n className?: string\n cols?: { lg: number; md: number; sm: number; xs: number; xxs: number }\n rowHeight?: number\n\n renderToolbarLeft?: () => React.ReactNode\n\n}\n\nconst DashboardWorkbench: React.FC<DashboardWorkbenchProps> = ({\n moduleConfigData,\n moduleDataApi,\n enumDataApi,\n onCreateModule,\n onUpdateModule,\n onDeleteModule,\n className = 'layout',\n cols = { lg: 12, md: 12, sm: 12, xs: 12, xxs: 12 },\n rowHeight = 79,\n renderToolbarLeft,\n}) => {\n const { t } = useTranslation()\n const { readOnly } = useAppContext()\n\n /* ============================== modules =============================== */\n const [modules, setModules] = useState<ModuleData[] | undefined>([])\n const [activeId, setActiveId] = useState<ModuleData['id']>()\n\n useEffect(() => {\n setModules(\n moduleConfigData?.map(item => ({\n ...item,\n i: item.i ? item.i : item.id,\n })) || []\n )\n }, [moduleConfigData])\n\n const addModule = async (data: ModuleValueType) => {\n const wMultiple = data.type === 'calendar' ? 5 : 4\n const hMultiple = data.type === 'calendar' ? 5 : 3\n\n if (Array.isArray(modules) && data.type) {\n const newModuleData = {\n x: 0,\n y: 0,\n w: wMultiple,\n h: hMultiple,\n title: data.type.includes('chart') ? t('chartText') : title[data.type],\n ...data,\n type: data.type,\n }\n await onCreateModule?.(newModuleData).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n setModules([...modules, { ...newModuleData, i: res.data?.id, id: res.data?.id }])\n })\n }\n }\n\n // 单个\n const updateModule = async (id: ModuleData['id'], updatedProps: Partial<ModuleData>) => {\n if (modules?.length) {\n const oldData = modules.find(m => m.id === id)\n const updatedModule = {\n ...oldData!,\n ...updatedProps,\n }\n const modulesData = modules.map(m => (m.id === id ? updatedModule : m))\n setModules(modulesData)\n await onUpdateModule?.(updatedModule).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n })\n }\n }\n\n // 批量\n const updateModules = async (updatedItems: Partial<ModuleData>[]) => {\n if (!modules?.length || !updatedItems?.length) return\n const updatedModules = modules.map(module => {\n const update = updatedItems.find(item => item.id === module.id)\n return update ? { ...module, ...update } : module\n })\n setModules(updatedModules)\n try {\n for (const updatedItem of updatedItems) {\n const res: any = await onUpdateModule?.(updatedItem as ModuleData)\n if (!res?.success) {\n throw new Error(res?.message || `Failed to update module: ${updatedItem.id}`)\n }\n }\n } catch (error: any) {\n setModules(modules)\n message.error(error.message || 'Failed to update modules')\n }\n }\n\n const deleteModule = async (id: ModuleData['id']) => {\n if (modules?.length) {\n setModules(modules.filter(m => m.id !== id))\n await onDeleteModule?.(id || '')\n }\n }\n\n /* ============================== drag =============================== */\n\n const margins: [number, number] = [10, 10]\n const [rowWidth, setRowWidth] = useState(0)\n const [, setCurrentCols] = useState<number>(cols.lg)\n\n const [isDragOrResize, setIsDragOrResize] = useState(false)\n const [isDragOrResizeEnd, setIsDragOrResizeEnd] = useState(false)\n\n const onBreakpointChange = (_breakpoint: string, cols: number) => {\n setCurrentCols(cols)\n }\n\n const onDragResizeStop = (newLayout: Layout[]) => {\n const changedItems = findChangedItems(newLayout, modules as any)\n const newChangedItems = changedItems.map(item => {\n const module = modules?.find(module => module.i === item.i)\n return { ...module, ...item }\n })\n updateModules(newChangedItems)\n }\n\n const onDragStartOrEnd = (type: 'start' | 'end', newLayout?: Layout[]) => {\n if (type === 'start') {\n setIsDragOrResize(true)\n setIsDragOrResizeEnd(true)\n } else {\n setIsDragOrResize(false)\n setTimeout(() => {\n setIsDragOrResizeEnd(false)\n }, 500)\n onDragResizeStop(newLayout || [])\n }\n }\n\n /* ============================== split =============================== */\n const [selectModuleData, setSelectModuleData] = useState<ModuleData>()\n\n const [isShowAddStatisticsModal, setIsShowAddStatisticsModal] = useState<boolean>(false)\n const [isShowAddCalendarModal, setIsShowAddCalendarModal] = useState<boolean>(false)\n const [isShowAddChartModal, setIsShowAddChartModal] = useState<boolean>(false)\n\n const handleOpenCreateModal = (val: any) => {\n if (val === 'text') {\n const data = {\n type: val,\n customData: {\n title: t('text'),\n editor: [\n {\n type: 'paragraph',\n children: [\n {\n text: '',\n },\n ],\n },\n ],\n },\n }\n addModule(data)\n } else if (val === 'statistics') {\n setIsShowAddStatisticsModal(true)\n } else if (val === 'calendar') {\n setIsShowAddCalendarModal(true)\n } else if (val?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n\n setSelectModuleData({\n title: '',\n type: val,\n w: 0,\n h: 0,\n x: 0,\n y: 0,\n })\n }\n\n const commonModalProps = {\n moduleDataApi: moduleDataApi,\n enumDataApi: enumDataApi,\n selectModuleData: selectModuleData,\n }\n const handleModalSubmit = (data: Partial<ModuleData>) => {\n if (data.id) {\n updateModule(data.id, omit(data, 'id'))\n } else {\n addModule(data)\n }\n }\n /* ============================== split =============================== */\n const title: any = {\n text: t('pb.text'),\n calendar: t('calendarText'),\n statistics: t('chartText'),\n }\n\n /* ============================== 滚动出阴影 =============================== */\n const ref = useRef(null)\n const scroll = useScroll(ref)\n const isShadowShow = (scroll?.top ?? 0) > 0\n\n return (\n <div className=\"pivot-table\">\n <div\n className={clsx(\n 'bitable-block-dashboard-toolbar bitable-toolbar',\n isShadowShow && 'bitable-toolbar--shadow'\n // isShadowShow &&\n )}\n >\n <div className=\"bitable-block-dashboard-toolbar--left\">\n {renderToolbarLeft?.()}\n {\n !readOnly && <>\n <AddModuleBtn\n onOk={val => {\n handleOpenCreateModal(val)\n }}\n />\n <div\n style={{\n width: '1px',\n height: '1rem',\n backgroundColor: 'rgba(217, 217, 217, 1)',\n marginLeft: '12px',\n marginRight: '4px',\n }}\n />\n <GlobalFilterCondition />\n </>\n }\n\n </div>\n </div>\n {\n modules?.length === 0 && <div style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"height\": \"100%\"\n }}><AntdEmpty image={AntdEmpty.PRESENTED_IMAGE_SIMPLE} /></div>\n }\n\n <div className=\"bitable-block-dashboard__mount\" ref={ref}>\n <div className=\"dashboard-container\">\n <div\n className={`dashboard-content-container ${isDragOrResize ? 'isDragOrResize' : ''} ${isDragOrResizeEnd ? 'isDragOrResizeEnd' : ''\n }`}\n >\n <ResponsiveReactGridLayout\n isDraggable={!readOnly}\n isResizable={!readOnly}\n\n onBreakpointChange={onBreakpointChange}\n className={className}\n compactType=\"vertical\"\n preventCollision={false}\n cols={cols}\n margin={margins}\n rowHeight={rowHeight}\n measureBeforeMount={false}\n draggableHandle=\".isCanDrag\"\n // draggableCancel=\".isNoCanDrag\"\n onWidthChange={(containerWidth, _margin, cols) => {\n setRowWidth(containerWidth / cols - 1)\n }}\n onDragStart={() => {\n onDragStartOrEnd('start')\n }}\n onDragStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n onResizeStart={() => {\n onDragStartOrEnd('start')\n }}\n onResizeStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n style={{\n backgroundSize: `${rowWidth}px ${rowHeight + margins[0]}px`,\n backgroundPosition: `${margins[0]}px ${margins[0]}px`,\n minHeight: '100vh',\n }}\n containerPadding={[10, 0]}\n >\n {modules?.map(module => (\n <div\n className={`box-dashboard ${readOnly ? \"readonly\" : \"\"} ${activeId === module.id ? 'active' : ''}`}\n onClick={() => {\n setActiveId(module.id)\n }}\n key={module.id}\n data-grid={{\n i: module.id,\n x: module.x || 0,\n y: module.y || 0, // puts it at the bottom\n w: module.w || 2,\n h: module.h || 2,\n minW: 2,\n minH: 2,\n }}\n >\n <ModuleHeader\n module={module}\n defaultValue={module.title}\n onChange={val =>\n updateModule(module.id, {\n title: val,\n })\n }\n onDropdownItem={key => {\n if (key === 'edit') {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n } else if (key === 'delete') {\n Modal.confirm({\n title: t('promptTitle'),\n icon: <ExclamationCircleOutlined />,\n content: t('promptContentDeleteComponents'),\n onOk() {\n deleteModule(module.id)\n },\n })\n } else if (key === 'copy') {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }\n }}\n />\n\n <ModuleContent\n module={module}\n onUpdate={updateModule}\n moduleDataApi={moduleDataApi}\n activeId={activeId}\n onClick={() => {\n setActiveId(module.id)\n }}\n rowWidth={rowWidth}\n rowHeight={rowHeight}\n onEdit={() => {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n }}\n onDelete={() => {\n deleteModule(module.id)\n }}\n onCopy={() => {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }}\n onStartDragOrResize={() => {\n setIsDragOrResize(true)\n }}\n onStopDragOrResize={() => {\n setIsDragOrResize(false)\n }}\n />\n </div>\n ))}\n </ResponsiveReactGridLayout>\n </div>\n </div>\n </div>\n\n <AddStatisticsModal\n {...commonModalProps}\n open={isShowAddStatisticsModal}\n onClose={() => {\n setIsShowAddStatisticsModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'statistics',\n })\n setIsShowAddStatisticsModal(false)\n }}\n />\n\n <AddCalendarModal\n {...commonModalProps}\n open={isShowAddCalendarModal}\n onClose={() => {\n setIsShowAddCalendarModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'calendar',\n })\n setIsShowAddCalendarModal(false)\n }}\n />\n\n <AddChartModal\n {...commonModalProps}\n open={isShowAddChartModal}\n // open={true}\n onClose={() => {\n setIsShowAddChartModal(false)\n }}\n onOk={data => {\n handleModalSubmit(data)\n setIsShowAddChartModal(false)\n }}\n />\n </div>\n )\n}\n\n/* ============================== split =============================== */\n\nexport type { ConditionBlockWrapper }\nexport type GlobalProps = {\n globalFilterCondition: ConditionBlockWrapper[]\n onGlobalFilterConditionChange: (condition: ConditionBlockWrapper[]) => void\n\n formatCurrency: (val: number, decimalPlaces?: number) => string\n\n /**\n * @default false\n */\n readOnly?: boolean\n}\n\nconst Empty: unknown = []\n\nexport default React.memo((props: DashboardWorkbenchProps & GlobalProps) => {\n /* ============================== i18n =============================== */\n const { i18n } = useTranslation()\n useEffect(() => {\n i18n.changeLanguage(props?.lang || 'zh_CN')\n }, [i18n, props?.lang])\n\n const globalData = {\n fieldMap: props.fieldMap,\n sourceData: props?.sourceData,\n }\n\n const service = pick(props, [\n 'moduleDataApi',\n 'enumDataApi',\n 'onCreateModule',\n 'onUpdateModule',\n 'onDeleteModule',\n ])\n\n /* ============================== 全局筛选条件 =============================== */\n const [globalFilterCondition = Empty as ConditionBlockWrapper[], setGlobalFilterCondition] =\n useControllableValue<ConditionBlockWrapper[]>(props, {\n valuePropName: 'globalFilterCondition',\n trigger: 'onGlobalFilterConditionChange',\n })\n\n let contextData = {\n readOnly: props?.readOnly || false,\n globalData,\n service,\n formatCurrency: props?.formatCurrency,\n globalFilterCondition,\n setGlobalFilterCondition: setGlobalFilterCondition as React.Dispatch<\n React.SetStateAction<ConditionBlockWrapper[]>\n >,\n }\n setContextRef(contextData)\n\n return (\n <AppContext.Provider value={contextData}>\n <DashboardWorkbench {...props} />\n </AppContext.Provider>\n )\n})\n"],"names":["cols","module","AntdEmpty","AddCalendarModal","AddChartModal"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../packages/dashboard-workbench/index.tsx"],"sourcesContent":["/* eslint-disable @typescript-eslint/no-explicit-any */\nimport React, { useEffect, useMemo, useRef, useState } from 'react'\nimport { message, Modal, Empty as AntdEmpty, Button, Dropdown, Spin, Tooltip } from 'antd'\nimport { ExclamationCircleOutlined, AppstoreOutlined } from '@ant-design/icons'\nimport { Layout, Responsive, WidthProvider } from 'react-grid-layout'\nimport { useTranslation } from 'react-i18next'\nimport { useControllableValue, useScroll } from 'ahooks'\nimport { omit, pick } from 'lodash-es'\nimport AddModuleBtn, { ModuleValueType } from './components/add-module-btn'\nimport AddCalendarModal from './components/add-module-modal/add-calendar-modal'\nimport AddChartModal from './components/add-module-modal/add-chart-modal'\nimport AddStatisticsModal from './components/add-module-modal/add-statistics-modal'\nimport { GlobalFilterCondition } from './components/global-filter-condition'\nimport { ConditionBlockWrapper } from './components/global-filter-condition/interface'\nimport ModuleContent, { ModuleData } from './components/module-content'\nimport ModuleHeader from './components/module-header'\nimport { AppContext, setContextRef, useAppContext } from './context'\nimport { EnumDataApi, ModuleConfigDataTypes, ModuleDataApi, SourceDataItem } from './types'\nimport { findChangedItems } from './utils'\nimport './lang/index'\nimport '/node_modules/react-grid-layout/css/styles.css'\nimport './styles/index.less'\nimport clsx from 'clsx'\n\nconst ResponsiveReactGridLayout = WidthProvider(Responsive)\n\ninterface DashboardWorkbenchProps {\n sourceData?: SourceDataItem[]\n moduleConfigData?: ModuleConfigDataTypes\n fieldMap?: Record<string, string>\n lang?: 'zh-CN' | 'en-US'\n moduleDataApi?: ModuleDataApi\n enumDataApi?: EnumDataApi\n onCreateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onUpdateModule?: (val: ModuleData) => Promise<{ data: ModuleData }>\n onDeleteModule?: (val: string) => Promise<{ data: ModuleData }>\n onLayoutChange?: (layout: Layout[]) => void\n className?: string\n cols?: { lg: number; md: number; sm: number; xs: number; xxs: number }\n rowHeight?: number\n\n renderToolbarLeft?: () => React.ReactNode\n\n}\n\nconst DashboardWorkbench: React.FC<DashboardWorkbenchProps> = ({\n moduleConfigData,\n moduleDataApi,\n enumDataApi,\n onCreateModule,\n onUpdateModule,\n onDeleteModule,\n className = 'layout',\n cols = { lg: 12, md: 12, sm: 12, xs: 12, xxs: 12 },\n rowHeight = 79,\n renderToolbarLeft,\n}) => {\n const { t } = useTranslation()\n const { readOnly } = useAppContext()\n\n /* ============================== modules =============================== */\n const normalizeModules = (data?: ModuleConfigDataTypes) =>\n data?.map(item => ({\n ...item,\n i: item.i ? item.i : item.id,\n })) || []\n\n const [modules, setModules] = useState<ModuleData[] | undefined>(() => normalizeModules(moduleConfigData))\n const [activeId, setActiveId] = useState<ModuleData['id']>()\n const [isArranging, setIsArranging] = useState(false)\n const [gridKey, setGridKey] = useState(0)\n const layoutRef = useRef<Layout[]>([])\n\n useEffect(() => {\n setModules(normalizeModules(moduleConfigData))\n }, [moduleConfigData])\n\n const findNextPosition = (newW: number, newH: number) => {\n const layout = layoutRef.current\n if (!layout?.length) return { x: 0, y: 0 }\n const totalCols = cols.lg || 12\n const maxY = layout.reduce((max, m) => Math.max(max, (m.y || 0) + (m.h || 2)), 0)\n const gridH = maxY + newH\n const grid: boolean[][] = Array.from({ length: gridH }, () => new Array(totalCols).fill(false))\n for (const m of layout) {\n for (let y = m.y || 0; y < (m.y || 0) + (m.h || 2); y++) {\n for (let x = m.x || 0; x < (m.x || 0) + (m.w || 2); x++) {\n if (y < gridH && x < totalCols) grid[y][x] = true\n }\n }\n }\n for (let y = 0; y <= gridH; y++) {\n for (let x = 0; x <= totalCols - newW; x++) {\n let fits = true\n for (let dy = 0; dy < newH && fits; dy++) {\n for (let dx = 0; dx < newW && fits; dx++) {\n if (y + dy < gridH && grid[y + dy][x + dx]) fits = false\n }\n }\n if (fits) return { x, y }\n }\n }\n return { x: 0, y: maxY }\n }\n\n const getDefaultSize = (type: string) => {\n const isPie = type === 'chart-pie' || type === 'chart-pie-circular'\n const isChart = type?.includes('chart') && !isPie\n const isStatistics = type === 'statistics'\n const isText = type === 'text'\n const isCalendar = type === 'calendar'\n const w = isStatistics ? 3 : isText ? 6 : isPie ? 6 : isCalendar ? 12 : 12\n const h = isCalendar ? 6 : isChart ? 6 : 4\n return { w, h }\n }\n\n const addModule = async (data: ModuleValueType) => {\n const { w: wMultiple, h: hMultiple } = getDefaultSize(data.type || '')\n\n if (Array.isArray(modules) && data.type) {\n const { x, y } = findNextPosition(wMultiple, hMultiple)\n const newModuleData = {\n x,\n y,\n w: wMultiple,\n h: hMultiple,\n title: data.type.includes('chart') ? t('chartText') : title[data.type],\n ...data,\n type: data.type,\n }\n await onCreateModule?.(newModuleData).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n setModules([...modules, { ...newModuleData, i: res.data?.id, id: res.data?.id }])\n })\n }\n }\n\n // 单个\n const updateModule = async (id: ModuleData['id'], updatedProps: Partial<ModuleData>) => {\n if (modules?.length) {\n const oldData = modules.find(m => m.id === id)\n const updatedModule = {\n ...oldData!,\n ...updatedProps,\n }\n const modulesData = modules.map(m => (m.id === id ? updatedModule : m))\n setModules(modulesData)\n await onUpdateModule?.(updatedModule).then((res: any) => {\n if (!res.success) {\n message.error(res.message)\n return\n }\n })\n }\n }\n\n // 批量\n const updateModules = async (updatedItems: Partial<ModuleData>[]) => {\n if (!modules?.length || !updatedItems?.length) return\n const updatedModules = modules.map(module => {\n const update = updatedItems.find(item => item.id === module.id)\n return update ? { ...module, ...update } : module\n })\n setModules(updatedModules)\n try {\n for (const updatedItem of updatedItems) {\n const res: any = await onUpdateModule?.(updatedItem as ModuleData)\n if (!res?.success) {\n throw new Error(res?.message || `Failed to update module: ${updatedItem.id}`)\n }\n }\n } catch (error: any) {\n setModules(modules)\n message.error(error.message || 'Failed to update modules')\n }\n }\n\n const binPack = (items: { id?: string; w: number; h: number }[], startY = 0, preserveOrder = false) => {\n const totalCols = cols.lg || 12\n const sorted = preserveOrder ? items : [...items].sort((a, b) => b.h - a.h || b.w - a.w)\n const grid: boolean[][] = []\n\n const ensureRows = (maxY: number) => {\n while (grid.length < maxY) grid.push(new Array(totalCols).fill(false))\n }\n\n const positions = new Map<string, { x: number; y: number }>()\n\n for (const item of sorted) {\n const w = item.w, h = item.h\n let placed = false\n ensureRows(1)\n for (let y = 0; !placed; y++) {\n ensureRows(y + h)\n for (let x = 0; x <= totalCols - w && !placed; x++) {\n let fits = true\n for (let dy = 0; dy < h && fits; dy++) {\n for (let dx = 0; dx < w && fits; dx++) {\n if (grid[y + dy][x + dx]) fits = false\n }\n }\n if (fits) {\n for (let dy = 0; dy < h; dy++) {\n for (let dx = 0; dx < w; dx++) {\n grid[y + dy][x + dx] = true\n }\n }\n positions.set(item.id!, { x, y: y + startY })\n placed = true\n }\n }\n }\n }\n\n return { positions, height: grid.length }\n }\n\n const compactArrange = async () => {\n if (!modules?.length) return\n setIsArranging(true)\n try {\n // 按当前位置排序(上→下,左→右),保留视觉顺序\n const sorted = [...modules].sort((a, b) => (a.y || 0) - (b.y || 0) || (a.x || 0) - (b.x || 0))\n const items = sorted.map(m => ({ id: m.id, w: m.w || 2, h: m.h || 2 }))\n const { positions } = binPack(items, 0, true)\n const arranged = modules.map(m => {\n const pos = positions.get(m.id!)\n return { ...m, x: pos?.x ?? 0, y: pos?.y ?? 0 }\n })\n await updateModules(arranged)\n setGridKey(k => k + 1)\n } finally {\n setIsArranging(false)\n }\n }\n\n const resetArrange = async () => {\n if (!modules?.length) return\n setIsArranging(true)\n try {\n const typeOrder: Record<string, number> = {\n statistics: 0,\n 'chart-pie': 1,\n 'chart-pie-circular': 1,\n }\n const getOrder = (type?: string) => {\n if (!type) return 99\n if (typeOrder[type] !== undefined) return typeOrder[type]\n if (type.includes('chart')) return 2\n if (type === 'text') return 3\n if (type === 'calendar') return 4\n return 99\n }\n\n // 按类型排序后单次 binPack,让不同类型自然填充同行空隙\n const sorted = [...modules].sort((a, b) => getOrder(a.type) - getOrder(b.type))\n const items = sorted.map(m => {\n const { w, h } = getDefaultSize(m.type || '')\n return { id: m.id, w, h }\n })\n const { positions } = binPack(items, 0, true)\n\n const arranged = modules.map(m => {\n const { w, h } = getDefaultSize(m.type || '')\n const pos = positions.get(m.id!)\n return { ...m, x: pos?.x ?? 0, y: pos?.y ?? 0, w, h }\n })\n await updateModules(arranged)\n setGridKey(k => k + 1)\n } finally {\n setIsArranging(false)\n }\n }\n\n const deleteModule = async (id: ModuleData['id']) => {\n if (modules?.length) {\n setModules(modules.filter(m => m.id !== id))\n await onDeleteModule?.(id || '')\n }\n }\n\n /* ============================== drag =============================== */\n\n const margins: [number, number] = [10, 10]\n const [rowWidth, setRowWidth] = useState(0)\n const [, setCurrentCols] = useState<number>(cols.lg)\n\n const lastRowModuleIds = useMemo(() => {\n const layout = layoutRef.current?.length ? layoutRef.current : modules?.map(m => ({ i: m.id, x: m.x || 0, y: m.y || 0, w: m.w || 2, h: m.h || 2 })) || []\n if (!layout.length) return new Set<string>()\n const maxBottom = layout.reduce((max, m) => Math.max(max, (m.y || 0) + (m.h || 2)), 0)\n return new Set(layout.filter(m => (m.y || 0) + (m.h || 2) >= maxBottom).map(m => m.i))\n }, [modules])\n\n const [isDragOrResize, setIsDragOrResize] = useState(false)\n const [isDragOrResizeEnd, setIsDragOrResizeEnd] = useState(false)\n\n const onBreakpointChange = (_breakpoint: string, cols: number) => {\n setCurrentCols(cols)\n }\n\n const onDragResizeStop = (newLayout: Layout[]) => {\n const changedItems = findChangedItems(newLayout, modules as any)\n const newChangedItems = changedItems.map(item => {\n const module = modules?.find(module => module.i === item.i)\n return { ...module, ...item }\n })\n updateModules(newChangedItems)\n }\n\n const onDragStartOrEnd = (type: 'start' | 'end', newLayout?: Layout[]) => {\n if (type === 'start') {\n setIsDragOrResize(true)\n setIsDragOrResizeEnd(true)\n } else {\n setIsDragOrResize(false)\n setTimeout(() => {\n setIsDragOrResizeEnd(false)\n }, 500)\n onDragResizeStop(newLayout || [])\n }\n }\n\n /* ============================== split =============================== */\n const [selectModuleData, setSelectModuleData] = useState<ModuleData>()\n\n const [isShowAddStatisticsModal, setIsShowAddStatisticsModal] = useState<boolean>(false)\n const [isShowAddCalendarModal, setIsShowAddCalendarModal] = useState<boolean>(false)\n const [isShowAddChartModal, setIsShowAddChartModal] = useState<boolean>(false)\n\n const handleOpenCreateModal = (val: any) => {\n if (val === 'text') {\n const data = {\n type: val,\n customData: {\n title: t('text'),\n editor: [\n {\n type: 'paragraph',\n children: [\n {\n text: '',\n },\n ],\n },\n ],\n },\n }\n addModule(data)\n } else if (val === 'statistics') {\n setIsShowAddStatisticsModal(true)\n } else if (val === 'calendar') {\n setIsShowAddCalendarModal(true)\n } else if (val?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n\n setSelectModuleData({\n title: '',\n type: val,\n w: 0,\n h: 0,\n x: 0,\n y: 0,\n })\n }\n\n const commonModalProps = {\n moduleDataApi: moduleDataApi,\n enumDataApi: enumDataApi,\n selectModuleData: selectModuleData,\n }\n const handleModalSubmit = (data: Partial<ModuleData>) => {\n if (data.id) {\n updateModule(data.id, omit(data, 'id'))\n } else {\n addModule(data)\n }\n }\n /* ============================== split =============================== */\n const title: any = {\n text: t('pb.text'),\n calendar: t('calendarText'),\n statistics: t('chartText'),\n }\n\n /* ============================== 滚动出阴影 =============================== */\n const ref = useRef<HTMLDivElement>(null)\n const scroll = useScroll(ref)\n const isShadowShow = (scroll?.top ?? 0) > 0\n\n // 筛选条件变化导致组件 remount 时,重置滚动位置到顶部\n const isInitialMount = useRef(true)\n useEffect(() => {\n isInitialMount.current = true\n if (ref.current) {\n ref.current.scrollTop = 0\n }\n }, [])\n\n return (\n <div className=\"pivot-table\">\n <div\n className={clsx(\n 'bitable-block-dashboard-toolbar bitable-toolbar',\n isShadowShow && 'bitable-toolbar--shadow'\n // isShadowShow &&\n )}\n >\n <div className=\"bitable-block-dashboard-toolbar--left\">\n {renderToolbarLeft?.()}\n {\n !readOnly && <>\n <AddModuleBtn\n onOk={val => {\n handleOpenCreateModal(val)\n }}\n />\n <div\n style={{\n width: '1px',\n height: '1rem',\n backgroundColor: 'rgba(217, 217, 217, 1)',\n marginLeft: '12px',\n marginRight: '4px',\n }}\n />\n <GlobalFilterCondition />\n </>\n }\n </div>\n {!readOnly && (\n <div style={{ display: 'flex', alignItems: 'center', marginLeft: 'auto' }}>\n <Dropdown menu={{\n items: [\n { key: 'compact', label: <Tooltip title={t('compactLayoutTip')} placement=\"left\">{t('compactLayout')}</Tooltip> },\n { key: 'reset', label: <Tooltip title={t('resetLayoutTip')} placement=\"left\">{t('resetLayout')}</Tooltip> },\n ],\n onClick: ({ key }) => key === 'compact' ? compactArrange() : resetArrange(),\n }}>\n <Button type=\"text\" icon={<AppstoreOutlined />} />\n </Dropdown>\n </div>\n )}\n </div>\n {\n modules?.length === 0 && <div style={{\n display: \"flex\",\n justifyContent: \"center\",\n alignItems: \"center\",\n \"height\": \"100%\"\n }}><AntdEmpty image={AntdEmpty.PRESENTED_IMAGE_SIMPLE} /></div>\n }\n\n <div className=\"bitable-block-dashboard__mount\" ref={ref}>\n <Spin spinning={isArranging}>\n <div className=\"dashboard-container\">\n <div\n className={`dashboard-content-container ${isDragOrResize ? 'isDragOrResize' : ''} ${isDragOrResizeEnd ? 'isDragOrResizeEnd' : ''\n }`}\n >\n <ResponsiveReactGridLayout\n key={gridKey}\n isDraggable={!readOnly}\n isResizable={!readOnly}\n\n onBreakpointChange={onBreakpointChange}\n className={className}\n compactType=\"vertical\"\n preventCollision={false}\n cols={cols}\n margin={margins}\n rowHeight={rowHeight}\n measureBeforeMount={false}\n draggableHandle=\".isCanDrag\"\n // draggableCancel=\".isNoCanDrag\"\n onLayoutChange={(layout) => {\n layoutRef.current = layout\n // react-grid-layout 首次布局计算后重置滚动位置\n if (isInitialMount.current) {\n isInitialMount.current = false\n requestAnimationFrame(() => {\n if (ref.current) {\n ref.current.scrollTop = 0\n }\n })\n }\n }}\n onWidthChange={(containerWidth, _margin, cols) => {\n setRowWidth(containerWidth / cols - 1)\n }}\n onDragStart={() => {\n onDragStartOrEnd('start')\n }}\n onDragStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n onResizeStart={() => {\n onDragStartOrEnd('start')\n }}\n onResizeStop={newLayout => {\n onDragStartOrEnd('end', newLayout)\n }}\n style={{\n backgroundSize: `${rowWidth}px ${rowHeight + margins[0]}px`,\n backgroundPosition: `${margins[0]}px ${margins[0]}px`,\n minHeight: '100vh',\n }}\n containerPadding={[10, 0]}\n >\n {modules?.map(module => (\n <div\n className={`box-dashboard ${readOnly ? \"readonly\" : \"\"} ${activeId === module.id ? 'active' : ''}`}\n onClick={() => {\n setActiveId(module.id)\n }}\n key={module.id}\n data-grid={{\n i: module.id,\n x: module.x || 0,\n y: module.y || 0, // puts it at the bottom\n w: module.w || 2,\n h: module.h || 2,\n minW: 2,\n minH: 2,\n ...(lastRowModuleIds.has(module.id) ? { resizeHandles: ['ne'] } : {}),\n }}\n >\n <ModuleHeader\n module={module}\n defaultValue={module.title}\n onChange={val =>\n updateModule(module.id, {\n title: val,\n })\n }\n onDropdownItem={key => {\n if (key === 'edit') {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n } else if (key === 'delete') {\n Modal.confirm({\n title: t('promptTitle'),\n icon: <ExclamationCircleOutlined />,\n content: t('promptContentDeleteComponents'),\n onOk() {\n deleteModule(module.id)\n },\n })\n } else if (key === 'copy') {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }\n }}\n />\n\n <ModuleContent\n module={module}\n onUpdate={updateModule}\n moduleDataApi={moduleDataApi}\n activeId={activeId}\n onClick={() => {\n setActiveId(module.id)\n }}\n rowWidth={rowWidth}\n rowHeight={rowHeight}\n onEdit={() => {\n setActiveId(module.id)\n setSelectModuleData(module)\n if (module.type === 'statistics') {\n setIsShowAddStatisticsModal(true)\n }\n if (module.type?.includes('chart')) {\n setIsShowAddChartModal(true)\n }\n if (module.type === 'calendar') {\n setIsShowAddCalendarModal(true)\n }\n }}\n onDelete={() => {\n deleteModule(module.id)\n }}\n onCopy={() => {\n const data = JSON.parse(JSON.stringify(module))\n delete data.id\n delete data.i\n addModule(data)\n }}\n onStartDragOrResize={() => {\n setIsDragOrResize(true)\n }}\n onStopDragOrResize={() => {\n setIsDragOrResize(false)\n }}\n />\n </div>\n ))}\n </ResponsiveReactGridLayout>\n </div>\n </div>\n </Spin>\n </div>\n\n <AddStatisticsModal\n {...commonModalProps}\n open={isShowAddStatisticsModal}\n onClose={() => {\n setIsShowAddStatisticsModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'statistics',\n })\n setIsShowAddStatisticsModal(false)\n }}\n />\n\n <AddCalendarModal\n {...commonModalProps}\n open={isShowAddCalendarModal}\n onClose={() => {\n setIsShowAddCalendarModal(false)\n }}\n onOk={data => {\n handleModalSubmit({\n ...data,\n type: 'calendar',\n })\n setIsShowAddCalendarModal(false)\n }}\n />\n\n <AddChartModal\n {...commonModalProps}\n open={isShowAddChartModal}\n // open={true}\n onClose={() => {\n setIsShowAddChartModal(false)\n }}\n onOk={data => {\n handleModalSubmit(data)\n setIsShowAddChartModal(false)\n }}\n />\n </div>\n )\n}\n\n/* ============================== split =============================== */\n\nexport type { ConditionBlockWrapper }\nexport type GlobalProps = {\n globalFilterCondition: ConditionBlockWrapper[]\n onGlobalFilterConditionChange: (condition: ConditionBlockWrapper[]) => void\n\n formatCurrency: (val: number, decimalPlaces?: number) => string\n\n /**\n * @default false\n */\n readOnly?: boolean\n}\n\nconst Empty: unknown = []\n\nexport default React.memo((props: DashboardWorkbenchProps & GlobalProps) => {\n /* ============================== i18n =============================== */\n const { i18n } = useTranslation()\n useEffect(() => {\n i18n.changeLanguage(props?.lang || 'zh_CN')\n }, [i18n, props?.lang])\n\n const globalData = {\n fieldMap: props.fieldMap,\n sourceData: props?.sourceData,\n }\n\n const service = pick(props, [\n 'moduleDataApi',\n 'enumDataApi',\n 'onCreateModule',\n 'onUpdateModule',\n 'onDeleteModule',\n ])\n\n /* ============================== 全局筛选条件 =============================== */\n const [globalFilterCondition = Empty as ConditionBlockWrapper[], setGlobalFilterCondition] =\n useControllableValue<ConditionBlockWrapper[]>(props, {\n valuePropName: 'globalFilterCondition',\n trigger: 'onGlobalFilterConditionChange',\n })\n\n let contextData = {\n readOnly: props?.readOnly || false,\n globalData,\n service,\n formatCurrency: props?.formatCurrency,\n globalFilterCondition,\n setGlobalFilterCondition: setGlobalFilterCondition as React.Dispatch<\n React.SetStateAction<ConditionBlockWrapper[]>\n >,\n }\n setContextRef(contextData)\n\n return (\n <AppContext.Provider value={contextData}>\n <DashboardWorkbench {...props} />\n </AppContext.Provider>\n )\n})\n"],"names":["cols","module","AntdEmpty","AddCalendarModal","AddChartModal"],"mappings":"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"}
|
|
@@ -92,6 +92,8 @@ declare const _default: {
|
|
|
92
92
|
groupFieldConfig: string;
|
|
93
93
|
left: string;
|
|
94
94
|
right: string;
|
|
95
|
+
pieOther: string;
|
|
96
|
+
pieOtherItems: string;
|
|
95
97
|
};
|
|
96
98
|
calendar: {
|
|
97
99
|
t1: string;
|
|
@@ -188,5 +190,10 @@ declare const _default: {
|
|
|
188
190
|
globalfilter: string;
|
|
189
191
|
setFilterCondition: string;
|
|
190
192
|
selectGroupField: string;
|
|
193
|
+
autoArrange: string;
|
|
194
|
+
compactLayout: string;
|
|
195
|
+
compactLayoutTip: string;
|
|
196
|
+
resetLayout: string;
|
|
197
|
+
resetLayoutTip: string;
|
|
191
198
|
};
|
|
192
199
|
export default _default;
|
|
@@ -44,7 +44,12 @@ const common = {
|
|
|
44
44
|
filter: "Filter",
|
|
45
45
|
globalfilter: "Global Filter",
|
|
46
46
|
setFilterCondition: "Set Filter Condition",
|
|
47
|
-
selectGroupField: "Select Group Field"
|
|
47
|
+
selectGroupField: "Select Group Field",
|
|
48
|
+
autoArrange: "Auto Arrange",
|
|
49
|
+
compactLayout: "Compact Layout",
|
|
50
|
+
compactLayoutTip: "Remove gaps and compact, keep current sizes",
|
|
51
|
+
resetLayout: "Reset Layout",
|
|
52
|
+
resetLayoutTip: "Group by type and restore default sizes"
|
|
48
53
|
};
|
|
49
54
|
const pb = {
|
|
50
55
|
text: "text",
|
|
@@ -114,7 +119,9 @@ const chart = {
|
|
|
114
119
|
t43: "Aggregate by year",
|
|
115
120
|
groupFieldConfig: "Group Field Configuration",
|
|
116
121
|
left: "Left",
|
|
117
|
-
right: "Right"
|
|
122
|
+
right: "Right",
|
|
123
|
+
pieOther: "Others",
|
|
124
|
+
pieOtherItems: "Other {{count}} items"
|
|
118
125
|
};
|
|
119
126
|
const calendar = {
|
|
120
127
|
t1: "View Configuration",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"en-US.js","sources":["../../../packages/dashboard-workbench/lang/en-US.ts"],"sourcesContent":["const common = {\n title: 'Dashboard',\n text: 'Text',\n confirm: 'Confirm',\n pleaseEnter: 'Please enter',\n configuration: 'Configuration',\n copy: 'Copy',\n delete: 'Delete',\n calendarText: 'Calendar',\n chartText: 'Chart',\n promptTitle: 'Prompt',\n promptContentDeleteComponents: 'Are you sure you want to delete this component?',\n unnamedRecord: 'Unnamed Record',\n setFilteringCriteria: 'Set filtering criteria',\n all: 'All',\n everyone: 'Any',\n condition: 'Conditions',\n addCondition: 'Add condition',\n equalto: 'Equal to',\n notequalto: 'Not equal to',\n contain: 'Contains',\n notcontain: 'Does not contain',\n null: 'Is empty',\n notnull: 'Is not empty',\n conformTo: 'Match the following',\n statisticsText: 'Statistics Text',\n typeData: 'Type and Data',\n customStyle: 'Custom Style',\n dataSource: 'Data Source',\n dataRange: 'Data Range',\n data: 'Data',\n filterData: 'Filter Data',\n selectNcondition: 'Selected {{n}} conditions',\n allData: 'All Data',\n statisticstMethods: 'Statistical Methods',\n statisticstRecordNum: 'Total Number of Records',\n statisticstFieldVal: 'Statistical Field Values',\n selectField: 'Select Field',\n sumVal: 'Sum',\n maxVal: 'Maximum Value',\n minVal: 'Minimum Value',\n averageVal: 'Average Value',\n empty: 'No Data',\n\n filter: 'Filter',\n globalfilter: 'Global Filter',\n setFilterCondition: 'Set Filter Condition',\n selectGroupField: 'Select Group Field',\n}\n\nconst pb = {\n text: 'text',\n statisticsText: 'Statistics',\n unknown: 'unknown',\n}\n\nconst statistics = {\n t1: 'Color Scheme',\n t2: 'Value Settings',\n t3: 'Decimal Places and Format',\n t4: 'Please enter decimal places',\n t5: 'Number (Thousand Separator)',\n t6: 'Number',\n t7: 'Percentage',\n currency: 'Currency',\n t8: 'Renminbi',\n t9: 'Dollar',\n t10: 'Statistical Value Description',\n t11: 'EUR',\n t12: 'GBP',\n t13: 'THB',\n}\n\nconst chart = {\n t1: 'Chart Type',\n t2: 'Basic Bar Chart',\n t3: 'Stacked Bar Chart',\n t4: 'Percentage Bar Chart',\n t5: 'Basic Horizontal Bar Chart',\n t6: 'Stacked Horizontal Bar Chart',\n t7: 'Percentage Stacked Horizontal Bar Chart',\n t8: 'Line Chart',\n t9: 'Smooth Line Chart',\n t10: 'Pie Chart',\n t11: 'Doughnut Chart',\n t12: 'Chart Options',\n _t12: 'Combination Chart',\n t13: 'Legend',\n t14: 'Data Label',\n t15: 'Axis',\n t16: 'Grid Line',\n t17: 'Sector Division',\n t18: 'Horizontal Axis (Category)',\n t19: 'Sector Value',\n t20: 'Vertical Axis (Field)',\n t21: 'Horizontal Axis',\n t22: 'Horizontal Axis Title',\n t23: 'Axis Options',\n t24: 'Show Labels',\n t25: 'Show Axis Line',\n t26: 'Vertical Axis',\n t27: 'Vertical Axis Title',\n t28: 'Axis Options',\n t29: 'Show Labels',\n t30: 'Show Axis Line',\n t31: 'Sort By',\n t32: 'Horizontal Axis Value',\n t33: 'Vertical Axis Value',\n t34: 'Record Sequence',\n t35: 'Sort Order',\n t36: 'Ascending',\n t37: 'Descending',\n t38: 'Grouping And Aggregation',\n\n t39: 'Aggregate by time',\n t40: 'Aggregate by day',\n t41: 'Aggregate by week',\n t42: 'Aggregate by month',\n t43: 'Aggregate by year',\n\n groupFieldConfig: 'Group Field Configuration',\n\n left: 'Left',\n right: 'Right',\n}\n\nconst calendar = {\n t1: 'View Configuration',\n t2: 'Start Date',\n t3: 'End Date',\n t4: 'Title Display',\n}\n\nconst add = {\n add1: 'Chart',\n add2: 'Bar Chart',\n add3: 'Line Chart',\n add4: 'Pie Chart',\n add5: 'Bar Graph',\n _add5: 'Combination Chart',\n add6: 'Other',\n add7: 'Statistics',\n add8: 'Text',\n add9: 'Calendar',\n add10: 'Add Block',\n add11: 'Equal to',\n add12: 'Not Equal to',\n add13: 'Equal to',\n add14: 'Before(<)',\n add15: 'After(>)',\n add16: 'Within Range',\n timeBefore: 'Before (excluding the day)',\n timeAfter: 'After (excluding the day)',\n timeRange: 'Date Range (including the day)',\n add17: 'Is Empty',\n add18: 'Is Not Empty',\n add19: 'Not Equal to',\n add20: 'Greater than',\n add21: 'Greater than or Equal to',\n add22: 'Less than',\n add23: 'Less than or Equal to',\n add24: 'Contains',\n add25: 'Does Not Contain',\n add26: 'Specific Date',\n add27: 'Today',\n add28: 'Yesterday',\n add29: 'This Week',\n add30: 'Last Week',\n add31: 'This Month',\n add32: 'Last Month',\n add33: 'Past 7 Days',\n add34: 'Past 30 Days',\n add35: 'Last Year',\n add36: 'This Year',\n add37: 'The Month Before Last',\n}\n\nexport const displayRange = {\n title: 'Display Data',\n all: 'All',\n top5: 'Top 5',\n top10: 'Top 10',\n top20: 'Top 20',\n top30: 'Top 30',\n bottom5: 'Bottom 5',\n bottom10: 'Bottom 10',\n bottom20: 'Bottom 20',\n bottom30: 'Bottom 30',\n}\n\nexport default {\n ...common,\n displayRange,\n pb,\n statistics,\n chart,\n calendar,\n add,\n}\n"],"names":[],"mappings":"AAAA,MAAM,SAAS;AAAA,EACb,OAAO;AAAA,EACP,MAAM;AAAA,EACN,SAAS;AAAA,EACT,aAAa;AAAA,EACb,eAAe;AAAA,EACf,MAAM;AAAA,EACN,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,WAAW;AAAA,EACX,aAAa;AAAA,EACb,+BAA+B;AAAA,EAC/B,eAAe;AAAA,EACf,sBAAsB;AAAA,EACtB,KAAK;AAAA,EACL,UAAU;AAAA,EACV,WAAW;AAAA,EACX,cAAc;AAAA,EACd,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,SAAS;AAAA,EACT,YAAY;AAAA,EACZ,MAAM;AAAA,EACN,SAAS;AAAA,EACT,WAAW;AAAA,EACX,gBAAgB;AAAA,EAChB,UAAU;AAAA,EACV,aAAa;AAAA,EACb,YAAY;AAAA,EACZ,WAAW;AAAA,EACX,MAAM;AAAA,EACN,YAAY;AAAA,EACZ,kBAAkB;AAAA,EAClB,SAAS;AAAA,EACT,oBAAoB;AAAA,EACpB,sBAAsB;AAAA,EACtB,qBAAqB;AAAA,EACrB,aAAa;AAAA,EACb,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,QAAQ;AAAA,EACR,YAAY;AAAA,EACZ,OAAO;AAAA,EAEP,QAAQ;AAAA,EACR,cAAc;AAAA,EACd,oBAAoB;AAAA,EACpB,kBAAkB;
|
|
1
|
+
{"version":3,"file":"en-US.js","sources":["../../../packages/dashboard-workbench/lang/en-US.ts"],"sourcesContent":["const common = {\n title: 'Dashboard',\n text: 'Text',\n confirm: 'Confirm',\n pleaseEnter: 'Please enter',\n configuration: 'Configuration',\n copy: 'Copy',\n delete: 'Delete',\n calendarText: 'Calendar',\n chartText: 'Chart',\n promptTitle: 'Prompt',\n promptContentDeleteComponents: 'Are you sure you want to delete this component?',\n unnamedRecord: 'Unnamed Record',\n setFilteringCriteria: 'Set filtering criteria',\n all: 'All',\n everyone: 'Any',\n condition: 'Conditions',\n addCondition: 'Add condition',\n equalto: 'Equal to',\n notequalto: 'Not equal to',\n contain: 'Contains',\n notcontain: 'Does not contain',\n null: 'Is empty',\n notnull: 'Is not empty',\n conformTo: 'Match the following',\n statisticsText: 'Statistics Text',\n typeData: 'Type and Data',\n customStyle: 'Custom Style',\n dataSource: 'Data Source',\n dataRange: 'Data Range',\n data: 'Data',\n filterData: 'Filter Data',\n selectNcondition: 'Selected {{n}} conditions',\n allData: 'All Data',\n statisticstMethods: 'Statistical Methods',\n statisticstRecordNum: 'Total Number of Records',\n statisticstFieldVal: 'Statistical Field Values',\n selectField: 'Select Field',\n sumVal: 'Sum',\n maxVal: 'Maximum Value',\n minVal: 'Minimum Value',\n averageVal: 'Average Value',\n empty: 'No Data',\n\n filter: 'Filter',\n globalfilter: 'Global Filter',\n setFilterCondition: 'Set Filter Condition',\n selectGroupField: 'Select Group Field',\n autoArrange: 'Auto Arrange',\n compactLayout: 'Compact Layout',\n compactLayoutTip: 'Remove gaps and compact, keep current sizes',\n resetLayout: 'Reset Layout',\n resetLayoutTip: 'Group by type and restore default sizes',\n}\n\nconst pb = {\n text: 'text',\n statisticsText: 'Statistics',\n unknown: 'unknown',\n}\n\nconst statistics = {\n t1: 'Color Scheme',\n t2: 'Value Settings',\n t3: 'Decimal Places and Format',\n t4: 'Please enter decimal places',\n t5: 'Number (Thousand Separator)',\n t6: 'Number',\n t7: 'Percentage',\n currency: 'Currency',\n t8: 'Renminbi',\n t9: 'Dollar',\n t10: 'Statistical Value Description',\n t11: 'EUR',\n t12: 'GBP',\n t13: 'THB',\n}\n\nconst chart = {\n t1: 'Chart Type',\n t2: 'Basic Bar Chart',\n t3: 'Stacked Bar Chart',\n t4: 'Percentage Bar Chart',\n t5: 'Basic Horizontal Bar Chart',\n t6: 'Stacked Horizontal Bar Chart',\n t7: 'Percentage Stacked Horizontal Bar Chart',\n t8: 'Line Chart',\n t9: 'Smooth Line Chart',\n t10: 'Pie Chart',\n t11: 'Doughnut Chart',\n t12: 'Chart Options',\n _t12: 'Combination Chart',\n t13: 'Legend',\n t14: 'Data Label',\n t15: 'Axis',\n t16: 'Grid Line',\n t17: 'Sector Division',\n t18: 'Horizontal Axis (Category)',\n t19: 'Sector Value',\n t20: 'Vertical Axis (Field)',\n t21: 'Horizontal Axis',\n t22: 'Horizontal Axis Title',\n t23: 'Axis Options',\n t24: 'Show Labels',\n t25: 'Show Axis Line',\n t26: 'Vertical Axis',\n t27: 'Vertical Axis Title',\n t28: 'Axis Options',\n t29: 'Show Labels',\n t30: 'Show Axis Line',\n t31: 'Sort By',\n t32: 'Horizontal Axis Value',\n t33: 'Vertical Axis Value',\n t34: 'Record Sequence',\n t35: 'Sort Order',\n t36: 'Ascending',\n t37: 'Descending',\n t38: 'Grouping And Aggregation',\n\n t39: 'Aggregate by time',\n t40: 'Aggregate by day',\n t41: 'Aggregate by week',\n t42: 'Aggregate by month',\n t43: 'Aggregate by year',\n\n groupFieldConfig: 'Group Field Configuration',\n\n left: 'Left',\n right: 'Right',\n pieOther: 'Others',\n pieOtherItems: 'Other {{count}} items',\n}\n\nconst calendar = {\n t1: 'View Configuration',\n t2: 'Start Date',\n t3: 'End Date',\n t4: 'Title Display',\n}\n\nconst add = {\n add1: 'Chart',\n add2: 'Bar Chart',\n add3: 'Line Chart',\n add4: 'Pie Chart',\n add5: 'Bar Graph',\n _add5: 'Combination Chart',\n add6: 'Other',\n add7: 'Statistics',\n add8: 'Text',\n add9: 'Calendar',\n add10: 'Add Block',\n add11: 'Equal to',\n add12: 'Not Equal to',\n add13: 'Equal to',\n add14: 'Before(<)',\n add15: 'After(>)',\n add16: 'Within Range',\n timeBefore: 'Before (excluding the day)',\n timeAfter: 'After (excluding the day)',\n timeRange: 'Date Range (including the day)',\n add17: 'Is Empty',\n add18: 'Is Not Empty',\n add19: 'Not Equal to',\n add20: 'Greater than',\n add21: 'Greater than or Equal to',\n add22: 'Less than',\n add23: 'Less than or Equal to',\n add24: 'Contains',\n add25: 'Does Not Contain',\n add26: 'Specific Date',\n add27: 'Today',\n add28: 'Yesterday',\n add29: 'This Week',\n add30: 'Last Week',\n add31: 'This Month',\n add32: 'Last Month',\n add33: 'Past 7 Days',\n add34: 'Past 30 Days',\n add35: 'Last Year',\n add36: 'This Year',\n add37: 'The Month Before Last',\n}\n\nexport const displayRange = {\n title: 'Display Data',\n all: 'All',\n top5: 'Top 5',\n top10: 'Top 10',\n top20: 'Top 20',\n top30: 'Top 30',\n bottom5: 'Bottom 5',\n bottom10: 'Bottom 10',\n bottom20: 'Bottom 20',\n bottom30: 'Bottom 30',\n}\n\nexport default {\n ...common,\n displayRange,\n pb,\n statistics,\n chart,\n calendar,\n add,\n}\n"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sources":["../../../packages/dashboard-workbench/lang/index.ts"],"sourcesContent":["// i18n.js\nimport { initReactI18next } from 'react-i18next'\nimport i18n from 'i18next'\nimport enUS from './en-US'\nimport zhCN from './zh-CN'\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources: {\n 'zh-CN': {\n translation: zhCN,\n },\n 'en-US': {\n translation: enUS,\n },\n },\n lng: 'zh-CN',\n fallbackLng: 'zh-CN',\n interpolation: {\n escapeValue: false, // not needed for React as it escapes by default\n },\n })\n\nexport default i18n\n"],"names":[],"mappings":";;;;;AAMA,KACG,IAAI,gBAAgB,EACpB,KAAK;AAAA,EACJ,WAAW;AAAA,IACT,SAAS;AAAA,MACP,aAAa;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sources":["../../../packages/dashboard-workbench/lang/index.ts"],"sourcesContent":["// i18n.js\nimport { initReactI18next } from 'react-i18next'\nimport i18n from 'i18next'\nimport enUS from './en-US'\nimport zhCN from './zh-CN'\n\ni18n\n .use(initReactI18next) // passes i18n down to react-i18next\n .init({\n resources: {\n 'zh-CN': {\n translation: zhCN,\n },\n 'en-US': {\n translation: enUS,\n },\n },\n lng: 'zh-CN',\n fallbackLng: 'zh-CN',\n interpolation: {\n escapeValue: false, // not needed for React as it escapes by default\n },\n })\n\nexport default i18n\n"],"names":[],"mappings":";;;;;AAMA,KACG,IAAI,gBAAgB,EACpB,KAAK;AAAA,EACJ,WAAW;AAAA,IACT,SAAS;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,IAEf,SAAS;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,EACf;AAAA,EAEF,KAAK;AAAA,EACL,aAAa;AAAA,EACb,eAAe;AAAA,IACb,aAAa;AAAA;AAAA,EAAA;AAEjB,CAAC;"}
|
|
@@ -92,6 +92,8 @@ declare const _default: {
|
|
|
92
92
|
groupFieldConfig: string;
|
|
93
93
|
left: string;
|
|
94
94
|
right: string;
|
|
95
|
+
pieOther: string;
|
|
96
|
+
pieOtherItems: string;
|
|
95
97
|
};
|
|
96
98
|
calendar: {
|
|
97
99
|
t1: string;
|
|
@@ -188,5 +190,10 @@ declare const _default: {
|
|
|
188
190
|
globalfilter: string;
|
|
189
191
|
setFilterCondition: string;
|
|
190
192
|
selectGroupField: string;
|
|
193
|
+
autoArrange: string;
|
|
194
|
+
compactLayout: string;
|
|
195
|
+
compactLayoutTip: string;
|
|
196
|
+
resetLayout: string;
|
|
197
|
+
resetLayoutTip: string;
|
|
191
198
|
};
|
|
192
199
|
export default _default;
|
|
@@ -44,7 +44,12 @@ const common = {
|
|
|
44
44
|
filter: "筛选",
|
|
45
45
|
globalfilter: "全局筛选",
|
|
46
46
|
setFilterCondition: "设置筛选条件",
|
|
47
|
-
selectGroupField: "选择分组字段"
|
|
47
|
+
selectGroupField: "选择分组字段",
|
|
48
|
+
autoArrange: "一键整理",
|
|
49
|
+
compactLayout: "整理布局",
|
|
50
|
+
compactLayoutTip: "消除空隙,紧凑排列,保留当前大小",
|
|
51
|
+
resetLayout: "重置布局",
|
|
52
|
+
resetLayoutTip: "按类型分组排列,恢复默认大小"
|
|
48
53
|
};
|
|
49
54
|
const pb = {
|
|
50
55
|
text: "文本",
|
|
@@ -114,7 +119,9 @@ const chart = {
|
|
|
114
119
|
t43: "按年聚合",
|
|
115
120
|
groupFieldConfig: "分组字段配置",
|
|
116
121
|
left: "左",
|
|
117
|
-
right: "右"
|
|
122
|
+
right: "右",
|
|
123
|
+
pieOther: "其他",
|
|
124
|
+
pieOtherItems: "其他 {{count}} 项"
|
|
118
125
|
};
|
|
119
126
|
const calendar = {
|
|
120
127
|
t1: "视图配置",
|