diff --git a/src/forge/Main/projecthome/Index.jsx b/src/forge/Main/projecthome/Index.jsx index 1fc10cfa2..c2b0cab36 100644 --- a/src/forge/Main/projecthome/Index.jsx +++ b/src/forge/Main/projecthome/Index.jsx @@ -10,6 +10,8 @@ import more from '../img/index/more.png'; import axios from 'axios'; import { getImageUrl } from 'educoder'; import Nodata from '../../Nodata'; +import TopIcon from '../img/index/hotAuthor.png'; +import TopProjectSelect from './TopProjectSelect' const { Search } = Input; @@ -28,8 +30,10 @@ function Index() { },[]) useEffect(()=>{ - setIsSpin(true); - getProject(); + if(cateID != -1){ + setIsSpin(true); + getProject(); + } },[cateID, search]) function getCate() { @@ -58,6 +62,10 @@ function Index() { }).catch(error=>{}) } + const handleTopProjectData = (data) => { + setProjectsList(data); + }; + function searchFun(value){ setSearch(value); } @@ -70,6 +78,7 @@ function Index() {
+ {cateID == -1 && }
{ diff --git a/src/forge/Main/projecthome/TopProjectSelect.jsx b/src/forge/Main/projecthome/TopProjectSelect.jsx new file mode 100644 index 000000000..544a35ca2 --- /dev/null +++ b/src/forge/Main/projecthome/TopProjectSelect.jsx @@ -0,0 +1,76 @@ +import React, { useEffect, useState } from 'react'; +import axios from 'axios'; +import { Radio, Select } from 'antd'; + +const { Option } = Select + +function TopProjectSelect(props) { + const [interval, setInterval] = useState(0); + const [periodList, setPeriodList] = useState([]); + const [selectedPeriod, setSelectedPeriod] = useState("暂无数据"); + const onChangeInterval = (e) => { + setInterval(e.target.value); + getTopProjects(0, e.target.value); + }; + + const onChangePeriod = (value) => { + console.log(value); + setSelectedPeriod(value); + getTopProjects(value, interval); + }; + + function getTopProjects(period, time_interval) { + let url = `/projects/top.json`; + axios.get(url, { + params: { + period: period, + time_interval: time_interval + } + }).then(result => { + if (result && result.data) { + if (period == 0) { + var period_info = result.data.period_info + var optionsData = period_info.reverse().map((item) => ({ + value: item.period, + label: `第${item.period}期(${item.updated_at})`, + })); + setPeriodList(optionsData) + console.log(optionsData) + if (optionsData) { + setSelectedPeriod(optionsData[0].value) + getTopProjects(optionsData[0].value, time_interval) + } + + } else { + props.onData(result.data.projects); + } + } + + }).catch(error => { }) + } + + useEffect(() => { + getTopProjects(0, 0) + }, []) + + return ( +
+ + 时间跨度: + 每周 + 每月 + 季度 + 年度 + + + +
+ ) +} +export default TopProjectSelect; \ No newline at end of file