ze-react-component-library
Version:
ZeroETP React Component Library
1,363 lines (1,114 loc) • 44.4 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = void 0;
require("antd/lib/space/style");
var _space = _interopRequireDefault(require("antd/lib/space"));
require("antd/lib/drawer/style");
var _drawer = _interopRequireDefault(require("antd/lib/drawer"));
require("antd/lib/message/style");
var _message2 = _interopRequireDefault(require("antd/lib/message"));
require("antd/lib/button/style");
var _button = _interopRequireDefault(require("antd/lib/button"));
require("antd/lib/tooltip/style");
var _tooltip = _interopRequireDefault(require("antd/lib/tooltip"));
require("antd/lib/result/style");
var _result = _interopRequireDefault(require("antd/lib/result"));
require("antd/lib/popconfirm/style");
var _popconfirm = _interopRequireDefault(require("antd/lib/popconfirm"));
var _react = _interopRequireWildcard(require("react"));
var _underscore = _interopRequireDefault(require("underscore"));
var _proTable = _interopRequireDefault(require("@ant-design/pro-table"));
var _hooks = require("@umijs/hooks");
var _proProvider = _interopRequireDefault(require("@ant-design/pro-provider"));
var _icons = require("@ant-design/icons");
var _zeroetpApiSdk = require("zeroetp-api-sdk");
var _request = require("../../request");
var _Entity = _interopRequireDefault(require("../Entity"));
var _util = require("../../util");
var _ZESchemaForm = _interopRequireDefault(require("../../ZESchemaForm"));
require("./Table.less");
var _FilterComponents = require("../PropertyFilter/FilterComponents");
var _crossTableGen = require("../../crossTableGen");
var _transposeGen = require("./transposeGen");
var _useTableParams = require("./useTableParams");
var _TableSummary = _interopRequireDefault(require("../TableSummary"));
var _useLocale = _interopRequireDefault(require("../../hooks/useLocale"));
var _util2 = require("../../ZECard/util");
var _DragSortEditableTable = require("../DragSortEditableTable");
var _useSort = _interopRequireDefault(require("../../hooks/useSort"));
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 _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
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 __awaiter = void 0 && (void 0).__awaiter || function (thisArg, _arguments, P, generator) {
function adopt(value) {
return value instanceof P ? value : new P(function (resolve) {
resolve(value);
});
}
return new (P || (P = Promise))(function (resolve, reject) {
function fulfilled(value) {
try {
step(generator.next(value));
} catch (e) {
reject(e);
}
}
function rejected(value) {
try {
step(generator["throw"](value));
} catch (e) {
reject(e);
}
}
function step(result) {
result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected);
}
step((generator = generator.apply(thisArg, _arguments || [])).next());
});
};
var __generator = void 0 && (void 0).__generator || function (thisArg, body) {
var _ = {
label: 0,
sent: function sent() {
if (t[0] & 1) throw t[1];
return t[1];
},
trys: [],
ops: []
},
f,
y,
t,
g;
return g = {
next: verb(0),
"throw": verb(1),
"return": verb(2)
}, typeof Symbol === "function" && (g[Symbol.iterator] = function () {
return this;
}), g;
function verb(n) {
return function (v) {
return step([n, v]);
};
}
function step(op) {
if (f) throw new TypeError("Generator is already executing.");
while (_) {
try {
if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
if (y = 0, t) op = [op[0] & 2, t.value];
switch (op[0]) {
case 0:
case 1:
t = op;
break;
case 4:
_.label++;
return {
value: op[1],
done: false
};
case 5:
_.label++;
y = op[1];
op = [0];
continue;
case 7:
op = _.ops.pop();
_.trys.pop();
continue;
default:
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) {
_ = 0;
continue;
}
if (op[0] === 3 && (!t || op[1] > t[0] && op[1] < t[3])) {
_.label = op[1];
break;
}
if (op[0] === 6 && _.label < t[1]) {
_.label = t[1];
t = op;
break;
}
if (t && _.label < t[2]) {
_.label = t[2];
_.ops.push(op);
break;
}
if (t[2]) _.ops.pop();
_.trys.pop();
continue;
}
op = body.call(thisArg, _);
} catch (e) {
op = [6, e];
y = 0;
} finally {
f = t = 0;
}
}
if (op[0] & 5) throw op[1];
return {
value: op[0] ? op[1] : void 0,
done: true
};
}
};
var __rest = void 0 && (void 0).__rest || function (s, e) {
var t = {};
for (var p in s) {
if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0) t[p] = s[p];
}
if (s != null && typeof Object.getOwnPropertySymbols === "function") for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i])) t[p[i]] = s[p[i]];
}
return t;
};
var __spreadArray = void 0 && (void 0).__spreadArray || function (to, from) {
for (var i = 0, il = from.length, j = to.length; i < il; i++, j++) {
to[j] = from[i];
}
return to;
};
var useMobileDetect = require("use-mobile-detect-hook");
var mapColumnItem = function mapColumnItem(logicform, predItem, customColumn, properties, config) {
var _a, _b;
var property = properties.find(function (p) {
return p.name === predItem;
}); // 前端的predChain,要获取正确的property
// 后端不会出现有.的情况。
if (predItem.indexOf(".") > 0) {
var chain = predItem.split(".");
var currentSchema = {
properties: properties
};
var _loop_1 = function _loop_1(chainItem) {
property = currentSchema.properties.find(function (p) {
return p.name === chainItem;
});
if (property) {
currentSchema = property.schema;
if (!currentSchema) return "break";
}
};
for (var _i = 0, chain_1 = chain; _i < chain_1.length; _i++) {
var chainItem = chain_1[_i];
var state_1 = _loop_1(chainItem);
if (state_1 === "break") break;
}
if (property) {
// 记得要改个名字
property = __assign(__assign({}, property), {
name: predItem
});
}
}
if (!property) {
// fake property
property = {
name: predItem,
type: "string",
primal_type: "string",
constraints: {},
is_fake: true
};
}
var _c = (0, _util.getColumnPublicProps)(property),
valueEnum = _c.valueEnum,
valueType = _c.valueType,
fieldProps = _c.fieldProps;
var additionalProps = {}; // Filters
if (!property.is_fake && config.showFilter) {
var filterProps_1 = (0, _FilterComponents.getColumnFilterProps)(property, customColumn, valueEnum);
if (fieldProps) additionalProps = __assign(__assign({}, additionalProps), {
filterIcon: filterProps_1.filterIcon,
filterDropdown: filterProps_1.filterDropdown ? function (args) {
return filterProps_1.filterDropdown(__assign(__assign({}, args), {
t: config.t
}));
} : undefined
});
} // Alignment
if (property.primal_type === "number" || property.primal_type === "boolean") {
additionalProps.align = "right";
} // Sorter
// 去掉数字的sorter,改成filter
// if (showSorter && property.primal_type === "number") {
// additionalProps.sorter = true;
// }
var sortOrder = (_a = logicform.sort) === null || _a === void 0 ? void 0 : _a[predItem];
switch (sortOrder) {
case 1:
sortOrder = "ascend";
break;
case -1:
sortOrder = "descend";
break;
default:
break;
}
var filters = {};
Object.keys((logicform === null || logicform === void 0 ? void 0 : logicform.query) || {}).forEach(function (k) {
var _a;
var p = properties.find(function (d) {
return d.name === k;
});
var nameProp = p && p.type === "object" ? (0, _zeroetpApiSdk.getNameProperty)(p.schema) : undefined;
filters[k] = (0, _util.logicformValueToColumnFilter)((_a = logicform === null || logicform === void 0 ? void 0 : logicform.query) === null || _a === void 0 ? void 0 : _a[k], p, nameProp);
});
var filterKey = predItem;
var filteredValue = filters[filterKey];
filteredValue = filteredValue ? filteredValue instanceof Array ? filteredValue : [filteredValue] : [];
var width = (customColumn === null || customColumn === void 0 ? void 0 : customColumn.width) || config.defaultColWidth;
var defaultColumnType = __assign(__assign({
title: property.name,
filteredValue: filteredValue,
filtered: (filteredValue === null || filteredValue === void 0 ? void 0 : filteredValue.length) > 0,
sortOrder: sortOrder,
dataIndex: property.name.split("."),
ellipsis: ((_b = property.ui) === null || _b === void 0 ? void 0 : _b.ellipsis) || property.primal_type === "string" && !property.constraints.enum,
// 前端默认的ellipsis逻辑
valueType: valueType,
filters: valueEnum !== undefined && config.showFilter,
onFilter: false,
valueEnum: valueEnum,
fieldProps: fieldProps
}, additionalProps), {
width: width
}); // unit
if (config.showUnit && property.unit) {
var unit = property.unit;
var formatter = (0, _util.getFormatter)(property);
if (formatter) {
unit = "" + formatter.prefix + unit + formatter.postfix;
}
defaultColumnType.title = defaultColumnType.title + "(" + unit + ")";
} // 以下是用来给createMode=list用的
// formItemProps
if (!defaultColumnType.formItemProps) defaultColumnType.formItemProps = {};
if (!defaultColumnType.formItemProps.rules) defaultColumnType.formItemProps.rules = [];
if (property.constraints.required && !property.udf) {
// 这个rules会在EditableProTable里面起作用
defaultColumnType.formItemProps.rules.push({
required: true,
message: "此项为必填项"
});
}
if (property.name.indexOf(".") > 0 || property.udf) {
// 在creation模式里面,这样的情况不可能需要edit
defaultColumnType.editable = false;
}
var formattedColumn = __assign(__assign({}, defaultColumnType), customColumn || {}); // object类型会走自定义的render,里面有ellipsis逻辑,需要把Column的ellipsis关掉,否则会嵌套两层受到影响
if (property.primal_type === "object") {
formattedColumn.ellipsis = false;
var colFieldProps = formattedColumn.fieldProps || {}; // 给object自定义的render提供width
formattedColumn.fieldProps = __assign(__assign({}, colFieldProps), {
width: width
});
}
return formattedColumn;
};
var renderDeleteBtn = function renderDeleteBtn(onConfirm) {
return /*#__PURE__*/_react.default.createElement(_popconfirm.default, {
title: "\u786E\u5B9A\u5220\u9664\uFF1F\u5220\u9664\u540E\u5C06\u4E0D\u53EF\u6062\u590D\u3002",
key: "delete",
onConfirm: onConfirm,
okText: "\u786E\u5B9A",
cancelText: "\u53D6\u6D88"
}, /*#__PURE__*/_react.default.createElement("a", {
datatype: "danger"
}, "\u5220\u9664"));
};
var Table = function Table(_a) {
var _b;
var _logicform = _a.logicform,
// 默认为400,auto时自适应,在dashboard里时即为auto
_c = _a.height,
// 默认为400,auto时自适应,在dashboard里时即为auto
defaultHeight = _c === void 0 ? 400 : _c,
setLogicform = _a.setLogicform,
_d = _a.options,
_options = _d === void 0 ? false : _d,
preds = _a.preds,
search = _a.search,
size = _a.size,
_e = _a.rowKey,
rowKey = _e === void 0 ? "_id" : _e,
_f = _a.customColumns,
customColumns = _f === void 0 ? {} : _f,
className = _a.className,
scroll = _a.scroll,
exportToExcel = _a.exportToExcel,
xlsx = _a.xlsx,
_g = _a.refLFs,
refLFs = _g === void 0 ? [] : _g,
creationMode = _a.creationMode,
creationColumns = _a.creationColumns,
_h = _a.canRemoveData,
canRemoveData = _h === void 0 ? false : _h,
_j = _a.canEditData,
canEditData = _j === void 0 ? false : _j,
_k = _a.defaultColWidth,
defaultColWidthOfProps = _k === void 0 ? 200 : _k,
horizontalColumns = _a.horizontalColumns,
transpose = _a.transpose,
_l = _a.showUnit,
showUnit = _l === void 0 ? true : _l,
_m = _a.showSorter,
showSorter = _m === void 0 ? true : _m,
_o = _a.showFilter,
showFilter = _o === void 0 ? true : _o,
_p = _a.showSummary,
showSummary = _p === void 0 ? true : _p,
_expandFirstCol = _a.expandFirstCol,
expandFirstColNextLevel = _a.expandFirstColNextLevel,
ret = _a.result,
reload = _a.reload,
_showViewBtn = _a.showViewBtn,
formatExpandResult = _a.formatExpandResult,
entityTooltipCardProps = _a.entityTooltipCardProps,
_q = _a.additionalToolBarRenders,
additionalToolBarRenders = _q === void 0 ? [] : _q,
_r = _a.additionalColumns,
additionalColumns = _r === void 0 ? [] : _r,
isHierarchyList = _a.isHierarchyList,
simplyValue = _a.simplyValue,
initialValues = _a.initialValues,
title = _a.title,
propertyConfig = _a.propertyConfig,
dragSortable = _a.dragSortable,
restProps = __rest(_a, ["logicform", "height", "setLogicform", "options", "preds", "search", "size", "rowKey", "customColumns", "className", "scroll", "exportToExcel", "xlsx", "refLFs", "creationMode", "creationColumns", "canRemoveData", "canEditData", "defaultColWidth", "horizontalColumns", "transpose", "showUnit", "showSorter", "showFilter", "showSummary", "expandFirstCol", "expandFirstColNextLevel", "result", "reload", "showViewBtn", "formatExpandResult", "entityTooltipCardProps", "additionalToolBarRenders", "additionalColumns", "isHierarchyList", "simplyValue", "initialValues", "title", "propertyConfig", "dragSortable"]);
var expandFirstCol = _expandFirstCol || isHierarchyList;
var isMobile = (_b = useMobileDetect()) === null || _b === void 0 ? void 0 : _b.isMobile();
var _s = (0, _react.useState)(false),
expandLoading = _s[0],
setExpandLoading = _s[1];
var _t = (0, _react.useState)(false),
editable = _t[0],
setEditable = _t[1];
var _u = (0, _react.useState)([]),
editableKeys = _u[0],
setEditableKeys = _u[1];
var _v = (0, _react.useState)([]),
dataSource = _v[0],
setDataSource = _v[1];
var rootDivRef = (0, _react.useRef)();
var tableRect = (0, _hooks.useSize)(rootDivRef.current)[0];
var formRef = (0, _react.useRef)();
var height = defaultHeight === "auto" ? tableRect.height : defaultHeight;
var t = (0, _useLocale.default)().t;
if (ret === null || ret === void 0 ? void 0 : ret.error) return /*#__PURE__*/_react.default.createElement(_result.default, {
status: "error",
title: ret.error,
subTitle: "\u8BF7\u8054\u7CFB\u670D\u52A1\u63D0\u4F9B\u5546\u83B7\u53D6\u6280\u672F\u652F\u6301"
});
var _w = (0, _useTableParams.useTableParams)({
logicform: _logicform,
setLogicform: setLogicform,
data: ret
}),
tableParams = _w.tableParams,
onTableChange = _w.onTableChange;
var paginationParams = (tableParams || [])[0];
var logicform = JSON.parse(JSON.stringify(_logicform));
if (ret === null || ret === void 0 ? void 0 : ret.logicform) {
logicform.sort = ret.logicform.sort;
logicform.limit = ret.logicform.limit;
} // 关闭滚动时,不应该给column设置默认宽度
var defaultColWidth = scroll === null && !isMobile ? undefined : defaultColWidthOfProps;
var values = (0, _react.useContext)(_proProvider.default); // 用来自定义ValueType
var _x = (0, _react.useState)(undefined),
selectedRecord = _x[0],
setSelectedRecord = _x[1];
var _y = (0, _react.useState)(false),
isSubmitting = _y[0],
setIsSubmitting = _y[1];
var _z = (0, _react.useState)(false),
creationFormVisible = _z[0],
setCreationFormVisible = _z[1];
var _0 = (0, _react.useState)({}),
rowChildrenMap = _0[0],
setRowChildrenMap = _0[1];
var _1 = (0, _hooks.useRequest)(function () {
return Promise.all(refLFs.map(function (r) {
return (0, _request.requestLogicform)(r.logicform);
}));
}).data,
refResults = _1 === void 0 ? [] : _1;
var result = (0, _react.useMemo)(function () {
var result;
if (ret) {
result = __assign({}, ret);
if (refResults.length > 0) {
var arr_1 = __spreadArray([], ret.result);
refLFs.forEach(function (r, index) {
arr_1 = r.merge(arr_1, refResults[index].result);
});
result.result = arr_1;
}
if (transpose) {
result = (0, _transposeGen.transposeResult)(result, transpose, horizontalColumns);
} else if ((0, _crossTableGen.canUseCrossTable)(logicform)) {
result = (0, _crossTableGen.crossResult)(result, horizontalColumns);
}
}
return result;
}, [ret, JSON.stringify(refResults), transpose]);
var options = (0, _react.useMemo)(function () {
var o = typeof _options === "boolean" ? {} : _options;
var defaultOptions = __assign(__assign({
setting: false,
density: false
}, o), {
reload: o.reload ? reload : false
});
if (_options === false) {
return false;
}
return defaultOptions;
}, [_options]); // 判断要展示的properties
var predsToShow = preds;
if (!predsToShow) {
predsToShow = ((result === null || result === void 0 ? void 0 : result.columnProperties) || []). // @ts-ignore
filter(function (property) {
var _a, _b;
return !((_a = property.ui) === null || _a === void 0 ? void 0 : _a.show_in_detail_only) && !((_b = property.ui) === null || _b === void 0 ? void 0 : _b.hide);
}).map(function (property) {
return property.name;
});
}
var properties = (result === null || result === void 0 ? void 0 : result.columnProperties) || [];
var columns = properties.length > 0 ? predsToShow.map(function (predItem) {
if (_typeof(predItem) === "object" && "title" in predItem) {
return {
title: predItem.title,
children: predItem.children.map(function (pred) {
return mapColumnItem(ret.logicform, pred, customColumns[pred], properties, {
showUnit: showUnit,
showSorter: showSorter,
showFilter: showFilter,
defaultColWidth: defaultColWidth,
t: t
});
})
};
}
return mapColumnItem(ret.logicform, predItem, customColumns[predItem], properties, {
showUnit: showUnit,
showSorter: showSorter,
showFilter: showFilter,
defaultColWidth: defaultColWidth,
t: t
});
}) : [];
if (dragSortable) {
columns = __spreadArray([{
title: "排序",
dataIndex: "sort",
width: 60,
editable: false,
className: "drag-visible",
fixed: true,
render: function render() {
return /*#__PURE__*/_react.default.createElement(_DragSortEditableTable.DragHandle, null);
}
}], columns);
} // Groupby的id columns需要fixed
if (logicform.groupby && columns.length > 0) {
var groupbyCount = Array.isArray(logicform.groupby) ? logicform.groupby.length : 1;
for (var i = 0; i < groupbyCount; i++) {
columns[i].fixed = "left"; // crosstable,只要第一个就行了
if ((0, _crossTableGen.canUseCrossTable)(logicform)) {
break;
}
}
} // Pagination,仅simple query支持
var pagination = false;
if ((0, _zeroetpApiSdk.isSimpleQuery)(logicform)) {
if (logicform.limit > 0) {
pagination = {
pageSize: logicform.limit || 20,
total: result === null || result === void 0 ? void 0 : result.total
};
}
if (paginationParams && pagination) {
pagination = __assign(__assign({}, pagination), paginationParams);
}
}
if (creationMode === "list" && pagination) {
pagination.pageSize = dataSource.length;
} // total数量小于limit时,不展示分页
if (ret && typeof ret.logicform.limit === "number" && ret.total <= ret.logicform.limit) {
pagination = false;
} // Scroll
var calcWidth = function calcWidth(col) {
if (col.children) {
return col.children.reduce(function (acc, c) {
return acc + calcWidth(c);
}, 0);
}
return "width" in col ? col.width : defaultColWidth;
};
var x = columns.reduce(function (acc, c) {
return acc + calcWidth(c);
}, 0);
var IDProp = result === null || result === void 0 ? void 0 : result.columnProperties.find(function (p) {
return p.type === "ID";
});
var _toolBarRender = additionalToolBarRenders.map(function (r) {
return r(result);
}); // Export
var exportFileName = title || "数据导出";
if (exportToExcel) {
if (typeof exportToExcel === "string") {
exportFileName = exportToExcel;
}
_toolBarRender.push( /*#__PURE__*/_react.default.createElement(_tooltip.default, {
title: "\u5BFC\u51FAExcel"
}, /*#__PURE__*/_react.default.createElement(_button.default, {
type: "text",
icon: /*#__PURE__*/_react.default.createElement(_icons.DownloadOutlined, null),
onClick: function onClick() {
var _a, _b, _c, _d;
if ((0, _zeroetpApiSdk.isSimpleQuery)(result.logicform)) {
var lf = JSON.parse(JSON.stringify(result.logicform));
if (isHierarchyList && IDProp.name in lf.query && _typeof(lf.query[IDProp.name]) === "object" && lf.query[IDProp.name].$level) {
delete lf.query[IDProp.name].$level;
if (Object.keys(lf.query[IDProp.name]).length === 0) {
delete lf.query[IDProp.name];
}
}
var preds_2 = [];
for (var _i = 0, _e = result.columnProperties; _i < _e.length; _i++) {
var property = _e[_i];
preds_2.push(property.name);
} // 如果是object类型,加一个property name列
var populatedPreds = [];
for (var _f = 0, preds_1 = preds_2; _f < preds_1.length; _f++) {
var propertyName = preds_1[_f];
if (!propertyName) continue; // preds里面会有undefine的存在,因为show为false之后,order会跳跃
populatedPreds.push(propertyName);
var property = (0, _zeroetpApiSdk.findPropByName)(result.schema, propertyName);
if (property.schema && !property.isArray) {
var nameProp = (0, _zeroetpApiSdk.getNameProperty)(property.schema);
if (nameProp && nameProp.type !== "ID") {
// 如果ID和is_name为同一个,那么没必要加
populatedPreds.push(property.name + "_" + nameProp.name);
}
}
} // modality -> export
if ((_d = (_c = (_b = (_a = result.schema) === null || _a === void 0 ? void 0 : _a.modality) === null || _b === void 0 ? void 0 : _b.list) === null || _c === void 0 ? void 0 : _c.config) === null || _d === void 0 ? void 0 : _d.additionalPreds) {
populatedPreds = __spreadArray(__spreadArray([], populatedPreds), result.schema.modality.list.config.additionalPreds);
} // 使用api导出
(0, _zeroetpApiSdk.commonRequest)("/dataexports", {
method: "POST",
data: __assign(__assign({}, lf), {
preds: populatedPreds,
limit: -1
})
}).then(function () {
return _message2.default.info("导出申请已提交,请在个人中心里面下载");
}).catch(function (e) {
_message2.default.error("导出申请发生错误,请稍后再试"); // console.log(e);
});
} else {
rootDivRef.current && (0, _util.exportTableToExcel)(rootDivRef.current, exportFileName, xlsx);
}
}
})));
} // 编辑
if (_typeof(options) === "object" && options.editable) {
_toolBarRender.push( /*#__PURE__*/_react.default.createElement(_tooltip.default, {
key: "edit",
title: editable ? "取消编辑" : "编辑"
}, /*#__PURE__*/_react.default.createElement(_icons.EditOutlined, {
onClick: function onClick() {
var _a;
setEditable(!editable);
if (!editable) {
setEditableKeys(((_a = tableProps === null || tableProps === void 0 ? void 0 : tableProps.dataSource) === null || _a === void 0 ? void 0 : _a.map(function (m) {
return m[typeof rowKey === "string" ? rowKey : rowKey(m)];
})) || []);
} else {
setEditableKeys([]);
}
}
})));
}
if (creationMode === "form") {
_toolBarRender.push( /*#__PURE__*/_react.default.createElement(_tooltip.default, {
title: "\u6DFB\u52A0\u6570\u636E",
key: "add"
}, /*#__PURE__*/_react.default.createElement(_button.default, {
type: "text",
icon: /*#__PURE__*/_react.default.createElement(_icons.PlusOutlined, null),
onClick: function onClick() {
setSelectedRecord(undefined);
setCreationFormVisible(true);
}
})));
if (canRemoveData) {
_toolBarRender.push( /*#__PURE__*/_react.default.createElement(_tooltip.default, {
title: "\u5220\u9664\u6570\u636E",
key: "remove"
}, /*#__PURE__*/_react.default.createElement(_popconfirm.default, {
title: "\u5220\u9664\u64CD\u4F5C\u4E0D\u53EF\u64A4\u9500\u3002\u662F\u5426\u786E\u5B9A\u5220\u9664\uFF1F",
onConfirm: function onConfirm() {
return __awaiter(void 0, void 0, void 0, function () {
return __generator(this, function (_a) {
switch (_a.label) {
case 0:
return [4
/*yield*/
, (0, _request.request)((0, _zeroetpApiSdk.removeData)(logicform.schema, logicform.query))];
case 1:
_a.sent();
reload === null || reload === void 0 ? void 0 : reload();
return [2
/*return*/
];
}
});
});
}
}, /*#__PURE__*/_react.default.createElement(_button.default, {
type: "text",
icon: /*#__PURE__*/_react.default.createElement(_icons.DeleteOutlined, null)
}))));
}
}
var scrollY;
if (typeof height === "number") {
// 不同size的表头高度、分页高度不一致
var thHeight = 47;
var pgHeight = 40;
switch (size) {
case "large":
thHeight = 55;
pgHeight = 48;
break;
case "small":
thHeight = 39;
break;
default:
break;
} // 减去表头高
scrollY = height - thHeight;
if (_toolBarRender.length > 0) {
// 减去toolBar的高度
scrollY = scrollY - 32;
}
if (pagination !== false) {
// 减去分页的高度
scrollY = scrollY - pgHeight;
}
}
var onExpand = function onExpand(expanded, record) {
return __awaiter(void 0, void 0, void 0, function () {
var normedLF, theLogicForm, parentGroupByName, res, nameKeys_1, nameProp, idProp, level_1, nextLevelCanExpand_1;
var _a;
var _b, _c;
return __generator(this, function (_d) {
switch (_d.label) {
case 0:
if (!expanded || !record.children || record._id in rowChildrenMap) {
return [2
/*return*/
];
}
if (expandLoading) {
return [2
/*return*/
];
}
normedLF = JSON.parse(JSON.stringify(logicform));
(0, _zeroetpApiSdk.normaliseGroupby)(normedLF);
if (isHierarchyList) {
theLogicForm = (0, _util.getHierarchyListDrillDownLogicform)(logicform, result, record);
parentGroupByName = record === null || record === void 0 ? void 0 : record._id;
} else {
parentGroupByName = normedLF.groupby[0]._id;
if (normedLF.groupby[0].level) {
parentGroupByName = parentGroupByName + "(" + normedLF.groupby[0].level + ")";
}
theLogicForm = (0, _util2.drilldownLogicformInSDK)(logicform, result.schema, record, expandFirstColNextLevel);
}
setExpandLoading(true);
return [4
/*yield*/
, (0, _request.requestLogicform)(theLogicForm)];
case 1:
res = _d.sent();
if (res) {
if (formatExpandResult) {
formatExpandResult(res);
}
nameKeys_1 = [res.columnProperties[0].name];
if (res.columnProperties[0].schema) {
nameProp = (0, _zeroetpApiSdk.getNameProperty)(res.columnProperties[0].schema);
nameKeys_1.push(nameProp.name);
}
if ((0, _crossTableGen.canUseCrossTable)(logicform)) {
res = (0, _crossTableGen.crossResult)(res, horizontalColumns, record);
}
idProp = (0, _zeroetpApiSdk.getIDProperty)(res.schema);
if (idProp && ((_c = (_b = theLogicForm === null || theLogicForm === void 0 ? void 0 : theLogicForm.query) === null || _b === void 0 ? void 0 : _b[idProp.name]) === null || _c === void 0 ? void 0 : _c["$level"])) {
level_1 = theLogicForm.query[idProp.name]["$level"];
}
nextLevelCanExpand_1 = isHierarchyList && level_1 ? (0, _util.getHierarchyDrillDownLevel)(level_1, result) !== undefined : false;
setRowChildrenMap(__assign(__assign({}, rowChildrenMap), (_a = {}, _a[record._id] = res.result.map(function (d) {
var _a;
return __assign(__assign({}, d), (_a = {
children: nextLevelCanExpand_1 ? [] : undefined
}, _a[parentGroupByName] = _underscore.default.get(d, nameKeys_1), _a.$level = level_1, _a));
}), _a)));
}
setExpandLoading(false);
return [2
/*return*/
];
}
});
});
};
var _2 = (0, _useSort.default)({
data: dataSource,
reload: reload,
schema: result === null || result === void 0 ? void 0 : result.schema
}),
onSortEnd = _2.onSortEnd,
sort = _2.sort,
onSortStart = _2.onSortStart,
sortedData = _2.sortedData; // Creation
var deleteRecord = function deleteRecord(record) {
var newLine = ("" + (record === null || record === void 0 ? void 0 : record._id)).startsWith("@");
if (newLine) {
setDataSource(function (pre) {
return pre.filter(function (d) {
return d._id !== (record === null || record === void 0 ? void 0 : record._id);
});
});
return;
}
if (logicform.schema) {
setIsSubmitting(true);
(0, _request.request)((0, _zeroetpApiSdk.removeDataByID)(logicform.schema, record._id)).then(function () {
reload === null || reload === void 0 ? void 0 : reload();
}).finally(function () {
setIsSubmitting(false);
});
}
};
if (pagination) {
pagination.itemRender = function (page, type, ele) {
return /*#__PURE__*/_react.default.createElement("span", {
onClick: function onClick(e) {
if (page > 1000) {
_message2.default.error(t("最多支持翻1000页"));
e.preventDefault();
e.stopPropagation();
}
}
}, ele);
};
}
var tableProps = __assign(__assign({
cardProps: {
bodyStyle: {
padding: 0
}
},
loading: isSubmitting || expandLoading
}, restProps), {
columns: columns,
rowKey: rowKey,
search: search === undefined ? false : search,
tableClassName: exportFileName,
dataSource: dataSource,
size: size,
scroll: // 手机模式下默认开启scroll
scroll !== undefined && !isMobile ? __assign(__assign({}, scroll), {
y: (scroll === null || scroll === void 0 ? void 0 : scroll.y) || scrollY
}) : {
x: x,
y: scrollY
},
options: options,
pagination: pagination,
toolBarRender: function toolBarRender() {
return _toolBarRender;
},
onChange: onTableChange,
expandable: expandFirstCol ? {
onExpand: onExpand,
indentSize: 0
} : undefined,
editable: {
type: "multiple",
editableKeys: editableKeys,
onChange: function onChange(keys) {
setEditableKeys(keys);
},
onSave: function onSave(key, record) {
return __awaiter(void 0, void 0, void 0, function () {
var newLine;
return __generator(this, function (_a) {
newLine = ("" + key).startsWith("@");
setIsSubmitting(true);
if (newLine) {
// 用logicform.query里面的数据来设置默认的一些属性
// TODO: 目前只接受非chain的query
(0, _request.request)((0, _zeroetpApiSdk.createData)(logicform.schema, __assign(__assign({}, logicform.query), record))).then(function () {
reload === null || reload === void 0 ? void 0 : reload();
}).finally(function () {
setIsSubmitting(false);
});
} else {
(0, _request.request)((0, _zeroetpApiSdk.updateDataByID)(logicform.schema, "" + key, record)).then(function () {
reload === null || reload === void 0 ? void 0 : reload();
}).finally(function () {
setIsSubmitting(false);
});
}
return [2
/*return*/
];
});
});
},
actionRender: function actionRender(row, config, defaultDom) {
var id = config.recordKey;
var newLine = ("" + id).startsWith("@");
return [defaultDom.save, renderDeleteBtn(function () {
deleteRecord(row);
}), /*#__PURE__*/_react.default.createElement("a", {
key: "cancel",
onClick: function onClick() {
if (newLine) {
deleteRecord(row);
} else {
setEditableKeys(function (pre) {
return pre.filter(function (d) {
return d !== id;
});
});
}
}
}, "\u53D6\u6D88")];
}
}
});
/**
* 操作列
*/
var showViewBtn = IDProp && _showViewBtn && !(ret === null || ret === void 0 ? void 0 : ret.logicform.groupby);
var canEdit = IDProp && canEditData && (ret === null || ret === void 0 ? void 0 : ret.schema.editable) !== false;
var hasOperationColumn = showViewBtn || canEdit;
if (hasOperationColumn) {
columns.push({
title: "操作",
width: 150,
key: "_operation",
valueType: "option",
render: function render(_dom, record, _, action) {
var operationColumns = []; // 1. 查看
if (showViewBtn) {
var nameProp = (0, _zeroetpApiSdk.getNameProperty)(ret.schema);
var idProp = (0, _zeroetpApiSdk.getIDProperty)(ret.schema);
var entityProps = {
property: {
schema: ret.schema,
ref: ret.schema._id,
name: ret.schema.name,
type: "object",
primal_type: "object"
},
entityNameProperty: nameProp,
entityIDProperty: idProp,
entityTooltipCardProps: entityTooltipCardProps,
entity: record
};
operationColumns.push( /*#__PURE__*/_react.default.createElement(_Entity.default, __assign({
key: "detail"
}, entityProps), "\u67E5\u770B"));
}
if (canEdit) {
// 2. 编辑
operationColumns.push( /*#__PURE__*/_react.default.createElement("a", {
key: "edit",
onClick: function onClick(e) {
e.preventDefault();
setSelectedRecord(record);
setCreationFormVisible(true);
}
}, "\u7F16\u8F91")); // 3. 删除
operationColumns.push(renderDeleteBtn(function () {
deleteRecord(record);
}));
}
return operationColumns;
}
});
} // 对transpose的columns再处理一下,去掉搜索之类的
if (transpose) {
tableProps.columns.forEach(function (col) {
delete col.filterDropdown;
delete col.filterIcon;
delete col.sorter;
});
} // Additional Columns
tableProps.columns = __spreadArray(__spreadArray([], tableProps.columns), additionalColumns);
(0, _react.useEffect)(function () {
var list = (result === null || result === void 0 ? void 0 : result.result) || [];
if (!expandFirstCol) {
setDataSource(list);
} else {
var loopChildren_1 = function loopChildren_1(arr, index) {
return arr.map(function (d) {
var children = rowChildrenMap[d._id] || d.children;
if (children) {
return __assign(__assign({}, d), {
children: loopChildren_1(children, index + 1)
});
}
if (d._id && d._id.startsWith("__")) {
// __开头的是自己增加的统计行,例如total
return d;
}
return __assign(__assign({}, d), {
children: index === 0 ? [] : undefined
});
});
};
var newList = loopChildren_1(list, 0);
setDataSource(newList);
}
}, [result, expandFirstCol, rowChildrenMap]);
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, showSummary && /*#__PURE__*/_react.default.createElement(_TableSummary.default, {
logicform: logicform,
schema: result === null || result === void 0 ? void 0 : result.schema
}), /*#__PURE__*/_react.default.createElement("div", {
"data-testid": "ZETable",
className: ["ze-table", className, sort ? 'sorting' : ''].filter(function (f) {
return f;
}).join(" "),
ref: rootDivRef,
style: {
flex: 1,
minHeight: 0
}
}, /*#__PURE__*/_react.default.createElement(_proProvider.default.Provider, {
value: __assign(__assign({}, values), {
valueTypeMap: result ? (0, _util.customValueTypes)(__assign(__assign({}, result.schema), {
properties: result.columnProperties
}), entityTooltipCardProps) : {}
})
}, /*#__PURE__*/_react.default.createElement(_DragSortEditableTable.SortContext.Provider, {
value: {
datasource: sortedData,
onSortEnd: onSortEnd,
onSortStart: onSortStart
}
}, /*#__PURE__*/_react.default.createElement(_proTable.default, __assign({}, tableProps, {
dataSource: sortedData,
components: dragSortable ? {
body: {
wrapper: _DragSortEditableTable.DraggableContainer,
row: _DragSortEditableTable.DraggableBodyRow
}
} : undefined,
key: JSON.stringify({
logicform: logicform,
editable: editable
})
}))), creationMode === "list" && /*#__PURE__*/_react.default.createElement(_button.default, {
className: "ze-table-list-creation",
type: "dashed",
onClick: function onClick() {
var id = "@" + new Date().valueOf();
setDataSource(function (pre) {
return __spreadArray(__spreadArray([], pre), [{
_id: id
}]);
});
setEditableKeys(function (pre) {
return __spreadArray(__spreadArray([], pre), [id]);
});
}
}, /*#__PURE__*/_react.default.createElement(_icons.PlusOutlined, null), " \u6DFB\u52A0\u4E00\u884C\u6570\u636E"), /*#__PURE__*/_react.default.createElement(_drawer.default, {
destroyOnClose: true,
open: creationFormVisible,
maskClosable: false,
width: 500,
onClose: function onClose() {
return setCreationFormVisible(false);
},
footer: /*#__PURE__*/_react.default.createElement("div", {
style: {
display: "flex",
flexDirection: "row-reverse"
}
}, /*#__PURE__*/_react.default.createElement(_space.default, null, /*#__PURE__*/_react.default.createElement(_button.default, {
onClick: function onClick() {
var _a;
(_a = formRef.current) === null || _a === void 0 ? void 0 : _a.resetFields();
}
}, "\u91CD\u7F6E"), /*#__PURE__*/_react.default.createElement(_button.default, {
loading: isSubmitting,
type: "primary",
onClick: function onClick() {
var _a;
(_a = formRef.current) === null || _a === void 0 ? void 0 : _a.submit();
}
}, "\u63D0\u4EA4")))
}, /*#__PURE__*/_react.default.createElement(_ZESchemaForm.default, {
formRef: formRef,
propertyConfig: propertyConfig,
schemaID: logicform.schema,
columns: creationColumns,
initialValues: selectedRecord || initialValues,
submitter: false,
simplyValue: simplyValue,
onFinish: function onFinish(values) {
return __awaiter(void 0, void 0, void 0, function () {
var promise;
return __generator(this, function (_a) {
setIsSubmitting(true);
if (!selectedRecord) {
promise = (0, _request.request)((0, _zeroetpApiSdk.createData)(logicform.schema, values));
} else {
promise = (0, _request.request)((0, _zeroetpApiSdk.updateDataByID)(logicform.schema, selectedRecord._id, values));
}
promise.then(function () {
setCreationFormVisible(false);
reload === null || reload === void 0 ? void 0 : reload();
}).finally(function () {
setIsSubmitting(false);
});
return [2
/*return*/
];
});
});
}
})))));
};
var _default = Table;
exports.default = _default;