import React, { Component } from 'react'; import { Redirect } from 'react-router'; import { BrowserRouter as Router, Route, Link, Switch } from "react-router-dom"; import axios from 'axios'; import { TPMIndexHOC } from '../tpm/TPMIndexHOC'; import SiderBar from '../tpm/SiderBar'; import { SnackbarHOC , getImageUrl} from 'educoder'; import Slider from '@icedesign/base/lib/slider'; import '@icedesign/base/lib/slider/style.js'; import Rating from '@icedesign/base/lib/rating'; import '@icedesign/base/lib/rating/style.js'; import './home.css'; import {Tooltip,Spin} from 'antd'; const $ = window.$; class ShixunsHome extends Component { constructor(props) { super(props) this.state={ homedatalist:undefined, hometypepvisible:true } } componentDidMount(){ let url=`/home/index.json`; axios.get(url).then((response)=> { if(response.status===200){ this.setState({ homedatalist:response.data, hometypepvisible:false }) } }).catch((error)=>{ console.log(error) }); } bannaronmousemove=()=>{ $("#bannerrightimg").show(); $("#bannerleftimg").show(); } bannaronmouseout=()=>{ $("#bannerrightimg").hide(); $("#bannerleftimg").hide(); } render() { let {homedatalist,hometypepvisible} = this.state; const arrowStylel = { left: "-76px", width: "76px", textAlign: "left", height: "100%", cursor: "pointer" }; const arrowStyler = { right: "-120px", width: "76px", textAlign: "left", height: "100%", cursor: "pointer" }; const noneStyler={ display: "none" } const CustomNextArrow = props => { return ( <div {...props} id="bannerright" style={arrowStyler}> <img id="bannerrightimg" style={noneStyler} src={"images/educoder/banner-right.png"} /> </div> ); }; const CustomPrevArrow = props => { return ( <div {...props} id="bannerleft" style={arrowStylel}> <img id="bannerleftimg" style={noneStyler} src={"images/educoder/banner-left.png"} /> </div> ); }; let homedatalistreps; if(homedatalist!=undefined){ homedatalistreps=[]; for(var i=0; i<homedatalist.reps.length;i++){ homedatalistreps.push(homedatalist.reps[homedatalist.reps.length-i-1]) } } return ( <div className="newMain clearfix backFAFAFA"> <Spin spinning={hometypepvisible} size="large" style={{marginTop:'15%'}}> {/*懒加载*/} <SiderBar/> <div className="clearfix"> <div className="clearfix edu-back-white pb40 pt30 mb20" id="index-top" onMouseMove={this.bannaronmousemove} onMouseOut={this.bannaronmouseout}> <div className="educontent pr educontentSlider"> {homedatalist===undefined?"": <Slider nextArrow={<CustomNextArrow />} prevArrow={<CustomPrevArrow />} autoplay animation={false} style={{width:"100%"}} arrowPos="outer"> {homedatalist.images_url.map((item, index) => ( <div key={index} className="slider-img-wrapper"> <a href={item.path}> <img src={item.image_url} /> </a> </div> ))} </Slider> } <div className="user_navlist"> <div className="user_navlist_black"> <ul className="black_nav_list"> {homedatalist === undefined ? "" :homedatalistreps.map((item,key)=>{ return( <li className="welcome_shixun_index" data-id="1" data-type="rep" key={key}> <span className="black_nav_span clearfix font-12"> <Link to={"/shixuns?id="+item.rep_id+"&type=rep"}> {item.rep_name} </Link> <img src={getImageUrl("images/educoder/icon/downarrowsmall-right.svg")} className="fr mt15 transform-90"/> </span> <ul className="user_navlist_white" > { item.sub_rep_list.map((i,k)=>{ return( <div className="clearfix mt20 mb5 pb10 navlistpanel-line" key={k}> <p className="little-title clearfix welcome_shixun_index little-titles" data-id="1" data-rep-id="1" data-type="sub" > <Link to={"/shixuns?id="+i.sub_rep_id+"&type=sub&palce="+item.rep_id}> {i.sub_rep_name} </Link> </p> { i.tag_rep_list.map((t,e)=>{ return( <Link className="welcome_shixun_index" data-id="1" data-rep-id="1" data-sub-id="1" to={"/shixuns?id="+t.tag_id+"&type=tag&palce="+item.rep_id} data-type="tag" key={e}>{t.tag_name}</Link> ) }) } </div> ) }) } </ul> </li> ) }) } </ul> </div> </div> </div> </div> {/*实训路径*/} <div className="clearfix pt20 educontent pr pb20"> <div className="edu-txt-center"> <p className="color-dark edu-txt-center font-24" style={{lineHeight: '30px'}}>实践课程</p> <p className="color-grey-cd font-12">TRAINING COURSE</p> </div> <Link to={"/paths"} className="moreitem">更多<i className="fa fa-angle-right ml5"></i></Link> <div className="square-list clearfix" style={{width:'102%'}}> {homedatalist===undefined?"":homedatalist.subjects.map((item,key)=>{ if(key<8) return( <div className="square-Item" key={key} id={item.id} style={{width:'286px'}}> <div className="tag-green"> <span className="tag-name"> {item.name}</span> <img style={{display:item.tag_name===null?"none":'block'}} src={require(`./tag2.png`)}/> </div> <div className={item.power === false ? "closeSquare" : "none"}> <img src={getImageUrl("images/educoder/icon/lockclose.svg")} className="mt80 mb25"/> <p className="font-14 color-white">非试用内容,需要授权</p> </div> <Link to={"/paths/" + item.id} target="_blank" className="square-img"> <img src={item.image_url}/> </Link> <div className="square-main"> <p className="task-hide"> <Link to={"/paths/" + item.id} target="_blank" title={item.name} className="justify color-grey-name"> {item.name} </Link> </p> <p className="clearfix mt8 font-12 color-grey-B4"> <Tooltip placement="bottom" title={"章节"}> <span className="mr10 fl squareIconSpan"> <i className="iconfont icon-zhangjie1 fl mr3 iconfontzhangjie"></i>{item.stages_count} </span> </Tooltip> {/*<Tooltip placement="bottom" title={"实训"}>*/} {/*<span className="mr10 fl squareIconSpan">*/} {/*<i className="iconfont icon-daima fl mr3 iconfontshixundaibeijing"></i>{item.shixuns_count}*/} {/*</span>*/} {/*</Tooltip>*/} <Tooltip placement="bottom" title={"学习人数"}> <span className="mr10 fl squareIconSpan" style={{display:item.stu_num===0?"none":"block"}}> <i className="iconfont icon-chengyuan fl mr3" ></i>{item.members_count} </span> </Tooltip> <span className="fr color-grey-B3 squareIconSpan">{item.level}</span> </p> </div> </div> ) }) } </div> </div> {/*精选实训 改为 开发社区*/} <div className="clearfix pt20 educontent pr pb20"> <div className="edu-txt-center"> <p className="color-dark edu-txt-center font-24" style={{lineHeight: '30px'}}>开发社区</p> <p className="color-grey-cd font-12">DEVELOPMENT COMMUNITY</p> </div> <Link to={"/shixuns"} className="moreitem">更多<i className="fa fa-angle-right ml5"></i></Link> <div className="square-list clearfix" style={{width:'102%'}}> {homedatalist===undefined?"":homedatalist.shixuns.map((item,key)=>{ return( <div className="square-Item" key={key} id={item.id} style={{width:'286px'}}> <div className="tag-green"> <span className="tag-name"> {item.tag_name}</span> <img style={{display:item.tag_name===null?"none":'block'}} src={require(`./tag2.png`)}/> </div> <div className={item.power === false ? "closeSquare" : "none"}> <img src={getImageUrl("images/educoder/icon/lockclose.svg")} className="mt80 mb25"/> <p className="font-14 color-white">非试用内容,需要授权</p> </div> <Link to={"/shixuns/"+item.identifier+"/challenges"} target="_blank" className="square-img"> <img src={item.pic}/> </Link> <div className="square-main"> <p className="task-hide"> <Link to={"/shixuns/"+item.identifier+"/challenges"} target="_blank" title={item.name} className="justify color-grey-name"> {item.name} </Link> </p> <p className="clearfix mt8 ml-3"> <span className="rateYoStar fl" style={{padding: '0px',height: '20px',lineHeight: '19px',cursor: 'default'}} title=""> <Rating key={key} value={item.score_info===null?5:item.score_info} disabled allowHalf /> </span> <span className="fl ml25 font-12 color-grey-9 lineh-12 mt4">{item.score_info===null?"5分":item.score_info+"分"}</span> </p> <p className="clearfix mt8 font-12 color-grey-B4"> <Tooltip placement="bottom" title={"关卡"}> <span className="mr10 fl squareIconSpan"> <i className="iconfont icon-shixunguanqia fl mr3" ></i>{item.challenges_count} </span> </Tooltip> {/*<Tooltip placement="bottom" title={"经验值"}>*/} {/*<span className="mr10 fl squareIconSpan">*/} {/*<i className="iconfont icon-jingyan fl mr3"></i>{item.exp}*/} {/*</span>*/} {/*</Tooltip>*/} <Tooltip placement="bottom" title={"学习人数"}> <span className="mr10 fl squareIconSpan" style={{display:item.stu_num===0?"none":"block"}}> <i className="iconfont icon-chengyuan fl mr3"></i>{item.stu_num} </span> </Tooltip> <span className="fr color-grey-B3 squareIconSpan">{item.level}</span> </p> </div> </div> ) }) } </div> </div> {/*导师排行榜*/} <div className="pt60 pb60 mb30 mentor-ranking"> <div className="educontent"> <div className="edu-txt-center"> <p className="color-dark edu-txt-center font-24" style={{lineHeight: '30px'}}>导师排行榜</p> <p className="color-grey-cd font-12">MENTOR RANKING</p> </div> <div className="ranking clearfix"> <ul className="grade color-dark"> { homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{ if(key===1){ return( <li className="mt35 pr" key={key}> <img src={getImageUrl("images/educoder/huangguan-two.png")} className="huangguan" /> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url} /> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} { homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{ if(key===0){ return( <li className="pr" key={key}> <img src={getImageUrl("images/educoder/huangguan.png")} className="huangguan" /> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url} /> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} { homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{ if(key===2){ return( <li className="mt35 pr" key={key}> <img src={getImageUrl("images/educoder/huangguan-three.png")} className="huangguan" /> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url} /> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} </ul> <br /> <ul className="grade mt30"> { homedatalist===undefined?"":homedatalist.teachers.map((item,key)=>{ if(key>2) { return ( <li key={key}> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url}/> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} </ul> </div> </div> </div> {/*程序员排行榜*/} <div className="pt60 pb60 mb30 pro-ranking"> <div className="educontent"> <div className="edu-txt-center"> <p className="color-dark edu-txt-center font-24" style={{lineHeight: '30px'}}>程序员排行榜</p> <p className="color-grey-cd font-12">PROGRAMMER RANKING</p> </div> <div className="ranking clearfix"> <ul className="grade color-dark"> { homedatalist===undefined?"":homedatalist.students.map((item,key)=>{ if(key===1){ return( <li className="mt35 pr" key={key}> <img src={getImageUrl("images/educoder/huangguan-two.png")} className="huangguan" /> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url} /> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} { homedatalist===undefined?"":homedatalist.students.map((item,key)=>{ if(key===0){ return( <li className="pr" key={key}> <img src={getImageUrl("images/educoder/huangguan.png")} className="huangguan" /> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url} /> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} { homedatalist===undefined?"":homedatalist.students.map((item,key)=>{ if(key===2){ return( <li className="mt35 pr" key={key}> <img src={getImageUrl("images/educoder/huangguan-three.png")} className="huangguan" /> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url} /> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} </ul> <br /> <ul className="grade mt30"> { homedatalist===undefined?"":homedatalist.students.map((item,key)=>{ if(key>2) { return ( <li key={key}> <a href={"/users/"+item.login} className="color-dark"> <img src={'images/'+item.image_url}/> <span className="task-hide rankName">{item.name}</span> </a> </li> ) } })} </ul> </div> </div> </div> </div> </Spin> </div> ); } } export default SnackbarHOC() (TPMIndexHOC ( ShixunsHome ));