ze-react-component-library
Version:
ZeroETP React Component Library
165 lines (130 loc) • 4.34 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.useTableParams = useTableParams;
var _react = require("react");
var _util = require("../../util");
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 __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;
};
function useTableParams(_a) {
var logicform = _a.logicform,
setLogicform = _a.setLogicform,
data = _a.data;
var _b = (0, _react.useState)(),
tableParams = _b[0],
setTableParams = _b[1];
var resetTableParams = function resetTableParams(params) {
if (params) {
var filter = params[1],
rest = params.slice(2);
var newParams = __spreadArray([{
current: 1
}, filter], rest);
setTableParams(newParams);
}
};
var onTableChange = function onTableChange() {
var _a;
var params = [];
for (var _i = 0; _i < arguments.length; _i++) {
params[_i] = arguments[_i];
}
var newLF = JSON.parse(JSON.stringify(logicform));
var _b = params[0],
pagination = _b === void 0 ? {} : _b,
filter = params[1],
_c = params[2],
sort = _c === void 0 ? {} : _c,
extra = params[3];
if (extra.action === "filter") {
// Filters
Object.entries(filter).forEach(function (_a) {
var _b, _c;
var k = _a[0],
v = _a[1];
if (data) {
var property = data.columnProperties.find(function (p) {
return p.name === k;
});
var isNull = (0, _util.isNullQuery)(v === null || v === void 0 ? void 0 : v[0]);
var targetKeyWithoutName = (0, _util.getPropertyQueryKey)(k, data.schema, false);
var targetKeyWitName = (0, _util.getPropertyQueryKey)(k, data.schema);
var targetKey = (0, _util.getPropertyQueryKey)(k, data.schema, !isNull);
(_b = newLF.query) === null || _b === void 0 ? true : delete _b[targetKeyWithoutName];
(_c = newLF.query) === null || _c === void 0 ? true : delete _c[targetKeyWitName];
(0, _util.filterValueToLogicformQuery)({
queryKey: targetKey,
v: v,
newLF: newLF,
property: property
});
}
});
} // Sorters And Pagination
var newLFWithSkipAndSort = JSON.parse(JSON.stringify(newLF));
var sorter = __assign({}, sort);
if (sorter.columnKey) {
sorter = (_a = {}, _a[sorter.columnKey] = sorter.order, _a);
} else {
sorter = {};
}
var pageSize = pagination.pageSize,
current = pagination.current;
if (pageSize && current) {
// 支持翻页
newLFWithSkipAndSort.limit = pageSize;
newLFWithSkipAndSort.skip = pageSize * (current - 1);
} // Sort,新的sort覆盖掉原始sort。此逻辑代表同时只允许一种sort key
if (Object.keys(sorter).length > 0) {
newLFWithSkipAndSort.sort = {};
Object.entries(sorter).forEach(function (_a) {
var k = _a[0],
v = _a[1];
switch (v) {
case "ascend":
newLFWithSkipAndSort.sort[k] = 1;
break;
case "descend":
newLFWithSkipAndSort.sort[k] = -1;
break;
default:
newLFWithSkipAndSort.sort[k] = undefined;
break;
}
});
}
if ((extra === null || extra === void 0 ? void 0 : extra.action) !== "paginate") {
resetTableParams(params);
setLogicform(newLF);
} else {
setTableParams(params);
setLogicform(undefined, newLFWithSkipAndSort);
}
};
(0, _react.useEffect)(function () {
resetTableParams(tableParams); // 重置logicformWithSkipAndSort
setLogicform();
}, [JSON.stringify(logicform)]);
return {
tableParams: tableParams,
setTableParams: setTableParams,
onTableChange: onTableChange
};
}