ming-demo1
Version:
mdf metaui web
767 lines (693 loc) • 26.3 kB
JavaScript
"use strict";
var _interopRequireWildcard = require("@babel/runtime/helpers/interopRequireWildcard");
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 _cloneDeep2 = _interopRequireDefault(require("lodash/cloneDeep"));
var _get2 = _interopRequireDefault(require("lodash/get"));
var _react = _interopRequireDefault(require("react"));
var _baseui = require("@mdf/baseui");
var BasicComponents = _interopRequireWildcard(require("../basic"));
var _FilterScheme = _interopRequireDefault(require("./FilterScheme"));
var _addEventListener = _interopRequireDefault(require("rc-util/lib/Dom/addEventListener"));
var _uuid = _interopRequireDefault(require("uuid"));
var _extend = require("@mdf/cube/lib/extend");
var Row, Col, Button, Label, Tag2, BasicComponentsMap;
var initComponents = function initComponents() {
var _tempBasicComponents = {};
process.env.__CLIENT__ == true && Object.assign(_tempBasicComponents, BasicComponents, _extend.extendComp.basic);
Row = _tempBasicComponents.Row;
Col = _tempBasicComponents.Col;
Button = _tempBasicComponents.Button;
Label = _tempBasicComponents.Label;
Tag2 = _tempBasicComponents.Tag2;
BasicComponentsMap = {};
for (var attr in _tempBasicComponents) {
BasicComponentsMap[attr.toLocaleLowerCase()] = _tempBasicComponents[attr];
}
return {
Row: Row,
Col: Col,
Button: Button,
Label: Label,
Tag2: Tag2,
BasicComponentsMap: BasicComponentsMap
};
};
var SimpleConvenientQuery = function (_React$Component) {
(0, _inherits2["default"])(SimpleConvenientQuery, _React$Component);
function SimpleConvenientQuery(props) {
var _this;
(0, _classCallCheck2["default"])(this, SimpleConvenientQuery);
_this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(SimpleConvenientQuery).call(this, props));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSchemeChange", function (solutionId) {
_this.vm.fireEvent('loadScheme', solutionId);
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "handleSchemeListChange", function (solutionList) {
_this.vm.setCache('schemeList', solutionList);
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "searchAfterValueChange", function () {
if (_this.props.handleClick) {
var cacheFilterData = _this.vm.collectData();
var vmparams = _this.props.model.getParams();
vmparams.cacheFilterData = cacheFilterData;
_this.props.handleClick(null);
} else {
_this.SearchEvent();
}
});
initComponents();
var params = props.model.getParams();
var filterId = props.config && props.config.filterid || params.filterId;
var cardKey = params.cardKey;
var Id = props.model.id;
var cStyle = props.cStyle && JSON.parse(props.cStyle) || {};
_this.bHideFilterScheme = cStyle.bHideFilterScheme || false;
console.log(filterId);
_this.state = {
filterId: filterId,
cardKey: cardKey,
modelId: Id,
schemeData: [],
current: '',
schemeName: '',
showMore: false,
popFlag: false,
filterModel: [],
tag2FilterCount: 0,
commonFilterCount: 0,
filterAreaCount: 0,
tag2InFirstRow: false,
cacheFilterData: {},
itemStates: {}
};
_this.showFields = new Array();
_this.filterModel_Tmp = [];
_this.state.isInPanel = params.isInPanel ? params.isInPanel : false;
_this.state.isInDesign = params.isInDesign ? params.isInDesign : false;
_this.state.panelType = params.panelType || 0;
_this.vm = cb.loader.initMetaCommonViewModel('FilterViewModel', 'filterViewModel', {
filterId: filterId,
domain: params.domain,
condition: params.condition,
cardKey: cardKey,
isInPanel: _this.state.isInPanel,
isInDesign: _this.state.isInDesign,
solutionId: params.solutionId,
viewid: (0, _get2["default"])(props.model.getParams(), 'query.viewid'),
bHasNullDate: props.model.getParams().bHasNullDate || false
}, _this.props.model, ['filterClick']);
_this._DocumentMouseDown = _this._DocumentMouseDown.bind((0, _assertThisInitialized2["default"])(_this));
_this.props.model.on('updateCondition', function (condition) {
if (!condition || !condition.commonVOs || !condition.commonVOs.length) return;
var flag = true;
_this.vm.setCache('condition', condition);
condition.commonVOs.forEach(function (a) {
var attr = a.itemName;
var itemModel = _this.vm.get(attr);
if (!itemModel) return;
itemModel.getFromModel().setValue(a.value1);
var ctrlType = itemModel.getState('ctrlType');
if (ctrlType && ctrlType.trim().toLocaleLowerCase() === 'tagbutton') flag = false;
});
if (flag) _this.SearchEvent();
});
_this.props.model.on('eChartPanel_GetCondition', function () {
_this.SearchEvent();
});
return _this;
}
(0, _createClass2["default"])(SimpleConvenientQuery, [{
key: "componentDidMount",
value: function componentDidMount() {
var _this2 = this;
if (this.vm) {
this.vm.addListener(this);
this.vm.on('updateViewMeta', function (args) {
var itemStates = _this2.state.itemStates;
itemStates[args.code] = {
visible: args.visible
};
_this2.setState({
itemStates: itemStates
});
});
}
this.mousedownHandler = (0, _addEventListener["default"])(document, 'mousedown', this._DocumentMouseDown);
var cacheFilterData = this.props.model ? this.props.model.getParams().cacheFilterData : {};
this.setState({
cacheFilterData: cacheFilterData
});
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {
this.props.model.execute('filterHeightUpdate');
}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {
this.vm.removeListener(this);
this.mousedownHandler.remove();
this.mousedownHandler = null;
}
}, {
key: "_DocumentMouseDown",
value: function _DocumentMouseDown(e) {
var p1 = cb.dom(event.target).parents('.filterSetting');
var p2 = cb.dom(event.target).parents('.ant-popover');
if (p1.length == 0 && p2.length == 0 && this.state.popFlag) {
this.setState({
popFlag: false
});
}
}
}, {
key: "initFilterFields",
value: function initFilterFields(args) {
var self = this;
var filterModel = [];
var cacheFilterData = this.state.cacheFilterData;
var CommonModel = args.filterDetail.CommonModel;
var AllFilterModel = args.filterDetail.AllFilterModel;
AllFilterModel.forEach(function (eleAll) {
CommonModel.forEach(function (eleCommon) {
if (eleAll.id && eleCommon.itemId && eleCommon.itemId == eleAll.id) {
var tmp = {};
Object.assign(tmp, eleAll, eleCommon);
filterModel.push(tmp);
}
}, this);
}, this);
this.vm.fireEvent('initFilterViewModel', {
filterModel: filterModel
});
for (var key in cacheFilterData) {
var model = this.vm.get(key);
var value = cacheFilterData[key];
if (model) {
if ((0, _typeof2["default"])(value) == 'object') {
var value1 = value.value1,
value2 = value.value2;
if (model.getFromModel()) model.getFromModel().setValue(value1);
if (model.getToModel()) model.getToModel().setValue(value2);
} else {
model.setValue(value);
}
}
}
this.setState({
schemeData: args.schemeData,
current: args.current,
schemeName: args.schemeName,
filterModel: filterModel.sort(function (a, b) {
return a.orderId - b.orderId;
})
});
}
}, {
key: "SaveSchemeEvent",
value: function SaveSchemeEvent(e) {
this.state.popFlag = false;
if (this.vm) {
var args = {};
args.schemeId = this.state.current;
args.filterModel = this.filterModel_Tmp;
args.filterId = this.vm.getParams().filterId;
args.isDefault = 0;
args.isPublic = 0;
args.solutionName = this.state.schemeName;
this.vm.get('save').fireEvent('click', args);
}
}
}, {
key: "SearchEvent",
value: function SearchEvent() {
if (this.vm) {
this.vm.fireEvent('searchEvent', {
model: this.props.model,
solutionid: this.state.current
});
this.vm.get('search').fireEvent('click', {
model: this.props.model,
solutionid: this.state.current
});
}
}
}, {
key: "buttonClick",
value: function buttonClick(e, type) {
if (type == 'search') {
if (this.props.handleClick) {
var cacheFilterData = this.vm.collectData();
var vmparams = this.props.model.getParams();
vmparams.cacheFilterData = cacheFilterData;
this.props.handleClick(null);
} else {
this.SearchEvent();
}
} else {
var showMore = false;
if (type == 'more') showMore = true;
this.setState({
showMore: showMore
});
}
}
}, {
key: "showPopClick",
value: function showPopClick() {
this.filterModel_Tmp = (0, _cloneDeep2["default"])(this.state.filterModel);
this.setState({
popFlag: !this.state.popFlag
});
}
}, {
key: "onMouseEnter",
value: function onMouseEnter(e, index) {
this.filterModel_Tmp[index].bShowUpDown = true;
this.setState({
popFlag: this.state.popFlag
});
}
}, {
key: "onMouseLeave",
value: function onMouseLeave(e, index) {
this.filterModel_Tmp.forEach(function (ele) {
ele.bShowUpDown = false;
});
this.setState({
popFlag: this.state.popFlag
});
}
}, {
key: "onChecked",
value: function onChecked(e, element, index) {
var checked = e.target.checked;
var num = 0;
if (checked == false) {
this.filterModel_Tmp.forEach(function (element, index) {
if (element.isCommon == true) {
num = num + 1;
}
});
if (num > 1) this.filterModel_Tmp[index].isCommon = checked;
} else {
this.filterModel_Tmp[index].isCommon = checked;
}
}
}, {
key: "sortClick",
value: function sortClick(type, index) {
var maxLen = this.filterModel_Tmp.length - 1;
var pre = cb.utils.extend(true, {}, this.filterModel_Tmp[index - 1]);
var next = cb.utils.extend(true, {}, this.filterModel_Tmp[index + 1]);
var now = cb.utils.extend(true, {}, this.filterModel_Tmp[index]);
if (type == 'up') {
if (index != 0) {
var orderId = pre.orderId;
pre.orderId = now.orderId;
now.orderId = orderId;
this.filterModel_Tmp[index] = pre;
this.filterModel_Tmp[index - 1] = now;
}
} else {
if (index < maxLen) {
var _orderId = next.orderId;
next.orderId = now.orderId;
now.orderId = _orderId;
this.filterModel_Tmp[index] = next;
this.filterModel_Tmp[index + 1] = now;
}
}
this.setState();
}
}, {
key: "cancelClick",
value: function cancelClick(type) {
this.setState({
popFlag: false
});
}
}, {
key: "getFilterContent",
value: function getFilterContent() {
var _this4 = this;
var filterContent = [];
this.filterModel_Tmp.forEach(function (element, index) {
var _this3 = this;
var item;
var bShowUpDown = element.bShowUpDown ? element.bShowUpDown : false;
var isCommon = element.isCommon;
item = bShowUpDown ? _react["default"].createElement(Row, {
style: {
minHeight: "25px"
},
onMouseEnter: function onMouseEnter(e) {
return _this3.onMouseEnter(e, index);
},
onMouseLeave: function onMouseLeave(e) {
return _this3.onMouseLeave(e, index);
}
}, _react["default"].createElement("div", {
className: "pull-left",
title: element.cShowCaption
}, _react["default"].createElement(_baseui.Checkbox, {
checked: isCommon,
onChange: function onChange(e) {
return _this3.onChecked(e, element, index);
}
}, element.cShowCaption)), _react["default"].createElement("div", {
className: "pull-right"
}, _react["default"].createElement(Button, {
style: {
borderWidth: 0
},
icon: "arrow-up",
onClick: function onClick() {
return _this3.sortClick('up', index);
}
}), _react["default"].createElement(Button, {
style: {
borderWidth: 0
},
icon: "arrow-down",
onClick: function onClick() {
return _this3.sortClick('down', index);
}
}))) : _react["default"].createElement(Row, {
style: {
minHeight: "25px"
},
onMouseEnter: function onMouseEnter(e) {
return _this3.onMouseEnter(e, index);
},
onMouseLeave: function onMouseLeave(e) {
return _this3.onMouseLeave(e, index);
}
}, _react["default"].createElement("div", {
className: "pull-left",
title: element.cShowCaption
}, _react["default"].createElement(_baseui.Checkbox, {
checked: isCommon,
onChange: function onChange(e) {
return _this3.onChecked(e, element, index);
}
}, element.cShowCaption)), _react["default"].createElement("div", {
className: "pull-right"
}));
filterContent.push(item);
}, this);
var buttonClass = 'filter-btn-fixed';
return _react["default"].createElement("div", {
className: buttonClass,
style: {
overflow: "auto",
height: "250px"
}
}, _react["default"].createElement("div", {
className: "filter-txt"
}, filterContent), _react["default"].createElement("div", {
className: "filter-btn-1"
}, _react["default"].createElement(Button, {
type: "primary",
onClick: function onClick() {
return _this4.SaveSchemeEvent('save');
}
}, "\u4FDD\u5B58"), _react["default"].createElement(Button, {
type: "default",
onClick: function onClick() {
return _this4.cancelClick('cancel');
}
}, "\u53D6\u6D88")));
}
}, {
key: "checkTagAndFilterInfo",
value: function checkTagAndFilterInfo() {
this.state.tag2FilterCount = 0;
this.state.commonFilterCount = 0;
this.state.filterModel.forEach(function (ele, index) {
if (ele.isCommon == 1 || ele.isCommon == true) {
if (ele.ctrlType.toLocaleLowerCase() == "tagbutton" && ele.autoFlt == true) {
this.state.tag2FilterCount = this.state.tag2FilterCount + 1;
} else {
this.state.commonFilterCount = this.state.commonFilterCount + 1;
}
}
}, this);
}
}, {
key: "render",
value: function render() {
var _this5 = this;
this.checkTagAndFilterInfo();
var tag2FilterCount = this.state.tag2FilterCount;
var commonFilterCount = this.state.commonFilterCount;
var controls = [];
var showMore = this.state.showMore;
if (commonFilterCount > 0 || tag2FilterCount > 0) {
var tmpShowMoreStr = showMore ? _react["default"].createElement(Button, {
style: {
borderWidth: 0
},
className: "showMore",
type: "ghost",
size: "small",
onClick: function onClick(e) {
return _this5.buttonClick(e, '');
}
}, _react["default"].createElement(_baseui.Icon, {
type: "up-circle"
})) : _react["default"].createElement(Button, {
style: {
borderWidth: 0
},
className: "showMore",
type: "ghost",
size: "small",
onClick: function onClick(e) {
return _this5.buttonClick(e, 'more');
}
}, _react["default"].createElement(_baseui.Icon, {
type: "down-circle"
}));
controls = this.getControls(tmpShowMoreStr);
}
var rowNum = this.props.cols ? this.props.cols : 3;
return _react["default"].createElement(Row, {
className: "".concat(this.props.config && this.props.config.classname, " ").concat(this.props.autoExpand === false && 'voucher-filter', " title-query-section")
}, _react["default"].createElement(Col, {
className: "filter-controls"
}, _react["default"].createElement("div", null, _react["default"].createElement(Row, {
colCount: rowNum,
className: "title-query-container"
}, controls))));
}
}, {
key: "parseControls",
value: function parseControls(filterItems, viewModel) {
var _this6 = this;
var relatedFields = [],
relatedControls = {},
controls = [];
filterItems.forEach(function (control) {
if (!control.extendField) return;
try {
var config = JSON.parse(control.extendField);
var related = config.related;
if (!related) return;
if (!control.related) {
control.related = related;
control.config = config;
}
if (cb.utils.isArray(related)) {
related.forEach(function (item) {
relatedFields.push(item);
});
} else {
relatedFields.push(related);
}
} catch (e) {}
});
var itemStates = this.state.itemStates;
filterItems.forEach(function (control) {
if (itemStates[control.itemName] && itemStates[control.itemName].visible === false) return;
var index = relatedFields.indexOf(control.itemName);
if (index > -1) {
relatedControls[control.itemName] = _this6.getControl(control, viewModel.get(control.itemName), control.config);
} else {
controls.push(control);
}
});
return {
controls: controls,
relatedControls: relatedControls
};
}
}, {
key: "getControls",
value: function getControls(tmpShowMoreStr) {
var controls = [];
var control, filterVMField;
var tmp_FilterAreaCount = 0;
var cur_FilterAreaCount = 0;
var cur_Tag2InFirstRow = false;
var rowNum = this.props.cols ? this.props.cols : 3;
var filterObj = this.parseControls(this.state.filterModel, this.vm);
filterObj.controls.forEach(function (ele, index) {
var ctrlType = ele.ctrlType.trim().toLocaleLowerCase();
if (ele.isCommon == 1 || ele.isCommon == true) {
control = undefined;
var config = null;
try {
config = JSON.parse(ele.extendField);
} catch (e) {
config = {};
}
var related = ele.related;
var relatedControl = [];
if (related) {
if (cb.utils.isArray(related)) {
related.forEach(function (item) {
relatedControl.push(filterObj.relatedControls[item]);
});
} else {
relatedControl.push(filterObj.relatedControls[related]);
}
}
if (!relatedControl.length) relatedControl = null;
if (ctrlType === 'tagbutton') {
cur_FilterAreaCount = config.cols || rowNum;
tmp_FilterAreaCount = tmp_FilterAreaCount + cur_FilterAreaCount;
if (tmp_FilterAreaCount === rowNum) {
cur_Tag2InFirstRow = true;
}
filterVMField = this.vm.get(ele.itemName);
var fromModel = filterVMField.getFromModel();
control = _react["default"].createElement(Row, {
key: ele.itemName
}, _react["default"].createElement(Col, null, _react["default"].createElement(Tag2, {
TagTitle: ele.cShowCaption,
TagData: ele.enumString,
TagCanMultSel: ele.multSelect == 0 ? false : true,
TagClicked: this.Tag2Clicked,
model: fromModel,
relatedControl: relatedControl
})));
} else if (ctrlType === 'predicatedatepicker') {
cur_FilterAreaCount = rowNum;
tmp_FilterAreaCount += cur_FilterAreaCount;
var ComName = BasicComponentsMap[ctrlType];
var model = this.vm.get(ele.itemName).getFromModel();
control = _react["default"].createElement(Row, {
key: ele.itemName
}, _react["default"].createElement(ComName, {
model: model,
isInPanel: this.state.isInPanel,
isInDesign: this.state.isInDesign,
panelType: this.state.panelType,
cShowCaption: ele.cShowCaption,
isInFilterJSX: true
}));
} else {
cur_FilterAreaCount = 1;
tmp_FilterAreaCount = tmp_FilterAreaCount + cur_FilterAreaCount;
filterVMField = this.vm.get(ele.itemName);
if (!!filterVMField) control = this.getControl(ele, filterVMField, config);
}
if (control) {
var tmpClassName = "";
var tmp;
if (this.state.panelType == 3 && controls.length == 0) {
tmpClassName = "UpDown_Location";
tmp = tmpShowMoreStr;
}
if (this.state.showMore || this.props.autoExpand) {
controls.push(_react["default"].createElement(Col, {
key: ele.itemName,
span: cur_FilterAreaCount,
className: tmpClassName
}, control, tmp));
} else {
if (tmp_FilterAreaCount <= rowNum) {
controls.push(_react["default"].createElement(Col, {
key: ele.itemName,
span: cur_FilterAreaCount,
className: tmpClassName
}, control, tmp));
}
}
}
}
}, this);
this.state.filterAreaCount = tmp_FilterAreaCount;
this.state.tag2InFirstRow = cur_Tag2InFirstRow;
return controls;
}
}, {
key: "getComponent",
value: function getComponent(ComName, model, config, ctrlType, cShowCaption, id, type) {
return ComName ? _react["default"].createElement(ComName, (0, _extends2["default"])({
key: id,
model: model,
pageModel: this.props.model,
filterViewModel: this.vm,
title: cShowCaption,
isInFilterJSX: true,
placeholder: cShowCaption,
type: type,
searchAfterValueChange: this.searchAfterValueChange
}, config)) : _react["default"].createElement("h1", null, ctrlType);
}
}, {
key: "getControl",
value: function getControl(ele, filterVMField, config) {
var compareLogic = ele.compareLogic;
var fromModel = filterVMField.getFromDisplayModel() || filterVMField.getFromModel();
var toModel = filterVMField.getToModel();
var ctrlType;
if (ele.ctrlType) ctrlType = ele.ctrlType.trim().toLocaleLowerCase();else ctrlType = "input";
var ComName = BasicComponentsMap[ctrlType];
var control;
if (compareLogic === 'between') {
control = _react["default"].createElement("div", {
className: "Test-time-two"
}, _react["default"].createElement(Col, {
span: 11
}, this.getComponent(ComName, fromModel, config, ctrlType, 'formModel' + ele.id)), _react["default"].createElement(Col, {
span: 2,
className: "sp-range-txt"
}, _react["default"].createElement("span", null, "\u81F3")), _react["default"].createElement(Col, {
span: 11
}, this.getComponent(ComName, toModel, config, ctrlType, 'toModel' + ele.id)));
} else {
if (ctrlType == 'checkbox') {
control = this.getComponent(ComName, fromModel, config, ctrlType, ele.cShowCaption, 'formModel' + ele.id, 'simple');
} else {
control = this.getComponent(ComName, fromModel, config, ctrlType, ele.cShowCaption, 'formModel' + ele.id);
}
}
var title = ele.mustInput ? _react["default"].createElement("label", null, _react["default"].createElement(_baseui.Icon, {
type: "star"
}), ele.cShowCaption) : ele.cShowCaption;
return _react["default"].createElement("div", {
className: "filter-hide"
}, control);
}
}]);
return SimpleConvenientQuery;
}(_react["default"].Component);
exports["default"] = SimpleConvenientQuery;
;
//# sourceMappingURL=index.js.map