@platox/pivot-table 0.0.93 → 0.0.95

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/es/dashboard-workbench/components/InputWrapper/index.js.map +1 -1
  2. package/es/dashboard-workbench/components/SelectWrapper/index.js.map +1 -1
  3. package/es/dashboard-workbench/components/add-module-btn/index.js.map +1 -1
  4. package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/custome-data.js.map +1 -1
  5. package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/index.js +20 -2
  6. package/es/dashboard-workbench/components/add-module-modal/add-calendar-modal/index.js.map +1 -1
  7. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/CombinationChartOptionPicker.js +0 -1
  8. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/CombinationChartOptionPicker.js.map +1 -1
  9. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/components/GroupFieldConfigPicker.js.map +1 -1
  10. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/config.js.map +1 -1
  11. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-data.js.map +1 -1
  12. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/custome-styles.js.map +1 -1
  13. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/index.js +31 -2
  14. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/index.js.map +1 -1
  15. package/es/dashboard-workbench/components/add-module-modal/add-chart-modal/interface.js.map +1 -1
  16. package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-data.js.map +1 -1
  17. package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/custome-styles.js.map +1 -1
  18. package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/index.js +27 -2
  19. package/es/dashboard-workbench/components/add-module-modal/add-statistics-modal/index.js.map +1 -1
  20. package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js +2 -2
  21. package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/EnumSelect.js.map +1 -1
  22. package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/config.js.map +1 -1
  23. package/es/dashboard-workbench/components/add-module-modal/components/condition-modal/index.js.map +1 -1
  24. package/es/dashboard-workbench/components/add-module-modal/components/select-color/index.js.map +1 -1
  25. package/es/dashboard-workbench/components/global-filter-condition/ConditionRowItem.js.map +1 -1
  26. package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js +1 -1
  27. package/es/dashboard-workbench/components/global-filter-condition/ConditionSymbolAndValuePicker.js.map +1 -1
  28. package/es/dashboard-workbench/components/global-filter-condition/FieldPicker.js.map +1 -1
  29. package/es/dashboard-workbench/components/global-filter-condition/index.js +1 -2
  30. package/es/dashboard-workbench/components/global-filter-condition/index.js.map +1 -1
  31. package/es/dashboard-workbench/components/global-filter-condition/useContext.js.map +1 -1
  32. package/es/dashboard-workbench/components/global-filter-condition/util.js.map +1 -1
  33. package/es/dashboard-workbench/components/modal-editor-header/index.js.map +1 -1
  34. package/es/dashboard-workbench/components/modal-editor-header/index.module.less.js +3 -3
  35. package/es/dashboard-workbench/components/module-content/calendar-module/index.js.map +1 -1
  36. package/es/dashboard-workbench/components/module-content/calendar-module/locales/zh.js.map +1 -1
  37. package/es/dashboard-workbench/components/module-content/chart-module/Empty.js.map +1 -1
  38. package/es/dashboard-workbench/components/module-content/chart-module/base-chart/index.js +27 -1
  39. package/es/dashboard-workbench/components/module-content/chart-module/base-chart/index.js.map +1 -1
  40. package/es/dashboard-workbench/components/module-content/chart-module/index.js +90 -39
  41. package/es/dashboard-workbench/components/module-content/chart-module/index.js.map +1 -1
  42. package/es/dashboard-workbench/components/module-content/chart-module/utils.d.ts +1 -1
  43. package/es/dashboard-workbench/components/module-content/chart-module/utils.js +153 -35
  44. package/es/dashboard-workbench/components/module-content/chart-module/utils.js.map +1 -1
  45. package/es/dashboard-workbench/components/module-content/index.js.map +1 -1
  46. package/es/dashboard-workbench/components/module-content/statistics-module/index.js.map +1 -1
  47. package/es/dashboard-workbench/components/module-content/statistics-module/utils.js.map +1 -1
  48. package/es/dashboard-workbench/components/module-content/text-module/editor/index.js +1 -1
  49. package/es/dashboard-workbench/components/module-content/text-module/editor/index.js.map +1 -1
  50. package/es/dashboard-workbench/components/module-content/text-module/editor/useDebounce.js.map +1 -1
  51. package/es/dashboard-workbench/components/module-content/text-module/index.js.map +1 -1
  52. package/es/dashboard-workbench/components/module-content/utils.js.map +1 -1
  53. package/es/dashboard-workbench/components/module-header/index.js.map +1 -1
  54. package/es/dashboard-workbench/context.js.map +1 -1
  55. package/es/dashboard-workbench/icon/icon-Filter.js.map +1 -1
  56. package/es/dashboard-workbench/icon/icon-bar-percentage.js.map +1 -1
  57. package/es/dashboard-workbench/icon/icon-bar-pile.js.map +1 -1
  58. package/es/dashboard-workbench/icon/icon-bar.js.map +1 -1
  59. package/es/dashboard-workbench/icon/icon-calendar.js.map +1 -1
  60. package/es/dashboard-workbench/icon/icon-chart-combination.js.map +1 -1
  61. package/es/dashboard-workbench/icon/icon-drag.js.map +1 -1
  62. package/es/dashboard-workbench/icon/icon-editor.js.map +1 -1
  63. package/es/dashboard-workbench/icon/icon-empty.js.map +1 -1
  64. package/es/dashboard-workbench/icon/icon-line-smooth.js.map +1 -1
  65. package/es/dashboard-workbench/icon/icon-line.js.map +1 -1
  66. package/es/dashboard-workbench/icon/icon-move.js.map +1 -1
  67. package/es/dashboard-workbench/icon/icon-pie-circular.js.map +1 -1
  68. package/es/dashboard-workbench/icon/icon-pie.js.map +1 -1
  69. package/es/dashboard-workbench/icon/icon-statistics.js.map +1 -1
  70. package/es/dashboard-workbench/icon/icon-strip-bar-percentage.js.map +1 -1
  71. package/es/dashboard-workbench/icon/icon-strip-bar-pile.js.map +1 -1
  72. package/es/dashboard-workbench/icon/icon-strip-bar.js.map +1 -1
  73. package/es/dashboard-workbench/index.js +215 -43
  74. package/es/dashboard-workbench/index.js.map +1 -1
  75. package/es/dashboard-workbench/lang/en-US.d.ts +7 -0
  76. package/es/dashboard-workbench/lang/en-US.js +9 -2
  77. package/es/dashboard-workbench/lang/en-US.js.map +1 -1
  78. package/es/dashboard-workbench/lang/index.js.map +1 -1
  79. package/es/dashboard-workbench/lang/zh-CN.d.ts +7 -0
  80. package/es/dashboard-workbench/lang/zh-CN.js +9 -2
  81. package/es/dashboard-workbench/lang/zh-CN.js.map +1 -1
  82. package/es/dashboard-workbench/utils/index.js +2 -2
  83. package/es/dashboard-workbench/utils/index.js.map +1 -1
  84. package/es/style.css +1 -1
  85. package/package.json +2 -2
  86. package/umd/pivot-table.umd.cjs +49 -47
  87. 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 { 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 [modules, setModules] = useState([]);
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 === "calendar" ? 5 : 4;
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: 0,
53
- y: 0,
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,107 @@ 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 groups = /* @__PURE__ */ new Map();
215
+ for (const m of modules) {
216
+ const order = getOrder(m.type);
217
+ if (!groups.has(order)) groups.set(order, []);
218
+ groups.get(order).push(m);
219
+ }
220
+ const sortedKeys = [...groups.keys()].sort((a, b) => a - b);
221
+ const allPositions = /* @__PURE__ */ new Map();
222
+ let currentY = 0;
223
+ for (const key of sortedKeys) {
224
+ const group = groups.get(key);
225
+ const items = group.map((m) => {
226
+ const { w, h } = getDefaultSize(m.type || "");
227
+ return { id: m.id, w, h };
228
+ });
229
+ const { positions, height } = binPack(items, currentY);
230
+ for (const [id, pos] of positions) {
231
+ allPositions.set(id, pos);
232
+ }
233
+ currentY += height;
234
+ }
235
+ const arranged = modules.map((m) => {
236
+ const { w, h } = getDefaultSize(m.type || "");
237
+ const pos = allPositions.get(m.id);
238
+ return { ...m, x: (pos == null ? void 0 : pos.x) ?? 0, y: (pos == null ? void 0 : pos.y) ?? 0, w, h };
239
+ });
240
+ await updateModules(arranged);
241
+ setGridKey((k) => k + 1);
242
+ } finally {
243
+ setIsArranging(false);
244
+ }
245
+ };
106
246
  const deleteModule = async (id) => {
107
247
  if (modules == null ? void 0 : modules.length) {
108
248
  setModules(modules.filter((m) => m.id !== id));
@@ -112,6 +252,13 @@ const DashboardWorkbench = ({
112
252
  const margins = [10, 10];
113
253
  const [rowWidth, setRowWidth] = useState(0);
114
254
  const [, setCurrentCols] = useState(cols.lg);
255
+ const lastRowModuleIds = useMemo(() => {
256
+ var _a;
257
+ 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 }))) || [];
258
+ if (!layout.length) return /* @__PURE__ */ new Set();
259
+ const maxBottom = layout.reduce((max, m) => Math.max(max, (m.y || 0) + (m.h || 2)), 0);
260
+ return new Set(layout.filter((m) => (m.y || 0) + (m.h || 2) >= maxBottom).map((m) => m.i));
261
+ }, [modules]);
115
262
  const [isDragOrResize, setIsDragOrResize] = useState(false);
