UNPKG

ze-react-component-library

Version:
165 lines (130 loc) 4.34 kB
"use strict"; 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 }; }