diff --git a/src/components/ServiceManage/BoardInfoModal.js b/src/components/ServiceManage/BoardInfoModal.js deleted file mode 100644 index bf1f30b..0000000 --- a/src/components/ServiceManage/BoardInfoModal.js +++ /dev/null @@ -1,1000 +0,0 @@ -import { styled } from 'styled-components'; -import { useState, useRef, Fragment, useEffect } from 'react'; - -import Button from '../common/button/Button'; -import CheckBox from '../common/input/CheckBox'; -import Modal from '../common/modal/Modal'; - -import { Title, BtnWrapper, SelectInput, TextInput, DatePickerWrapper, InputLabel, Textarea, ModalText, SearchBarAlert } from '../../styles/Components'; -import CloseIcon from '../../assets/img/icon/icon-close.png'; -import DatePickerComponent from '../common/Date/DatePickerComponent'; -import { HourList, MinuteList } from '../../assets/data'; -import { NoticeModify } from '../../apis'; -import { useTranslation } from 'react-i18next'; -import { convertKTC, convertKTCDate } from '../../utils'; -import { languageType } from '../../assets/data/options'; - -const BoardInfoModal = ({ detailView, setDetailView, content, id, setIsCopyData, openRegistModal, userInfo }) => { - let viewOnly = userInfo.auth_list && !userInfo.auth_list.some(auth => auth.id === 17); // 조회만 가능 권한 - let updateAuth = userInfo.auth_list && userInfo.auth_list.some(auth => auth.id === 17); // 등록 가능 권한 - const NOW_DATE = new Date(); - const { t } = useTranslation(); - - const [copyView, setCopyView] = useState('hidden'); - const [sendHour, setSendHour] = useState('00'); - const [sendMin, setSendMin] = useState('00'); - const [endHour, setEndHour] = useState('00'); - const [endMin, setEndMin] = useState('00'); - const [repeatHour, setRepeatHour] = useState('00'); - const [repeatMin, setRepeatMin] = useState('00'); - - const [modifyModal, setModifyModal] = useState('hidden'); - const [completeModal, setCompleteModal] = useState('hidden'); - const [registView, setRegistView] = useState('hidden'); - - const [isPast, setIsPast] = useState(false); - - const [resultData, setResultData] = useState({ - send_dt: '', - end_dt: '', - message_type: 'CHATTING', - is_repeat: true, - repeat_type: 'COUNT', - repeat_dt: '00:00:00', - repeat_cnt: '1', - game_message: [ - { language: 'KO', content: '' }, - { language: 'EN', content: '' }, - { language: 'JA', content: '' }, - ], - }); - const [isNullValue, setIsNullValue] = useState(false); - const [isChanged, setIsChanged] = useState(false); - - const [nullMessage, setNullMessage] = useState('필수값을 입력해주세요.'); - const [isDelete, setIsDelete] = useState(false); - const [btnValidation, setBtnValidation] = useState(false); - const [message_lang, setMessage_lang] = useState('KO'); - - const itemId = useRef(1); - - const KOREAN_TIME = content && convertKTCDate(content.detail.send_dt); - - const KOREAN_END_TIME = content && convertKTCDate(content.detail.end_dt); - - const initialData = { - send_dt: content && new Date(KOREAN_TIME), - end_dt: content && new Date(KOREAN_END_TIME), - send_hour: content && KOREAN_TIME.getHours() < 10 ? '0' + content && KOREAN_TIME.getHours() : content && KOREAN_TIME.getHours(), - send_min: content && KOREAN_TIME.getMinutes() < 10 ? '0' + content && KOREAN_TIME.getMinutes() : content && KOREAN_TIME.getMinutes(), - end_hour: content && KOREAN_END_TIME.getHours() < 10 ? '0' + content && KOREAN_END_TIME.getHours() : content && KOREAN_END_TIME.getHours(), - end_min: content && KOREAN_END_TIME.getMinutes() < 10 ? '0' + content && KOREAN_END_TIME.getMinutes() : content && KOREAN_END_TIME.getMinutes(), - message_type: content && content.detail.message_type, - is_repeat: content && content.detail.is_repeat, - repeat_type: content && content.detail.repeat_type, - repeat_dt: content && content.detail.repeat_dt, - repeat_cnt: content && content.detail.repeat_cnt, - repeat_hour: content && content.detail.repeat_dt.substr(0, 2), - repeat_min: content && content.detail.repeat_dt.substr(3, 2), - game_message: content && content.game_message, - }; - - useEffect(() => { - setSendHour('00'); - setSendMin('00'); - setEndHour('00'); - setEndMin('00'); - setRepeatHour('00'); - setRepeatMin('00'); - setResultData({ - send_dt: content && new Date(KOREAN_TIME), - end_dt: content && new Date(KOREAN_END_TIME), - message_type: content && content.detail.message_type, - is_repeat: content && content.detail.is_repeat, - repeat_type: content && content.detail.repeat_type, - repeat_dt: content && content.detail.repeat_dt, - repeat_cnt: content && content.detail.repeat_cnt, - game_message: content && content.game_message, - }); - - if (content && content.game_message.length <= 1) { - setBtnValidation(true); - } - - if(content && content.game_message.length >= 1){ - if(content.game_message.find(message => message.language === "KO")) - setMessage_lang("KO") - else - setMessage_lang(content.game_message[0].language); - } - - (NOW_DATE > KOREAN_TIME) ? setIsPast(true) : setIsPast(false); - - }, [content]); - - const handleRepeatTime = e => { - if (e.target.id === 'hour') setRepeatHour(e.target.value); - else if (e.target.id === 'min') setRepeatMin(e.target.value); - - setResultData({ ...resultData, repeat_dt: (e.target.id === 'hour' ? e.target.value : repeatHour) + ':' + (e.target.id === 'min' ? e.target.value : repeatMin) + ':00' }); - setIsChanged(true); - }; - - const handleSendTime = e => { - let sendDate = ''; - - if (resultData.send_dt.length === 0 || typeof resultData.send_dt.length != 'undefined') { - sendDate = new Date(); - } else { - sendDate = new Date(resultData.send_dt); - } - - if (e.target.id === 'hour') setSendHour(e.target.value); - else if (e.target.id === 'min') setSendMin(e.target.value); - - const result = new Date(sendDate.getFullYear(), sendDate.getMonth(), sendDate.getDate(), e.target.id === 'hour' ? e.target.value : sendHour, e.target.id === 'min' ? e.target.value : sendMin); - - setResultData({ ...resultData, send_dt: result }); - setIsChanged(true); - }; - - // 날짜 설정 - const handleSelectedDate = data => { - const sendDate = new Date(data); - - if (resultData.send_dt.length === 0 || typeof resultData.send_dt.length != 'undefined') { - setSendHour('00'); - setSendMin('00'); - } - - const resultSendData = new Date(sendDate.getFullYear(), sendDate.getMonth(), sendDate.getDate(), sendHour, sendMin); - - setIsChanged(true); - setResultData({ ...resultData, send_dt: resultSendData }); - }; - - // 종료 시간 설정 - const handleEndTime = e => { - let endDate = ''; - - if (resultData.end_dt.length === 0 || typeof resultData.end_dt.length != 'undefined') { - endDate = new Date(); - } else { - endDate = new Date(resultData.end_dt); - } - - if (e.target.id === 'hour') setEndHour(e.target.value); - else if (e.target.id === 'min') setEndMin(e.target.value); - - let result = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), e.target.id === 'hour' ? e.target.value : endHour, e.target.id === 'min' ? e.target.value : endMin); - - if (resultData.send_dt > result){ - alert(t('NOTICE_DATE_CHECK')); - result = new Date(resultData.send_dt); - } - - setResultData({ ...resultData, end_dt: result }); - setIsChanged(true); - }; - - // 종료 날짜 설정 - const handleSelectedEndDate = data => { - const endDate = new Date(data); - - if (resultData.end_dt.length === 0 || typeof resultData.end_dt.length != 'undefined') { - setEndHour('00'); - setEndMin('00'); - } - - let resultEndData = new Date(endDate.getFullYear(), endDate.getMonth(), endDate.getDate(), endHour, endMin); - - if (resultData.send_dt > resultEndData){ - alert(t('NOTICE_DATE_CHECK')); - resultEndData = new Date(resultData.send_dt); - } - - setIsChanged(true); - setResultData({ ...resultData, end_dt: resultEndData }); - }; - - - // 삭제 버튼 클릭 - const handleDelete = language => { - let filterList = resultData.game_message.filter(el => el.language !== language); - - if (filterList.length === 1) { - setBtnValidation(true); - setNullMessage(''); - } else if (filterList.length > 1) { - setBtnValidation(false); - } - - setIsDelete(true); - setIsChanged(true); - setResultData({ ...resultData, game_message: filterList }); - }; - - // 메세지 내용 입력 데이터 - const handleInputData = e => { - if (e.target.value.length > 250) { - return; - } - let list = [...resultData.game_message]; - let findIndex = resultData.game_message.findIndex(item => item.language === e.target.id); - list[findIndex].content = e.target.value.trimStart(); - - if (list[findIndex].content.length === 0) { - // setIsNullValue(true); - setNullMessage(''); - } else if (list[findIndex].content.length >= 1) { - setIsNullValue(false); - } - - setIsChanged(true); - setResultData({ ...resultData, game_message: list }); - }; - - // 반복횟수 입력 데이터 폼 처리 - const handleRepeatValue = e => { - e.target.value.length === 0 ? setIsNullValue(true) : setIsNullValue(false); - - if (e.target.value === '0' || e.target.value === '-0') { - setResultData({ ...resultData, repeat_cnt: '1' }); - e.target.value = '1'; - } else if (e.target.value < 0) { - let plusNum = Math.abs(e.target.value); - setResultData({ ...resultData, repeat_cnt: plusNum }); - } else { - setResultData({ ...resultData, repeat_cnt: e.target.value }); - } - - setIsChanged(true); - }; - - // 언어 선택 - const handleLanguage = e => { - setMessage_lang(e.target.value); - if(!resultData.game_message.some(({language}) => language === e.target.value)) - setResultData({ ...resultData, game_message: [...resultData.game_message, {language: e.target.value, content: ''}] }) - } - - // 수정 버튼 - const handleModifyBtn = e => { - e.preventDefault(); - - if(resultData.game_message.every(msg => msg.content === "" || msg.content === null || msg.content === undefined)){ - alert(t('NOTICE_MSG_EMPTY')) - return; - } - - if (isNullValue === false && isChanged === true) { - handleModifyModal(); - } else { - setNullMessage(t('REQUIRED_VALUE_CHECK')); - } - }; - - const handleModifyModal = () => { - if (modifyModal === 'hidden') { - setModifyModal('view'); - } else { - setModifyModal('hidden'); - } - }; - - // 완료 모달창 - const handleCompleteModal = () => { - if (completeModal === 'hidden') { - setCompleteModal('view'); - } else { - setCompleteModal('hidden'); - - window.location.reload(); - } - }; - - // 수정 - const handleModifyNotice = () => { - const token = sessionStorage.getItem('token'); - - NoticeModify(token, id, resultData); - - handleCompleteModal(); - handleModifyModal(); - - itemId.current = 1; - }; - - // 내용 복사 - const handleCopyBtn = e => { - e.preventDefault(); - setCopyView('view'); - }; - - // 확인 버튼 닫고 올 리셋 - const handleReset = e => { - setIsDelete(false); - setIsNullValue(false); - setIsChanged(false); - setBtnValidation(false); - }; - - return ( - <> - - 인게임 메시지 정보 - {/* 등록 후 정보 확인시에만 */} - {content && typeof content.detail.update_by !== 'undefined' && ( - <> - - - 수정자(이메일주소) : {content && content.detail.update_name}({content && content.detail.update_by}) - - 수정일자 : {content && convertKTC(content.detail.update_dt, false)} - - - )} - - [메세지 등록 설정] - - - - 송출 일자(예약) - - - - handleSelectedDate(data)} - pastDate={new Date()} - /> - - handleSendTime(e)} - id="hour" - disabled={viewOnly || isPast} - value={ - resultData && String(new Date(resultData.send_dt).getHours()) < 10 - ? '0' + String(new Date(resultData.send_dt).getHours()) - : (resultData && String(new Date(resultData.send_dt).getHours())) || '' - }> - {HourList.map(hour => ( - - ))} - - handleSendTime(e)} - id="min" - disabled={viewOnly || isPast} - value={ - resultData && String(new Date(resultData.send_dt).getMinutes()) < 10 - ? '0' + String(new Date(resultData.send_dt).getMinutes()) - : (resultData && String(new Date(resultData.send_dt).getMinutes())) || '' - }> - {MinuteList.map(min => ( - - ))} - - - * UTC+9 한국시간 기준으로 설정 (UTC+0 자동 반영처리) - - - - 메시지 타입 - { - setResultData({ ...resultData, message_type: e.target.value }); - setIsChanged(true); - }} - value={resultData.message_type || ''}> - - - - - - - {/* setResultData({ ...resultData, is_repeat: e.target.checked })} />*/} - - {resultData.is_repeat === true && ( - <> - - 반복 타입 - setResultData({ ...resultData, repeat_type: e.target.value })} value={resultData.repeat_type || ''}> - - - - - - - )} - - - {resultData.is_repeat === true && ( - <> - {resultData.repeat_type !== "COUNT" && ( - <> - - 종료 일자 - - - - handleSelectedEndDate(data)} selectedDate={resultData.end_dt} pastDate={new Date()} /> - - handleEndTime(e)} - id="hour" - value={ - resultData && String(new Date(resultData.end_dt).getHours()) < 10 - ? '0' + String(new Date(resultData.end_dt).getHours()) - : (resultData && String(new Date(resultData.end_dt).getHours())) || '' - }> - {HourList.map(hour => ( - - ))} - - handleEndTime(e)} - id="min" - value={ - resultData && String(new Date(resultData.end_dt).getMinutes()) < 10 - ? '0' + String(new Date(resultData.end_dt).getMinutes()) - : (resultData && String(new Date(resultData.end_dt).getMinutes())) || '' - }> - {MinuteList.map(min => ( - - ))} - - - - - - )} - - - - {resultData.repeat_type === "TIME" && (발송시간)} - handleRepeatTime(e)} id="hour" value={resultData.repeat_dt.split(':')[0] || ''}> - {HourList.map(hour => ( - - ))} - - handleRepeatTime(e)} id="min" value={resultData.repeat_dt.split(':')[1] || ''}> - {MinuteList.map(min => ( - - ))} - - {resultData.repeat_type !== "TIME" ? ( - <> - 마다 - * 최초 송출 이후 설정된 시간 단위마다 송출 - - ) : (* 설정된 시간에만 송출)} - - - {resultData.repeat_type === "COUNT" && ( - <> - - 반복 횟수 - - { - handleRepeatValue(e); - }} - width="80px" - /> - - - - - )} - - - )} - - {/* - { - setResultData({ ...resultData, is_repeat: e.target.checked }); - setIsChanged(true); - }} - disabled={viewOnly || isPast} - /> - {resultData && resultData.is_repeat === true && ( - <> - - 종료 일자 - - - - handleSelectedEndDate(data)} - pastDate={new Date()} - /> - - handleEndTime(e)} - id="hour" - disabled={viewOnly || isPast} - value={ - resultData && String(new Date(resultData.end_dt).getHours()) < 10 - ? '0' + String(new Date(resultData.end_dt).getHours()) - : (resultData && String(new Date(resultData.end_dt).getHours())) || '' - }> - {HourList.map(hour => ( - - ))} - - handleEndTime(e)} - id="min" - disabled={viewOnly || isPast} - value={ - resultData && String(new Date(resultData.end_dt).getMinutes()) < 10 - ? '0' + String(new Date(resultData.end_dt).getMinutes()) - : (resultData && String(new Date(resultData.end_dt).getMinutes())) || '' - }> - {MinuteList.map(min => ( - - ))} - - - - - - - handleRepeatTime(e)} id="hour" disabled={viewOnly || isPast} value={resultData.repeat_dt.split(':')[0] || ''}> - {HourList.map(hour => ( - - ))} - - handleRepeatTime(e)} id="min" disabled={viewOnly || isPast} value={(resultData && resultData.repeat_dt.split(':')[1]) || ''}> - {MinuteList.map(min => ( - - ))} - - 마다 - * 최초 송출 이후 설정된 시간 단위마다 송출 - - - - 반복 횟수 - - handleRepeatValue(e)} - width="80px" - /> - - - - - )} - */} - - - - - [메세지 작성] - * 작성하지 않은 언어는 발송되지 않습니다. - - - 언어 - handleLanguage(e)} value={message_lang}> - {languageType.map((data, index) => ( - - ))} - - - - - {resultData.game_message && - resultData.game_message.map(content => { - return ( - - {message_lang === content.language && ( - - {/* - {btnValidation === false && resultData.game_message.length !== 1 ? ( - { - e.preventDefault(); - handleDelete(content.language); - }} - /> - ) : ( - - )} - */} - 언어 : {content.language} -
- - - - - - - - - . - - -
- )} - /> - ); -}; - -export default DatePickerComponent; diff --git a/src/components/common/DateTimeRangerPickerComponent.js b/src/components/common/DateTimeRangerPickerComponent.js deleted file mode 100644 index aed0aee..0000000 --- a/src/components/common/DateTimeRangerPickerComponent.js +++ /dev/null @@ -1,171 +0,0 @@ -import React, { useState, useEffect } from 'react'; -import DatePickerComponent from './DatePickerComponent'; -import { DatePickerWrapper } from '../../styles/Components'; -import { - FormRowGroup, - FormLabel, - DateTimeGroup, DateTimeWrapper, DateContainer, StyledSelectInput, TimeSeparator, TimeContainer, -} from '../../styles/ModuleComponents'; -import { HourList, MinuteList } from '../../assets/data'; -import { useTranslation } from 'react-i18next'; - -const DateTimeRangePicker = ({ - label, - startDate, - endDate, - onStartDateChange, - onEndDateChange, - pastDate = new Date(), - disabled, - startLabel = '시작 일자', - endLabel = '종료 일자', - reset = false, - setAlert - }) => { - const { t } = useTranslation(); - const [startHour, setStartHour] = useState('00'); - const [startMin, setStartMin] = useState('00'); - const [endHour, setEndHour] = useState('00'); - const [endMin, setEndMin] = useState('00'); - - useEffect(() => { - if (startDate) { - const date = new Date(startDate); - setStartHour(String(date.getHours()).padStart(2, '0')); - setStartMin(String(date.getMinutes()).padStart(2, '0')); - } - }, [startDate]); - - useEffect(() => { - if (endDate) { - const date = new Date(endDate); - setEndHour(String(date.getHours()).padStart(2, '0')); - setEndMin(String(date.getMinutes()).padStart(2, '0')); - } - }, [endDate]); - - useEffect(() => { - if (reset) { - setStartHour('00'); - setStartMin('00'); - setEndHour('00'); - setEndMin('00'); - } - }, [reset]); - - const handleStartDate = (date) => { - const newDate = new Date(date); - newDate.setHours(parseInt(startHour), parseInt(startMin)); - onStartDateChange(newDate); - }; - - const handleEndDate = (date) => { - let newDate = new Date(date); - newDate.setHours(parseInt(endHour), parseInt(endMin)); - - if (startDate && newDate < startDate) { - setAlert(t('TIME_START_DIFF_END')); - newDate = new Date(startDate); - } - - onEndDateChange(newDate); - }; - - const handleStartTime = (e) => { - const { id, value } = e.target; - const newDate = startDate ? new Date(startDate) : new Date(); - - if (id === 'hour') { - setStartHour(value); - newDate.setHours(parseInt(value), parseInt(startMin)); - } else { - setStartMin(value); - newDate.setHours(parseInt(startHour), parseInt(value)); - } - - onStartDateChange(newDate); - }; - - const handleEndTime = (e) => { - const { id, value } = e.target; - let newDate = endDate ? new Date(endDate) : new Date(); - - if (id === 'hour') { - setEndHour(value); - newDate.setHours(parseInt(value), parseInt(endMin)); - } else { - setEndMin(value); - newDate.setHours(parseInt(endHour), parseInt(value)); - } - - if (startDate && newDate < startDate) { - setAlert(t('TIME_START_DIFF_END')); - newDate = new Date(startDate) - } - - onEndDateChange(newDate); - }; - - return ( - - {label} - - - - - - - - - - {HourList.map(hour => ( - - ))} - - : - - {MinuteList.map(min => ( - - ))} - - - - - - - - - - - - - {HourList.map(hour => ( - - ))} - - : - - {MinuteList.map(min => ( - - ))} - - - - - - ); -}; - -export default DateTimeRangePicker; \ No newline at end of file