choerodon-ui
Version:
An enterprise-class UI design language and React-based implementation
382 lines (307 loc) • 12.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"] = void 0;
var _regenerator = _interopRequireDefault(require("@babel/runtime/regenerator"));
var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends"));
var _asyncToGenerator2 = _interopRequireDefault(require("@babel/runtime/helpers/asyncToGenerator"));
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 _tslib = require("tslib");
var _react = _interopRequireWildcard(require("react"));
var _mobxReact = require("mobx-react");
var _mobx = require("mobx");
var _isFunction = _interopRequireDefault(require("lodash/isFunction"));
var _omit = _interopRequireDefault(require("lodash/omit"));
var _noop = _interopRequireDefault(require("lodash/noop"));
var _utils = require("../../../../lib/configure/utils");
var _icon = _interopRequireDefault(require("../../../../lib/icon"));
var _button = _interopRequireDefault(require("../../button"));
var _TableContext = _interopRequireDefault(require("../TableContext"));
var _enum = require("../../button/enum");
var _form = _interopRequireDefault(require("../../form"));
var _localeContext = require("../../locale-context");
var _autobind = _interopRequireDefault(require("../../_util/autobind"));
var _enum2 = require("../../form/enum");
var _isEmpty = _interopRequireDefault(require("../../_util/isEmpty"));
var _enum3 = require("../../table/enum");
var TableProfessionalBar = /*#__PURE__*/function (_Component) {
(0, _inherits2["default"])(TableProfessionalBar, _Component);
var _super = (0, _createSuper2["default"])(TableProfessionalBar);
function TableProfessionalBar() {
var _this;
(0, _classCallCheck2["default"])(this, TableProfessionalBar);
_this = _super.apply(this, arguments);
_this.openMore = function (fields) {
if (_this.moreFields && _this.moreFields.length) {
_this.moreFields = [];
} else {
_this.moreFields = fields;
}
return _this.moreFields;
};
return _this;
}
(0, _createClass2["default"])(TableProfessionalBar, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
var _this$props = this.props,
queryFieldsLimit = _this$props.queryFieldsLimit,
queryFields = _this$props.queryFields,
queryDataSet = _this$props.queryDataSet,
defaultExpanded = _this$props.defaultExpanded;
if (queryDataSet && queryFields.length && defaultExpanded) {
(0, _mobx.runInAction)(function () {
_this2.moreFields = _this2.createFields(queryFields.slice(queryFieldsLimit));
});
}
this.processDataSetListener(true);
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.processDataSetListener(false);
}
}, {
key: "processDataSetListener",
value: function processDataSetListener(flag) {
var queryDataSet = this.props.queryDataSet;
if (queryDataSet) {
var handler = flag ? queryDataSet.addEventListener : queryDataSet.removeEventListener;
handler.call(queryDataSet, 'validate', this.handleDataSetValidate);
}
}
/**
* queryDataSet 查询前校验事件 触发展开动态字段
* @param dataSet 查询DS
* @param result
*/
}, {
key: "handleDataSetValidate",
value: function () {
var _handleDataSetValidate = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee(_ref) {
var _this3 = this;
var result, _this$props2, queryFieldsLimit, queryFields, moreFields;
return _regenerator["default"].wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
result = _ref.result;
_this$props2 = this.props, queryFieldsLimit = _this$props2.queryFieldsLimit, queryFields = _this$props2.queryFields;
moreFields = this.createFields(queryFields.slice(queryFieldsLimit));
_context.next = 5;
return result;
case 5:
if (_context.sent) {
_context.next = 7;
break;
}
(0, _mobx.runInAction)(function () {
_this3.moreFields = moreFields;
});
case 7:
case "end":
return _context.stop();
}
}
}, _callee, this);
}));
function handleDataSetValidate(_x) {
return _handleDataSetValidate.apply(this, arguments);
}
return handleDataSetValidate;
}()
}, {
key: "handleFieldEnter",
value: function handleFieldEnter() {
this.handleQuery();
}
}, {
key: "handleQuery",
value: function () {
var _handleQuery = (0, _asyncToGenerator2["default"])( /*#__PURE__*/_regenerator["default"].mark(function _callee2(collapse) {
var _this$props3, dataSet, queryDataSet, _this$props3$onQuery, onQuery, current, queryData, data;
return _regenerator["default"].wrap(function _callee2$(_context2) {
while (1) {
switch (_context2.prev = _context2.next) {
case 0:
_this$props3 = this.props, dataSet = _this$props3.dataSet, queryDataSet = _this$props3.queryDataSet, _this$props3$onQuery = _this$props3.onQuery, onQuery = _this$props3$onQuery === void 0 ? _noop["default"] : _this$props3$onQuery;
_context2.t0 = queryDataSet;
if (!_context2.t0) {
_context2.next = 6;
break;
}
_context2.next = 5;
return queryDataSet.validate();
case 5:
_context2.t0 = _context2.sent;
case 6:
if (!_context2.t0) {
_context2.next = 15;
break;
}
_context2.next = 9;
return dataSet.query();
case 9:
if (collapse) {
_context2.next = 15;
break;
}
current = queryDataSet.current;
queryData = current ? (0, _omit["default"])(current.toData(true), ['__dirty']) : undefined;
data = queryData ? Object.keys(queryData).reduce(function (p, key) {
var value = queryData[key];
if (!(0, _isEmpty["default"])(value)) {
p[key] = value;
}
return p;
}, {}) : {};
_context2.next = 15;
return onQuery({
dataSet: dataSet,
queryDataSet: queryDataSet,
data: data
});
case 15:
case "end":
return _context2.stop();
}
}
}, _callee2, this);
}));
function handleQuery(_x2) {
return _handleQuery.apply(this, arguments);
}
return handleQuery;
}()
}, {
key: "getResetButton",
value: function getResetButton() {
var prefixCls = this.props.prefixCls;
return /*#__PURE__*/_react["default"].createElement(_button["default"], {
key: 'lov_reset_btn',
className: "".concat(prefixCls, "-professional-reset-btn"),
funcType: _enum.FuncType.raised,
onClick: this.handleQueryReset
}, (0, _localeContext.$l)('Table', 'reset_button'));
}
}, {
key: "getMoreFieldsButton",
value: function getMoreFieldsButton(fields) {
var _this4 = this;
var prefixCls = this.props.prefixCls;
if (fields.length) {
return /*#__PURE__*/_react["default"].createElement(_button["default"], {
className: "".concat(prefixCls, "-professional-query-more"),
funcType: _enum.FuncType.raised,
onClick: function onClick() {
return _this4.openMore(fields);
}
}, (0, _localeContext.$l)('Table', 'more'), this.moreFields && this.moreFields.length ? /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: 'expand_less'
}) : /*#__PURE__*/_react["default"].createElement(_icon["default"], {
type: 'expand_more'
}));
}
}
/**
* 注入 onEnterDown 事件
* @param elements
*/
}, {
key: "createFields",
value: function createFields(elements) {
var _this5 = this;
return elements.map(function (element) {
var onEnterDown = element.props.onEnterDown;
if (onEnterDown && (0, _isFunction["default"])(onEnterDown)) {
return element;
}
var props = {
onEnterDown: _this5.handleFieldEnter
};
return /*#__PURE__*/(0, _react.cloneElement)(element, props);
});
}
}, {
key: "getQueryBar",
value: function getQueryBar() {
var _this6 = this;
var _this$props4 = this.props,
prefixCls = _this$props4.prefixCls,
queryFieldsLimit = _this$props4.queryFieldsLimit,
queryFields = _this$props4.queryFields,
queryDataSet = _this$props4.queryDataSet,
queryFormProps = _this$props4.queryFormProps;
if (queryDataSet && queryFields.length) {
var currentFields = /*#__PURE__*/_react["default"].createElement(_form["default"], (0, _extends2["default"])({
dataSet: queryDataSet,
columns: queryFieldsLimit,
labelLayout: _enum2.LabelLayout.horizontal
}, queryFormProps), this.createFields(queryFields.slice(0, queryFieldsLimit)), this.moreFields);
var moreFields = this.createFields(queryFields.slice(queryFieldsLimit));
var moreFieldsButton = this.getMoreFieldsButton(moreFields);
return /*#__PURE__*/_react["default"].createElement("div", {
key: "query_bar",
className: "".concat(prefixCls, "-professional-query-bar")
}, currentFields, /*#__PURE__*/_react["default"].createElement("span", {
className: "".concat(prefixCls, "-professional-query-bar-button")
}, moreFieldsButton, this.getResetButton(), /*#__PURE__*/_react["default"].createElement(_button["default"], {
color: _enum.ButtonColor.primary,
wait: 500,
onClick: function onClick() {
return _this6.handleQuery();
}
}, (0, _localeContext.$l)('Table', 'query_button'))));
}
}
}, {
key: "handleQueryReset",
value: function handleQueryReset() {
var _this$props5 = this.props,
queryDataSet = _this$props5.queryDataSet,
_this$props5$onReset = _this$props5.onReset,
onReset = _this$props5$onReset === void 0 ? _noop["default"] : _this$props5$onReset;
if (queryDataSet) {
var current = queryDataSet.current;
if (current) {
current.reset();
onReset();
}
this.handleQuery(true);
}
}
}, {
key: "render",
value: function render() {
return this.getQueryBar();
}
}], [{
key: "contextType",
get: function get() {
return _TableContext["default"];
}
}]);
return TableProfessionalBar;
}(_react.Component);
TableProfessionalBar.defaultProps = {
prefixCls: (0, _utils.getProPrefixCls)('performance-table'),
queryFieldsLimit: 3
};
TableProfessionalBar.__TableQueryBarType = _enum3.TableQueryBarType.professionalBar;
(0, _tslib.__decorate)([_mobx.observable], TableProfessionalBar.prototype, "moreFields", void 0);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleDataSetValidate", null);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleFieldEnter", null);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleQuery", null);
(0, _tslib.__decorate)([_mobx.action], TableProfessionalBar.prototype, "openMore", void 0);
(0, _tslib.__decorate)([_autobind["default"]], TableProfessionalBar.prototype, "handleQueryReset", null);
TableProfessionalBar = (0, _tslib.__decorate)([_mobxReact.observer], TableProfessionalBar);
var _default = TableProfessionalBar;
exports["default"] = _default;
//# sourceMappingURL=TableProfessionalBar.js.map