choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
1,420 lines (1,162 loc) • 68.9 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard")["default"];
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault")["default"];
Object.defineProperty(exports, "__esModule", {
value: true
});
exports["default"] = exports.SELECTFIELDS = exports.SELECTCHANGE = exports.SEARCHTEXT = exports.OPTIONDATASET = exports.MENURESULT = exports.MENUDATASET = exports.FILTERMENUDATASET = exports.CONDITIONSTATUS = exports.CONDITIONDATASET = void 0;
exports.isEqualDynamicProps = isEqualDynamicProps;
exports.isSelect = isSelect;
exports.omitData = omitData;
exports.parseValue = parseValue;
exports.stringifyValue = stringifyValue;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _createForOfIteratorHelper2 = _interopRequireDefault(require("@babel/runtime/helpers/createForOfIteratorHelper"));
var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck"));
var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass"));
var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits"));
var _createSuper2 = _interopRequireDefault(require("@babel/runtime/helpers/createSuper"));
var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof"));
var _tslib = require("tslib");
var _react = _interopRequireWildcard(require("react"));
var _mobxReact = require("mobx-react");
var _mobx = require("mobx");
var _uniq = _interopRequireDefault(require("lodash/uniq"));
var _pull = _interopRequireDefault(require("lodash/pull"));
var _noop = _interopRequireDefault(require("lodash/noop"));
var _map = _interopRequireDefault(require("lodash/map"));
var _isObject = _interopRequireDefault(require("lodash/isObject"));
var _isEmpty2 = _interopRequireDefault(require("lodash/isEmpty"));
var _isNumber = _interopRequireDefault(require("lodash/isNumber"));
var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
var _isEqual = _interopRequireDefault(require("lodash/isEqual"));
var _isArray = _interopRequireDefault(require("lodash/isArray"));
var _isString = _interopRequireDefault(require("lodash/isString"));
var _debounce = _interopRequireDefault(require("lodash/debounce"));
var _omit = _interopRequireDefault(require("lodash/omit"));
var _difference = _interopRequireDefault(require("lodash/difference"));
var _classnames = _interopRequireDefault(require("classnames"));
var _ConfigContext = _interopRequireDefault(require("../../../../lib/config-provider/ConfigContext"));
var _utils = require("../../../../lib/configure/utils");
var _UnitConvertor = require("../../../../lib/_util/UnitConvertor");
var _icon = _interopRequireDefault(require("../../../../lib/icon"));
var _enum = require("../../../../lib/trigger/enum");
var _DataSet = _interopRequireDefault(require("../../data-set/DataSet"));
var _enum2 = require("../../data-set/enum");
var _button = _interopRequireDefault(require("../../button"));
var _dropdown = _interopRequireDefault(require("../../dropdown"));
var _textField = _interopRequireDefault(require("../../text-field"));
var _enum3 = require("../../text-field/enum");
var _tooltip = _interopRequireDefault(require("../../tooltip"));
var _enum4 = require("../../core/enum");
var _localeContext = require("../../locale-context");
var _autobind = _interopRequireDefault(require("../../_util/autobind"));
var _isEmpty3 = _interopRequireDefault(require("../../_util/isEmpty"));
var _FieldList = _interopRequireDefault(require("./FieldList"));
var _TableButtons = _interopRequireDefault(require("./TableButtons"));
var _ColumnFilter = _interopRequireDefault(require("./ColumnFilter"));
var _QuickFilterMenu = _interopRequireDefault(require("./quick-filter/QuickFilterMenu"));
var _QuickFilterMenuContext = _interopRequireDefault(require("./quick-filter/QuickFilterMenuContext"));
var _QuickFilterDataSet = require("./quick-filter/QuickFilterDataSet");
var _singleton = require("../../tooltip/singleton");
var _enum5 = require("../../field/enum");
/**
* 当前数据是否有值并需要选中
* @param data
*/
function isSelect(data) {
if ((0, _isObject["default"])(data[1])) {
return !(0, _isEmpty2["default"])(data[1]);
}
return data[0] !== '__dirty' && !(0, _isEmpty3["default"])(data[1]);
}
function isEqualDynamicProps(originalValue, newValue, dataSet, record, name) {
if ((0, _isEqual["default"])(newValue, originalValue)) {
return true;
}
if ((0, _isObject["default"])(newValue) && (0, _isObject["default"])(originalValue) && Object.keys(newValue).length) {
var combineKeys = Object.keys(newValue).concat(Object.keys(originalValue));
return combineKeys.every(function (key) {
var value = newValue[key];
var oldValue = originalValue[key];
if (oldValue === value) {
return true;
}
if ((0, _isEmpty3["default"])(oldValue) && (0, _isEmpty3["default"])(value)) {
return true;
}
if (name && name.includes('.')) {
return (0, _isEmpty3["default"])(oldValue) && (0, _isEmpty3["default"])(record.get(name));
}
if ((0, _isNumber["default"])(oldValue) || (0, _isNumber["default"])(value)) {
var oEp = (0, _isNumber["default"])(oldValue) ? (0, _isEmpty3["default"])(oldValue) : (0, _isEmpty2["default"])(oldValue);
var nEp = (0, _isNumber["default"])(value) ? (0, _isEmpty3["default"])(value) : (0, _isEmpty2["default"])(value);
if (oEp && nEp) {
return true;
}
return String(oldValue) === String(value);
}
var field = dataSet.getField(key);
if (field && field.get('range', record)) {
var rangeValue = value ? (0, _isArray["default"])(value) ? value.join('') : Object.values(value).join('') : '';
var rangeOldValue = oldValue ? (0, _isArray["default"])(oldValue) ? oldValue.join('') : Object.values(oldValue).join('') : '';
return rangeValue === rangeOldValue;
}
if (field && field.get('lovCode') && oldValue && value) {
var valueField = dataSet.getField(key).get('valueField', record);
var textField = dataSet.getField(key).get('textField', record);
return value[valueField] === oldValue[valueField] && value[textField] === oldValue[textField];
}
return (0, _isEqual["default"])(oldValue, value);
});
}
return (0, _isEqual["default"])(newValue, originalValue);
}
/**
* 提交副本数据
* @param data
*/
function omitData(data) {
return (0, _omit["default"])(data, 'creationDate', 'createdBy', 'lastUpdateDate', 'lastUpdatedBy', 'objectVersionNumber', '_token', 'searchId', 'searchConditionId', 'searchQueryId', 'searchOrderId');
}
/**
* obj 值使用 JSON 保存、获取赋值转化
* @param value
*/
function parseValue(value) {
try {
var res = JSON.parse(value);
if ((0, _typeof2["default"])(res) === 'object') {
return res;
}
return value;
} catch (e) {
return value;
}
}
function stringifyValue(value) {
if ((0, _typeof2["default"])(value) === 'object') {
return JSON.stringify(value);
}
return value;
}
var CONDITIONSTATUS = '__CONDITIONSTATUS__';
exports.CONDITIONSTATUS = CONDITIONSTATUS;
var SELECTFIELDS = '__SELECTFIELDS__';
exports.SELECTFIELDS = SELECTFIELDS;
var MENUDATASET = '__MENUDATASET__';
exports.MENUDATASET = MENUDATASET;
var CONDITIONDATASET = '__CONDITIONDATASET__';
exports.CONDITIONDATASET = CONDITIONDATASET;
var OPTIONDATASET = '__OPTIONDATASET__';
exports.OPTIONDATASET = OPTIONDATASET;
var FILTERMENUDATASET = '__FILTERMENUDATASET__';
exports.FILTERMENUDATASET = FILTERMENUDATASET;
var MENURESULT = '__MENURESULT__';
exports.MENURESULT = MENURESULT;
var SEARCHTEXT = '__SEARCHTEXT__';
exports.SEARCHTEXT = SEARCHTEXT;
var SELECTCHANGE = '__SELECTCHANGE__';
exports.SELECTCHANGE = SELECTCHANGE;
var TableDynamicFilterBar = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(TableDynamicFilterBar, _Component);
var _super = (0, _createSuper2["default"])(TableDynamicFilterBar);
function TableDynamicFilterBar(props, context) {
var _this;
(0, _classCallCheck2["default"])(this, TableDynamicFilterBar);
_this = _super.call(this, props, context);
_this.refDropdown = null;
_this.refSingleWrapper = null;
_this.refEditors = new Map();
_this.originalConditionFields = [];
_this.handleClickOut = function (e) {
if (_this.refDropdown && !_this.refDropdown.contains(e.target)) {
_this.fieldSelectHidden = true;
}
};
_this.setOriginalConditionFields = function (code) {
var _this$props = _this.props,
queryDataSet = _this$props.queryDataSet,
dataSet = _this$props.dataSet;
if (!code) {
if (queryDataSet) {
_this.initConditionFields({
dataSet: queryDataSet,
record: queryDataSet.get(0)
});
}
} else {
_this.originalConditionFields = Array.isArray(code) ? code : [code];
}
dataSet.setState(SELECTFIELDS, (0, _toConsumableArray2["default"])(_this.originalConditionFields));
};
/**
* 勾选
* @param code
* @param record
*/
_this.handleSelect = function (code, record) {
var dataSet = _this.props.dataSet;
var codes = Array.isArray(code) ? code : [code];
var selectFields = dataSet.getState(SELECTFIELDS) || [];
dataSet.setState(SELECTFIELDS, (0, _uniq["default"])([].concat((0, _toConsumableArray2["default"])(selectFields), (0, _toConsumableArray2["default"])(codes))));
var shouldUpdate = dataSet.getState(SELECTFIELDS).length !== _this.originalConditionFields.length || !!(0, _difference["default"])((0, _mobx.toJS)(dataSet.getState(SELECTFIELDS)), (0, _mobx.toJS)(_this.originalConditionFields)).length;
var isDirty = record ? record.dirty : false;
_this.setConditionStatus(shouldUpdate || isDirty ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync);
dataSet.setState(SELECTCHANGE, shouldUpdate);
};
/**
* 取消勾选
* @param code
*/
_this.handleUnSelect = function (code) {
var _this$props2 = _this.props,
queryDataSet = _this$props2.queryDataSet,
dataSet = _this$props2.dataSet;
var codes = Array.isArray(code) ? code : [code];
if (queryDataSet) {
var current = queryDataSet.current;
if (current) {
codes.forEach(function (name) {
return current.set(name, undefined);
});
}
}
var selectFields = dataSet.getState(SELECTFIELDS) || [];
dataSet.setState(SELECTFIELDS, _pull["default"].apply(void 0, [(0, _toConsumableArray2["default"])(selectFields)].concat((0, _toConsumableArray2["default"])(codes))));
var shouldUpdate = dataSet.getState(SELECTFIELDS).length !== _this.originalConditionFields.length || !!(0, _difference["default"])((0, _mobx.toJS)(dataSet.getState(SELECTFIELDS)), (0, _mobx.toJS)(_this.originalConditionFields)).length;
_this.setConditionStatus(shouldUpdate ? _enum2.RecordStatus.update : _enum2.RecordStatus.sync);
dataSet.setState(SELECTCHANGE, shouldUpdate);
};
(0, _mobx.runInAction)(function () {
_this.fieldSelectHidden = true;
_this.expand = true;
});
return _this;
}
(0, _createClass2["default"])(TableDynamicFilterBar, [{
key: "prefixCls",
get: function get() {
var prefixCls = this.props.prefixCls;
var _this$context$getProP = this.context.getProPrefixCls,
getProPrefixCls = _this$context$getProP === void 0 ? _utils.getProPrefixCls : _this$context$getProP;
return getProPrefixCls('table', prefixCls);
}
}, {
key: "queryFields",
get: function get() {
var _this$props3 = this.props,
queryFields = _this$props3.queryFields,
queryDataSet = _this$props3.queryDataSet,
dataSet = _this$props3.dataSet;
var menuDataSet = dataSet.getState(MENUDATASET);
var isTenant = menuDataSet && menuDataSet.current && menuDataSet.current.get('isTenant');
return queryFields.filter(function (component) {
if (component.props.hidden) {
return !component.props.hidden;
}
if (isTenant && queryDataSet && queryDataSet.getField(component.props.name)) {
return queryDataSet.getField(component.props.name).get('fieldVisible') !== 0;
}
return !component.props.hidden;
});
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
var _this$props4 = this.props,
fuzzyQueryOnly = _this$props4.fuzzyQueryOnly,
queryDataSet = _this$props4.queryDataSet,
dataSet = _this$props4.dataSet;
if (!fuzzyQueryOnly) {
this.processDataSetListener(true);
document.addEventListener('click', this.handleClickOut);
if (this.isSingleLineOpt() && this.refSingleWrapper) {
var _this$refSingleWrappe = this.refSingleWrapper.getBoundingClientRect(),
height = _this$refSingleWrappe.height;
var _this$refSingleWrappe2 = this.refSingleWrapper.children[0].children[0].getBoundingClientRect(),
childHeight = _this$refSingleWrappe2.height;
(0, _mobx.runInAction)(function () {
_this2.showExpandIcon = height > childHeight + 18;
});
}
if (!dataSet.props.autoQuery) {
this.handleDataSetQuery({
dataSet: dataSet
});
}
}
if (this.originalValue === undefined && queryDataSet && queryDataSet.current) {
this.initConditionFields({
dataSet: queryDataSet,
record: queryDataSet.current
});
}
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
var fuzzyQueryOnly = this.props.fuzzyQueryOnly;
if (!fuzzyQueryOnly) {
document.removeEventListener('click', this.handleClickOut);
this.processDataSetListener(false);
}
if (this.isTooltipShown) {
(0, _singleton.hide)();
delete this.isTooltipShown;
}
}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps) {
var _this3 = this;
var dataSet = nextProps.dataSet,
fuzzyQueryOnly = nextProps.fuzzyQueryOnly,
queryDataSet = nextProps.queryDataSet; // eslint-disable-next-line react/destructuring-assignment
if (dataSet !== this.props.dataSet || fuzzyQueryOnly !== this.props.fuzzyQueryOnly) {
(0, _mobx.runInAction)(function () {
_this3.fieldSelectHidden = true;
_this3.expand = true;
});
if (!fuzzyQueryOnly) {
// 移除原有实例监听
this.processDataSetListener(false);
this.processDataSetListener(true, nextProps);
if (this.isSingleLineOpt() && this.refSingleWrapper) {
var _this$refSingleWrappe3 = this.refSingleWrapper.getBoundingClientRect(),
height = _this$refSingleWrappe3.height;
var _this$refSingleWrappe4 = this.refSingleWrapper.children[0].children[0].getBoundingClientRect(),
childHeight = _this$refSingleWrappe4.height;
(0, _mobx.runInAction)(function () {
_this3.showExpandIcon = height > childHeight + 18;
});
}
}
if (this.originalValue === undefined && queryDataSet && queryDataSet.current) {
this.initConditionFields({
dataSet: queryDataSet,
record: queryDataSet.current
});
}
}
}
}, {
key: "processDataSetListener",
value: function processDataSetListener(flag, nextProps) {
var _ref = nextProps || this.props,
queryDataSet = _ref.queryDataSet,
dataSet = _ref.dataSet;
if (queryDataSet) {
var handler = flag ? queryDataSet.addEventListener : queryDataSet.removeEventListener;
var dsHandler = flag ? dataSet.addEventListener : dataSet.removeEventListener;
handler.call(queryDataSet, _enum2.DataSetEvents.validate, this.handleDataSetValidate);
handler.call(queryDataSet, _enum2.DataSetEvents.update, this.handleDataSetUpdate);
handler.call(queryDataSet, _enum2.DataSetEvents.create, this.handleDataSetCreate);
handler.call(queryDataSet, _enum2.DataSetEvents.reset, this.handleDataSetReset);
handler.call(queryDataSet, _enum2.DataSetEvents.load, this.handleDataSetLoad);
dsHandler.call(dataSet, _enum2.DataSetEvents.query, this.handleDataSetQuery);
}
}
}, {
key: "handleDataSetQuery",
value: function () {
var _handleDataSetQuery = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref2) {
var dataSet, res, defaultMenus, _ref3, conditionList, initQueryData, queryDataSet;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
dataSet = _ref2.dataSet;
if (!(!dataSet.getState(MENURESULT) && this.tableFilterAdapter)) {
_context.next = 16;
break;
}
_context.next = 4;
return this.initMenuDataSet();
case 4:
res = dataSet.getState(MENURESULT);
if (!(res && res.length && res.filter(function (menu) {
return menu.defaultFlag;
}).length)) {
_context.next = 16;
break;
}
defaultMenus = res.filter(function (menu) {
return menu.defaultFlag;
});
_ref3 = defaultMenus.length > 1 ? defaultMenus.find(function (menu) {
return menu.isTenant !== 1;
}) : defaultMenus[0], conditionList = _ref3.conditionList;
initQueryData = {};
if (!(conditionList && conditionList.length)) {
_context.next = 16;
break;
}
(0, _map["default"])(conditionList, function (condition) {
if (condition.comparator === 'EQUAL') {
var fieldName = condition.fieldName,
value = condition.value;
initQueryData[fieldName] = parseValue(value);
}
});
queryDataSet = this.props.queryDataSet;
if (!(queryDataSet && queryDataSet.current && dataSet.props.autoQuery)) {
_context.next = 16;
break;
}
if (!Object.keys(initQueryData).length) {
_context.next = 16;
break;
}
dataSet.query();
return _context.abrupt("return", false);
case 16:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function handleDataSetQuery(_x) {
return _handleDataSetQuery.apply(this, arguments);
}
return handleDataSetQuery;
}()
/**
* queryDataSet 查询前校验事件 触发展开动态字段
* @param dataSet 查询DS
* @param result
*/
}, {
key: "handleDataSetValidate",
value: function () {
var _handleDataSetValidate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(_ref4) {
var _this4 = this;
var dataSet, result, refSingleWrapper;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
dataSet = _ref4.dataSet, result = _ref4.result;
_context2.next = 3;
return result;
case 3:
if (_context2.sent) {
_context2.next = 7;
break;
}
(0, _mobx.runInAction)(function () {
var current = dataSet.current;
dataSet.fields.forEach(function (field, key) {
if (!field.isValid(current)) {
_this4.handleSelect(key);
}
});
_this4.expand = true;
});
refSingleWrapper = this.refSingleWrapper;
if (refSingleWrapper) {
refSingleWrapper.style.height = '';
refSingleWrapper.style.overflow = '';
}
case 7:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function handleDataSetValidate(_x2) {
return _handleDataSetValidate.apply(this, arguments);
}
return handleDataSetValidate;
}()
}, {
key: "setConditionStatus",
value: function setConditionStatus(value, orglValue) {
var dataSet = this.props.dataSet;
dataSet.setState(CONDITIONSTATUS, value);
if (value === _enum2.RecordStatus.sync && orglValue) {
this.originalValue = orglValue;
}
}
/**
* 筛选条件更新 触发表格查询
*/
}, {
key: "handleDataSetUpdate",
value: function () {
var _handleDataSetUpdate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee3(_ref5) {
var record, name, oldValue, value, _this$props5, dataSet, queryDataSet, _this$props5$onQuery, onQuery, autoQuery, field, shouldQuery, rangeKeys, _record$set, rangeValue, rangeOldValue, status, hasFocus, _iterator, _step, _step$value, key, _value;
return _regenerator["default"].wrap(function _callee3$(_context3) {
while (1) {
switch (_context3.prev = _context3.next) {
case 0:
record = _ref5.record, name = _ref5.name, oldValue = _ref5.oldValue, value = _ref5.value;
_this$props5 = this.props, dataSet = _this$props5.dataSet, queryDataSet = _this$props5.queryDataSet, _this$props5$onQuery = _this$props5.onQuery, onQuery = _this$props5$onQuery === void 0 ? _noop["default"] : _this$props5$onQuery, autoQuery = _this$props5.autoQuery;
field = queryDataSet && queryDataSet.getField(name);
shouldQuery = true;
if (field && field.get('range', record)) {
// 处理 range 失焦对象 undefined,bind 字段无处理的情况
if (value) {
rangeKeys = Object.keys(value);
if (rangeKeys.length) {
if (value[rangeKeys[0]] === undefined) {
record.set(name, null);
} else if (value[rangeKeys[1]] === undefined) {
record.set(name, (_record$set = {}, (0, _defineProperty2["default"])(_record$set, rangeKeys[0], value[rangeKeys[0]]), (0, _defineProperty2["default"])(_record$set, rangeKeys[1], null), _record$set));
}
}
}
rangeValue = value ? (0, _isArray["default"])(value) ? value.join('') : Object.values(value).join('') : '';
rangeOldValue = oldValue ? (0, _isArray["default"])(oldValue) ? oldValue.join('') : Object.values(oldValue).join('') : '';
shouldQuery = rangeValue !== rangeOldValue;
}
status = _enum2.RecordStatus.update;
if (record) {
status = isEqualDynamicProps(this.originalValue, (0, _omit["default"])(record.toData(), ['__dirty']), queryDataSet, record, name) ? _enum2.RecordStatus.sync : _enum2.RecordStatus.update;
}
this.setConditionStatus(status);
if (!(autoQuery && shouldQuery)) {
_context3.next = 28;
break;
}
_context3.next = 11;
return dataSet.modifiedCheck(undefined, dataSet, 'query');
case 11:
if (!_context3.sent) {
_context3.next = 27;
break;
}
_context3.t0 = queryDataSet && queryDataSet.current;
if (!_context3.t0) {
_context3.next = 17;
break;
}
_context3.next = 16;
return queryDataSet.current.validate();
case 16:
_context3.t0 = _context3.sent;
case 17:
if (!_context3.t0) {
_context3.next = 22;
break;
}
dataSet.query();
onQuery();
_context3.next = 25;
break;
case 22:
hasFocus = false;
_iterator = (0, _createForOfIteratorHelper2["default"])(this.refEditors.entries());
try {
for (_iterator.s(); !(_step = _iterator.n()).done;) {
_step$value = (0, _slicedToArray2["default"])(_step.value, 2), key = _step$value[0], _value = _step$value[1];
if (_value && !_value.valid && !hasFocus) {
this.refEditors.get(key).focus();
hasFocus = true;
}
}
} catch (err) {
_iterator.e(err);
} finally {
_iterator.f();
}
case 25:
_context3.next = 28;
break;
case 27:
record.init(name, oldValue);
case 28:
case "end":
return _context3.stop();
}
}
}, _callee3, this);
}));
function handleDataSetUpdate(_x3) {
return _handleDataSetUpdate.apply(this, arguments);
}
return handleDataSetUpdate;
}()
/**
* queryDS 新建,初始勾选值
*/
}, {
key: "handleDataSetCreate",
value: function handleDataSetCreate() {
var queryDataSet = this.props.queryDataSet;
if (queryDataSet) {
this.initConditionFields({
dataSet: queryDataSet,
record: queryDataSet.current
});
}
}
/**
* queryDS reset,初始记录
*/
}, {
key: "handleDataSetReset",
value: function handleDataSetReset() {
var queryDataSet = this.props.queryDataSet;
if (queryDataSet && !this.tableFilterAdapter) {
queryDataSet.create();
}
}
/**
* queryDS load,兼容项目loadData([])的处理,初始化记录
*/
}, {
key: "handleDataSetLoad",
value: function handleDataSetLoad(_ref6) {
var dataSet = _ref6.dataSet;
if (!this.tableFilterAdapter && !dataSet.length) {
dataSet.create();
}
}
/**
* 初始化勾选值、条件字段
* @param props
*/
}, {
key: "initConditionFields",
value: function initConditionFields(props) {
var _this5 = this;
var dataSet = props.dataSet,
record = props.record;
var originalValue = (0, _omit["default"])(record.toData(), ['__dirty']);
var conditionData = Object.entries(originalValue);
this.originalValue = originalValue;
this.originalConditionFields = [];
var fields = dataSet.fields;
(0, _map["default"])(conditionData, function (data) {
var name = data[0];
if (!fields.has(data[0]) && (0, _isObject["default"])(data[1]) && !(0, _isEmpty2["default"])(data[1]) && !(0, _isArray["default"])(data[1])) {
name = "".concat(data[0], ".").concat(Object.keys(data[1])[0]);
}
if (isSelect(data) && !(dataSet.getState(SELECTFIELDS) || []).includes(name)) {
var field = dataSet.getField(name);
if (!field || !field.get('bind', record) || field.get('usedFlag')) {
_this5.originalConditionFields.push(name);
_this5.handleSelect(name, record);
}
}
});
}
/**
* 初始筛选条数据源状态
*/
}, {
key: "initMenuDataSet",
value: function () {
var _initMenuDataSet = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee4() {
var _this6 = this;
var _this$props6, queryDataSet, dataSet, dynamicFilterBar, searchCode, getConfig, searchCodes, menuDataSet, conditionDataSet, optionDataSet, filterMenuDataSet, status, result, menuRecord, current;
return _regenerator["default"].wrap(function _callee4$(_context4) {
while (1) {
switch (_context4.prev = _context4.next) {
case 0:
_this$props6 = this.props, queryDataSet = _this$props6.queryDataSet, dataSet = _this$props6.dataSet, dynamicFilterBar = _this$props6.dynamicFilterBar, searchCode = _this$props6.searchCode;
getConfig = this.context.getConfig;
searchCodes = dynamicFilterBar && dynamicFilterBar.searchCode || searchCode;
if (!this.tableFilterAdapter) {
_context4.next = 24;
break;
}
menuDataSet = new _DataSet["default"]((0, _QuickFilterDataSet.QuickFilterDataSet)({
searchCode: searchCodes,
queryDataSet: queryDataSet,
tableFilterAdapter: this.tableFilterAdapter
}), {
getConfig: getConfig
});
conditionDataSet = new _DataSet["default"]((0, _QuickFilterDataSet.ConditionDataSet)(), {
getConfig: getConfig
});
optionDataSet = new _DataSet["default"]({
paging: false,
selection: _enum2.DataSetSelection.single,
fields: [{
// 是否租户默认配置
name: 'isTenant',
type: _enum2.FieldType.string,
transformResponse: function transformResponse(value) {
return value ? (0, _localeContext.$l)('Table', 'preset') : (0, _localeContext.$l)('Table', 'user');
},
group: true
}]
}, {
getConfig: getConfig
});
filterMenuDataSet = new _DataSet["default"]({
autoCreate: true,
fields: [{
name: 'filterName',
type: _enum2.FieldType.string,
textField: 'searchName',
valueField: 'searchId',
options: optionDataSet,
ignore: _enum2.FieldIgnore.always
}]
}, {
getConfig: getConfig
});
status = _enum2.RecordStatus.update;
if (queryDataSet && queryDataSet.current) {
status = isEqualDynamicProps(this.originalValue, (0, _omit["default"])(queryDataSet.current.toData(), ['__dirty']), queryDataSet, queryDataSet.current) ? _enum2.RecordStatus.sync : _enum2.RecordStatus.update;
} else {
status = _enum2.RecordStatus.sync;
} // 初始化状态
dataSet.setState(MENUDATASET, menuDataSet);
dataSet.setState(CONDITIONDATASET, conditionDataSet);
dataSet.setState(OPTIONDATASET, optionDataSet);
dataSet.setState(FILTERMENUDATASET, filterMenuDataSet);
dataSet.setState(CONDITIONSTATUS, status);
dataSet.setState(SEARCHTEXT, '');
_context4.next = 18;
return menuDataSet.query();
case 18:
result = _context4.sent;
dataSet.setState(MENURESULT, result);
if (optionDataSet) {
optionDataSet.loadData(result);
}
menuRecord = menuDataSet.current;
if (menuRecord) {
conditionDataSet.loadData(menuRecord.get('conditionList'));
}
if (result && result.length) {
(0, _mobx.runInAction)(function () {
_this6.shouldLocateData = true;
});
if (queryDataSet && queryDataSet.fields) {
this.tempFields = queryDataSet.snapshot().dataSet.fields;
}
} else {
current = filterMenuDataSet.current;
if (current) current.set('filterName', undefined);
(0, _mobx.runInAction)(function () {
_this6.shouldLocateData = true;
});
}
case 24:
return _context4.abrupt("return", true);
case 25:
case "end":
return _context4.stop();
}
}
}, _callee4, this);
}));
function initMenuDataSet() {
return _initMenuDataSet.apply(this, arguments);
}
return initMenuDataSet;
}()
/**
* tableFilterSuffix 预留自定义区域
*/
}, {
key: "renderSuffix",
value: function renderSuffix() {
var _this$props7 = this.props,
dynamicFilterBar = _this$props7.dynamicFilterBar,
queryDataSet = _this$props7.queryDataSet,
dataSet = _this$props7.dataSet,
_this$props7$buttons = _this$props7.buttons,
buttons = _this$props7$buttons === void 0 ? [] : _this$props7$buttons;
var getConfig = this.context.getConfig;
var prefixCls = this.prefixCls;
var suffixes = dynamicFilterBar && dynamicFilterBar.suffixes || getConfig('tableFilterSuffix');
var children = [];
var suffixesDom = null;
var tableButtons = buttons.length ? /*#__PURE__*/_react["default"].createElement(_TableButtons["default"], {
key: "toolbar",
prefixCls: "".concat(prefixCls, "-dynamic-filter"),
buttons: buttons
}) : null;
if (suffixes && suffixes.length) {
suffixes.forEach(function (suffix) {
if (suffix === 'filter') {
children.push( /*#__PURE__*/_react["default"].createElement(_ColumnFilter["default"], {
prefixCls: prefixCls
}));
} else if ( /*#__PURE__*/(0, _react.isValidElement)(suffix)) {
children.push(suffix);
} else if ((0, _isFunction["default"])(suffix)) {
children.push(suffix({
queryDataSet: queryDataSet,
dataSet: dataSet
}));
}
});
suffixesDom = /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-dynamic-filter-bar-suffix")
}, children);
}
return [tableButtons, suffixesDom];
}
}, {
key: "getPrefix",
value: function getPrefix() {
var _this$props8 = this.props,
dynamicFilterBar = _this$props8.dynamicFilterBar,
queryDataSet = _this$props8.queryDataSet,
dataSet = _this$props8.dataSet;
var prefixCls = this.prefixCls;
var prefixes = dynamicFilterBar && dynamicFilterBar.prefixes;
var children = [];
if (prefixes && prefixes.length) {
prefixes.forEach(function (prefix) {
if ((0, _isString["default"])(prefix) && prefix === 'filter') {
children.push( /*#__PURE__*/_react["default"].createElement(_ColumnFilter["default"], {
prefixCls: prefixCls
}));
} else if ( /*#__PURE__*/(0, _react.isValidElement)(prefix)) {
children.push(prefix);
} else if ((0, _isFunction["default"])(prefix)) {
children.push(prefix({
queryDataSet: queryDataSet,
dataSet: dataSet
}));
}
});
return /*#__PURE__*/_react["default"].createElement(_react["default"].Fragment, null, /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-dynamic-filter-bar-prefix")
}, children), /*#__PURE__*/_react["default"].createElement("span", {
className: "".concat(prefixCls, "-filter-search-divide")
}));
}
return null;
}
/**
* 注入 refEditors
* @param element
* @param name
*/
}, {
key: "createFields",
value: function createFields(element, name) {
var _this7 = this;
var props = {
ref: function ref(node) {
return _this7.refEditors.set(name, node);
},
border: false,
clearButton: true
};
return /*#__PURE__*/(0, _react.cloneElement)(element, props);
}
/**
* 判断查询值是否为空
* @param value
*/
}, {
key: "isEmpty",
value: function isEmpty(value) {
return (0, _mobx.isArrayLike)(value) ? !value.length : (0, _isEmpty3["default"])(value);
}
}, {
key: "tableFilterAdapter",
get: function get() {
var _this$props9 = this.props,
dynamicFilterBar = _this$props9.dynamicFilterBar,
searchCode = _this$props9.searchCode;
var getConfig = this.context.getConfig;
var searchCodes = dynamicFilterBar && dynamicFilterBar.searchCode || searchCode;
return searchCodes ? dynamicFilterBar && dynamicFilterBar.tableFilterAdapter || getConfig('tableFilterAdapter') : null;
}
/**
* 是否单行操作
*/
}, {
key: "isSingleLineOpt",
value: function isSingleLineOpt() {
var fuzzyQuery = this.props.fuzzyQuery;
return !(fuzzyQuery || this.tableFilterAdapter);
}
/**
* 查询前修改提示及校验定位
*/
}, {
key: "modifiedCheckQuery",
value: function () {
var _modifiedCheckQuery = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee5(fuzzyValue, fuzzyOldValue, refresh) {
var _this$props10, dataSet, queryDataSet, fuzzyQueryOnly, dynamicFilterBar, _this$props10$onRefre, onRefresh, getConfig, searchText, hasFocus, _iterator2, _step2, _step2$value, key, value;
return _regenerator["default"].wrap(function _callee5$(_context5) {
while (1) {
switch (_context5.prev = _context5.next) {
case 0:
_this$props10 = this.props, dataSet = _this$props10.dataSet, queryDataSet = _this$props10.queryDataSet, fuzzyQueryOnly = _this$props10.fuzzyQueryOnly, dynamicFilterBar = _this$props10.dynamicFilterBar, _this$props10$onRefre = _this$props10.onRefresh, onRefresh = _this$props10$onRefre === void 0 ? _noop["default"] : _this$props10$onRefre;
getConfig = this.context.getConfig;
searchText = dynamicFilterBar && dynamicFilterBar.searchText || getConfig('tableFilterSearchText') || 'params';
_context5.next = 5;
return dataSet.modifiedCheck(undefined, dataSet, 'query');
case 5:
if (!_context5.sent) {
_context5.next = 32;
break;
}
_context5.t1 = queryDataSet && queryDataSet.current;
if (!_context5.t1) {
_context5.next = 11;
break;
}
_context5.next = 10;
return queryDataSet.current.validate();
case 10:
_context5.t1 = _context5.sent;
case 11:
_context5.t0 = _context5.t1;
if (_context5.t0) {
_context5.next = 14;
break;
}
_context5.t0 = fuzzyQueryOnly;
case 14:
if (!_context5.t0) {
_context5.next = 27;
break;
}
if (fuzzyValue) {
(0, _mobx.runInAction)(function () {
dataSet.setState(SEARCHTEXT, fuzzyValue || '');
});
dataSet.setQueryParameter(searchText, fuzzyValue);
}
if (!refresh) {
_context5.next = 24;
break;
}
_context5.next = 19;
return onRefresh();
case 19:
_context5.t2 = _context5.sent;
if (!(_context5.t2 !== false)) {
_context5.next = 22;
break;
}
dataSet.query();
case 22:
_context5.next = 25;
break;
case 24:
dataSet.query();
case 25:
_context5.next = 30;
break;
case 27:
hasFocus = false;
_iterator2 = (0, _createForOfIteratorHelper2["default"])(this.refEditors.entries());
try {
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
_step2$value = (0, _slicedToArray2["default"])(_step2.value, 2), key = _step2$value[0], value = _step2$value[1];
if (value && !value.valid && !hasFocus) {
this.refEditors.get(key).focus();
hasFocus = true;
}
}
} catch (err) {
_iterator2.e(err);
} finally {
_iterator2.f();
}
case 30:
_context5.next = 34;
break;
case 32:
(0, _mobx.runInAction)(function () {
dataSet.setState(SEARCHTEXT, fuzzyOldValue || '');
});
dataSet.setQueryParameter(searchText, fuzzyOldValue);
case 34:
case "end":
return _context5.stop();
}
}
}, _callee5, this);
}));
function modifiedCheckQuery(_x4, _x5, _x6) {
return _modifiedCheckQuery.apply(this, arguments);
}
return modifiedCheckQuery;
}()
}, {
key: "renderRefreshBtn",
value: function renderRefreshBtn() {
var _this8 = this;
var prefixCls = this.prefixCls;
return /*#__PURE__*/_react["default"].createElement("span", {
className: "".concat(prefixCls, "-filter-menu-query"),
onClick: function () {
var _onClick = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee6(e) {
return _regenerator["default"].wrap(function _callee6$(_context6) {
while (1) {
switch (_context6.prev = _context6.next) {
case 0:
e.stopPropagation();
_context6.next = 3;
return _this8.modifiedCheckQuery(undefined, undefined, true);
case 3:
case "end":
return _context6.stop();
}
}
}, _callee6);
}));
function onClick(_x7) {
return _onClick.apply(this, arguments);
}
return onClick;
}()
}, /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
title: (0, _localeContext.$l)('Table', 'refresh')
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "refresh"
})));
}
/**
* 渲染展开逻辑
* @param hidden 是否隐藏全部
*/
}, {
key: "getExpandNode",
value: function getExpandNode(hidden) {
var _this9 = this;
var prefixCls = this.prefixCls,
refreshBtn = this.props.refreshBtn;
if (!this.showExpandIcon && !hidden) return refreshBtn ? this.renderRefreshBtn() : null;
return /*#__PURE__*/_react["default"].createElement("span", {
className: "".concat(prefixCls, "-filter-menu-expand"),
onClick: function onClick() {
var refSingleWrapper = _this9.refSingleWrapper;
if (refSingleWrapper) {
var _refSingleWrapper$get = refSingleWrapper.getBoundingClientRect(),
height = _refSingleWrapper$get.height;
var _refSingleWrapper$chi = refSingleWrapper.children[0].children[0].getBoundingClientRect(),
childHeight = _refSingleWrapper$chi.height;
(0, _mobx.runInAction)(function () {
_this9.expand = hidden ? height <= 0 : height <= childHeight + 18;
});
if (hidden && height) {
// 收起全部
refSingleWrapper.style.display = 'none';
} else {
refSingleWrapper.style.display = 'flex';
refSingleWrapper.style.height = '';
refSingleWrapper.style.overflow = '';
}
if (height > childHeight + 18 && !hidden) {
// 收起留一行高度
refSingleWrapper.style.height = (0, _UnitConvertor.pxToRem)(childHeight + 18, true) || '';
refSingleWrapper.style.overflow = 'hidden';
} else {
refSingleWrapper.style.height = '';
refSingleWrapper.style.overflow = '';
}
}
}
}, refreshBtn ? this.renderRefreshBtn() : null, this.expand ? /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
title: (0, _localeContext.$l)('Table', 'collapse')
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "baseline-arrow_drop_up"
})) : /*#__PURE__*/_react["default"].createElement(_tooltip["default"], {
title: (0, _localeContext.$l)('Table', 'expand_button')
}, /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "baseline-arrow_drop_down"
})));
}
/**
* 渲染模糊搜索
*/
}, {
key: "getFuzzyQuery",
value: function getFuzzyQuery() {
var _this10 = this;
var _this$props11 = this.props,
dataSet = _this$props11.dataSet,
dynamicFilterBar = _this$props11.dynamicFilterBar,
fuzzyQuery = _this$props11.fuzzyQuery,
fuzzyQueryPlaceholder = _this$props11.fuzzyQueryPlaceholder,
_this$props11$onReset = _this$props11.onReset,
onReset = _this$props11$onReset === void 0 ? _noop["default"] : _this$props11$onReset;
var prefixCls = this.prefixCls;
var getConfig = this.context.getConfig;
var placeholder = fuzzyQueryPlaceholder || (0, _localeContext.$l)('Table', 'enter_search_content');
var searchText = dynamicFilterBar && dynamicFilterBar.searchText || getConfig('tableFilterSearchText') || 'params';
if (!fuzzyQuery) return null;
return /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-filter-search")
}, /*#__PURE__*/_react["default"].createElement(_textField["default"], {
style: {
width: 280
},
clearButton: true,
placeholder: placeholder,
prefix: /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: "search"
}),
value: dataSet.getState(SEARCHTEXT),
valueChangeAction: _enum3.ValueChangeAction.input,
waitType: _enum4.WaitType.debounce,
wait: 500,
onChange: function onChange(value, oldValue) {
_this10.handleQuery(undefined, value, oldValue);
dataSet.setState(SEARCHTEXT, value);
dataSet.setQueryParameter(searchText, value);
},
onClear: function onClear() {
(0, _mobx.runInAction)(function () {
dataSet.setState(SEARCHTEXT, '');
});
onReset();
}
}));
}
/**
* 渲染重置按钮
*/
}, {
key: "getResetButton",
value: function getResetButton() {
var _this11 = this;
var _this$props12 = this.props,
queryDataSet = _this$props12.queryDataSet,
dataSet = _this$props12.dataSet,
autoQueryAfterReset = _this$props12.autoQueryAfterReset,
_this$props12$onReset = _this$props12.onReset,
onReset = _this$props12$onReset === void 0 ? _noop["default"] : _this$props12$onReset;
var prefixCls = this.prefixCls;
return /*#__PURE__*/_react["default"].createElement("div", {
className: "".concat(prefixCls, "-filter-buttons")
}, dataSet.getState(CONDITIONSTATUS) === _enum2.RecordStatus.update && /*#__PURE__*/_react["default"].createElement(_button["default"], {
onClick: function onClick() {
var shouldQuery = false;
if (queryDataSet) {
var current = queryDataSet.current;
if (current) {
shouldQuery = !isEqualDynamicProps(_this11.originalValue, (0, _omit["default"])(current.toData(), ['__dirty']), queryDataSet, current);
current.reset();
dataSet.setState(SELECTFIELDS, (0, _toConsumableArray2["default"])(_this11.originalConditionFields));
}
}
_this11.setConditionStatus(_enum2.RecordStatus.sync);
onReset();
if (autoQueryAfterReset && shouldQuery) {
_this11.handleQuery();
}
}
}, (0, _localeContext.$l)('Table', 'reset_button')));
}
/**
* 筛选头
* fuzzyQuery + quickFilterMenu + resetButton + buttons
*/
}, {
key: "getFilter