You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
educoder/public/react/src/modules/user/usersInfo/video/VideoInReviewItem.js

92 lines
3.8 KiB

6 years ago
import React, { useState, useEffect, useContext, memo } from 'react';
import { Progress, Input, Tooltip } from 'antd'
import { getUrl2, isDev, CBreadcrumb, ActionBtn, ThemeContext } from 'educoder'
import axios from 'axios'
import moment from 'moment'
import playIcon from './images/play.png'
6 years ago
import ClipboardJS from 'clipboard'
6 years ago
/**
cover_url: "http://video.educoder.net/f6ba49c3944b43ee98736898e31b7d88/snapshots/12da3f7df07c499b8f0fc6dc410094e9-00005.jpg"
created_at: "2019-08-12 13:48:26"
file_url: "http://video.educoder.net/sv/4c7eb4-16c845ee09c/4c7eb4-16c845ee09c.mp4"
id: 1
published_at: "2019-08-12 15:38:00"
title: "测试标题"
updated_at: "2019-08-12 17:17:09"
*/
6 years ago
let _clipboard = null;
6 years ago
const clipboardMap = {}
6 years ago
function VideoInReviewItem (props) {
const theme = useContext(ThemeContext);
6 years ago
const { history, file_url, cover_url, title, created_at, published_at, isReview, id
, onEditVideo, onMaskClick, getCopyText, showNotification,vv,play_duration} = props;
6 years ago
useEffect(()=> {
if (!isReview) {
_clipboard = new ClipboardJS(`.copybtn_item_${id}`);
_clipboard.on('success', (e) => {
showNotification('复制成功')
});
6 years ago
clipboardMap[id] = _clipboard
6 years ago
}
return () => {
6 years ago
if (clipboardMap[id]) {
clipboardMap[id].destroy();
clipboardMap[id] = null;
}
6 years ago
}
}, [])
6 years ago
const username = props.match.params.username
function toList() {
6 years ago
history.push(`/users/${username}/videos`)
6 years ago
}
function toUpload() {
6 years ago
history.push(`/users/${username}/videos/upload`)
6 years ago
}
return (
<div className={`${isReview ? 'videoInReviewItem' : 'nItem'} videoItem`}>
6 years ago
<img className="cover" src={cover_url || "http://video.educoder.net/e7d18970482a46d2a6f0e951b504256c/snapshots/491e113950d74f1dab276097dae287dd-00005.jpg"}
></img>
6 years ago
{!isReview && <div className="mask" onClick={() => onMaskClick(props)}>
6 years ago
</div>}
{!isReview &&
6 years ago
<div className="playWrap" onClick={() => onMaskClick(props)}>
<img className="play mp23" src={playIcon}></img>
{play_duration===0?"":<div className={"play_duration"}>累计学习时长{play_duration} h</div>}
6 years ago
</div>
}
6 years ago
<div className="square-main">
<div className="title overflowHidden1"
title={title && title.length > 20 ? title : ''}
>{title}</div>
<div className="df buttonRow mb10">
<span className="time">{moment(published_at || created_at).format('YYYY-MM-DD HH:mm:ss')}</span>
</div>
6 years ago
<div className="df buttonRow">
{/* 2019-09-01 10:00:22 */}
{vv===0?"":<span className={"dianjilianicon"}>
<Tooltip title="播放次数" placement="bottom">
<i className={`icon-dianjiliang iconfont dianjilianicon`}></i>
</Tooltip> {vv}
</span>}
6 years ago
{ isReview != true && <div>
6 years ago
<Tooltip title="编辑" placement="bottom">
6 years ago
<i className="icon-bianji1 iconfont" onClick={() => onEditVideo(props)}
style={{ marginTop: '1px', display: 'inline-block'}}
6 years ago
></i>
6 years ago
</Tooltip>
6 years ago
<Tooltip title="复制视频地址" placement="bottom">
6 years ago
<i className={`icon-fuzhi iconfont copybtn_item_${id}`} data-clipboard-text={getCopyText(file_url, cover_url)}></i>
6 years ago
</Tooltip>
</div> }
</div>
</div>
</div>
)
}
export default VideoInReviewItem