UNPKG

ming-demo3

Version:
416 lines (361 loc) 13.3 kB
"use strict"; var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault"); Object.defineProperty(exports, "__esModule", { value: true }); exports["default"] = void 0; var _extends2 = _interopRequireDefault(require("@babel/runtime/helpers/extends")); var _typeof2 = _interopRequireDefault(require("@babel/runtime/helpers/typeof")); var _classCallCheck2 = _interopRequireDefault(require("@babel/runtime/helpers/classCallCheck")); var _createClass2 = _interopRequireDefault(require("@babel/runtime/helpers/createClass")); var _possibleConstructorReturn2 = _interopRequireDefault(require("@babel/runtime/helpers/possibleConstructorReturn")); var _getPrototypeOf2 = _interopRequireDefault(require("@babel/runtime/helpers/getPrototypeOf")); var _assertThisInitialized2 = _interopRequireDefault(require("@babel/runtime/helpers/assertThisInitialized")); var _inherits2 = _interopRequireDefault(require("@babel/runtime/helpers/inherits")); var _defineProperty2 = _interopRequireDefault(require("@babel/runtime/helpers/defineProperty")); var _react = _interopRequireDefault(require("react")); var _baseui = require("@mdf/baseui"); var _basic = require("../basic"); var _SvgIcon = _interopRequireDefault(require("@mdf/metaui-web/lib/components/common/SvgIcon")); var SearchBox = _baseui.Input.Search; var GridFilterModel = function (_React$Component) { (0, _inherits2["default"])(GridFilterModel, _React$Component); function GridFilterModel(props) { var _this; (0, _classCallCheck2["default"])(this, GridFilterModel); _this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(GridFilterModel).call(this, props)); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getStringLength", function (str) { if (!str) str = ''; var realLength = 0, len = str.length, charCode = -1; for (var i = 0; i < len; i++) { charCode = str.charCodeAt(i); if (charCode >= 0 && charCode <= 128) { realLength += 1; } else { realLength += 2; } } return realLength; }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) { _this.setState({ "lookUpValue": e.target.value }); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onSearch", function (value, type) { var _this$props = _this.props, data = _this$props.data, attr = _this$props.attr, lookUpRow = _this$props.lookUpRow; if (_this.props.onLookUpChange) { _this.props.onLookUpChange(value, type, attr); return; } if (cb.utils.isEmpty(value)) value = null; var indexes = []; if (!data || data.length == 0) return; for (var i = 0; i < data.length; i++) { var row = data[i]; var val = row[attr]; var text = val; if ((0, _typeof2["default"])(val) == 'object') { text = val.text; } if (!cb.utils.isEmpty(text)) { if (text.toString().indexOf(value) != -1) { indexes.push(i); } } } if (indexes.length == 0) { _this.props.moveLookUpRow([], -1, ''); cb.utils.alert('未搜索到匹配的行!', 'error'); return; } var index = indexes.indexOf(lookUpRow); if (index == -1) { lookUpRow = indexes[0]; index = 0; } if (type == 'up' && index != 0) lookUpRow = indexes[index - 1]; if (type == 'down' && index != indexes.length - 1) lookUpRow = indexes[index + 1]; var cItemName = _this.props.Column.cItemName; _this.props.moveLookUpRow(indexes, lookUpRow, cItemName); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onVisibleChange", function (visible) { var obj = { "lookUp_visible": visible }; if (!visible) { obj.showSort = false; if (cb.utils.isEmpty(_this.state.lookUpValue)) { if (_this.props.moveLookUpRow) _this.props.moveLookUpRow([], -1); obj.showLookUp = false; } } _this.setState(obj); }); (0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "getLookUpControl", function () { var content = _react["default"].createElement("div", { className: "grid-header-" }, _react["default"].createElement(SearchBox, { value: _this.state.lookUpValue, onChange: _this.onChange, placeholder: "\u8BF7\u8F93\u5165\u5B9A\u4F4D\u5185\u5BB9", onSearch: _this.onSearch }), _react["default"].createElement(_SvgIcon["default"], { type: "shangyitiao-copy", onClick: function onClick() { return _this.onSearch(_this.state.lookUpValue, 'up'); } }), _react["default"].createElement(_SvgIcon["default"], { type: "xiayitiao-copy", onClick: function onClick() { return _this.onSearch(_this.state.lookUpValue, 'down'); } }), _react["default"].createElement(_SvgIcon["default"], { type: "guanbi1", onClick: function onClick() { return _this.onVisibleChange(false); } })); return _react["default"].createElement(_baseui.Popover, { overlayClassName: "lookup-pop", onVisibleChange: _this.onVisibleChange, trigger: 'click', visible: _this.state.lookUp_visible, content: content, placement: "top", arrowPointAtCenter: true }, _react["default"].createElement(_SvgIcon["default"], { type: _this.state.bLookUp ? "shaixuan1-copy" : "shaixuan1" })); }); _this.state = { showSort: false, lookUp_visible: false, showLookUp: false, showlock: false, lookUpValue: "", bSort: false, bLookUp: false }; _this.sorttext = ''; return _this; } (0, _createClass2["default"])(GridFilterModel, [{ key: "componentWillReceiveProps", value: function componentWillReceiveProps(nextProps) { var Column = nextProps.Column, sortColumn = nextProps.sortColumn, lookUpKey = nextProps.lookUpKey, lockstate = nextProps.lockstate; var bSort = sortColumn == Column.cItemName ? true : false; var bLookUp = lookUpKey == Column.cItemName ? true : false; this.setState({ bSort: bSort, bLookUp: bLookUp }); } }, { key: "onMouseEnter", value: function onMouseEnter(e) { var fixedtableState = this.props.fixedtable ? this.props.fixedtable.state : null; if (fixedtableState && fixedtableState.isColumnResizing) return; this.setState({ showSort: true, showLookUp: true, showlock: true }); } }, { key: "onMouseLeave", value: function onMouseLeave(e) { var fixedtableState = this.props.fixedtable ? this.props.fixedtable.state : null; if (fixedtableState && fixedtableState.isColumnResizing) return; var obj = { showSort: this.state.showSort, showLookUp: this.state.showLookUp, showlock: false }; if (!this.state.bSort) obj.showSort = false; if (!this.state.bLookUp && !this.state.lookUp_visible) obj.showLookUp = false; this.setState(obj); } }, { key: "filterClick", value: function filterClick(key) { if (!this.props.readOnly) return; var filterdata = { sort: '', key: key, search: '', filter: [] }; var cItemName = this.props.Column.cItemName; if (key === 'ASC') { this.sorttext = 'DESC'; filterdata.sort = 'DESC'; } else if (key == 'DESC') { this.sorttext = 'ASC'; filterdata.sort = 'ASC'; } else { if (this.sorttext == 'DESC') { this.sorttext = 'ASC'; filterdata.sort = 'ASC'; } else if (this.sorttext == '' || this.sorttext == 'init') { this.sorttext = 'DESC'; filterdata.sort = 'DESC'; } else { this.sorttext = 'init'; filterdata.sort = 'init'; cItemName = ""; } } this.props.onSortChange(cItemName); this.props.model.setFilter(this.props.attr, this.props.Column, filterdata); } }, { key: "Sort", value: function Sort() { var _this2 = this; if (!this.props.readOnly) return null; var upClass = '', downClass = ''; if (this.sorttext == 'DESC') { upClass = 'ant-btn-icon-active'; } if (this.sorttext == 'ASC') { downClass = 'ant-btn-icon-active'; } if ((this.state.bSort || this.state.showSort) && !this.props.unSort) return _react["default"].createElement("div", { className: "btn-caret" }, _react["default"].createElement(_basic.Button, { className: upClass, style: { borderWidth: 0 }, type: "ghost", icon: "caret-up", onClick: function onClick() { return _this2.filterClick('ASC'); } }), _react["default"].createElement(_basic.Button, { className: downClass, style: { borderWidth: 0 }, type: "ghost", icon: "caret-down", onClick: function onClick() { return _this2.filterClick('DESC'); } }));else return null; } }, { key: "lockChang", value: function lockChang() { var _this3 = this; if (this.props.lockfixed && this.state.showlock) { return _react["default"].createElement(_SvgIcon["default"], { type: "dongjie", onClick: function onClick() { return _this3.unlockClick(); } }); } if (!this.props.lockfixed && this.state.showlock) return _react["default"].createElement(_SvgIcon["default"], { type: "weidongjie", onClick: function onClick() { return _this3.lockClick(); } }); } }, { key: "lockClick", value: function lockClick() { var self = this; var unlockstate = true; var cItemName = self.props.Column.cItemName; self.props.onlockChange(cItemName, unlockstate); } }, { key: "unlockClick", value: function unlockClick() { var self = this; var unlockstate = false; var cItemName = self.props.Column.cItemName; self.props.onlockChange(cItemName, unlockstate); } }, { key: "render", value: function render() { var _this4 = this; var control, _this$props2 = this.props, Column = _this$props2.Column, align = _this$props2.align; var Sort = this.props.multiSort && this.props.tableClass != 'rptTable' ? this.Sort() : null; var lock = this.lockChang(); var lookUpControl = this.state.showLookUp ? this.getLookUpControl() : null; var bIsNull = Column.bIsNull; var id = Column.index; var textColWidth = this.props.width - 25; var nameLen = this.getStringLength(this.props.name); if (textColWidth > nameLen * 6.5) { textColWidth = nameLen * 6.5; if (bIsNull == false && !this.props.readOnly) textColWidth += 9; } var headerName = this.props.name; if (!bIsNull && this.props.readOnly != true) { headerName = _react["default"].createElement("div", null, _react["default"].createElement("span", { className: "headerNameTips" }, "* "), this.props.name); } var spanPro = {}; if (!this.props.unSort) { spanPro.onClick = function () { return _this4.filterClick(''); }; } if (align == 'right') control = _react["default"].createElement("div", { className: "yxy_table_head_align_right", style: { textAlign: 'left', width: this.props.width, display: "flex" }, onMouseEnter: function onMouseEnter(e) { return _this4.onMouseEnter(e); }, onMouseLeave: function onMouseLeave(e) { return _this4.onMouseLeave(e); }, id: id }, lock, lookUpControl, Sort, _react["default"].createElement("span", (0, _extends2["default"])({}, spanPro, { className: "textCol table-header-name sort-header" }), headerName));else control = _react["default"].createElement("div", { style: { textAlign: 'left', width: this.props.width, display: "flex" }, onMouseEnter: function onMouseEnter(e) { return _this4.onMouseEnter(e); }, onMouseLeave: function onMouseLeave(e) { return _this4.onMouseLeave(e); }, id: id }, _react["default"].createElement("span", (0, _extends2["default"])({}, spanPro, { className: "textCol table-header-name sort-header" }), headerName), Sort, lookUpControl, lock); return control; } }]); return GridFilterModel; }(_react["default"].Component); exports["default"] = GridFilterModel; //# sourceMappingURL=GridFilterModel.js.map