ze-react-component-library
Version:
ZeroETP React Component Library
309 lines (257 loc) • 11.3 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
var _react = _interopRequireWildcard(require("react"));
var _reactSizeme = require("react-sizeme");
var _underscore = _interopRequireDefault(require("underscore"));
var _reactGridLayout = _interopRequireDefault(require("react-grid-layout"));
var _ZECard = _interopRequireDefault(require("../ZECard"));
require("./ZEDashboard.less");
var _nanoid = require("nanoid");
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
function _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== "function") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }
function _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== "object" && typeof obj !== "function") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== "default" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }
function _typeof(obj) { "@babel/helpers - typeof"; if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
var __assign = void 0 && (void 0).__assign || function () {
__assign = Object.assign || function (t) {
for (var s, i = 1, n = arguments.length; i < n; i++) {
s = arguments[i];
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
}
}
return t;
};
return __assign.apply(this, arguments);
};
var useMobileDetect = require("use-mobile-detect-hook");
var ROW_HEIGHT = 60;
var DEFAULT_HEIGHT = 6;
var getItemDefaultHeight = function getItemDefaultHeight(logicform) {
if (!logicform) return null;
if (logicform.entity_id) {
return 10;
}
if (!logicform.groupby && logicform.preds && logicform.preds.every(function (p) {
return _typeof(p) === "object" && p.operator;
})) {
return 5;
}
};
var ZEDashboard = function ZEDashboard(_a) {
var _b;
var _data = _a.data,
_c = _a.className,
className = _c === void 0 ? "" : _c,
_d = _a.editable,
editable = _d === void 0 ? false : _d,
_e = _a.cols,
cols = _e === void 0 ? 12 : _e,
_f = _a.rowHeight,
rowHeight = _f === void 0 ? ROW_HEIGHT : _f,
_g = _a.defaultH,
defaultH = _g === void 0 ? DEFAULT_HEIGHT : _g,
_h = _a.useDefaultHeightFromRepresentation,
useDefaultHeightFromRepresentation = _h === void 0 ? false : _h,
_j = _a.margin,
margin = _j === void 0 ? [24, 24] : _j,
_k = _a.containerPadding,
containerPadding = _k === void 0 ? [0, 0] : _k,
_l = _a.resizeHandles,
resizeHandles = _l === void 0 ? ["se", "nw", "s", "n", "e", "w", "sw", "ne"] : _l,
resizeHandle = _a.resizeHandle,
onDataChange = _a.onDataChange,
width = _a.width,
dashboardRef = _a.dashboardRef,
style = _a.style,
cardsOnly = _a.cardsOnly;
var isMobile = (_b = useMobileDetect()) === null || _b === void 0 ? void 0 : _b.isMobile();
var cardsStateRef = (0, _react.useRef)({});
var _m = (0, _react.useState)({}),
defaultHeightForID = _m[0],
setDefaultHeightForID = _m[1];
var data = (0, _react.useMemo)(function () {
// 去重, 重复id会报错
// 不能每次生成新id,不然会造成重复刷新
var arr = [];
var idMap = {};
_data.forEach(function (d) {
if (d.id in idMap) {
d.id = (0, _nanoid.nanoid)();
arr.push(d);
} else {
arr.push(d);
}
idMap[d.id] = d.id;
});
return arr;
}, [_data]);
var layout = data.map(function (d) {
var _a;
return __assign(__assign({
x: 0,
y: 0,
w: 12,
h: ((_a = d.layout) === null || _a === void 0 ? void 0 : _a.defaultH) || getItemDefaultHeight(d.cardProps.logicform) || defaultH,
minH: defaultH / 2,
minW: 2
}, d.layout), {
i: d.id
});
});
var onLayoutChange = function onLayoutChange(lay) {
var newData = data.map(function (d) {
var _a;
var l = lay.find(function (f) {
return f.i === d.id;
});
if (l) {
if (defaultHeightForID[l.i] && defaultHeightForID[l.i].h !== l.h && !defaultHeightForID[l.i].edited) {
setDefaultHeightForID(__assign(__assign({}, defaultHeightForID), (_a = {}, _a[l.i] = {
h: defaultHeightForID[l.i].h,
edited: true
}, _a)));
}
return __assign(__assign({}, d), {
layout: l
});
}
return d;
});
onDataChange === null || onDataChange === void 0 ? void 0 : onDataChange(newData);
};
var onItemDelete = function onItemDelete(id) {
onDataChange === null || onDataChange === void 0 ? void 0 : onDataChange(data.filter(function (d) {
return d.id !== id;
}));
};
(0, _react.useEffect)(function () {
if (dashboardRef) {
dashboardRef.current.setDashboardItem = function (id, params) {
cardsStateRef.current[id] = __assign(__assign({}, cardsStateRef.current[id]), params);
};
dashboardRef.current.getDashboardState = function (_data) {
var cardsState = cardsStateRef.current;
return _data.map(function (d) {
var ret = {
id: d.id,
layout: _underscore.default.pick(d.layout, ["i", "w", "h", "x", "y"]),
cardProps: _underscore.default.pick(__assign(__assign({}, d.cardProps), cardsState[d.id]), ["title", "question", "logicform", "representation", "sheetProps", "chartProps", "useLLM", "promptTemplate", "echartsSetting"])
};
if (ret.cardProps.sheetProps) {
delete ret.cardProps.sheetProps.data;
if (ret.cardProps.sheetProps.s2DataConfig) {
delete ret.cardProps.sheetProps.s2DataConfig.data;
delete ret.cardProps.sheetProps.s2DataConfig.meta;
}
}
return ret;
});
};
}
}, []);
if (cardsOnly) {
return /*#__PURE__*/_react.default.createElement("div", {
className: "ze-dashboard-cards-only",
style: style
}, data.map(function (item, i) {
return /*#__PURE__*/_react.default.createElement("div", {
style: {
marginTop: 20
},
key: item.id
}, /*#__PURE__*/_react.default.createElement(_ZECard.default, __assign({
llmProps: {
showSearch: true
}
}, item.cardProps, {
onChange: function onChange(params) {
cardsStateRef.current[item.id] = __assign(__assign({}, cardsStateRef.current[item.id]), params);
}
})));
}));
}
return /*#__PURE__*/_react.default.createElement("div", {
className: ["ze-dashboard", className, editable ? "active" : ""].join(" "),
style: style
}, width !== undefined && /*#__PURE__*/_react.default.createElement(_reactGridLayout.default, {
width: width,
rowHeight: rowHeight,
layout: layout.map(function (l) {
return __assign(__assign({}, l), {
w: isMobile ? cols : l.w,
h: defaultHeightForID[l.i] && !defaultHeightForID[l.i].edited ? defaultHeightForID[l.i].h : l.h
});
}),
isDraggable: editable,
isResizable: editable,
isBounded: true,
cols: cols,
margin: margin,
containerPadding: containerPadding,
resizeHandles: resizeHandles,
resizeHandle: resizeHandle,
draggableHandle: ".ze-dashboard-draggable-handler",
onLayoutChange: onLayoutChange
}, data.map(function (d) {
var _a, _b, _c;
return /*#__PURE__*/_react.default.createElement("div", {
key: d.id,
className: "ze-dashboard-item"
}, /*#__PURE__*/_react.default.createElement(_ZECard.default, __assign({
llmMaxRows: 6
}, d.cardProps, {
id: d.id,
titleRender: function titleRender(t) {
return /*#__PURE__*/_react.default.createElement("div", {
className: editable ? "ze-dashboard-draggable-handler" : ""
}, t);
},
tableProps: __assign({
height: "auto"
}, (_a = d.cardProps) === null || _a === void 0 ? void 0 : _a.tableProps),
sheetProps: __assign({
height: "100%"
}, (_b = d.cardProps) === null || _b === void 0 ? void 0 : _b.sheetProps),
onChange: function onChange(params) {
var _a;
var _b, _c, _d, _e, _f, _g;
cardsStateRef.current[d.id] = __assign(__assign({}, cardsStateRef.current[d.id]), params);
if (useDefaultHeightFromRepresentation) {
if (((_c = (_b = params === null || params === void 0 ? void 0 : params.sheetProps) === null || _b === void 0 ? void 0 : _b.s2DataConfig) === null || _c === void 0 ? void 0 : _c.data) && ((_g = (_f = (_e = (_d = params === null || params === void 0 ? void 0 : params.sheetProps) === null || _d === void 0 ? void 0 : _d.s2DataConfig) === null || _e === void 0 ? void 0 : _e.fields) === null || _f === void 0 ? void 0 : _f.rows) === null || _g === void 0 ? void 0 : _g.length) > 1 // 多维数组
) {
var rowCount = params.sheetProps.s2DataConfig.data.length;
var edited = false;
if (defaultHeightForID[d.id]) {
edited = defaultHeightForID[d.id].edited;
}
setDefaultHeightForID(__assign(__assign({}, defaultHeightForID), (_a = {}, _a[d.id] = {
h: Math.min(Math.ceil((180 + (rowCount + 1) * 30 + 24) / 84), 10),
edited: edited
}, _a)));
}
}
},
close: editable || ((_c = d.cardProps) === null || _c === void 0 ? void 0 : _c.close) ? function () {
var _a;
if ((_a = d.cardProps) === null || _a === void 0 ? void 0 : _a.close) {
// close本身不需要处理删除操作
d.cardProps.close();
}
onItemDelete(d.id);
} : undefined
})));
})));
};
var ZEDashboardWrapper = function ZEDashboardWrapper(props) {
return /*#__PURE__*/_react.default.createElement(_reactSizeme.SizeMe, null, function (_a) {
var width = _a.size.width;
return /*#__PURE__*/_react.default.createElement(ZEDashboard, __assign({}, props, {
width: props.width || width
}));
});
};
var _default = ZEDashboardWrapper;
exports.default = _default;