import React,{ Component } from "react";

import { Menu, Spin } from 'antd';

import { WordsBtn } from 'educoder';
import axios from 'axios';
import Videos from './Video';
import Lives from './Live';
import LivesNew from './LiveNew';


import './video.css';
import '../css/Courses.css';
import '../publicNav/nav.css';
const PAGE_SIZE = 15;
const LIVE_PAGE_SIZE = 10;
const $ = window.$;

function getRight(){
  var right = parseInt($(".-task-sidebar").css("right"));
  return right===0?0:right;
}
class VideoIndex extends Component{
  constructor(props){
    super(props);
    this.state={
      page:1,
      upload:false,
      videos:undefined,
      videoData:undefined,
      type:"video",
      isSpining:false,

      lives:undefined,
      liveData:undefined,

      liveId:undefined,

      liveVisible:false
    }
  }

  checkType=(type,page)=>{
    this.setState({
      type,
      isSpining:true
    })
    if(type === "video"){
      this.getList(page);
    }else{
      this.getLiveList(page);
    }
  }

  componentDidMount=()=>{
    const { search } = this.props.location;
    const { page } = this.state;
    if(search && search === "?open=live"){
      this.setState({
        type:"live"
      })
      this.checkType("live",page);
    }else{
      if(search === "?open=new"){
        this.setState({
          upload:true
        })
      }
      this.checkType("video",page);
    }
  }
  // 获取直播列表
  getLiveList=(page)=>{
    const CourseId=this.props.match.params.coursesId;
    const url = `/courses/${CourseId}/live_links.json`;
    axios.get(url,{
      params:{
        page,
        limit:LIVE_PAGE_SIZE
      }
    }).then(result=>{
      if(result){
        this.setState({
          liveData:result.data,
          lives:result.data.lives,
          isSpining:false,
        })
      }
    }).catch(error=>{
      console.log(error);
    })
  }
  
  // 获取视频列表
  getList=(page)=>{
    const CourseId=this.props.match.params.coursesId;
    const fetchUrl = `/courses/${CourseId}/course_videos.json`;
    axios.get(fetchUrl, {
      params: {
        page,
        limit: PAGE_SIZE,
      }
    })
    .then((response) => {
      if(response){
        this.setState({
          videos:response.data.videos,
          videoData:response.data,
          isSpining:false
        })
      }
    }).catch((error) => {
      console.log(error);
    })
  }

  changeType=(e)=>{
    this.setState({
      type:e.key,
      upload:false,
      page:1
    })
    this.checkType(e.key,1);
  } 

  changePage=(page,type)=>{
    this.setState({
      page
    })
    this.checkType(type,page);
  }

  onEditVideo=(item)=>{
    let videoId = {
      videoId: item.id,
      title: item.title
    }
    this.setState({
      videoId,
    })
    this.setVisible(true);
  }
  uploadVideo=(upload)=>{
    this.setState({
      upload,
      isSpining:true
    })
    const { page } = this.state;
    setTimeout(()=>{
      this.getList(page);
    },500)
  }

  toUpload =()=> {
    const { admin , is_teacher,business} = this.props.user;
    if (admin || business || (is_teacher && this.props.checkIfProfessionalCertification())) {
      this.setState({
        type:"video",
        upload:true,
        page:1
      })
    } else {
      this.props.showProfessionalCertificationDialog();
    }
  }

  // 直播设置后回调的方法
  // successFunc=()=>{
  //   this.setState({
  //     type:"live",
  //     page:1
  //   })
  //   this.checkType("live",1);
  // }
  // 直播设置
  liveSetting=()=>{
    this.setState({
      liveId:undefined
    })
    this.setliveVisibel(true);
  }
  //直播设置弹框
  setliveVisibel=(flag,changetypeFlag)=>{
    this.setState({
      liveVisible:flag
    })
    if(flag === false){
      this.setState({
        liveId:undefined
      })
    }
    if(changetypeFlag){
      this.checkType("live",1);
    }
  }
  // 列表-编辑(修改传到编辑的id)
  setLiveId=(id)=>{
    this.setState({
      liveId:id
    })
    this.setliveVisibel(true);
  }
  render(){
    const { videos , upload , videoData , type , liveData , lives , page , liveVisible , isSpining , liveId } = this.state;
    const { admin , is_teacher , business } = this.props.user;
    // console.log("p",this.props);
    return(
      <React.Fragment>
        <LivesNew 
          visible={liveVisible} 
          liveId={liveId}
          setliveVisibel={this.setliveVisibel} 
          {...this.props} 
          {...this.state}
        ></LivesNew>
        {
          liveVisible ?
          <style>{
          `
          body{
            width: calc(100% - 7px)!important;
            overflow: hidden!important;
          }
          .-task-sidebar{
            right:${getRight()+7}px!important;
          }
          `}</style>:
          <style>{
            `
            body{
              width: 100%!important;
            }
            `}</style>
        }
        <div className="edu-back-white" style={{marginBottom:"1px"}}>

          <div className="clearfix pl30 pr30 menuDiv">
            <div className="task_menu_ul fl">
              <Menu mode="horizontal" selectedKeys={[type]} onClick={this.changeType}>
                <Menu.Item key="video">视频</Menu.Item>
                <Menu.Item key="live">直播</Menu.Item>
              </Menu>
            </div>
            {
              (admin || is_teacher || business) &&
              <li className="fr mt18">
                {
                  type === "video" ?
                    <React.Fragment>
                      {
                        upload ?
                        <WordsBtn style="grey" className="font-16" onClick={()=>this.uploadVideo(false)}>取消</WordsBtn>
                        :
                        <WordsBtn style="blue" className="font-16" onClick={this.toUpload}>上传视频</WordsBtn>
                      }
                    </React.Fragment>
                  :
                  <WordsBtn style="blue" className="font-16 ml30" onClick={this.liveSetting}>添加直播</WordsBtn>
                }
              </li>
            }
          </div>
        </div>
        <Spin spinning={isSpining}>
        {
          type === "video" ? 
            <Videos 
              upload={upload} 
              videos={videos} 
              page={page}
              data={videoData}
              pageSize={PAGE_SIZE}
              uploadVideo={this.uploadVideo}
              listFunc={this.getList}
              changePage={this.changePage}
              {...this.props} 
              {...this.state}
            ></Videos>
            :
            <Lives
              lives={lives}
              liveData={liveData}
              page={page}
              pageSize={LIVE_PAGE_SIZE}
              successFunc={this.getLiveList}
              changePage={this.changePage}
              setLiveId={this.setLiveId}
              {...this.props}
              {...this.state}
            ></Lives>
        }
        </Spin>
      </React.Fragment>
    )
  }
}
export default VideoIndex;