@choerodon/master
Version:
A package of Master for Choerodon platform.
176 lines (161 loc) • 5.5 kB
JavaScript
import "choerodon-ui/lib/avatar/style";
import _Avatar from "choerodon-ui/lib/avatar";
import "choerodon-ui/pro/lib/table/style";
import _Table from "@hzero-front-ui/c7n-ui/lib/TablePro";
import React, { useContext, useEffect } from 'react';
import { observer } from 'mobx-react-lite';
import queryString from 'query-string';
import Store from "../../stores";
import { Action } from "../../../../../../../index";
import EmptyProject from "../../components/Empty";
import { HAS_AGILE_PRO } from "../../constant";
var Column = _Table.Column;
var actionStyle = {
marginRight: 10
};
var ListView = observer(function (_ref) {
var handleClickProject = _ref.handleClickProject,
handleEditProject = _ref.handleEditProject,
handleEnabledProject = _ref.handleEnabledProject;
var _useContext = useContext(Store),
dataSet = _useContext.dataSet,
isNotRecent = _useContext.isNotRecent,
HeaderStore = _useContext.HeaderStore,
AppState = _useContext.AppState,
history = _useContext.history;
function filterRecent(record) {
if (isNotRecent === 'all') {
return true;
} else if (isNotRecent === 'recent') {
var recents = HeaderStore.getRecentItem;
return !!recents.find(function (v) {
return v.id === record.get('id');
});
} else {
return record.get('createdBy') === AppState.getUserId;
}
}
function renderName(_ref2) {
var record = _ref2.record;
var _record$toData = record.toData(),
imageUrl = _record$toData.imageUrl,
name = _record$toData.name,
enabled = _record$toData.enabled,
into = _record$toData.into;
if (!into || !enabled) {
return /*#__PURE__*/React.createElement("span", null, /*#__PURE__*/React.createElement(_Avatar, {
src: imageUrl,
size: 18,
style: {
marginRight: 8,
fontSize: '12px',
verticalAlign: 'top',
marginTop: 6,
background: 'rgba(104, 135, 232, 0.2)',
border: '1px solid #6887E8',
color: '#6887E8'
}
}, name && name.charAt(0)), name);
}
return /*#__PURE__*/React.createElement("span", {
role: "none",
onClick: function onClick() {
return handleClickProject(record);
},
className: "link"
}, /*#__PURE__*/React.createElement(_Avatar, {
src: imageUrl,
size: 18,
style: {
marginRight: 8,
fontSize: '12px',
verticalAlign: 'top',
marginTop: 6,
background: 'rgba(104, 135, 232, 0.2)',
border: '1px solid #6887E8',
color: '#6887E8'
}
}, name && name.charAt(0)), name);
}
function renderAction(_ref3) {
var record = _ref3.record;
var _queryString$parse = queryString.parse(history.location.search),
organizationId = _queryString$parse.organizationId;
var actionDatas = [{
service: ['choerodon.code.organization.project.ps.edit'],
icon: '',
text: '编辑',
action: handleEditProject
}, {
service: ['choerodon.code.organization.project.ps.edit'],
icon: '',
text: record.get('enabled') ? '停用' : '启用',
action: handleEnabledProject
}];
return record.get('editFlag') && /*#__PURE__*/React.createElement(Action, {
organizationId: organizationId,
type: "organization",
data: actionDatas,
style: actionStyle
});
}
function renderEnabled(_ref4) {
var record = _ref4.record;
if (record.status === 'add') return '';
var enabled = record.get('enabled');
return /*#__PURE__*/React.createElement("div", {
className: "project-status-wrap",
style: {
background: enabled ? '#00bfa5' : '#d3d3d3'
}
}, /*#__PURE__*/React.createElement("div", {
className: "word"
}, enabled ? '启用' : '停用'));
}
var realData = dataSet.originalData.filter(function (r) {
return filterRecent(r);
});
if (realData.length === 0 && dataSet.status === 'ready' && dataSet.queryDataSet.current && Object.keys(dataSet.queryDataSet.current.toData()).filter(function (item) {
return item !== '__dirty';
}).length === 0) {
var description = '';
if (isNotRecent === 'all') {
description = '暂无可操作的项目';
} else if (isNotRecent === 'recent') {
description = '暂无“最近使用”项目';
} else if (isNotRecent === 'mine') {
description = '暂无“我创建的” 项目';
}
return /*#__PURE__*/React.createElement(EmptyProject, {
title: "\u6682\u65E0\u9879\u76EE",
description: description
});
}
return /*#__PURE__*/React.createElement(_Table, {
pristine: true,
dataSet: dataSet,
filter: filterRecent,
className: "c7n-projects-table"
}, /*#__PURE__*/React.createElement(Column, {
name: "name",
renderer: renderName
}), /*#__PURE__*/React.createElement(Column, {
renderer: renderAction,
width: 100
}), /*#__PURE__*/React.createElement(Column, {
name: "code"
}), /*#__PURE__*/React.createElement(Column, {
name: "category"
}), /*#__PURE__*/React.createElement(Column, {
name: "enabled",
renderer: renderEnabled,
align: "left"
}), HAS_AGILE_PRO && /*#__PURE__*/React.createElement(Column, {
name: "programName"
}), /*#__PURE__*/React.createElement(Column, {
name: "createUserName"
}), /*#__PURE__*/React.createElement(Column, {
name: "creationDate"
}));
});
export default ListView;