ming-demo3
Version:
mdf metaui web
340 lines (284 loc) • 10.9 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"] = exports.DimensionNavTreeControl = void 0;
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 eChartCommon = _interopRequireWildcard(require("../echart/eChartCommon"));
var _util = require("@mdf/cube/lib/helpers/util");
var Search = _baseui.Input.Search;
var TreeNode = _baseui.Tree.TreeNode;
var DimensionNavTreeControl = function (_React$Component) {
(0, _inherits2["default"])(DimensionNavTreeControl, _React$Component);
function DimensionNavTreeControl(props) {
var _this;
(0, _classCallCheck2["default"])(this, DimensionNavTreeControl);
_this = (0, _possibleConstructorReturn2["default"])(this, (0, _getPrototypeOf2["default"])(DimensionNavTreeControl).call(this, props));
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onExpand", function (expandedKeys, e) {
_this.expandedKeys = expandedKeys;
if (e) {
_this.setState({
autoExpandParent: false
});
} else {
_this.setState({
autoExpandParent: true
});
}
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onChange", function (e) {
var value = e.target.value;
var expandedKeys = [];
if (value != "") {
_this.getExpandedKeys(_this.state.treeData.recordList, value, expandedKeys);
}
_this.expandedKeys = expandedKeys;
_this.setState({
searchValue: value,
autoExpandParent: true
});
});
(0, _defineProperty2["default"])((0, _assertThisInitialized2["default"])(_this), "onFilterClick", function (params) {
if (!params.bFromNav && _this.state.firstQueryDone) {
_this.state.condition = params.condition;
_this.getData();
}
});
_this.state = {
billnum: props.viewModel.getParams().billNo || "ct_costdetail",
searchValue: '',
autoExpandParent: true,
treeData: {},
firstQueryDone: false
};
_this.expandedKeys = [];
_this.selectedKeys = [];
_this.bSetDefaultOpenEle = false;
_this.TreeHeadKey = "all";
_this.dimensionId = undefined;
_this.defaultOpenEle = undefined;
return _this;
}
(0, _createClass2["default"])(DimensionNavTreeControl, [{
key: "doProxy",
value: function doProxy(url, method, params, callback, noUniform) {
var config = {
url: url,
method: method,
params: params
};
if (noUniform) {
config.options = {
uniform: false
};
}
(0, _util.proxy)(config).then(function (json) {
callback(json);
});
}
}, {
key: "getData",
value: function getData() {
var _this2 = this;
var self = this;
if (this.dimensionId) {
var callback = function callback(json) {
if (json.code === 200) {
if (json.data && json.data.recordList && json.data.recordList.length > 0) {
self.bSetDefaultOpenEle = true;
self.setState({
treeData: json.data
});
} else {
self.setState({
treeData: []
});
_this2.filterViewModel.execute('navClick', {});
}
}
};
self.doProxy('/report/list', 'POST', {
billnum: this.state.billnum,
condition: self.state.condition,
dimensionId: this.dimensionId
}, callback);
}
}
}, {
key: "getTitle",
value: function getTitle(navKey, title) {
var searchValue = this.state.searchValue;
if (searchValue != "") {
var index = title.indexOf(searchValue);
var beforeStr = title.substr(0, index);
var afterStr = title.substr(index + searchValue.length);
if (index > -1) {
return _react["default"].createElement("span", null, beforeStr, _react["default"].createElement("span", {
style: {
color: '#f50'
}
}, searchValue), afterStr);
} else {
if (this.expandedKeys.indexOf(navKey) >= 0) return _react["default"].createElement("span", null, title);else return undefined;
}
}
return _react["default"].createElement("span", null, title);
}
}, {
key: "getTreeNodes",
value: function getTreeNodes(recordList, parentFilter, parentKey, parentKeys) {
var _this3 = this;
var self = this;
if (parentKey == this.TreeHeadKey) {
this.defaultEle = undefined;
}
var treeNodes;
if (recordList && recordList.length > 0) {
treeNodes = [];
recordList.forEach(function (ele) {
var filter = _.cloneDeep(parentFilter);
ele.field && ele.field.forEach(function (item, index) {
if (ele.caption[index] != "null") filter[item] = ele.caption[index];
});
if (!ele.navKey) {
ele.navKey = "navKey_" + Math.random().toString().replace(".", "");
ele.parentKey = parentKey;
ele.parentKeys = parentKeys;
ele.joinedCaption = ele.caption && ele.caption.join("_");
ele.joinedCaption = ele.joinedCaption || "空分组项";
ele.filter = filter;
}
if (ele.joinedCaption) {
if (!self.defaultEle) {
self.defaultEle = ele;
} else if (ele.parentKey == self.defaultEle.navKey) {
self.defaultEle = ele;
}
var title = _this3.getTitle(ele.navKey, ele.joinedCaption);
if (title) {
var childrenNodes = undefined;
ele.bLeaf = true;
if (ele.children && ele.children.length > 0) {
ele.bLeaf = false;
childrenNodes = _this3.getTreeNodes(ele.children, filter, ele.navKey, parentKeys + "," + ele.navKey);
}
treeNodes.push(_react["default"].createElement(TreeNode, {
title: title,
key: ele.navKey,
filter: filter,
ele: ele
}, childrenNodes));
}
} else {
eChartCommon.LogChartInfo("维度导航树 查询返回的数据存在空树节点。行数据 ", JSON.stringify(ele), 999);
}
});
}
return treeNodes;
}
}, {
key: "onSelect",
value: function onSelect(selectedKeys, e) {
var bExecute = true;
if (this.props.viewModel.hasEvent("DimensionNavTreeClicked")) {
bExecute = this.props.viewModel.execute('DimensionNavTreeClicked', e.node.props.ele);
}
if (bExecute) {
eChartCommon.LogChartInfo("维度导航树 选择点的过滤项目 ", JSON.stringify(e.node.props.filter), 901);
this.selectedKeys = selectedKeys;
this.forceUpdate();
this.filterViewModel.execute('navClick', e.node && e.node.props.filter || {});
}
return bExecute;
}
}, {
key: "getExpandedKeys",
value: function getExpandedKeys(recordList, value, expandedKeys) {
var _this4 = this;
if (recordList && recordList.length > 0) {
recordList.forEach(function (ele) {
if (ele.joinedCaption.indexOf(value) > -1) {
if (expandedKeys.indexOf(ele.parentKey) == -1) expandedKeys.push(ele.parentKey);
}
if (ele.children && ele.children.length > 0) {
_this4.getExpandedKeys(ele.children, value, expandedKeys);
}
});
}
}
}, {
key: "render",
value: function render() {
var _this5 = this;
var treeNodes = this.getTreeNodes(this.state.treeData.recordList, {}, this.TreeHeadKey, this.TreeHeadKey);
if (this.bSetDefaultOpenEle == true) {
if (this.defaultEle) {
this.expandedKeys = this.defaultEle.parentKeys.split(",") || [];
this.selectedKeys = [this.defaultEle.navKey];
this.filterViewModel.execute('navClick', this.defaultEle.filter || {});
}
this.bSetDefaultOpenEle = false;
}
return _react["default"].createElement("div", null, _react["default"].createElement(Search, {
style: {
marginBottom: 5
},
placeholder: "Search",
onChange: this.onChange
}), _react["default"].createElement(_baseui.Tree, {
onSelect: function onSelect(selectedKeys, e) {
return _this5.onSelect(selectedKeys, e);
},
onExpand: this.onExpand,
expandedKeys: this.expandedKeys,
autoExpandParent: this.state.autoExpandParent,
selectedKeys: this.selectedKeys
}, _react["default"].createElement(TreeNode, {
title: "\u5168\u90E8\u7C7B\u522B",
key: this.TreeHeadKey
}, treeNodes)));
}
}, {
key: "componentDidMount",
value: function componentDidMount() {
var self = this;
var viewModel = self.props.viewModel;
viewModel.on("filterClick", self.onFilterClick);
viewModel.on('firstQueryDone', function (params) {
self.state.firstQueryDone = params;
});
viewModel.on('dimensionChanged', function (params) {
self.dimensionId = params.dimensionId;
if (params.dimensionId) {
if (self.state.firstQueryDone) self.getData();
}
});
this.filterViewModel = viewModel.getCache('FilterViewModel');
}
}, {
key: "componentDidUpdate",
value: function componentDidUpdate() {}
}, {
key: "componentWillReceiveProps",
value: function componentWillReceiveProps(nextProps) {}
}, {
key: "componentWillUnmount",
value: function componentWillUnmount() {}
}]);
return DimensionNavTreeControl;
}(_react["default"].Component);
exports.DimensionNavTreeControl = DimensionNavTreeControl;
;
var _default = DimensionNavTreeControl;
exports["default"] = _default;
//# sourceMappingURL=DimensionNavTree.js.map