|
@@ -1,6 +1,7 @@
|
|
|
/** 项目使用情况列表card */
|
|
|
import React from 'react';
|
|
|
import { Radio } from 'antd';
|
|
|
+import { get } from 'lodash';
|
|
|
import styled from 'styled-components';
|
|
|
import { PropTypes } from 'prop-types';
|
|
|
import ItemCard from './ItemCard';
|
|
@@ -37,16 +38,48 @@ class ResourceUsageCards extends React.PureComponent {
|
|
|
fetchData = (checkedValue = this.state.checkedValue) => {
|
|
|
getProjectResUsage(this.props.projectId).then(res => {
|
|
|
let resourcesRate = _.get(res, 'data', []);
|
|
|
+ resourcesRate = this.formatUsRate(resourcesRate);
|
|
|
let resourcesRateMap = _.groupBy(resourcesRate, 'profile');
|
|
|
this.setState({ resourcesRateMap, resourcesRate: _.get(resourcesRateMap, `${checkedValue}[0]`, {}) });
|
|
|
});
|
|
|
getProjectResAssign(this.props.projectId).then(res => {
|
|
|
let resourcesAssign = _.get(res, 'data', []);
|
|
|
+ resourcesAssign = this.formatAssignData(resourcesAssign);
|
|
|
let resourcesAssignMap = _.groupBy(resourcesAssign, 'profile');
|
|
|
this.setState({ resourcesAssignMap, resourcesAssign: _.get(resourcesAssignMap, `${checkedValue}[0]`, {}) });
|
|
|
});
|
|
|
};
|
|
|
|
|
|
+ formatUsRate = data => {
|
|
|
+ if (!Array.isArray(data)) return [];
|
|
|
+ return data.map(item => ({
|
|
|
+ profile: item.profile,
|
|
|
+ cpu: get(item, 'cpu', 0),
|
|
|
+ mem: get(item, 'mem', 0),
|
|
|
+ gpu: get(item, 'gpu', 0),
|
|
|
+ gpuMem: get(item, 'gpuMem', 0),
|
|
|
+ cpuUsed: Math.max(Number(get(item, 'cpu', 0)) - Number(get(item, 'cpuUsable', 0)), 0),
|
|
|
+ memUsed: Math.max(Number(get(item, 'mem', 0)) - Number(get(item, 'memUsable', 0)), 0),
|
|
|
+ gpuUsed: Math.max(Number(get(item, 'gpu', 0)) - Number(get(item, 'gpuUsable', 0)), 0),
|
|
|
+ gpuMemUsed: Math.max(Number(get(item, 'gpuMem', 0)) - Number(get(item, 'gpuMemUsable', 0)), 0),
|
|
|
+ }));
|
|
|
+ };
|
|
|
+
|
|
|
+ formatAssignData = data => {
|
|
|
+ if (!Array.isArray(data)) return [];
|
|
|
+ return data.map(item => ({
|
|
|
+ profile: item.profile,
|
|
|
+ cpu: get(item, 'totalResource.cpu', 0),
|
|
|
+ mem: get(item, 'totalResource.memory', 0),
|
|
|
+ gpu: get(item, 'totalResource.gpu', 0),
|
|
|
+ gpuMem: get(item, 'totalResource.gpuMem', 0),
|
|
|
+ cpuUsed: get(item, 'assignedResource.cpu', 0),
|
|
|
+ memUsed: get(item, 'assignedResource.memory', 0),
|
|
|
+ gpuUsed: get(item, 'assignedResource.gpu', 0),
|
|
|
+ gpuMemUsed: get(item, 'assignedResource.gpuMem', 0),
|
|
|
+ }));
|
|
|
+ };
|
|
|
+
|
|
|
handleEnvChange = e => {
|
|
|
let checkedValue = e.target.value;
|
|
|
let { resourcesRateMap, resourcesAssignMap } = this.state;
|