U 优化dashboard移除最近登录

pull/586/head
vapao 2022-07-13 18:12:27 +08:00
parent 2d9c2fc8b4
commit b5d0e4a320
4 changed files with 3 additions and 61 deletions

View File

@ -62,7 +62,7 @@ def get_request(request):
data = {x.id: {'name': x.name, 'count': 0} for x in App.objects.all()}
for req in DeployRequest.objects.filter(created_at__gt=s_date, created_at__lt=e_date):
data[req.deploy.app_id]['count'] += 1
data = sorted(data.values(), key=lambda x: x['count'], reverse=True)[:10]
data = sorted(data.values(), key=lambda x: x['count'], reverse=True)[:20]
return json_response(data)
return json_response(error=error)

View File

@ -1,49 +0,0 @@
/**
* Copyright (c) OpenSpug Organization. https://github.com/openspug/spug
* Copyright (c) <spug.dev@gmail.com>
* Released under the AGPL-3.0 License.
*/
import React, { useState, useEffect } from 'react';
import { Card, List, Tag } from 'antd';
import { http } from 'libs';
import styles from './index.module.css';
export default function () {
const [name, setName] = useState(null);
const [ip, setIp] = useState(null);
const [rawData, setRawData] = useState([]);
const [dataSource, setDataSource] = useState([]);
const [loading, setLoading] = useState(true);
useEffect(() => {
http.get('/api/account/login/history/')
.then(res => setRawData(res))
.finally(() => setLoading(false))
}, [])
useEffect(() => {
let data = rawData;
if (name) data = data.filter(x => x.nickname === name);
if (ip) data = data.filter(x => x.ip === ip);
setDataSource(data)
}, [name, ip, rawData])
return (
<Card loading={loading} title="最近30天登录" bodyStyle={{paddingTop: 0}} extra={(
<div>
{name !== null && <Tag closable color="#1890ff" onClose={() => setName(null)}>{name}</Tag>}
{ip !== null && <Tag closable color="#1890ff" onClose={() => setIp(null)}>{ip}</Tag>}
</div>
)}>
<List className={styles.loginActive} dataSource={dataSource} renderItem={item => (
<List.Item>
<span>{item.created_at}</span>
<span className={styles.spanText} onClick={() => setName(item.nickname)}>{item.nickname}</span>
<span>通过</span>
<span className={styles.spanText} onClick={() => setIp(item.ip)}>{item.ip}</span>
<span>登录</span>
</List.Item>
)}/>
</Card>
)
}

View File

@ -50,7 +50,7 @@ export default function () {
}
return (
<Card loading={loading} title="发布申请Top10" extra={(
<Card loading={loading} title="发布申请Top20" style={{marginTop: 20}} bodyStyle={{height: 353}} extra={(
<div style={{display: 'flex', alignItems: 'center'}}>
<span className={range === 'day' ? styles.spanButtonActive : styles.spanButton}
onClick={() => handleClick('day')}>今日</span>

View File

@ -4,12 +4,10 @@
* Released under the AGPL-3.0 License.
*/
import React from 'react';
import { Row, Col } from 'antd';
import { AuthDiv } from 'components';
import StatisticsCard from './StatisticCard';
import AlarmTrend from './AlarmTrend';
import RequestTop from './RequestTop';
import LoginActive from './LoginActive';
class HomeIndex extends React.Component {
render() {
@ -17,14 +15,7 @@ class HomeIndex extends React.Component {
<AuthDiv auth="dashboard.dashboard.view">
<StatisticsCard/>
<AlarmTrend/>
<Row style={{marginTop: 20}}>
<Col span={13}>
<RequestTop/>
</Col>
<Col span={10} offset={1}>
<LoginActive/>
</Col>
</Row>
</AuthDiv>
)
}