dareway-rui
Version:
694 lines (611 loc) • 30.7 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 _objectSpread2 = _interopRequireDefault(require('@babel/runtime/helpers/objectSpread'));
var _regenerator = _interopRequireDefault(require('@babel/runtime/regenerator'));
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 _reactRedux = require('react-redux');
var _propTypes = _interopRequireDefault(require('prop-types'));
var _panel = _interopRequireDefault(require('../../taglib/panel'));
var _util = require('../../util');
var _ModelNamespaceContext = _interopRequireDefault(require('../../core/rui/ModelNamespaceContext'));
var _core = require('../../core');
var _RUIModel = _interopRequireDefault(require('../../core/rui/RUIModel'));
var _utils = require('./utils');
var _DataConvertUtil = _interopRequireDefault(require('../../dataUtil/DataConvertUtil'));
var _antd = require('antd');
require('./style.css');
/////////////////////////////////////////////////////////////////////////////
// Dependency
//
// ## React
var DirectoryTree = _antd.Tree.DirectoryTree;
var TreeNode = _antd.Tree.TreeNode; ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
// Tag
//
var TreeView =
/*#__PURE__*/
(function(_React$Component) {
(0, _inherits2.default)(TreeView, _React$Component);
function TreeView(props) {
var _this;
(0, _classCallCheck2.default)(this, TreeView);
_this = (0, _possibleConstructorReturn2.default)(
this,
(0, _getPrototypeOf2.default)(TreeView).call(this, props)
);
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'onLoadData', function(
treeNode
) {
var namespace = _this.props.__draco__tag__namespace__;
return Promise.resolve()
.then(function() {
if (!treeNode.props.dataRef.isParent) {
return;
}
var nodeId = treeNode.props.dataRef.nodeId;
return _this.props.dispatch({
type: ''.concat(namespace, '/updateChildNodesByNodeId'),
payload: {
nodeId: nodeId
}
});
})
.then(function() {
return;
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'refreshLeaf', function(
selectedKeys,
selectedNode
) {
// TODO buildTree完毕选中第一个节点。。。再次点击会出错
if (!selectedNode) {
return;
}
var _selectedNode$props$d = selectedNode.props.dataRef,
onFocusPath = _selectedNode$props$d.onFocusPath,
nodeId = _selectedNode$props$d.nodeId,
onFocusPathParams = _selectedNode$props$d.onFocusPathParams;
var __draco__tag__namespace__ = _this.props.__draco__tag__namespace__;
if (!onFocusPath) {
return;
}
_this.props.dispatch({
type: ''.concat(__draco__tag__namespace__, '/refreshLeaf'),
payload: {
nodeId: nodeId,
componentPath: onFocusPath,
params: onFocusPathParams
}
});
});
(0, _defineProperty2.default)((0, _assertThisInitialized2.default)(_this), 'renderTreeNodes', function(
data
) {
return data.map(function(item) {
if (item.children) {
return _react.default.createElement(
TreeNode,
{
title: item.name,
key: item.nodeId,
isLeaf: !item.isParent,
dataRef: item
},
_this.renderTreeNodes(item.children)
);
}
return _react.default.createElement(TreeNode, {
title: item.name,
key: item.nodeId,
isLeaf: !item.isParent,
dataRef: item
});
});
});
return _this;
}
(0, _createClass2.default)(TreeView, [
{
key: 'componentDidMount',
value: function componentDidMount() {}
},
{
key: 'render',
value: function render() {
var _this2 = this;
var _this$props$__draco__ = this.props.__draco__tag__state__,
treeNodesData = _this$props$__draco__.treeNodesData,
selectedNodeId = _this$props$__draco__.selectedNodeId;
var _this$props = this.props,
treeAreaWidth = _this$props.treeAreaWidth,
showLine = _this$props.showLine;
var TreeView = DirectoryTree;
if (showLine) {
TreeView = _antd.Tree;
}
return _react.default.createElement(
_ModelNamespaceContext.default.Provider,
{
value: {
modelNamespace: this.props.__draco__tag__namespace__
}
},
_react.default.createElement(
'div',
{
name: 'tree',
className: 'rui-Tree',
style: {
overflow: 'hidden'
}
},
_react.default.createElement(
'div',
{
name: 'treeAreaWrapper',
className: 'rui-Tree-treeAreaWrapper',
style: {
width: treeAreaWidth
}
},
_react.default.createElement(
TreeView,
{
showLine: showLine,
selectedKeys: [selectedNodeId],
loadData: this.onLoadData,
onSelect: function onSelect(selectedKeys, e) {
_this2.refreshLeaf(selectedKeys, e.selectedNodes[0]);
}
},
this.renderTreeNodes(treeNodesData)
)
),
_react.default.createElement(
'div',
{
name: 'treeLeafWrapper',
className: 'rui-Tree-TreeLeafWrapper'
},
_react.default.createElement(_panel.default, {
name: 'treeLeafContainer',
leftBorder: true,
borderWidth: 1,
autoFocus: true
})
)
)
);
}
}
]);
return TreeView;
})(_react.default.Component); /////////////////////////////////////////////////////////////////////////////
// API Factory
//
function TreeFactory(namespace, sagaEffects) {
return {
buildTree:
/*#__PURE__*/
_regenerator.default.mark(function buildTree(treeViewClassName, initMethod, initParams) {
return _regenerator.default.wrap(function buildTree$(_context) {
while (1) {
switch ((_context.prev = _context.next)) {
case 0:
_context.next = 2;
return sagaEffects.put({
type: ''.concat(namespace, '/buildTree'),
payload: {
treeViewClassName: treeViewClassName,
initMethod: initMethod,
initParams: initParams
}
});
case 2:
_context.next = 4;
return _context.sent;
case 4:
case 'end':
return _context.stop();
}
}
}, buildTree);
}),
getCurrentNodeId:
/*#__PURE__*/
_regenerator.default.mark(function getCurrentNodeId() {
var nodeId;
return _regenerator.default.wrap(function getCurrentNodeId$(_context2) {
while (1) {
switch ((_context2.prev = _context2.next)) {
case 0:
_context2.next = 2;
return sagaEffects.put({
type: ''.concat(namespace, '/getCurrentNodeId')
});
case 2:
_context2.next = 4;
return _context2.sent;
case 4:
nodeId = _context2.sent;
return _context2.abrupt('return', nodeId);
case 6:
case 'end':
return _context2.stop();
}
}
}, getCurrentNodeId);
})
};
} /////////////////////////////////////////////////////////////////////////////
// Model Factory
//
function modelFactory(namespace, props) {
return (0, _objectSpread2.default)(
{
namespace: namespace
},
new _RUIModel.default({
state: {
treeViewClassName: props.className,
initMethod: props.initMethod,
initParams: props.initParams,
treeSessionId: null,
treeNodesData: [],
selectedNodeId: '',
// apiFactory
__draco__tag__api__factory__: function __draco__tag__api__factory__(namespace, sagaEffects) {
return TreeFactory(namespace, sagaEffects);
}
},
effects: {
buildTree:
/*#__PURE__*/
_regenerator.default.mark(function buildTree(_ref, RUI) {
var payload,
treeViewClassName,
initMethod,
initParams,
url,
treeSessionIdObj,
treeSessionId,
nodesUrl,
rootNodesObject,
rootNodes,
rootNodesArray,
componentPathObj;
return _regenerator.default.wrap(function buildTree$(_context3) {
while (1) {
switch ((_context3.prev = _context3.next)) {
case 0:
payload = _ref.payload;
(treeViewClassName = payload.treeViewClassName),
(initMethod = payload.initMethod),
(initParams = payload.initParams); //传递array对象 后台有数据类型标识
if (!initParams) {
initParams = [];
} else {
initParams = [initParams];
} // 获取treeSessionId
url = new _util.URL('rui_smartTree/initTreeCache');
_context3.next = 6;
return (0, _util.request)(url);
case 6:
treeSessionIdObj = _context3.sent;
treeSessionId = treeSessionIdObj.treesessionid;
_context3.next = 10;
return RUI.invoke('initTreeCacheSuccess', treeSessionId);
case 10:
// 获取根节点数据
nodesUrl = new _util.URL('rui_smartTree/getChildNodesByNodeId');
nodesUrl.addPara('className', treeViewClassName);
nodesUrl.addPara('initMethod', initMethod);
nodesUrl.addPara('treeSessionId', treeSessionId);
nodesUrl.addPara('userParameter', initParams);
_context3.next = 17;
return (0, _util.request)(nodesUrl);
case 17:
rootNodesObject = _context3.sent;
rootNodes = rootNodesObject.rootnodes;
/**
* {
* isParent:true,
* name:"展示的title",
* nodeId:nodeId,
* nodeKey:nodeKey,
* onFocusPath:"componentPath"
* parent:"parentNodeId" // 0 代表根节点,
* children: []
*
* }
* node的格式
*/
rootNodesArray = JSON.parse(rootNodes);
if (rootNodesArray.length) {
_context3.next = 25;
break;
}
_context3.next = 23;
return RUI.invoke('setSelectedNodeIdSuccess', '');
case 23:
_context3.next = 30;
break;
case 25:
if (!rootNodesArray[0].onFocusPath) {
_context3.next = 30;
break;
}
componentPathObj = rootNodesArray[0].onFocusPathParams;
if (componentPathObj) {
componentPathObj = _DataConvertUtil.default.convertData(componentPathObj);
}
_context3.next = 30;
return RUI.invoke('refreshLeaf', {
nodeId: rootNodesArray[0].nodeId,
componentPath: rootNodesArray[0].onFocusPath,
params: componentPathObj
});
case 30:
_context3.next = 32;
return RUI.invoke('setNodesDataSuccess', rootNodesArray);
case 32:
case 'end':
return _context3.stop();
}
}
}, buildTree);
}),
updateChildNodesByNodeId:
/*#__PURE__*/
_regenerator.default.mark(function updateChildNodesByNodeId(_ref2, RUI) {
var payload,
_ref3,
treeSessionId,
treeNodesData,
nodeId,
nodesUrl,
result,
childNodes,
childNodesArray,
newTreeNodes;
return _regenerator.default.wrap(function updateChildNodesByNodeId$(_context4) {
while (1) {
switch ((_context4.prev = _context4.next)) {
case 0:
payload = _ref2.payload;
_context4.next = 3;
return RUI.getState();
case 3:
_ref3 = _context4.sent;
treeSessionId = _ref3.treeSessionId;
treeNodesData = _ref3.treeNodesData;
nodeId = payload.nodeId; // 获取根节点数据
nodesUrl = new _util.URL('rui_smartTree/getChildNodesByNodeId');
nodesUrl.addPara('treeSessionId', treeSessionId);
nodesUrl.addPara('nodeId', nodeId);
_context4.next = 12;
return (0, _util.request)(nodesUrl);
case 12:
result = _context4.sent;
childNodes = result.childnodes;
childNodesArray = JSON.parse(childNodes);
newTreeNodes = (0, _utils.updateTreeNodeChildren)(
nodeId,
treeNodesData,
childNodesArray
);
_context4.next = 18;
return RUI.invoke('setNodesDataSuccess', newTreeNodes);
case 18:
case 'end':
return _context4.stop();
}
}
}, updateChildNodesByNodeId);
}),
goItem:
/*#__PURE__*/
_regenerator.default.mark(function goItem(_ref4, RUI) {
var payload;
return _regenerator.default.wrap(function goItem$(_context5) {
while (1) {
switch ((_context5.prev = _context5.next)) {
case 0:
payload = _ref4.payload;
case 1:
case 'end':
return _context5.stop();
}
}
}, goItem);
}),
refreshLeaf:
/*#__PURE__*/
_regenerator.default.mark(function refreshLeaf(_ref5, RUI) {
var payload, nodeId, componentPath, params, treeLeafContainer;
return _regenerator.default.wrap(function refreshLeaf$(_context6) {
while (1) {
switch ((_context6.prev = _context6.next)) {
case 0:
payload = _ref5.payload;
(nodeId = payload.nodeId),
(componentPath = payload.componentPath),
(params = payload.params);
_context6.next = 4;
return RUI.getObject('treeLeafContainer');
case 4:
treeLeafContainer = _context6.sent;
_context6.next = 7;
return treeLeafContainer.asynchRefresh(null, componentPath, params);
case 7:
_context6.next = 9;
return RUI.invoke('setSelectedNodeIdSuccess', nodeId);
case 9:
case 'end':
return _context6.stop();
}
}
}, refreshLeaf);
}),
getCurrentNodeId:
/*#__PURE__*/
_regenerator.default.mark(function getCurrentNodeId(_ref6, RUI) {
var payload, _ref7, selectedNodeId;
return _regenerator.default.wrap(function getCurrentNodeId$(_context7) {
while (1) {
switch ((_context7.prev = _context7.next)) {
case 0:
payload = _ref6.payload;
_context7.next = 3;
return RUI.getState();
case 3:
_ref7 = _context7.sent;
selectedNodeId = _ref7.selectedNodeId;
return _context7.abrupt('return', selectedNodeId);
case 6:
case 'end':
return _context7.stop();
}
}
}, getCurrentNodeId);
})
},
reducers: {
initTreeCacheSuccess: function initTreeCacheSuccess(state, _ref8) {
var payload = _ref8.payload;
return (0, _objectSpread2.default)({}, state, {
treeSessionId: payload
});
},
setNodesDataSuccess: function setNodesDataSuccess(state, _ref9) {
var payload = _ref9.payload;
return (0, _objectSpread2.default)({}, state, {
treeNodesData: payload
});
},
setSelectedNodeIdSuccess: function setSelectedNodeIdSuccess(state, _ref10) {
var payload = _ref10.payload;
return (0, _objectSpread2.default)({}, state, {
selectedNodeId: payload
});
}
}
}).getModel()
);
} /////////////////////////////////////////////////////////////////////////////
// Tag Wrapper
//
var TreeRegister =
/*#__PURE__*/
(function(_React$Component2) {
(0, _inherits2.default)(TreeRegister, _React$Component2);
function TreeRegister(props) {
var _this3;
(0, _classCallCheck2.default)(this, TreeRegister);
_this3 = (0, _possibleConstructorReturn2.default)(
this,
(0, _getPrototypeOf2.default)(TreeRegister).call(this, props)
);
_this3.componentNamespace = ''.concat(_this3.props.modelNamespace, '_').concat(_this3.props.name);
_this3.model = modelFactory(_this3.componentNamespace, _this3.props);
return _this3;
}
(0, _createClass2.default)(TreeRegister, [
{
key: 'componentWillMount',
value: function componentWillMount() {
var _this4 = this;
_core.RUICore.registerModel(this.model);
var connector = (0, _reactRedux.connect)(function(store) {
return {
__draco__tag__state__: store[_this4.componentNamespace],
__draco__tag__namespace__: _this4.componentNamespace
};
});
this.ConnectedComponent = connector(TreeView);
}
},
{
key: 'componentWillUnmount',
value: function componentWillUnmount() {
_core.RUICore.unregisterModel(this.componentNamespace);
}
},
{
key: 'render',
value: function render() {
var ConnectedComponent = this.ConnectedComponent;
return _react.default.createElement(ConnectedComponent, this.props);
}
}
]);
return TreeRegister;
})(_react.default.Component);
var Tree =
/*#__PURE__*/
(function(_React$Component3) {
(0, _inherits2.default)(Tree, _React$Component3);
function Tree(props) {
(0, _classCallCheck2.default)(this, Tree);
return (0, _possibleConstructorReturn2.default)(
this,
(0, _getPrototypeOf2.default)(Tree).call(this, props)
);
}
(0, _createClass2.default)(Tree, [
{
key: 'render',
value: function render() {
var _this5 = this;
return _react.default.createElement(_ModelNamespaceContext.default.Consumer, null, function(
_ref11
) {
var modelNamespace = _ref11.modelNamespace;
return _react.default.createElement(
TreeRegister,
(0, _extends2.default)({}, _this5.props, {
modelNamespace: modelNamespace
})
);
});
}
}
]);
return Tree;
})(_react.default.Component);
exports.default = Tree;
(0, _defineProperty2.default)(Tree, 'defaultProps', {
className: '',
initMethod: '',
initParams: {},
treeAreaWidth: 200,
showLine: false,
singlePath: true,
isExpandRoot: true,
hidden: false
});
(0, _defineProperty2.default)(Tree, 'propTypes', {
name: _propTypes.default.string.isRequired,
className: _propTypes.default.string,
initMethod: _propTypes.default.string,
initParams: _propTypes.default.object,
treeAreaWidth: _propTypes.default.number,
showLine: _propTypes.default.bool,
hidden: _propTypes.default.bool,
singlePath: _propTypes.default.bool,
isExpandRoot: _propTypes.default.bool
});
//@ sourceMappingURL=index.js.map