smart-grid-g
Version:
gantd smart-grid-g
202 lines (201 loc) • 9.38 kB
JavaScript
"use strict";
var _interopRequireDefault = require("@babel/runtime/helpers/interopRequireDefault");
var _typeof = require("@babel/runtime/helpers/typeof");
Object.defineProperty(exports, "__esModule", {
value: true
});
exports.default = View;
require("antd/es/icon/style/css");
var _icon = _interopRequireDefault(require("antd/es/icon"));
require("antd/es/popover/style/css");
var _popover = _interopRequireDefault(require("antd/es/popover"));
require("antd/es/spin/style/css");
var _spin = _interopRequireDefault(require("antd/es/spin"));
require("antd/es/empty/style/css");
var _empty = _interopRequireDefault(require("antd/es/empty"));
var _toConsumableArray2 = _interopRequireDefault(require("@babel/runtime/helpers/toConsumableArray"));
var _slicedToArray2 = _interopRequireDefault(require("@babel/runtime/helpers/slicedToArray"));
var _header = _interopRequireDefault(require("header-g"));
var _classnames = _interopRequireDefault(require("classnames"));
var _lodash = _interopRequireDefault(require("lodash"));
var _react = _interopRequireWildcard(require("react"));
var _Receiver = _interopRequireDefault(require("../locale/Receiver"));
var _EditModal = _interopRequireDefault(require("./EditModal"));
var _Panel = _interopRequireDefault(require("./Panel"));
var _utils = require("./utils");
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(e) { return e ? t : r; })(e); }
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != _typeof(e) && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && {}.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
/**
* 视图组件
* @param props
*/
function View(props) {
var viewId = props.viewId,
userId = props.userId,
viewName = props.viewName,
_props$systemViews = props.systemViews,
systemViews = _props$systemViews === void 0 ? [] : _props$systemViews,
_props$companyViews = props.companyViews,
companyViews = _props$companyViews === void 0 ? [] : _props$companyViews,
_props$customViews = props.customViews,
customViews = _props$customViews === void 0 ? [] : _props$customViews,
switchActiveView = props.switchActiveView,
updateView = props.updateView,
renameLoading = props.renameLoading,
_props$splitLine = props.splitLine,
splitLine = _props$splitLine === void 0 ? true : _props$splitLine,
_props$loading = props.loading,
loading = _props$loading === void 0 ? false : _props$loading,
defaultView = props.defaultView,
onDefaultViewChange = props.onDefaultViewChange,
config = props.config,
getPopupContainer = props.getPopupContainer,
withoutAnimation = props.withoutAnimation;
var _useState = (0, _react.useState)(false),
_useState2 = (0, _slicedToArray2.default)(_useState, 2),
showModal = _useState2[0],
setShowModal = _useState2[1];
var _useState3 = (0, _react.useState)(''),
_useState4 = (0, _slicedToArray2.default)(_useState3, 2),
editViewName = _useState4[0],
setEditViewName = _useState4[1];
var _useState5 = (0, _react.useState)({
name: ''
}),
_useState6 = (0, _slicedToArray2.default)(_useState5, 2),
editView = _useState6[0],
setEditView = _useState6[1];
var currentLoading = loading || renameLoading ? true : false;
var _useState7 = (0, _react.useState)(false),
_useState8 = (0, _slicedToArray2.default)(_useState7, 2),
showPop = _useState8[0],
setShowPop = _useState8[1];
var switchActiveViewImpl = (0, _react.useCallback)(function (viewType, view) {
view.isSystem = viewType !== 'custom';
switchActiveView && switchActiveView(view);
setShowPop(false);
}, [switchActiveView]);
var updateEditView = function updateEditView(name) {
if (editView.name === name) {
setShowModal(false);
return;
}
var _editView$viewId$spli = editView.viewId.split('-'),
_editView$viewId$spli2 = (0, _slicedToArray2.default)(_editView$viewId$spli, 2),
viewType = _editView$viewId$spli2[0],
_userId = _editView$viewId$spli2[1];
var newViews = (0, _toConsumableArray2.default)(viewType === 'company' ? companyViews : customViews).map(function (item) {
return Object.assign(Object.assign({}, item), {
name: _lodash.default.isEqual(item, editView) ? name : item.name
});
});
editView.name = name;
updateView && updateView({
views: newViews,
type: 'rename',
operateView: editView,
hideModal: function hideModal() {
return setShowModal(false);
}
});
};
var views = (0, _react.useMemo)(function () {
if (systemViews.length === 0 && customViews.length === 0) {
return /*#__PURE__*/_react.default.createElement(_empty.default, {
image: _empty.default.PRESENTED_IMAGE_SIMPLE,
description: /*#__PURE__*/_react.default.createElement(_Receiver.default, null, function (locale) {
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, locale.noView);
})
});
}
var activeDefaultView = (0, _utils.getActiveDefaultView)({
systemViews: systemViews,
companyViews: companyViews,
customViews: customViews,
defaultView: defaultView
});
return /*#__PURE__*/_react.default.createElement("div", {
style: {
margin: '-10px'
}
}, /*#__PURE__*/_react.default.createElement(_spin.default, {
spinning: currentLoading
}, /*#__PURE__*/_react.default.createElement(_Receiver.default, null, function (locale) {
return /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement(_header.default, {
title: locale.view,
type: "icon",
bottomLine: true,
icon: "unordered-list",
style: {
padding: '0 5px'
},
extra: config
}), /*#__PURE__*/_react.default.createElement(_Panel.default, {
title: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, locale.sysView),
views: systemViews,
viewType: "system",
switchActiveView: switchActiveViewImpl.bind(null, 'system'),
updateView: updateView,
defaultViewId: activeDefaultView.viewId,
onDefaultViewChange: onDefaultViewChange
}), companyViews.length > 0 && ( /*#__PURE__*/_react.default.createElement(_Panel.default, {
title: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, locale.companyView),
views: companyViews,
viewType: "company",
userId: userId,
switchActiveView: switchActiveViewImpl.bind(null, 'company'),
updateView: updateView,
setViewName: setEditViewName,
setShowModal: setShowModal,
setEditView: setEditView,
defaultViewId: activeDefaultView.viewId,
onDefaultViewChange: onDefaultViewChange
})), /*#__PURE__*/_react.default.createElement(_Panel.default, {
viewId: viewId,
title: /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, locale.customView),
views: customViews,
viewType: "custom",
switchActiveView: switchActiveViewImpl.bind(null, 'custom'),
updateView: updateView,
setViewName: setEditViewName,
setShowModal: setShowModal,
setEditView: setEditView,
defaultViewId: activeDefaultView.viewId,
onDefaultViewChange: onDefaultViewChange
}));
})));
}, [customViews, companyViews, systemViews, viewId, currentLoading, defaultView, onDefaultViewChange, updateView, switchActiveViewImpl, config]);
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, /*#__PURE__*/_react.default.createElement(_popover.default, {
visible: showPop,
content: views,
placement: "bottomLeft",
trigger: "click",
transitionName: withoutAnimation ? "" : undefined,
overlayStyle: {
zIndex: config ? 11 : 1008
},
onVisibleChange: setShowPop,
getPopupContainer: getPopupContainer
}, /*#__PURE__*/_react.default.createElement("div", {
className: (0, _classnames.default)('gant-dropbutton', {
DefaultShow: !config || showPop,
SplitLine: splitLine
})
}, /*#__PURE__*/_react.default.createElement(_Receiver.default, null, function (locale) {
return /*#__PURE__*/_react.default.createElement(_react.default.Fragment, null, viewName || locale.view, /*#__PURE__*/_react.default.createElement(_icon.default, {
type: "down",
style: {
marginLeft: '5px'
}
}));
}))), /*#__PURE__*/_react.default.createElement(_EditModal.default, {
withoutAnimation: withoutAnimation,
loading: renameLoading,
initValue: editViewName,
showModal: showModal,
setShowModal: setShowModal,
onSubmit: updateEditView,
systemViews: systemViews,
customViews: customViews
}));
}