UNPKG

dareway-rui

Version:

694 lines (611 loc) 30.7 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 _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