116
263
  const [isDragOrResizeEnd, setIsDragOrResizeEnd] = useState(false);
117
264
  const onBreakpointChange = (_breakpoint, cols2) => {
@@ -196,8 +343,13 @@ const DashboardWorkbench = ({
196
343
  const ref = useRef(null);
197
344
  const scroll = useScroll(ref);
198
345
  const isShadowShow = ((scroll == null ? void 0 : scroll.top) ?? 0) > 0;
346
+ useEffect(() => {
347
+ if (ref.current) {
348
+ ref.current.scrollTop = 0;
349
+ }
350
+ }, []);
199
351
  return /* @__PURE__ */ jsxs("div", { className: "pivot-table", children: [
200
- /* @__PURE__ */ jsx(
352
+ /* @__PURE__ */ jsxs(
201
353
  "div",
202
354
  {
203
355
  className: clsx(
@@ -205,35 +357,50 @@ const DashboardWorkbench = ({
205
357
  isShadowShow && "bitable-toolbar--shadow"
206
358
  // isShadowShow &&
207
359
  ),
208
- children: /* @__PURE__ */ jsxs("div", { className: "bitable-block-dashboard-toolbar--left", children: [
209
- renderToolbarLeft == null ? void 0 : renderToolbarLeft(),
210
- !readOnly && /* @__PURE__ */ jsxs(Fragment, { children: [
211
- /* @__PURE__ */ jsx(
212
- AddModuleBtn,
213
- {
214
- onOk: (val) => {
215
- handleOpenCreateModal(val);
360
+ children: [
361
+ /* @__PURE__ */ jsxs("div", { className: "bitable-block-dashboard-toolbar--left", children: [
362
+ renderToolbarLeft == null ? void 0 : renderToolbarLeft(),
363
+ !readOnly && /* @__PURE__ */ jsxs(Fragment, { children: [
364
+ /* @__PURE__ */ jsx(
365
+ AddModuleBtn,
366
+ {
367
+ onOk: (val) => {
368
+ handleOpenCreateModal(val);
369
+ }
216
370
  }
217
- }
218
- ),
219
- /* @__PURE__ */ jsx(
220
- "div",
221
- {
222
- style: {
223
- width: "1px",
224
- height: "1rem",
225
- backgroundColor: "rgba(217, 217, 217, 1)",
226
- marginLeft: "12px",
227
- marginRight: "4px"
371
+ ),
372
+ /* @__PURE__ */ jsx(
373
+ "div",
374
+ {
375
+ style: {
376
+ width: "1px",
377
+ height: "1rem",
378
+ backgroundColor: "rgba(217, 217, 217, 1)",
379
+ marginLeft: "12px",
380
+ marginRight: "4px"
381
+ }
228
382
  }
229
- }
230
- ),
231
- /* @__PURE__ */ jsx(GlobalFilterCondition, {})
232
- ] })
233
- ] })
383
+ ),
384
+ /* @__PURE__ */ jsx(GlobalFilterCondition, {})
385
+ ] })
386
+ ] }),
387
+ !readOnly && /* @__PURE__ */ jsx("div", { style: { display: "flex", alignItems: "center", marginLeft: "auto" }, children: /* @__PURE__ */ jsx(Dropdown, { menu: {
388
+ items: [
389
+ { key: "compact", label: /* @__PURE__ */ jsx(Tooltip, { title: t("compactLayoutTip"), placement: "left", children: t("compactLayout") }) },
390
+ { key: "reset", label: /* @__PURE__ */ jsx(Tooltip, { title: t("resetLayoutTip"), placement: "left", children: t("resetLayout") }) }
391
+ ],
392
+ onClick: ({ key }) => key === "compact" ? compactArrange() : resetArrange()
393
+ }, children: /* @__PURE__ */ jsx(Button, { type: "text", icon: /* @__PURE__ */ jsx(AppstoreOutlined, {}) }) }) })
394
+ ]
234
395
  }
235
396
  ),
236
- /* @__PURE__ */ jsx("div", { className: "bitable-block-dashboard__mount", ref, children: /* @__PURE__ */ jsx("div", { className: "dashboard-container", children: /* @__PURE__ */ jsx(
397
+ (modules == null ? void 0 : modules.length) === 0 && /* @__PURE__ */ jsx("div", { style: {
398
+ display: "flex",
399
+ justifyContent: "center",
400
+ alignItems: "center",
401
+ "height": "100%"
402
+ }, children: /* @__PURE__ */ jsx(Empty$1, { image: Empty$1.PRESENTED_IMAGE_SIMPLE }) }),
403
+ /* @__PURE__ */ jsx(Spin, { spinning: isArranging, children: /* @__PURE__ */ jsx("div", { className: "bitable-block-dashboard__mount", ref, children: /* @__PURE__ */ jsx("div", { className: "dashboard-container", children: /* @__PURE__ */ jsx(
237
404
  "div",
238
405
  {
239
406
  className: `dashboard-content-container ${isDragOrResize ? "isDragOrResize" : ""} ${isDragOrResizeEnd ? "isDragOrResizeEnd" : ""}`,
@@ -251,6 +418,9 @@ const DashboardWorkbench = ({
251
418
  rowHeight,
252
419
  measureBeforeMount: false,
253
420
  draggableHandle: ".isCanDrag",
421
+ onLayoutChange: (layout) => {
422
+ layoutRef.current = layout;
423
+ },
254
424
  onWidthChange: (containerWidth, _margin, cols2) => {
255
425
  setRowWidth(containerWidth / cols2 - 1);
256
426
  },
@@ -287,7 +457,8 @@ const DashboardWorkbench = ({
287
457
  w: module.w || 2,
288
458
  h: module.h || 2,
289
459
  minW: 2,
290
- minH: 2
460
+ minH: 2,
461
+ ...lastRowModuleIds.has(module.id) ? { resizeHandles: ["ne"] } : {}
291
462
  },
292
463
  children: [
293
464
  /* @__PURE__ */ jsx(
@@ -377,10 +548,11 @@ const DashboardWorkbench = ({
377
548
  },
378
549
  module.id
379
550
  ))
380
- }
551
+ },
552
+ gridKey
381
553
  )
382
554
  }
383
- ) }) }),
555
+ ) }) }) }),
384
556
  /* @__PURE__ */ jsx(
385
557
  AddStatisticsModal,
386
558
  {
@@ -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 } 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 <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","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'\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 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 // 按类型分组\n const groups = new Map<number, ModuleData[]>()\n for (const m of modules) {\n const order = getOrder(m.type)\n if (!groups.has(order)) groups.set(order, [])\n groups.get(order)!.push(m)\n }\n\n // 按优先级排序 key,逐组 binPack,垂直叠放\n const sortedKeys = [...groups.keys()].sort((a, b) => a - b)\n const allPositions = new Map<string, { x: number; y: number }>()\n let currentY = 0\n\n for (const key of sortedKeys) {\n const group = groups.get(key)!\n const items = group.map(m => {\n const { w, h } = getDefaultSize(m.type || '')\n return { id: m.id, w, h }\n })\n const { positions, height } = binPack(items, currentY)\n for (const [id, pos] of positions) {\n allPositions.set(id, pos)\n }\n currentY += height\n }\n\n const arranged = modules.map(m => {\n const { w, h } = getDefaultSize(m.type || '')\n const pos = allPositions.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 useEffect(() => {\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 <Spin spinning={isArranging}>\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 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 }}\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 </div>\n </Spin>\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":"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"}
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,IACf;AAAA,IACA,SAAS;AAAA,MACP,aAAa;AAAA,IAAA;AAAA,EAEjB;AAAA,EACA,KAAK;AAAA,EACL,aAAa;AAAA,EACb,eAAe;AAAA,IACb,aAAa;AAAA;AAAA,EAAA;AAEjB,CAAC;"}
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: "视图配置",