ming-demo3
Version:
mdf metaui web
416 lines (361 loc) • 13.3 kB
JavaScript
"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