choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
266 lines (215 loc) • 8.7 kB
JavaScript
import _extends from "@babel/runtime/helpers/extends";
import _objectSpread from "@babel/runtime/helpers/objectSpread2";
import _asyncToGenerator from "@babel/runtime/helpers/asyncToGenerator";
import _classCallCheck from "@babel/runtime/helpers/classCallCheck";
import _createClass from "@babel/runtime/helpers/createClass";
import _inherits from "@babel/runtime/helpers/inherits";
import _createSuper from "@babel/runtime/helpers/createSuper";
import _regeneratorRuntime from "@babel/runtime/regenerator";
import { __decorate } from "tslib";
import React, { cloneElement, Component, isValidElement } from 'react';
import { observer } from 'mobx-react';
import isObject from 'lodash/isObject';
import { TableQueryBarType } from '../Table';
import TableContext from '../TableContext';
import autobind from '../../_util/autobind';
import { getEditorByField, getPlaceholderByField } from '../../table/utils';
import TableProfessionalBar from './TableProfessionalBar';
import TableDynamicFilterBar from './TableDynamicFilterBar';
var PerformanceTableQueryBar = /*#__PURE__*/function (_Component) {
_inherits(PerformanceTableQueryBar, _Component);
var _super = _createSuper(PerformanceTableQueryBar);
function PerformanceTableQueryBar() {
_classCallCheck(this, PerformanceTableQueryBar);
return _super.apply(this, arguments);
}
_createClass(PerformanceTableQueryBar, [{
key: "handleQueryReset",
value: function handleQueryReset() {
var queryDataSet = this.context.tableStore.dataSet.queryDataSet;
if (queryDataSet) {
var current = queryDataSet.current;
if (current) {
current.reset();
}
this.handleQuery();
}
}
}, {
key: "handleQuery",
value: function () {
var _handleQuery = _asyncToGenerator( /*#__PURE__*/_regeneratorRuntime.mark(function _callee() {
var _this$context, tableStore, _this$context$tableSt, dataSet, queryDataSet;
return _regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
_this$context = this.context, tableStore = _this$context.tableStore, _this$context$tableSt = _this$context.tableStore, dataSet = _this$context$tableSt.dataSet, queryDataSet = _this$context$tableSt.dataSet.queryDataSet;
if (!(tableStore.queryBar === TableQueryBarType.filterBar)) {
_context.next = 19;
break;
}
_context.next = 4;
return dataSet.modifiedCheck(undefined, dataSet, 'query');
case 4:
_context.t2 = _context.sent;
if (!_context.t2) {
_context.next = 7;
break;
}
_context.t2 = queryDataSet;
case 7:
_context.t1 = _context.t2;
if (!_context.t1) {
_context.next = 10;
break;
}
_context.t1 = queryDataSet.current;
case 10:
_context.t0 = _context.t1;
if (!_context.t0) {
_context.next = 15;
break;
}
_context.next = 14;
return queryDataSet.current.validate();
case 14:
_context.t0 = _context.sent;
case 15:
if (!_context.t0) {
_context.next = 17;
break;
}
return _context.abrupt("return", dataSet.query());
case 17:
_context.next = 20;
break;
case 19:
return _context.abrupt("return", dataSet.query());
case 20:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function handleQuery() {
return _handleQuery.apply(this, arguments);
}
return handleQuery;
}()
}, {
key: "getQueryFields",
value: function getQueryFields() {
var _this$context$tableSt2 = this.context.tableStore,
dataSet = _this$context$tableSt2.dataSet,
_this$context$tableSt3 = _this$context$tableSt2.queryBar,
_this$context$tableSt4 = _this$context$tableSt3.queryFields,
queryFields = _this$context$tableSt4 === void 0 ? {} : _this$context$tableSt4,
type = _this$context$tableSt3.type;
var queryDataSet = dataSet.queryDataSet;
var result = [];
if (queryDataSet) {
var fields = queryDataSet.fields,
current = queryDataSet.current,
_queryDataSet$props$f = queryDataSet.props.fields,
propFields = _queryDataSet$props$f === void 0 ? [] : _queryDataSet$props$f;
var cloneFields = fields.toJS();
var processField = function processField(field, name) {
if (!field.get('bind', current) && !name.includes('__tls')) {
var element = queryFields[name];
var filterBarProps = {};
if (type === TableQueryBarType.filterBar) {
var placeholder = /*#__PURE__*/isValidElement(element) && element.props.placeholder ? element.props.placeholder : getPlaceholderByField(field, current);
filterBarProps = {
placeholder: placeholder,
border: false,
clearButton: true
};
}
var props = _objectSpread({
key: name,
name: name,
dataSet: queryDataSet,
isFlat: type === TableQueryBarType.filterBar
}, filterBarProps);
result.push( /*#__PURE__*/isValidElement(element) ? /*#__PURE__*/cloneElement(element, props) : /*#__PURE__*/cloneElement(getEditorByField(field, current, type !== TableQueryBarType.professionalBar, type === TableQueryBarType.filterBar), _objectSpread(_objectSpread({}, props), isObject(element) ? element : {})));
}
};
propFields.forEach(function (_ref) {
var name = _ref.name;
if (name) {
var field = cloneFields.get(name);
if (field) {
cloneFields["delete"](name);
processField(field, name);
}
}
});
cloneFields.forEach(function (field, name) {
processField(field, name);
});
}
return result;
}
}, {
key: "renderProfessionalBar",
value: function renderProfessionalBar(props) {
var prefixCls = this.context.tableStore.prefixCls;
return /*#__PURE__*/React.createElement(TableProfessionalBar, _extends({
key: "toolbar",
prefixCls: prefixCls
}, props));
}
}, {
key: "renderDynamicFilterBar",
value: function renderDynamicFilterBar(props) {
var prefixCls = this.context.tableStore.prefixCls; // @ts-ignore
return /*#__PURE__*/React.createElement(TableDynamicFilterBar, _extends({
key: "toolbar",
prefixCls: prefixCls
}, props));
}
}, {
key: "render",
value: function render() {
var _this$context$tableSt5 = this.context.tableStore,
queryBar = _this$context$tableSt5.queryBar,
dataSet = _this$context$tableSt5.dataSet;
if (dataSet) {
var queryFields = this.getQueryFields();
var queryDataSet = dataSet.queryDataSet;
var props = _objectSpread(_objectSpread({}, queryBar), {}, {
queryFields: queryFields,
queryDataSet: queryDataSet
});
if (typeof queryBar.renderer === 'function') {
return queryBar.renderer(props);
}
switch (queryBar.type) {
case TableQueryBarType.professionalBar:
return this.renderProfessionalBar(props);
case TableQueryBarType.filterBar:
return this.renderDynamicFilterBar(props);
default:
}
}
return null;
}
}], [{
key: "contextType",
get: function get() {
return TableContext;
}
}]);
return PerformanceTableQueryBar;
}(Component);
PerformanceTableQueryBar.displayName = 'PerformanceTableQueryBar';
PerformanceTableQueryBar.defaultProps = {
queryFieldsLimit: 3
};
__decorate([autobind], PerformanceTableQueryBar.prototype, "handleQueryReset", null);
__decorate([autobind], PerformanceTableQueryBar.prototype, "handleQuery", null);
PerformanceTableQueryBar = __decorate([observer], PerformanceTableQueryBar);
export default PerformanceTableQueryBar;
//# sourceMappingURL=index.js.map