diff --git a/src/components/Events/AdminEvents/adminAddEvent.js b/src/components/Events/AdminEvents/adminAddEvent.js deleted file mode 100644 index e362410..0000000 --- a/src/components/Events/AdminEvents/adminAddEvent.js +++ /dev/null @@ -1,186 +0,0 @@ -import React from 'react' -import moment from 'moment'; - -import InputElement from 'react-input-mask'; -import DatePicker from 'react-datepicker' -import Button from 'components/Button/index' - -import 'react-datepicker/dist/react-datepicker.css'; - -export default class AdminAddEvent extends React.Component { - constructor(props) { - super(props) - this.state = { event: this.props.event, startTimeError: false, endTimeError: false }; - this.resizeTextArea = this.resizeTextArea.bind(this); - this.handleChangeStartDate = this.handleChangeStartDate.bind(this); - this.handleChangeEndDate = this.handleChangeEndDate.bind(this); - this.handleChangeTime = this.handleChangeTime.bind(this); - this.handleChange = this.handleChange.bind(this); - this.handleSubmit = this.handleSubmit.bind(this); - } - - resizeTextArea(e) { - e.target.style.height = "5px"; - e.target.style.height = (e.target.scrollHeight) + "px"; - } - - handleChangeStartDate(date) { - this.setState(prev => { - let newState = Object.assign({}, prev); - newState.event.startDate = date; - return newState; - }); - } - - handleChangeEndDate(date) { - this.setState(prev => { - let newState = Object.assign({}, prev); - newState.event.endDate = date; - return newState; - }); - } - - handleChange(e) { - let name = e.target.name; - let value = e.target.value; - this.setState(prev => { - let newState = Object.assign({}, prev); - newState.event[name] = value; - return newState; - }); - } - - handleSubmit() { - if (this.state.endTimeError || this.state.startTimeError) - return; - if (this.props.onClickAdd) - this.props.onClickAdd(this.state.event); - } - - handleChangeTime(e) { - const name = e.target.name.split("Time")[0]; - const hh = (parseInt(e.target.value[0]) || 0) * 10 + (parseInt(e.target.value[1]) || 0); - const mm = (parseInt(e.target.value[3]) || 0) * 10 + (parseInt(e.target.value[4]) || 0); - this.setState(prev => { - let newState = Object.assign({}, prev); - newState[name + 'TimeError'] = (isNaN(hh) || hh > 23 || isNaN(mm) || mm > 60); - if (!newState[name + 'TimeError']) - if(newState.event[name+ 'Date']) - newState.event[name + 'Date'].set({ hour: hh, minute: mm }); - else { - newState.event[name + 'Date'] = moment({hour:hh, minute:mm}); - } - return newState; - }); - } - - componentWillReceiveProps(nextProps) { - this.setState(prev => { - let newState = Object.assign({}, prev); - newState.event = nextProps.event; - if (newState.event) - newState.event.attendanceCode = nextProps.event.attendanceCode || ""; - return newState; - }); - } - - render() { - return ( -
-
e.stopPropagation()}> -
- -
-
-
-
-

Image URL

- -
-
-

Event URL

- -
-
-
-
-

Event Title

- -
-
-
-
-

Committee

- -
-
-
-
-

Attendance Code

- -
-
-

Attendance Points

- -
-
-
-
-
-

Start Date

- -
-
-

Start Time

- -
-
-
-
-

End Date

- -
-
-

End Time

- -
-
-
-
-

Event Location

- -
-
-
-
-

Event Description

- -
-
-
-
-
-
-
- ); - } -} \ No newline at end of file diff --git a/src/components/Events/AdminEvents/adminAddEvent.jsx b/src/components/Events/AdminEvents/adminAddEvent.jsx new file mode 100644 index 0000000..304ae27 --- /dev/null +++ b/src/components/Events/AdminEvents/adminAddEvent.jsx @@ -0,0 +1,206 @@ +import React from 'react'; +import moment from 'moment'; +import PropTypes from 'prop-types'; + +import InputElement from 'react-input-mask'; +import DatePicker from 'react-datepicker'; +import Button from 'components/Button/index'; + +import 'react-datepicker/dist/react-datepicker.css'; +import Config from 'config'; + +export default class AdminAddEvent extends React.Component { + constructor(props) { + super(props); + const { event } = this.props; + this.state = { event, startTimeError: false, endTimeError: false }; + this.resizeTextArea = this.resizeTextArea.bind(this); + this.handleChangeStartDate = this.handleChangeStartDate.bind(this); + this.handleChangeEndDate = this.handleChangeEndDate.bind(this); + this.handleChangeTime = this.handleChangeTime.bind(this); + this.handleChange = this.handleChange.bind(this); + this.handleSubmit = this.handleSubmit.bind(this); + } + + componentWillReceiveProps(nextProps) { + this.setState((prev) => { + const newState = Object.assign({}, prev); + newState.event = nextProps.event; + if (newState.event) newState.event.attendanceCode = nextProps.event.attendanceCode || ''; + return newState; + }); + } + + resizeTextArea(e) { + this.funcName = 'resizeTextArea'; + e.target.style.height = '5px'; + e.target.style.height = `${e.target.scrollHeight}px`; + } + + handleChangeStartDate(date) { + this.setState((prev) => { + const newState = Object.assign({}, prev); + newState.event.startDate = date; + return newState; + }); + } + + handleChangeEndDate(date) { + this.setState((prev) => { + const newState = Object.assign({}, prev); + newState.event.endDate = date; + return newState; + }); + } + + handleChange(e) { + const { name, value } = e.target; + this.setState((prev) => { + const newState = Object.assign({}, prev); + newState.event[name] = value; + return newState; + }); + } + + handleSubmit() { + const { onClickAdd } = this.props; + const { endTimeError, startTimeError, event } = this.state; + if (endTimeError || startTimeError) return; + if (onClickAdd) onClickAdd(event); + } + + handleChangeTime(e) { + const name = e.target.name.split('Time')[0]; + const hh = (parseInt(e.target.value[0], 10) || 0) * 10 + (parseInt(e.target.value[1], 10) || 0); + const mm = (parseInt(e.target.value[3], 10) || 0) * 10 + (parseInt(e.target.value[4], 10) || 0); + this.setState((prev) => { + const newState = Object.assign({}, prev); + newState[`${name}TimeError`] = (Number.isNaN(hh) || hh > 23 || Number.isNaN(mm) || mm > 60); + if (!newState[`${name}TimeError`]) { + if (newState.event[`${name}Date`]) newState.event[`${name}Date`].set({ hour: hh, minute: mm }); + else { + newState.event[`${name}Date`] = moment({ hour: hh, minute: mm }); + } + } + return newState; + }); + } + + render() { + const { showing, onClickCancel, isEdit } = this.props; + const { event, startTimeError, endTimeError } = this.state; + return ( +
+
e.stopPropagation()}> +
+ ACM +
+
+
+
+

Image URL

+ +
+
+

Event URL

+ +
+
+
+
+

Event Title

+ +
+
+
+
+

Committee

+
+ +
+
+
+
+
+

Attendance Code

+ +
+
+

Attendance Points

+ +
+
+
+
+
+

Start Date

+ +
+
+

Start Time

+ +
+
+
+
+

End Date

+ +
+
+

End Time

+ +
+
+
+
+

Event Location

+ +
+
+
+
+

Event Description

+