@choerodon/master
Version:
A package of Master for Choerodon platform.
175 lines (153 loc) • 7.14 kB
JavaScript
import "choerodon-ui/lib/button/style";
import _Button from "choerodon-ui/lib/button";
var _excluded = ["AppState", "HeaderStore", "MenuStore", "history"];
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }
function _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err); } _next(undefined); }); }; }
function _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }
function _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }
import React, { useMemo, useEffect, useState } from 'react';
import { inject } from 'mobx-react';
import { observer } from 'mobx-react-lite';
import { withRouter } from 'react-router-dom';
import queryString from 'query-string';
import { get } from '@choerodon/inject';
import _ from 'lodash';
import classNames from 'classnames';
import forEach from 'lodash/forEach';
import { Permission } from "../../../../../components/permission";
import getSearchString from "../../util/gotoSome";
import "./headerSettingTheme4.less";
var iconStyle = {
marginLeft: 0,
marginRight: 0
};
var SERVICE_CODE = {
knowledge: 'knowledgebase-service',
market: 'market-service'
};
var Setting = function Setting(_ref) {
var AppState = _ref.AppState,
HeaderStore = _ref.HeaderStore,
MenuStore = _ref.MenuStore,
history = _ref.history,
props = _objectWithoutProperties(_ref, _excluded);
var isSaas = AppState.getIsSaasList; // 组织改变 重新查询getIsSaas
useEffect(function () {
if (isSaas && !Object.keys(isSaas).includes(AppState.currentMenuType.organizationId)) {
get('base-saas:getIsSaas') && get('base-saas:getIsSaas')(AppState, isSaas);
}
}, [AppState.currentMenuType.organizationId]);
useEffect(function () {
get('base-saas:getIsSaas') && get('base-saas:getIsSaas')(AppState, isSaas);
}, []);
var theme = 'theme4';
var currentServices = AppState.currentServices;
var LI_MAPPING = useMemo(function () {
var mapping = [{
title: '工作台',
icon: theme === 'theme4' ? 'home-o' : 'home',
activePath: '/workbench'
}, {
title: '工作日历',
icon: theme === 'theme4' ? 'home-o' : 'home',
activePath: '/agile/work-calendar'
} // {
// title: '项目', icon: theme === 'theme4' ? 'project_line' : 'project_filled', activePath: '/projects', style: { marginLeft: 3 },
// },
];
forEach(currentServices, function (_ref2) {
var serviceCode = _ref2.serviceCode;
switch (serviceCode) {
case SERVICE_CODE.knowledge:
mapping.push({
title: '知识库',
icon: theme === 'theme4' ? 'chrome_reader_mode-o' : 'knowledge',
activePath: '/knowledge/organization',
style: {
marginLeft: 4
},
permission: ['choerodon.code.organization.knowledge.ps.default', 'choerodon.code.organization.knowledge.ps.recycle']
});
break;
case SERVICE_CODE.market:
// 如果不是saas 才显示应用市场
if (!isSaas || !isSaas[AppState.currentMenuType.organizationId]) {
mapping.push({
title: '应用市场',
icon: theme === 'theme4' ? 'local_mall-o' : 'application_market',
activePath: '/market/app-market',
style: {
marginLeft: 2
}
});
}
break;
}
});
return mapping;
}, [currentServices, theme, isSaas, AppState.currentMenuType.organizationId]);
function _goto2(_x) {
return _goto.apply(this, arguments);
}
function _goto() {
_goto = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee(obj) {
var queryObj, search;
return regeneratorRuntime.wrap(function _callee$(_context) {
while (1) {
switch (_context.prev = _context.next) {
case 0:
queryObj = queryString.parse(history.location.search);
_context.next = 3;
return getSearchString('organization', 'id', queryObj.organizationId);
case 3:
search = _context.sent;
MenuStore.setActiveMenu(null);
history.push("".concat(obj.activePath).concat(search));
case 6:
case "end":
return _context.stop();
}
}
}, _callee);
}));
return _goto.apply(this, arguments);
}
function extraCls(list) {
var pathname = props.location.pathname;
if (pathname.startsWith(list.activePath)) {
if ('exclude' in list) {
if (!pathname.startsWith(list.exclude)) {
return 'header-setting-active';
}
} else {
return 'header-setting-active';
}
}
return '';
}
return /*#__PURE__*/React.createElement(React.Fragment, null, LI_MAPPING.map(function (list, index) {
var _classNames;
var button = /*#__PURE__*/React.createElement(_Button, Object.assign({
key: list.activePath,
className: classNames((_classNames = {}, _defineProperty(_classNames, "block ".concat(extraCls(list)), true), _defineProperty(_classNames, 'theme4-headerButton', true), _classNames))
}, index === 0 ? {
style: {
marginLeft: '-8px'
}
} : {}, {
onClick: function onClick() {
return _goto2(list);
},
type: "primary",
funcType: "flat"
}), /*#__PURE__*/React.createElement("span", true && list.style ? {
style: list.style
} : {}, list.title));
return list.permission ? /*#__PURE__*/React.createElement(Permission, {
type: "organization",
service: list.permission
}, button) : button;
}));
};
export default withRouter(inject('AppState', 'HeaderStore', 'MenuStore')(observer(Setting)));