UNPKG

fastlion-amis

Version:

一种MIS页面生成工具

138 lines (137 loc) 8.96 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.QuickFilter = void 0; var tslib_1 = require("tslib"); var react_1 = tslib_1.__importStar(require("react")); var crudFilter_1 = require("../../../templateSchema/crudFilter"); var lodash_1 = require("lodash"); var icons_1 = require("../../../components/icons"); var helper_1 = require("../../../utils/helper"); var QuickFilter = function (_a) { var props = _a.props, filterExist = _a.filterExist, filtercont = _a.filtercont, filtertpl = _a.filtertpl, useMobileUI = _a.useMobileUI, isFilter = _a.isFilter, handleFilterReset = _a.handleFilterReset, handleFilterSubmit = _a.handleFilterSubmit, handleFilterInit = _a.handleFilterInit, defaultAdvancedQuery = _a.defaultAdvancedQuery, search = _a.search, afterSearchFn = _a.afterSearchFn, getFilterForm = _a.getFilterForm, handleFilterAdvanced = _a.handleFilterAdvanced, handleFilterOptions = _a.handleFilterOptions, handledelVisible = _a.handledelVisible, handleReset = _a.handleReset; var _filter = props.filter, store = props.store, render = props.render, __ = props.translate, cx = props.classnames, _b = props.advancedFilter, advancedFilter = _b === void 0 ? {} : _b, CRUDName = props.name, advancedFilterApi = props.advancedFilterApi, globalFilter = props.globalFilter; var filter = (0, react_1.useMemo)(function () { var _a; return (_filter || (0, crudFilter_1.defaultFilterSchma)(CRUDName || '', !!((_a = advancedFilter === null || advancedFilter === void 0 ? void 0 : advancedFilter.body) === null || _a === void 0 ? void 0 : _a.length))); }, [_filter, CRUDName, advancedFilter]); // 高级查询条件 var columns = (0, react_1.useMemo)(function () { var _a, _b, _c; return ((_c = (_b = (_a = advancedFilter === null || advancedFilter === void 0 ? void 0 : advancedFilter.body) === null || _a === void 0 ? void 0 : _a.find(function (item) { return item.name == 'advancedFilter'; })) === null || _b === void 0 ? void 0 : _b.body) !== null && _c !== void 0 ? _c : []); }, []); var advancedFilters = (0, react_1.useMemo)(function () { return advancedFilter ? (0, lodash_1.flatMap)(filtertpl, function (item, index) { var _a, _b, _c, _d; var val; if (typeof (item === null || item === void 0 ? void 0 : item.value) === 'number') { if ((_a = item === null || item === void 0 ? void 0 : item.labelName) === null || _a === void 0 ? void 0 : _a.includes(',')) { val = (item === null || item === void 0 ? void 0 : item.labelName).split(',')[0] + '...'; } else { val = item === null || item === void 0 ? void 0 : item.labelName; } } var values = item.value; if (values && typeof values == 'string' && values.includes('(') && values.includes(')') && columns) { // 做一个从小到大的排序 var compareField = (_b = columns .filter(function (item) { return values.includes(item.name.split('.').pop()); }) .map(function (item) { return item.name.split('.').pop(); })) === null || _b === void 0 ? void 0 : _b.sort(function (cur, next) { return next.length - cur.length; }); var result_1 = values.substring(1, values.length - 1); compareField.forEach(function (item) { var match = item; var regex = new RegExp(match, 'g'); var content = columns.find(function (item) { return item.name.split('.').pop() == match; }); if (content) { result_1 = result_1.replace(regex, "[".concat(content.label, "]")); } }); val = result_1; } if (!(val ? val : (item === null || item === void 0 ? void 0 : item.valuesAlia) || (item === null || item === void 0 ? void 0 : item.value))) return []; return { key: (_c = item.keyName) !== null && _c !== void 0 ? _c : index, name: item.name, label: (_d = item.label) !== null && _d !== void 0 ? _d : '', value: val !== null && val !== void 0 ? val : ((item === null || item === void 0 ? void 0 : item.labelName) || (item === null || item === void 0 ? void 0 : item.valuesAlia) || (item === null || item === void 0 ? void 0 : item.value) || '') }; }) : undefined; }, [advancedFilter, filtertpl, columns]); var onAdvancedFilterRemove = function (name) { if (name == 'all') { handledelVisible(undefined, true); } else { var item = filtertpl.find(function (item) { return item.keyName === name; }); item && handledelVisible(item, false, undefined, item.advancedFilterIndex); } }; var onGlobalFilterChange = (0, react_1.useCallback)(function (values) { var query = tslib_1.__assign(tslib_1.__assign({}, store.query), { globalFilterParam: values }); store.updateQuery(query); search(undefined, undefined, undefined, true, afterSearchFn); }, [store]); var panelClassName = (0, react_1.useMemo)(function () { return cx('Crud-filter', (filter === null || filter === void 0 ? void 0 : filter.panelClassName) || 'Panel--default'); }, [filter === null || filter === void 0 ? void 0 : filter.panelClassName]); var className = (0, react_1.useMemo)(function () { return (!!filter ? undefined : cx('Form--hidden')); }, [!!filter]); // 提取关键条件为有明确业务含义的变量 var hasFilters = !!(filter || (advancedFilters === null || advancedFilters === void 0 ? void 0 : advancedFilters.length) || globalFilter); var shouldShowFilterPanel = !!(!store.filterTogggable || store.filterVisible); var isFilterActive = !!(filterExist || isFilter); // 假设 filterExist 和 isIsFilter 已定义 var mobileUI = useMobileUI && (0, helper_1.isMobile)(); // 提取渲染函数,减少重复代码 var renderMobileFilterTrigger = function () { return (react_1.default.createElement("div", { className: cx('Mobile-filter'), onClick: handleFilterAdvanced }, react_1.default.createElement(icons_1.Icon, { icon: "#icon-tooltool_filter", style: { fill: isFilterActive ? '#3574ee' : undefined } }), react_1.default.createElement("span", { className: "filter-text ".concat(isFilterActive ? 'has-filter' : '') }, __('CRUD.filter')))); }; // 如果没有过滤器或不应显示面板,则返回null if (hasFilters && shouldShowFilterPanel) { if (!mobileUI) { return (react_1.default.createElement(react_1.default.Fragment, null, render( //默认 'filter', tslib_1.__assign(tslib_1.__assign({ title: __('CRUD.filter'), mode: 'grid', submitText: __('search'), wrapWithPanel: false }, filter), { type: 'form', api: null, showHeader: true, sortable: true }), { key: 'filter', CRUDName: CRUDName, className: className, panelClassName: panelClassName, data: store.filterData, formStore: undefined, advancedFilterVisible: false, advancedFilterApi: advancedFilterApi, advancedFilter: advancedFilter, filtercont: filtercont, advancedFilters: advancedFilters, onAdvancedFilterRemove: onAdvancedFilterRemove, globalFilters: globalFilter ? globalFilter.body : null, onGlobalFilterChange: onGlobalFilterChange, onReset: handleFilterReset, onSubmit: handleFilterSubmit, onInit: _filter ? handleFilterInit : undefined, defaultAdvancedQuery: defaultAdvancedQuery, getFilterForm: getFilterForm, handleFilterAdvanced: handleFilterAdvanced, handleFilterOptions: handleFilterOptions, handledelVisible: handledelVisible, handleReset: handleReset }))); } else { return renderMobileFilterTrigger(); } } else if (mobileUI && advancedFilter) { return renderMobileFilterTrigger(); } return null; }; exports.QuickFilter = QuickFilter; //# sourceMappingURL=./renderers/CRUD/components/Filter.js.map