dev_aliyun2
harry 5 years ago
parent b6954f9308
commit fc2aff16e4

@ -1,7 +1,7 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import { notification, Alert } from 'antd' import { notification, Alert } from 'antd'
export function SnackbarHOC(options = {}) { export default function SnackbarHOC(options = {}) {
return function wrap(WrappedComponent) { return function wrap(WrappedComponent) {
return class Wrapper extends Component { return class Wrapper extends Component {
constructor(props) { constructor(props) {

@ -2,21 +2,21 @@ import React, { Component } from 'react';
import { Modal } from 'antd'; import { Modal } from 'antd';
export function ModalHOC(options = {}) { export default function ModalHOC(options = {}) {
return function wrap(WrappedComponent) { return function wrap(WrappedComponent) {
return class Wrapper extends Component { return class Wrapper extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
titlemessage: '', titlemessage: '',
Modallist: false, Modallist: false,
Modallisttype: false, Modallisttype: false,
singleButton: false singleButton: false
} }
} }
// 全局的modal this.props.showModal 调用即可 // 全局的modal this.props.showModal 调用即可
showModal = (title, content, okCallback) => { showModal = (title, content, okCallback) => {
this.okCallback = okCallback; this.okCallback = okCallback;
this.setState({ this.setState({
@ -39,55 +39,55 @@ export function ModalHOC(options = {}) {
onCancel = () => { onCancel = () => {
this.setState({ this.setState({
Modallisttype:false Modallisttype: false
}) })
} }
hidemodeldelete = () => { hidemodeldelete = () => {
if (this.okCallback) { if (this.okCallback) {
this.okCallback() this.okCallback()
} }
this.onCancel() this.onCancel()
} }
render() { render() {
const { titlemessage, Modallisttype, Modallist, singleButton } = this.state; const { titlemessage, Modallisttype, Modallist, singleButton } = this.state;
return ( return (
<React.Fragment> <React.Fragment>
<Modal <Modal
keyboard={false} keyboard={false}
title={titlemessage} title={titlemessage}
// visible={modeldelet===true&&listid===list.id?true:false} // visible={modeldelet===true&&listid===list.id?true:false}
visible={Modallisttype} visible={Modallisttype}
className={"ecmodeldelet"} className={"ecmodeldelet"}
closable={false} closable={false}
footer={null} footer={null}
> >
<div className="task-popup-content" > <div className="task-popup-content" >
<div className="task-popup-text-center font-14">{Modallist}</div> <div className="task-popup-text-center font-14">{Modallist}</div>
</div> </div>
{ singleButton ? <div className="task-popup-submit clearfix" {singleButton ? <div className="task-popup-submit clearfix"
style={{ textAlign: 'center' }}> style={{ textAlign: 'center' }}>
<a className="task-btn task-btn-orange" <a className="task-btn task-btn-orange"
onClick={this.onCancel} onClick={this.onCancel}
>知道啦</a> >知道啦</a>
</div> : <div className="task-popup-submit clearfix"> </div> : <div className="task-popup-submit clearfix">
<a onClick={this.onCancel} className="task-btn fl">取消</a> <a onClick={this.onCancel} className="task-btn fl">取消</a>
<a className="task-btn task-btn-orange fr" <a className="task-btn task-btn-orange fr"
onClick={this.hidemodeldelete} onClick={this.hidemodeldelete}
>确定</a> >确定</a>
</div> } </div>}
</Modal> </Modal>
<WrappedComponent {...this.props} <WrappedComponent {...this.props}
showModal={ this.showModal } showModal={this.showModal}
showSingleButtonModal={ this.showSingleButtonModal } showSingleButtonModal={this.showSingleButtonModal}
> >
</WrappedComponent> </WrappedComponent>
</React.Fragment> </React.Fragment>
) )
} }
} }
} }
} }

@ -0,0 +1,125 @@
import React, { Fragment } from 'react';
import { getUploadActionUrl, getUrl } from 'educoder';
import TPMMDEditor from '../modules/tpm/challengesnew/TPMMDEditor';
import moment from 'moment'
moment.defineLocale('zh-cn', {
months: '一月_二月_三月_四月_五月_六月_七月_八月_九月_十月_十一月_十二月'.split('_'),
monthsShort: '1月_2月_3月_4月_5月_6月_7月_8月_9月_10月_11月_12月'.split('_'),
weekdays: '星期日_星期一_星期二_星期三_星期四_星期五_星期六'.split('_'),
weekdaysShort: '周日_周一_周二_周三_周四_周五_周六'.split('_'),
weekdaysMin: '日_一_二_三_四_五_六'.split('_'),
longDateFormat: {
LT: 'Ah点mm分',
LTS: 'Ah点m分s秒',
L: 'YYYY-MM-DD',
LL: 'YYYY年MMMD日',
LLL: 'YYYY年MMMD日Ah点mm分',
LLLL: 'YYYY年MMMD日ddddAh点mm分',
l: 'YYYY-MM-DD',
ll: 'YYYY年MMMD日',
lll: 'YYYY年MMMD日Ah点mm分',
llll: 'YYYY年MMMD日ddddAh点mm分'
},
meridiemParse: /凌晨|早上|上午|中午|下午|晚上/,
meridiemHour: function (hour, meridiem) {
if (hour === 12) {
hour = 0;
}
if (meridiem === '凌晨' || meridiem === '早上' ||
meridiem === '上午') {
return hour;
} else if (meridiem === '下午' || meridiem === '晚上') {
return hour + 12;
} else {
// ''
return hour >= 11 ? hour : hour + 12;
}
},
meridiem: function (hour, minute, isLower) {
var hm = hour * 100 + minute;
if (hm < 600) {
return '凌晨';
} else if (hm < 900) {
return '早上';
} else if (hm < 1130) {
return '上午';
} else if (hm < 1230) {
return '中午';
} else if (hm < 1800) {
return '下午';
} else {
return '晚上';
}
},
calendar: {
sameDay: function () {
return this.minutes() === 0 ? '[今天]Ah[点整]' : '[今天]LT';
},
nextDay: function () {
return this.minutes() === 0 ? '[明天]Ah[点整]' : '[明天]LT';
},
lastDay: function () {
return this.minutes() === 0 ? '[昨天]Ah[点整]' : '[昨天]LT';
},
nextWeek: function () {
var startOfWeek, prefix;
startOfWeek = moment().startOf('week');
prefix = this.unix() - startOfWeek.unix() >= 7 * 24 * 3600 ? '[下]' : '[本]';
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
lastWeek: function () {
var startOfWeek, prefix;
startOfWeek = moment().startOf('week');
prefix = this.unix() < startOfWeek.unix() ? '[上]' : '[本]';
return this.minutes() === 0 ? prefix + 'dddAh点整' : prefix + 'dddAh点mm';
},
sameElse: 'LL'
},
ordinalParse: /\d{1,2}(日|月|周)/,
ordinal: function (number, period) {
switch (period) {
case 'd':
case 'D':
case 'DDD':
return number + '日';
case 'M':
return number + '月';
case 'w':
case 'W':
return number + '周';
default:
return number;
}
},
relativeTime: {
future: '%s内',
past: '%s前',
s: '几秒',
m: '1分钟',
mm: '%d分钟',
h: '1小时',
hh: '%d小时',
d: '1天',
dd: '%d天',
M: '1个月',
MM: '%d个月',
y: '1年',
yy: '%d年'
},
week: {
// GB/T 7408-1994··ISO 8601:1988
dow: 1, // Monday is the first day of the week.
doy: 4 // The week that contains Jan 4th is the first week of the year.
}
});
export default () => {
return (
<Fragment >
<p>{getUrl()}</p>
<p>{getUploadActionUrl()}</p>
<TPMMDEditor />
</Fragment>
)
}

@ -4,14 +4,7 @@ import './index.css'
import App from './App' import App from './App'
import * as serviceWorker from './serviceWorker' import * as serviceWorker from './serviceWorker'
import { configureUrlQuery } from 'react-url-query'
import history from './history'
// link the history used in our app to url-query so it can update the URL with it.
configureUrlQuery({ history })
window.__useKindEditor = false; window.__useKindEditor = false;
ReactDOM.render(<App />, document.getElementById('root')) ReactDOM.render(<App />, document.getElementById('root'))
// If you want your app to work offline and load faster, you can change // If you want your app to work offline and load faster, you can change

@ -23,7 +23,7 @@ const $ = window.$
这里提供props给WrappedComponent用于封装特定的state和功能评论列表 这里提供props给WrappedComponent用于封装特定的state和功能评论列表
不要直接使用this.xxx调用WrappedComponent内的方法尽量避免互相依赖封装好后供不同场景使用tpitpm 不要直接使用this.xxx调用WrappedComponent内的方法尽量避免互相依赖封装好后供不同场景使用tpitpm
*/ */
export function commentHOC(WrappedComponent) { export default function commentHOC(WrappedComponent) {
// 这里如果extends WrappedComponent 会出现 WrappedComponent mount twice的问题 // 这里如果extends WrappedComponent 会出现 WrappedComponent mount twice的问题
return class II extends React.Component { return class II extends React.Component {
constructor(props) { constructor(props) {
@ -604,21 +604,4 @@ export function commentHOC(WrappedComponent) {
) )
} }
} }
} }
/*
<div>
<h2>
HOC Debugger Component
</h2>
<p>
Props
</p>
<pre>{stringify(this.props)}</pre>
<p>
State
</p>
<pre>{stringify(this.state)}</pre>
{super.render()}
</div>
*/

@ -2,23 +2,23 @@ import React, { Component } from 'react';
import { notification } from 'antd' import { notification } from 'antd'
import Modals from '../../modals/Modals' import Modals from '../../modals/Modals'
export function CNotificationHOC(options = {}) { export default function CNotificationHOC(options = {}) {
return function wrap(WrappedComponent) { return function wrap(WrappedComponent) {
return class Wrapper extends Component { return class Wrapper extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
notification.config({ notification.config({
duration: 3, duration: 3,
}); });
this.state = { this.state = {
dialogOpen: false, dialogOpen: false,
defineOpen:false defineOpen: false
} }
} }
showNotification = (description, message = "提示", icon) => { showNotification = (description, message = "提示", icon) => {
// const data = { // const data = {
// message, // message,
// description // description
@ -28,22 +28,22 @@ export function CNotificationHOC(options = {}) {
// } // }
// notification.open(data); // notification.open(data);
notification.open({ notification.open({
message:message, message: message,
description: description, description: description,
style: { style: {
zIndex: 99999999 zIndex: 99999999
}, },
}); });
} }
bytesToSize = (bytes) => { bytesToSize = (bytes) => {
if (bytes === 0) return '0 B'; if (bytes === 0) return '0 B';
let k = 1024, let k = 1024,
sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'], sizes = ['B', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB'],
i = Math.floor(Math.log(bytes) / Math.log(k)); i = Math.floor(Math.log(bytes) / Math.log(k));
return (bytes / Math.pow(k, i)). toFixed(2) + ' ' + sizes[i]; return (bytes / Math.pow(k, i)).toFixed(2) + ' ' + sizes[i];
} }
configNotification = (placement) => { configNotification = (placement) => {
placement && notification.config({ placement && notification.config({
@ -51,19 +51,19 @@ export function CNotificationHOC(options = {}) {
}); });
} }
getNowFormatDates=(val,type)=>{ getNowFormatDates = (val, type) => {
var date = new Date(); var date = new Date();
var seperator1 = "-"; var seperator1 = "-";
var seperator2 = ":"; var seperator2 = ":";
var month ; var month;
var setnum=0; var setnum = 0;
if(val===1){ if (val === 1) {
month= date.getMonth() + 1; month = date.getMonth() + 1;
}else if(val===2){ } else if (val === 2) {
month= date.getMonth() + 2; month = date.getMonth() + 2;
}else{ } else {
month= date.getMonth() + 3; month = date.getMonth() + 3;
} }
var strDate = date.getDate(); var strDate = date.getDate();
if (month >= 1 && month <= 9) { if (month >= 1 && month <= 9) {
@ -73,29 +73,29 @@ export function CNotificationHOC(options = {}) {
strDate = "0" + strDate; strDate = "0" + strDate;
} }
var min=date.getMinutes(); var min = date.getMinutes();
if(val===1){ if (val === 1) {
if (min >= 0 && min <= 9) { if (min >= 0 && min <= 9) {
min = "0" + min; min = "0" + min;
} }
}else{ } else {
if (min >= 0) { if (min >= 0) {
min = "00"; min = "00";
setnum=1; setnum = 1;
} }
} }
let hour=date.getHours()+ setnum; let hour = date.getHours() + setnum;
var currentdate; var currentdate;
if(type===1){ if (type === 1) {
currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate+ " " + "00" + seperator2 + "00"; currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " + "00" + seperator2 + "00";
}else{ } else {
if(val===1){ if (val === 1) {
currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate+ " " + date.getHours() + seperator2 + min; currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " + date.getHours() + seperator2 + min;
}else{ } else {
currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate+ " " + hour + seperator2 + min; currentdate = date.getFullYear() + seperator1 + month + seperator1 + strDate + " " + hour + seperator2 + min;
} }
} }
@ -106,11 +106,11 @@ export function CNotificationHOC(options = {}) {
confirm = (object) => { confirm = (object) => {
const { title, content,subContent, onOk, onCancel, okText } = object; const { title, content, subContent, onOk, onCancel, okText } = object;
this.onCancel = onCancel this.onCancel = onCancel
this.onOk = onOk this.onOk = onOk
this.okText = okText || '确定' this.okText = okText || '确定'
this.setState({ title, content , subContent , dialogOpen: true }) this.setState({ title, content, subContent, dialogOpen: true })
} }
onDialogOkBtnClick = () => { onDialogOkBtnClick = () => {
this.onOk && this.onOk(); this.onOk && this.onOk();
@ -129,11 +129,11 @@ export function CNotificationHOC(options = {}) {
} }
// 附件太大提示框 // 附件太大提示框
define = (object) =>{ define = (object) => {
const { title, content } = object; const { title, content } = object;
this.setState({ title, content, defineOpen: true }) this.setState({ title, content, defineOpen: true })
} }
onDialogdefineOkBtnClick = () =>{ onDialogdefineOkBtnClick = () => {
this.onCancel && this.onCancel(); this.onCancel && this.onCancel();
this.setState({ defineOpen: false }) this.setState({ defineOpen: false })
@ -141,9 +141,9 @@ export function CNotificationHOC(options = {}) {
this.onOk = null this.onOk = null
} }
render() { render() {
const { snackbarOpen, snackbarText, snackbarHorizontal, snackbarVertical, dialogOpen, content ,subContent ,defineOpen } = this.state; const { snackbarOpen, snackbarText, snackbarHorizontal, snackbarVertical, dialogOpen, content, subContent, defineOpen } = this.state;
return ( return (
<React.Fragment> <React.Fragment>
<style> <style>
@ -153,41 +153,41 @@ export function CNotificationHOC(options = {}) {
} }
`} `}
</style> </style>
<Modals
className="confirmModal"
modalsType={dialogOpen}
modalsTopval={
content
}
modalsBottomval={ subContent || "" }
modalCancel={this.handleDialogClose}
modalSave={this.onDialogOkBtnClick}
okText={this.okText}
>
</Modals>
<Modals <Modals
modalsType={defineOpen} className="confirmModal"
modalsTopval={ modalsType={dialogOpen}
content modalsTopval={
} content
loadtype={true} }
modalsBottomval={""} modalsBottomval={subContent || ""}
modalCancel={undefined} modalCancel={this.handleDialogClose}
modalSave={this.onDialogdefineOkBtnClick} modalSave={this.onDialogOkBtnClick}
> okText={this.okText}
</Modals> >
<WrappedComponent {...this.props} </Modals>
showNotification= { this.showNotification } <Modals
bytesToSize={this.bytesToSize} modalsType={defineOpen}
getNowFormatDates={(value,type)=>this.getNowFormatDates(value,type)} modalsTopval={
configNotification={ this.configNotification } content
confirm={ this.confirm } }
define={ this.define } loadtype={true}
modalsBottomval={""}
modalCancel={undefined}
modalSave={this.onDialogdefineOkBtnClick}
>
</Modals>
<WrappedComponent {...this.props}
showNotification={this.showNotification}
bytesToSize={this.bytesToSize}
getNowFormatDates={(value, type) => this.getNowFormatDates(value, type)}
configNotification={this.configNotification}
confirm={this.confirm}
define={this.define}
> >
</WrappedComponent> </WrappedComponent>
</React.Fragment> </React.Fragment>
) )
} }
} }
} }
} }

@ -2,21 +2,21 @@ import React, { Component } from 'react';
import { Modal } from 'antd'; import { Modal } from 'antd';
export function ECModalHOC(options = {}) { export default function ECModalHOC(options = {}) {
return function wrap(WrappedComponent) { return function wrap(WrappedComponent) {
return class Wrapper extends Component { return class Wrapper extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = {
titlemessage: '',
Modallist: false,
Modallisttype: false,
singleButton: false
}
}
// 全局的modal this.props.showModal 调用即可 this.state = {
titlemessage: '',
Modallist: false,
Modallisttype: false,
singleButton: false
}
}
// 全局的modal this.props.showModal 调用即可
showModal = (title, content, okCallback) => { showModal = (title, content, okCallback) => {
this.okCallback = okCallback; this.okCallback = okCallback;
this.setState({ this.setState({
@ -39,53 +39,53 @@ export function ECModalHOC(options = {}) {
onCancel = () => { onCancel = () => {
this.setState({ this.setState({
Modallisttype:false Modallisttype: false
}) })
} }
hidemodeldelete = () => { hidemodeldelete = () => {
if (this.okCallback) { if (this.okCallback) {
this.okCallback() this.okCallback()
} }
this.onCancel() this.onCancel()
} }
render() { render() {
const { titlemessage, Modallisttype, Modallist, singleButton } = this.state; const { titlemessage, Modallisttype, Modallist, singleButton } = this.state;
return ( return (
<React.Fragment> <React.Fragment>
<Modal <Modal
title={titlemessage} title={titlemessage}
// visible={modeldelet===true&&listid===list.id?true:false} // visible={modeldelet===true&&listid===list.id?true:false}
visible={Modallisttype} visible={Modallisttype}
className={"ecmodeldelet"} className={"ecmodeldelet"}
closable={false} closable={false}
footer={null} footer={null}
> >
<div className="task-popup-content" > <div className="task-popup-content" >
<div className="task-popup-text-center font-14">{Modallist}</div> <div className="task-popup-text-center font-14">{Modallist}</div>
</div> </div>
{ singleButton ? <div className="task-popup-submit clearfix" {singleButton ? <div className="task-popup-submit clearfix"
style={{ textAlign: 'center' }}> style={{ textAlign: 'center' }}>
<a className="task-btn task-btn-orange" <a className="task-btn task-btn-orange"
onClick={this.onCancel} onClick={this.onCancel}
>知道啦</a> >知道啦</a>
</div> : <div className="task-popup-submit clearfix"> </div> : <div className="task-popup-submit clearfix">
<a onClick={this.onCancel} className="task-btn fl">取消</a> <a onClick={this.onCancel} className="task-btn fl">取消</a>
<a className="task-btn task-btn-orange fr" <a className="task-btn task-btn-orange fr"
onClick={this.hidemodeldelete} onClick={this.hidemodeldelete}
>确定</a> >确定</a>
</div> } </div>}
</Modal> </Modal>
<WrappedComponent {...this.props} <WrappedComponent {...this.props}
showModal={ this.showModal } showModal={this.showModal}
showSingleButtonModal={ this.showSingleButtonModal } showSingleButtonModal={this.showSingleButtonModal}
> >
</WrappedComponent> </WrappedComponent>
</React.Fragment> </React.Fragment>
) )
} }
} }
} }
} }

@ -1,33 +1,14 @@
import React, { Component } from 'react'; import React, { Component } from 'react';
import moment from 'moment'
import EditableCourseSupportSetting from './EditableCourseSupportSetting' import EditableCourseSupportSetting from './EditableCourseSupportSetting'
import ShowTableCourseSupportSetting from './ShowTableCourseSupportSetting' import ShowTableCourseSupportSetting from './ShowTableCourseSupportSetting'
import { Form, Input, Icon, Button, Select } from 'antd';
// import EcTitleCourseEvaluations from '../ecTitle/ecTitle'
import { SnackbarHOC, getUrl } from 'educoder' import { SnackbarHOC } from 'educoder'
import axios from 'axios' import axios from 'axios'
import 'antd/dist/antd.css'; import 'antd/dist/antd.css';
// import '../css/ecCourseEvaluations.css'
import './style.less' import './style.less'
import { ECModalHOC } from '../../common/ECModalHOC' import { ECModalHOC } from '../../common/ECModalHOC'
const { Option } = Select;
// TODO 公共方法 或 抽取到顶层组件
let _url_origin = getUrl()
const $ = window.$
// https://www.educoder.net/stylesheets/educoder/edu-all.css?1546618720
// if (!window['EcCourseSupportSettingLoaded']) {
// $('head').append( $('<link rel="stylesheet" type="text/css" />')
// .attr('href', `${_url_origin}/stylesheets/educoder/edu-all.css?1525440977`) );
// window['EcCourseSupportSettingLoaded'] = true
// }
class EcCourseSupportSetting extends Component { class EcCourseSupportSetting extends Component {
constructor(props) { constructor(props) {
@ -152,10 +133,6 @@ class EcCourseSupportSetting extends Component {
console.log(error); console.log(error);
}); });
// test data
// this.setState({ ...fake_data })
} }
getNavigationData = (ec_course_id) => { getNavigationData = (ec_course_id) => {
return; return;

@ -22,7 +22,7 @@ function urlStringify(params) {
paramsUrl = paramsUrl.substring(0, paramsUrl.length - 1); paramsUrl = paramsUrl.substring(0, paramsUrl.length - 1);
return paramsUrl; return paramsUrl;
} }
export function postPaginationHOC(options = {}) { export default function postPaginationHOC(options = {}) {
// options.isMyPublish // options.isMyPublish
return function wrap(WrappedComponent) { return function wrap(WrappedComponent) {

@ -2,13 +2,13 @@ import React, { Component } from 'react';
import ImageLayer from './ImageLayer' import ImageLayer from './ImageLayer'
import { isImageExtension } from 'educoder' import { isImageExtension } from 'educoder'
const $ = window.$; const $ = window.$;
export function ImageLayerOfCommentHOC(options = {}) { export default function ImageLayerOfCommentHOC(options = {}) {
return function wrap(WrappedComponent) { return function wrap(WrappedComponent) {
return class Wrapper extends Component { return class Wrapper extends Component {
constructor(props) { constructor(props) {
super(props); super(props);
this.state = { this.state = {
showImage: false, showImage: false,
imageSrc: '' imageSrc: ''
@ -21,8 +21,8 @@ export function ImageLayerOfCommentHOC(options = {}) {
const fileName = event.target.innerHTML.trim() const fileName = event.target.innerHTML.trim()
if (isImageExtension(imageSrc.trim()) || isImageExtension(fileName) || event.target.tagName == 'IMG') { if (isImageExtension(imageSrc.trim()) || isImageExtension(fileName) || event.target.tagName == 'IMG') {
// 非回复里的头像图片; 非emoticons // 非回复里的头像图片; 非emoticons
if (imageSrc.indexOf('/images/avatars/User') === -1 && if (imageSrc.indexOf('/images/avatars/User') === -1 &&
imageSrc.indexOf('kindeditor/plugins/emoticons') === -1 ) { imageSrc.indexOf('kindeditor/plugins/emoticons') === -1) {
this.setState({ this.setState({
showImage: true, showImage: true,
imageSrc, imageSrc,
@ -38,20 +38,20 @@ export function ImageLayerOfCommentHOC(options = {}) {
} }
// jQuery._data( $('.newMain')[0], "events" ) // jQuery._data( $('.newMain')[0], "events" )
componentDidMount() { componentDidMount() {
this.props.wrappedComponentRef && this.props.wrappedComponentRef(this.refs['wrappedComponentRef']) this.props.wrappedComponentRef && this.props.wrappedComponentRef(this.refs['wrappedComponentRef'])
// commentsDelegateParent #game_left_contents #tab_con_4 // commentsDelegateParent #game_left_contents #tab_con_4
setTimeout(() => { setTimeout(() => {
$(options.parentSelector || ".commentsDelegateParent") $(options.parentSelector || ".commentsDelegateParent")
.delegate(options.imgSelector || ".J_Comment_Reply .comment_content img, .J_Comment_Reply .childrenCommentsView img","click", this.onDelegateClick); .delegate(options.imgSelector || ".J_Comment_Reply .comment_content img, .J_Comment_Reply .childrenCommentsView img", "click", this.onDelegateClick);
}, 1200) }, 1200)
} }
componentWillUnmount() { componentWillUnmount() {
$(options.parentSelector || ".commentsDelegateParent", 'click', this.onDelegateClick) $(options.parentSelector || ".commentsDelegateParent", 'click', this.onDelegateClick)
} }
onImageLayerClose = () => { onImageLayerClose = () => {
this.setState({ this.setState({
showImage: false, showImage: false,
@ -59,23 +59,23 @@ export function ImageLayerOfCommentHOC(options = {}) {
}) })
} }
MdifHasAnchorJustScorll=()=>{ MdifHasAnchorJustScorll = () => {
//mdhash滚动 //mdhash滚动
let anchor = decodeURI(this.props.location.hash).replace('#', ''); let anchor = decodeURI(this.props.location.hash).replace('#', '');
// 对应id的话, 滚动到相应位置 // 对应id的话, 滚动到相应位置
if (!!anchor) { if (!!anchor) {
let anchorElement = document.getElementsByName(anchor); let anchorElement = document.getElementsByName(anchor);
if (anchorElement) { if (anchorElement) {
if (anchorElement.length!=0) { if (anchorElement.length != 0) {
anchorElement[anchorElement.length-1].scrollIntoView(); anchorElement[anchorElement.length - 1].scrollIntoView();
} }
} }
} }
} }
render() { render() {
this.MdifHasAnchorJustScorll(); this.MdifHasAnchorJustScorll();
return ( return (
<React.Fragment> <React.Fragment>
<ImageLayer {...this.state} onImageLayerClose={this.onImageLayerClose}></ImageLayer> <ImageLayer {...this.state} onImageLayerClose={this.onImageLayerClose}></ImageLayer>
@ -86,5 +86,5 @@ export function ImageLayerOfCommentHOC(options = {}) {
) )
} }
} }
} }
} }

@ -11,8 +11,6 @@ import LoginDialog from '../login/LoginDialog';
import AccountProfile from '../user/AccountProfile'; import AccountProfile from '../user/AccountProfile';
import AccountPhoneemail from '../user/AccountPhoneemail'; import AccountPhoneemail from '../user/AccountPhoneemail';
import { broadcastChannelOnmessage } from 'educoder';
const $ = window.$; const $ = window.$;
let _url_origin = ''; let _url_origin = '';
@ -37,7 +35,7 @@ if (!window['indexHOCLoaded']) {
} }
// TODO css加载完成后再打开页面行为和tpm其他页面一致 // TODO css加载完成后再打开页面行为和tpm其他页面一致
export function TPMIndexHOC(WrappedComponent) { export default function TPMIndexHOC(WrappedComponent) {
// 这里如果extends WrappedComponent 会出现 WrappedComponent mount twice的问题 // 这里如果extends WrappedComponent 会出现 WrappedComponent mount twice的问题
return class II extends React.Component { return class II extends React.Component {
constructor(props) { constructor(props) {

Loading…
Cancel
Save