{"version":3,"sources":["components/LoadingSpinner.js","components/Announcement.js","App.js","components/CustomSwal.js","components/NoData.js","components/info/DemeritList.js","components/info/BlackList.js","pages/Info.js","components/appointment/AppointmentModalBody.js","components/appointment/AppointmentModal.js","components/appointment/AppointmentAllModal.js","utils.js","components/appointment/PolicyModal.js","pages/Appointment.js","components/TablePagination.js","components/record/RecordModal.js","pages/Record.js","components/ScrollArrow.js","pages/Space.js","Router.js","serviceWorker.js","index.js"],"names":["LoadingSpinner","props","in","loading","timeout","classNames","unmountOnExit","className","style","role","Announcement","content","announcement_messages","show","icon","marginRight","id","onClick","setShow","Object","keys","map","item","i","key","App","useState","account","setAccount","password","setPassword","pwdShow","setPwdShow","isChecked","setIsChecked","announcementShow","setAnnouncementShow","setLoading","spaceData","setSpaceData","config","CAPTCHA_COUNTDOWN","captchaCountdown","setCaptchaCountdown","Math","random","captchaKey","setCaptchaKey","intl","useIntl","ChkCaptcha","valid","invalidMsg","document","getElementById","value","trim","length","formatMessage","axios","get","API_URL","params","captcha","then","res","data","UserAuth","AlertSwal","fire","title","text","confirmButtonText","catch","error","lang","locale","sid","sessionStorage","getItem","restype","rescode","localStorage","setItem","toUpperCase","cryptedPwd","Buffer","from","toString","removeItem","resdata","authid","isblacklist","cardnoexist","history","push","resmsg","console","GetDevUseStatus","SHOW_NEWS_AND_SPACE","indexOf","rows","handleLang","setLocale","checkRememberMe","isRemembered","acc","pwd","useEffect","DEVICE_AUTH_ACC","DEVICE_AUTH_PASS","finally","captchaCDInterval","setInterval","prev","clearInterval","footerLeft","messages","login","footer","left","footerRight","right","isAnnouncementShow","SPECIAL_ANNOUNCEMENT_PERIOD","special","announcement","stime","moment","split","etime","isBetween","newsAndSpace","src","frameBorder","size","bordered","striped","maxWidth","row","index","defaultMessage","spacetypename","spacetype","zonename","zoneid","count","colSpan","position","zIndex","alt","href","user_guide","href_zh","target","rel","content_zh","width","height","viewBox","fill","xmlns","fillRule","d","placeholder","type","name","onChange","e","onKeyPress","maxLength","CAPTCHA_URL","checked","htmlFor","variant","onHide","centered","Header","closeButton","Title","Body","tutorial_check_account","tutorial_forget_password","Footer","MySwal","withReactContent","Swal","mixin","showCloseButton","closeButtonHtml","buttonsStyling","reverseButtons","padding","customClass","header","actions","confirmButton","cancelButton","DangerSwal","IconSwal","NoData","DemeritList","setData","setSession","ListGroup","Item","devname","reason","mdate","BlackList","blacksdate","blackedate","Info","chgUserData","setChgUserData","chgUserShow","setChgUserShow","GetBookInfo","BookChangeUser","chguserid","bookid","statusBtn","canChangeUser","SPACETYPE","usersCount","userid","usestatus","userids","info","html","username","bookedatetime","showCancelButton","cancelButtonText","result","BOOK_END_EARLIER","Col","sm","md","Modal","Form","Row","Group","as","Label","Control","defaultValue","disabled","Button","arr","useridparam","getElementsByName","forEach","elem","filter","undefined","substring","BookUserVerify","AppointmentDateS0","sdate_focus","setSdate_focus","edate_focus","setEdate_focus","bookrealeasedays","parseInt","edate","add","oncecanbooktime","lastdate","isAfter","setEdate","date","sdate","focused","onDateChange","setSdate","onFocusChange","isOutsideRange","day","isInclusivelyBeforeDay","isInclusivelyAfterDay","displayFormat","numberOfMonths","block","readOnly","val","AppointmentDateS1","setChecked","formType","appointment","zone_info","selectedzone","Alert","deviceid","isMac","IS_MAC_DEVICEID","find","xs","lg","xl","Card","border","deviceinfo","OverlayTrigger","placement","overlay","Tooltip","deviceusetype","devicename","userCount","values","margin","maxcanbookdays","Check","aria-label","AppointmentDateS2","bookvalue","newState","cantBookInMiddle","canbook","splice","delCount","handleCheck","bookdate","viewvalue","AppointmentTimeS0","opentime","setOpentime","closetime","setClosetime","generateOptions","excludedOptions","disabledHours","openHour","closeHour","temp","disabledMinutes","h","temp2","format","roundedNow","now","openMinute","openMoment","hour","minute","isSame","second","setStime","setEtime","hideDisabledOptions","allowEmpty","showSecond","minuteStep","AppointmentTimeS1","AppointmentTimeS2","booktime","AppointmentNightS0","AppointmentNightS1","AppointmentNightS2","viewdate","AppointmentMultiple","handleInput","getAttribute","setUserids","useridsForm","formUserNumber","idx","ModalBody","modalForm","s1data","s1checked","s2data","multipleForm","unshift","stage","ModalFooter","modalFooter","marginLeft","SchAllModal","BookDeviceQuery","setStage","BookTimeSegQuery","setS2data","BookAdd","multipleFooter","AppointmentModal","setS1data","setS1checked","stateUserIds","setStateUserIds","bookuser","onShow","setShowScrollArrow","setshow","setSelectedZone","qtype","seqdays","beginningTime","isBefore","diff","shh","smm","ehh","emm","querySelector","swalMsg","viewArr","viewDates","checkboxes","n","replace","datetimeText","stext","etext","SHOW_GOOGLE","googleForm","submit","setCurrent","errMsg","match","enableToBook","setAllData","setAllShow","AllCheckArea","enable","prevDate","showDate","pointerEvents","AppointmentAllModal","selectedArea","setSelectedArea","allData","handleChange","currentTarget","join","stateData","bookinfo","usetype","j","closeday","backdropClassName","dialogClassName","controlId","inline","label","enabletobook","selectedDeviceName","flattenMessages","nestedMessages","prefix","reduce","prefixedKey","assign","CustomTag","TagName","tagprops","InnerTagName","jsondata","tag","tagClass","class","tagHref","hrefTarget","rowspan","rowSpan","children","langObj","PolicyModal","policy_messages","setPolicyShow","Appointment","startDate","setStartDate","startDate_focus","setStartDate_focus","endDate","setEndDate","endDate_focus","setEndDate_focus","remainData","setRemainData","zoneData","setZoneData","selectedZone","currentEventKey","setCurrentEventKey","setParams","allShow","policyShow","GetRemainderSpace","GetZoneInfo","GetParams","selectZone","documentElement","clientWidth","POLICY_SHOW_WIDTH","spacetype_index","ST_ORDER","setScrollCount","showEndDate","Accordion","Toggle","eventKey","Collapse","spacetype_info","SHOW_CHECK_ALL_SPACE","InputGroup","withPortal","Append","SHOW_CURRENT_SPACE","action","GOOGLE_AUTH_URL","method","TablePagination","onPageChange","newpage","this","totalpage","currentpage","groupCount","PAGINATION_GROUP_COUNT","totalgroup","currentgroup","indexStart","indexEnd","items","Pagination","pageno","Ellipsis","active","React","PureComponent","RecordModal","selectedTitle","showAlert","Table","responsive","thead","tbody","innerRow","innerIndex","page","Record","subtract","setSelectedTitle","renderMonthElement","month","onMonthSelect","onYearSelect","years","year","display","justifyContent","borderColor","months","SchBookLogDelList","status","statusname","SchBookLogList","SchSpaceUseLogList","logstatusename","logstatusname","accesstime","SchViolateLogList","seatname","spacename","SchSuspendLogList","cardno","ScrollArrow","showScroll","setShowScroll","modalEL","getElementsByClassName","scrollCount","addEventListener","scrollTop","totopPixel","window","documentMode","scrollTo","top","behavior","Space","location","pathname","current","session","showScrollArrow","loadingCount","setLoadingCount","handlePage","selectedKey","triggerLoading","bool","prevCount","triggerScroll","is2nd","body","classList","remove","to","pageTitle","navItems","Nav","navkey","Link","justify","activeKey","onSelect","path","render","TO_TOP_PIXEL","MyRouter","basename","BASE_NAME","exact","Component","Boolean","hostname","library","fas","Root","sessionLang","includes","zh","policy_zh","en","policy_en","RenderApp","ReactDOM","navigator","serviceWorker","ready","registration","unregister","message"],"mappings":"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","file":"static/js/main.e9a69a6a.chunk.js","sourcesContent":["import React from 'react';\nimport { CSSTransition } from 'react-transition-group';\nimport './css/loadingspinner.css';\n\nfunction LoadingSpinner(props) {\n return (\n \n
\n
\n Loading...\n
\n
\n \n );\n}\n\nexport default LoadingSpinner;","import React from 'react';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { FormattedMessage } from 'react-intl';\n\nfunction Announcement(props) {\n const content = props.announcement_messages.content;\n return (\n
\n
\n
\n
\n \n \n
\n {\n props.show ?\n props.setShow(!props.show)} />\n :\n props.setShow(!props.show)} />\n }\n
\n
\n
    \n {\n Object.keys(content).map((item, i) => {\n return (\n
  • {content[item]}
  • \n )\n })\n }\n
\n
\n
\n
\n );\n}\n\nexport default Announcement;","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport Button from 'react-bootstrap/Button';\nimport Modal from 'react-bootstrap/Modal';\nimport Table from 'react-bootstrap/Table';\nimport Announcement from './components/Announcement';\nimport LoadingSpinner from './components/LoadingSpinner';\nimport moment from 'moment';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { AlertSwal } from './components/CustomSwal';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\n\nfunction App(props) {\n const [account, setAccount] = useState('');\n const [password, setPassword] = useState('');\n const [pwdShow, setPwdShow] = useState(false);\n const [isChecked, setIsChecked] = useState(false);\n const [show, setShow] = useState(false);\n const [announcementShow, setAnnouncementShow] = useState(true);\n const [loading, setLoading] = useState(false);\n const [spaceData, setSpaceData] = useState(null);\n const [captchaCountdown, setCaptchaCountdown] = useState(props.config.CAPTCHA_COUNTDOWN);\n const [captchaKey, setCaptchaKey] = useState(Math.random());\n const config = props.config;\n const intl = useIntl();\n\n const ChkCaptcha = () => {\n let valid = true;\n let invalidMsg = '';\n if (!document.getElementById('captcha').value.trim().length) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'login.captcha_not_null' });\n }\n if (valid) {\n setLoading(true);\n axios.get(config.API_URL + `/ChkCaptcha.aspx`, {\n params: {\n captcha: document.getElementById('captcha').value\n }\n }).then((res) => {\n const data = res.data;\n if (data === 1) {\n UserAuth();\n } else {\n setLoading(false);\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'login.captcha_failed' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }).catch((error) => {\n setLoading(false);\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: error,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n });\n })\n } else {\n setLoading(false);\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: invalidMsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n\n const UserAuth = () => {\n let valid = true;\n let invalidMsg = '';\n if ((!account.trim().length) || (!password.trim().length)) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'login.not_null' });\n }\n let lang = props.locale;\n if (lang === 'zh') {\n lang = 'zh-tw';\n }\n if (valid) {\n let sid = sessionStorage.getItem('sid');\n axios.get(config.API_URL + `/UserAuth.aspx`, {\n params: {\n sid: sid,\n account: account,\n password: password,\n lang: lang,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '1') {\n localStorage.setItem('remembered', isChecked);\n if (isChecked) {\n localStorage.setItem('account', account.toUpperCase());\n // localStorage.setItem('password', crypt(password));\n let cryptedPwd = Buffer.from(password).toString('base64');\n localStorage.setItem('password', cryptedPwd);\n } else {\n localStorage.removeItem('account');\n localStorage.removeItem('password');\n }\n sessionStorage.setItem('userid', account.toUpperCase());\n sessionStorage.setItem('authid', data.resdata[0].authid);\n sessionStorage.setItem('isblacklist', data.resdata[0].isblacklist);\n sessionStorage.setItem('cardnoexist', data.resdata[0].cardnoexist);\n props.history.push('redirect_to/info')\n } else {\n document.getElementById('captcha').value = '';\n setCaptchaKey(Math.random());\n setLoading(false);\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }).catch((error) => {\n console.error(error)\n })\n } else {\n setLoading(false);\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: invalidMsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n\n const DeviceAuth = () => {\n setLoading(true);\n axios.get(config.API_URL + `/DeviceAuth.aspx`, {\n params: {\n account: config.DEVICE_AUTH_ACC,\n password: config.DEVICE_AUTH_PASS,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '1') {\n sessionStorage.setItem('sid', data.resdata[0].sid);\n checkRememberMe();\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }).catch((error) => {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: error,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n });\n }).finally(() => {\n setLoading(false);\n })\n }\n\n const GetDevUseStatus = () => {\n if (config.SHOW_NEWS_AND_SPACE.indexOf('SPACE') !== (-1)) {\n axios.get(config.API_URL + `/GetDevUseStatus.aspx`).then((res) => {\n const data = res.data;\n if (data.rescode === 1 || data.rescode === '1') {\n setSpaceData(data.rows);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: 'Failed:' + data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }).catch((error) => {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: error,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n });\n })\n\n // const res =\n // { \"rescode\": 1, \"resmsg\": \"成功\", \"rows\": [{ \"spacetype\": 1, \"spacetypename\": \"長期研究室\", \"zoneid\": \"1_6A\", \"zonename\": \"6F-長期研究室\", \"count\": 14 }, { \"spacetype\": 1, \"spacetypename\": \"長期研究室\", \"zoneid\": \"1_7A\", \"zonename\": \"7F-長期研究室\", \"count\": 14 }, { \"spacetype\": 1, \"spacetypename\": \"長期研究室\", \"zoneid\": \"1_8A\", \"zonename\": \"8F-長期研究室\", \"count\": 14 }, { \"spacetype\": 2, \"spacetypename\": \"小型討論室\", \"zoneid\": \"2_1A\", \"zonename\": \"1F-小型討論室\", \"count\": 2 }, { \"spacetype\": 2, \"spacetypename\": \"小型討論室\", \"zoneid\": \"2_6A\", \"zonename\": \"6F-小型討論室\", \"count\": 2 }, { \"spacetype\": 2, \"spacetypename\": \"小型討論室\", \"zoneid\": \"2_7A\", \"zonename\": \"7F-小型討論室\", \"count\": 2 }, { \"spacetype\": 2, \"spacetypename\": \"小型討論室\", \"zoneid\": \"2_8A\", \"zonename\": \"8F-小型討論室\", \"count\": 2 }, { \"spacetype\": 4, \"spacetypename\": \"大型討論室\", \"zoneid\": \"4_4A\", \"zonename\": \"4F-大型討論室\", \"count\": 3 }, { \"spacetype\": 12, \"spacetypename\": \"當日研究室\", \"zoneid\": \"12_4A\", \"zonename\": \"4F-單日研究室\", \"count\": 7 }, { \"spacetype\": 12, \"spacetypename\": \"當日研究室\", \"zoneid\": \"12_5A\", \"zonename\": \"5F-單日研究室\", \"count\": 14 }] };\n // console.log(res);\n // setSpaceData(res.rows);\n }\n }\n\n const handleLang = (lang) => {\n sessionStorage.setItem('lang', lang);\n props.setLocale(lang);\n }\n\n const checkRememberMe = () => {\n const isRemembered = localStorage.getItem('remembered') === 'true' ? true : false;\n setIsChecked(isRemembered);\n if (isRemembered) {\n const acc = localStorage.getItem('account');\n // const pwd = crypt(localStorage.getItem('password'));\n const pwd = Buffer.from(localStorage.getItem('password'), 'base64').toString()\n setAccount(acc);\n setPassword(pwd);\n }\n }\n\n useEffect(DeviceAuth, []);\n useEffect(GetDevUseStatus, []);\n useEffect(() => {\n setCaptchaCountdown(config.CAPTCHA_COUNTDOWN);\n let captchaCDInterval = setInterval(() => {\n setCaptchaCountdown(prev => {\n if (prev !== 0) return prev - 1\n });\n }, 1000);\n return () => {\n clearInterval(captchaCDInterval);\n };\n }, [captchaKey, config.CAPTCHA_COUNTDOWN]);\n\n useEffect(() => {\n if (captchaCountdown === 0) {\n setCaptchaKey(Math.random());\n }\n }, [captchaCountdown, config.CAPTCHA_COUNTDOWN]);\n\n const footerLeft = props.messages.login.footer.left;\n const footerRight = props.messages.login.footer.right;\n\n let isAnnouncementShow = null;\n if (config.SPECIAL_ANNOUNCEMENT_PERIOD) {\n if (config.SPECIAL_ANNOUNCEMENT_PERIOD === true) {\n isAnnouncementShow = ;\n } else {\n const stime = moment(config.SPECIAL_ANNOUNCEMENT_PERIOD.split(' ~ ')[0], 'YYYY/MM/DD HH:mm:ss');\n const etime = moment(config.SPECIAL_ANNOUNCEMENT_PERIOD.split(' ~ ')[1], 'YYYY/MM/DD HH:mm:ss');\n if (moment().isBetween(stime, etime)) {\n isAnnouncementShow = ;\n }\n }\n }\n\n let newsAndSpace = [];\n if (config.SHOW_NEWS_AND_SPACE.length > 0) {\n for (let i = 0; i < config.SHOW_NEWS_AND_SPACE.length && i < 2; i++) {\n if (config.SHOW_NEWS_AND_SPACE[i] === 'NEWS') {\n newsAndSpace.push(\n
\n
\n
\n
\n \n
\n
\n );\n } else if (config.SHOW_NEWS_AND_SPACE[i] === 'SPACE') {\n newsAndSpace.push(\n
\n
\n
\n
\n {spaceData ?\n \n \n \n \n \n \n \n \n \n {\n spaceData.map((row, index) => {\n return (\n \n \n \n \n \n )\n })\n }\n {spaceData.length === 0 ?\n \n \n \n : null}\n \n
\n \n 【】\n \n
{row.count}
\n : }\n
\n
\n );\n }\n\n }\n }\n return (\n <>\n
\n
\n
\n
\n
\n \"\"\n
\n
\n \n \n {props.messages.login.user_guide.content_zh}\n {/* {props.messages.login.user_guide.content_en} */}\n
\n
\n\n
\n
\n
\n
\n
\n
\n
\n
\n \n \n \n \n {placeholder =>\n { setAccount(e.target.value) }}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n ChkCaptcha();\n }\n }}\n />\n }\n \n
\n
\n \n \n \n \n \n {placeholder =>\n { setPassword(e.target.value) }}\n onKeyPress={(e) => {\n if (e.key === \"Enter\") {\n ChkCaptcha();\n }\n }}\n />\n }\n \n \n
\n
\n \n {placeholder =>\n {\n if (e.key === \"Enter\") {\n ChkCaptcha();\n }\n }}\n />\n }\n \n Captcha { \n document.getElementById('captcha').value = '';\n setCaptchaKey(Math.random()); \n }}\n />\n {\n document.getElementById('captcha').value = '';\n setCaptchaKey(Math.random());\n }}\n >{captchaCountdown}\n
\n
\n
\n { setIsChecked(!isChecked) }} />\n \n
\n \n
\n \n
\n {newsAndSpace.map((row) => row)}\n
\n
\n
\n \n \n
\n {\n setShow(false);\n }}\n centered\n >\n \n \n \n \n \n \n
\n
\n
\n \n \n \n
\n \n \n \n
\n \n {isAnnouncementShow}\n \n );\n}\n\n// simple XOR cryption\n// function crypt(input) {\n// let key = 'crypt';\n// let output = [];\n// let charCode;\n// for (let i = 0; i < input.length; i++) {\n// charCode = input.charCodeAt(i) ^ key[i % key.length].charCodeAt(0);\n\n// output.push(String.fromCharCode(charCode));\n// }\n// return output.join(\"\");\n// }\n\nexport default App;","import Swal from 'sweetalert2';\nimport withReactContent from 'sweetalert2-react-content';\nimport './css/myswal.css';\n\nconst MySwal = withReactContent(Swal).mixin({\n showCloseButton: true,\n closeButtonHtml: '×',\n buttonsStyling: false,\n reverseButtons: true,\n padding: 0,\n customClass: {\n header: 'bg_swal modal-header',\n title: 'modal-title',\n closeButton: 'close',\n content: 'swal-content-class',\n actions: 'modal-footer d-flex justify-content-between',\n confirmButton: 'bg_brand btn btn-primary',\n cancelButton: 'btn btn-light',\n }\n})\n\nconst DangerSwal = withReactContent(Swal).mixin({\n showCloseButton: true,\n closeButtonHtml: '×',\n buttonsStyling: false,\n reverseButtons: true,\n padding: 0,\n customClass: {\n header: 'bg_swal modal-header',\n title: 'modal-title',\n closeButton: 'close',\n content: 'swal-content-class',\n actions: 'modal-footer d-flex justify-content-between',\n confirmButton: 'bg_danger btn btn-danger',\n cancelButton: 'btn btn-light',\n }\n})\n\nconst IconSwal = withReactContent(Swal).mixin({\n buttonsStyling: false,\n reverseButtons: true,\n padding: 0,\n customClass: {\n header: 'bg_swal swal-icon-header justify-content-around',\n title: 'modal-title',\n icon: 'swal-icon-class',\n content: 'swal-content-class',\n actions: 'modal-footer d-flex justify-content-between',\n confirmButton: 'bg_brand btn btn-primary',\n cancelButton: 'btn btn-light',\n }\n})\n\nconst AlertSwal = withReactContent(Swal).mixin({\n showCloseButton: true,\n closeButtonHtml: '×',\n buttonsStyling: false,\n padding: 0,\n customClass: {\n header: 'bg_swal modal-header',\n closeButton: 'close',\n content: 'swal-content-class font-weight-bold font-larger',\n title: 'modal-title',\n actions: 'modal-footer d-flex justify-content-center',\n confirmButton: 'bg_brand btn btn-primary'\n }\n})\n\nexport { MySwal, AlertSwal, IconSwal, DangerSwal };","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nfunction NoData(props) {\n return (\n
\n
\n \n \n
\n
\n //
\n // \n // 查無資料\n //
\n )\n}\n\nexport default NoData;","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport ListGroup from 'react-bootstrap/ListGroup';\nimport { AlertSwal } from '../CustomSwal';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nfunction DemeritList(props) {\n const [data, setData] = useState(null);\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n const intl = useIntl();\n\n const GetDemeritList = () => {\n props.setLoading(true);\n axios.get(config.API_URL + `/GetDemeritList.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n if (data.resdata) {\n setData(data.resdata);\n } else {\n setData([]);\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.failure' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n useEffect(GetDemeritList, []);\n\n if (data === null) {\n return 'Loading';\n }\n\n return (\n \n \n {\n data.map((row, index) => {\n return (\n \n -{row.devname}【{row.reason}】\n {row.mdate}\n \n )\n })\n }\n {data.length === 0 ? : null}\n \n )\n}\n\nexport default DemeritList;","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport ListGroup from 'react-bootstrap/ListGroup';\nimport { AlertSwal } from '../CustomSwal';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nfunction BlackList(props) {\n const [data, setData] = useState(null);\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n const intl = useIntl();\n\n const GetBlackList = () => {\n props.setLoading(true);\n axios.get(config.API_URL + `/GetBlackList.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n if (data.resdata) {\n setData(data.resdata);\n } else {\n setData([]);\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.failure' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n useEffect(GetBlackList, []);\n\n if (data === null) {\n return 'Loading';\n }\n\n return (\n \n \n {\n data.map((row, index) => {\n return (\n \n \n {row.blacksdate}\n \n
\n \n {row.blackedate}\n \n
\n \n {row.reason}\n \n
\n \n {row.mdate}\n \n
\n
\n )\n })\n }\n {data.length === 0 ? : null}\n
\n )\n}\n\nexport default BlackList;","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport NoData from '../components/NoData.js';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport Col from 'react-bootstrap/Col';\nimport Form from 'react-bootstrap/Form';\nimport DemeritList from '../components/info/DemeritList';\nimport BlackList from '../components/info/BlackList';\nimport { AlertSwal, DangerSwal } from '../components/CustomSwal';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nfunction Info(props) {\n const [data, setData] = useState(null);\n const [chgUserData, setChgUserData] = useState(null);\n const [chgUserShow, setChgUserShow] = useState(false);\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n const intl = useIntl();\n\n const GetBookInfo = () => {\n props.setLoading(true);\n axios.get(config.API_URL + `/GetBookInfo.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n if (data.resdata) {\n setData(data.resdata);\n } else {\n setData([]);\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.failure' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const BookDel = (info) => {\n DangerSwal.fire({\n title: intl.formatMessage({ id: 'info.confirm_delete_reservation' }) + '?',\n html:\n
\n {intl.formatMessage({ id: 'global.reader' })} : {info.username}
\n {intl.formatMessage({ id: 'global._spacetype' })} : {intl.formatMessage({ id: `global.spacetype.${info.spacetype}`, defaultMessage: info.spacetypename })}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${info.zoneid}`, defaultMessage: info.zonename === '' ? info.spacetypename : info.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {info.devname}
\n {intl.formatMessage({ id: 'global.reservation_time' })} : {info.bookedatetime}\n
\n ,\n showCancelButton: true,\n confirmButtonText: intl.formatMessage({ id: 'info.confirm_delete_button' }),\n cancelButtonText: intl.formatMessage({ id: 'global.cancel' })\n }).then((result) => {\n if (result.value) {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookDel.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n bookid: info.bookid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.success' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n GetBookInfo();\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.failure' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n });\n }\n\n const BookSignout = (info) => {\n DangerSwal.fire({\n title: intl.formatMessage({ id: 'info.confirm_timeout_leave' }) + '?',\n html:\n
\n {intl.formatMessage({ id: 'global.reader' })} : {info.username}
\n {intl.formatMessage({ id: 'global._spacetype' })} : {intl.formatMessage({ id: `global.spacetype.${info.spacetype}`, defaultMessage: info.spacetypename })}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${info.zoneid}`, defaultMessage: info.zonename === '' ? info.spacetypename : info.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {info.devname}
\n {intl.formatMessage({ id: 'global.reservation_time' })} : {info.bookedatetime}\n
\n ,\n showCancelButton: true,\n confirmButtonText: intl.formatMessage({ id: 'info.confirm_leave_button' }),\n cancelButtonText: intl.formatMessage({ id: 'global.cancel' })\n }).then((result) => {\n if (result.value) {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookSignout.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n bookid: info.bookid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.success' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n GetBookInfo();\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.failure' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n });\n }\n\n const BookUserVerify = () => {\n let findDuplicates = arr => arr.filter((item, index) => arr.indexOf(item) !== index);\n let valid = true;\n let invalidMsg = '';\n let params = {};\n let useridparam = '';\n let userids = [];\n let chguserid = (document.getElementById('useridToChange').value).toUpperCase();\n document.getElementsByName('userid').forEach((elem) => {\n userids.push(elem.value.toUpperCase());\n })\n if (findDuplicates(userids).length > 0) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.reader_id_repeat' });\n }\n for (let i = 0; i < userids.length; i++) {\n if (userids[i] !== '' && userids[i] !== undefined) {\n if (userids[i] === sessionStorage.getItem('userid')) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.reader_id_self' });\n } else {\n useridparam += \",\" + userids[i];\n }\n } else {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.reader_id_empty' });\n }\n }\n if (useridparam) useridparam = useridparam.substring(1);\n params = {\n sid: sid,\n authid: authid,\n spacetype: chgUserData.spacetype,\n userid: chguserid,\n restype: 'json'\n }\n if (valid) {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookUserVerify.aspx`, {\n params: params\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n BookChangeUser(chguserid);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.failure' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error);\n }).finally(() => {\n props.setLoading(false);\n })\n } else {\n AlertSwal.fire({\n title: invalidMsg\n });\n }\n }\n\n const BookChangeUser = (chguserid) => {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookChangeUser.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n bookid: chgUserData.bookid,\n chguserid: chguserid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.success' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n setChgUserShow(false);\n GetBookInfo();\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.failure' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n useEffect(GetBookInfo, []);\n\n if (data === null) {\n return '';\n }\n\n return (\n <>\n
\n {\n data.length === 0 ? : null\n }\n {\n data.map((row, index) => {\n let statusBtn = null;\n let canChangeUser = config.SPACETYPE[`st_${row.spacetype}`][1];\n let usersCount = row.userid.split('|').length;\n if (row.usestatus === '-1' || row.usestatus === '0' || row.usestatus === '1') {\n statusBtn =\n <>\n {(row.usestatus === '0' || row.usestatus === '1') && canChangeUser && usersCount > 1 ?\n {\n setChgUserData({\n bookid: row.bookid,\n spacetype: row.spacetype,\n userids: row.userid.toUpperCase().split('|')\n });\n setChgUserShow(true);\n }}>\n \n \n : null\n }\n { BookDel(row) }}>\n \n \n ;\n } else if (row.usestatus === '2' && config.BOOK_END_EARLIER) {\n statusBtn = { BookSignout(row) }}>;\n }\n return (\n
\n
\n
\n {row.devname}\n \n \n {statusBtn}\n
\n
\n
\n \n {row.username}\n {row.bookedatetime}\n
\n
\n
\n )\n })\n }\n
\n
\n
\n \n \n \n \n \n \n
\n {\n setChgUserShow(false);\n }}\n centered\n >\n \n \n \n \n \n \n
\n \n {chgUserData ?\n chgUserData.userids.map((row, index) => {\n return (\n \n \n \n \n )\n })\n : null}\n \n
\n
\n \n \n \n \n
\n \n )\n}\n\nexport default Info;","import React, { useState, useEffect } from 'react';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Form from 'react-bootstrap/Form';\nimport Card from 'react-bootstrap/Card';\nimport Tooltip from 'react-bootstrap/Tooltip';\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport moment from 'moment';\nimport Alert from 'react-bootstrap/Alert';\nimport TimePicker from 'rc-time-picker';\nimport axios from 'axios';\nimport { SingleDatePicker, isInclusivelyBeforeDay, isInclusivelyAfterDay } from 'react-dates';\nimport { AlertSwal } from '../CustomSwal';\nimport { useIntl, FormattedMessage } from 'react-intl';\nimport '../css/timepicker.css';\n\nfunction AppointmentDateS0(props) {\n const [sdate_focus, setSdate_focus] = useState(null);\n const [edate_focus, setEdate_focus] = useState(null);\n const intl = useIntl();\n\n const checkEdate = () => {\n let bookrealeasedays = parseInt(props.params.bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n let edate = moment().add((parseInt(props.params.oncecanbooktime) - 1), 'days');\n let lastdate = moment().add(bookrealeasedays - 1, 'days');\n if (edate.isAfter(lastdate, 'days')) {\n edate = lastdate;\n props.setEdate(edate);\n }\n }\n\n useEffect(checkEdate, []);\n\n const seqdays = [1, 3, 7, 10, 14];\n return (\n
\n \n \n \n {\n props.setSdate(e);\n let bookrealeasedays = parseInt(props.params.bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n let edate = moment(e).add((parseInt(props.params.oncecanbooktime) - 1), 'days');\n let lastdate = moment().add(bookrealeasedays - 1, 'days');\n if (edate.isAfter(lastdate, 'days')) {\n edate = lastdate;\n }\n props.setEdate(edate);\n }}\n onFocusChange={(e) => {\n setSdate_focus(e.focused);\n }}\n isOutsideRange={(day) => {\n if (props.params === null) {\n return null;\n } else {\n let bookrealeasedays = parseInt(props.params.bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n return !isInclusivelyBeforeDay(day, moment().add(bookrealeasedays - 1, \"days\")) ||\n !isInclusivelyAfterDay(day, moment());\n }\n }}\n placeholder=''\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={1}\n block\n readOnly\n />\n \n \n \n {\n props.setEdate(e);\n }}\n onFocusChange={(e) => {\n setEdate_focus(e.focused);\n }}\n placeholder=''\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={1}\n disabled\n block\n readOnly\n />\n \n \n \n \n \n {seqdays.map((val) => {\n if (val <= parseInt(props.params.oncecanbooktime)) {\n if (val === 1) {\n return \n }\n return \n }\n return null;\n })}\n \n \n
\n )\n}\n\nfunction AppointmentDateS1(props) {\n const [checked, setChecked] = useState('');\n\n const handleCheck = (i) => {\n setChecked(i);\n }\n\n useEffect(() => {\n setChecked(props.checked);\n }, [props.checked]);\n\n return (\n \n {props.messages.appointment.zone_info[props.selectedzone.zoneid] ?\n \n \n \n : null}\n {props.data === null ? Loading :\n props.data.length === 0 ? No Data Found :\n props.data.map((row, index) => {\n const isChecked = checked === row.deviceid ? true : false;\n const isMac = props.config.IS_MAC_DEVICEID.find(elem => elem === row.deviceid) ? true : false;\n return (\n \n { handleCheck(row.deviceid); }}>\n \n
\n {(row.deviceinfo !== '' && row.deviceinfo !== null) ?\n \n {row.deviceinfo}\n \n }\n >\n \n \n : null}\n {(row.deviceusetype === '4') ?\n \n \n \n }\n >\n \n \n : null}\n
\n
\n {row.devicename} {row.userCount ? : null}
\n {(isMac) ?\n \n \n \n }\n >\n
\n \n
\n \n : null}\n \n {row.maxcanbookdays + ' '}\n {row.maxcanbookdays === '1' ?\n \n : }\n \n
\n
\n \n
\n
\n
\n \n )\n })\n }\n
\n )\n}\n\nfunction AppointmentDateS2(props) {\n const [checked, setChecked] = useState([]);\n const intl = useIntl();\n\n const handleCheck = (i) => {\n // 若 i 已勾選\n if (checked.find(elem => elem === i)) {\n // 取消勾選 i 及 i 以後的日期時間\n setChecked(checked.filter(elem => elem !== i && parseInt(elem) < parseInt(i)));\n } else {\n // 若 i 未勾選\n let newState = [];\n // 若目前有任何勾選 && 若 i 大於目前已勾選的最小值\n if (checked.length !== 0 && parseInt(i) > parseInt(checked[0])) {\n let cantBookInMiddle = null\n // 勾選所有 i 與 最小值之間的選項\n props.data.map((row, index) => {\n if (parseInt(row.bookvalue) <= parseInt(i) && parseInt(row.bookvalue) >= parseInt(checked[0])) {\n // 中間有無法預約的時段,同時必須是第一個 ,記錄該 index\n if (row.canbook === '0' && cantBookInMiddle === null) {\n cantBookInMiddle = newState.length;\n }\n newState.push(row.bookvalue);\n }\n return null;\n })\n // 刪掉 index 後的 elem\n if (cantBookInMiddle) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.middle_duplicate' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n newState = newState.splice(0, cantBookInMiddle);\n }\n // 刪掉超過最大天數的 elem\n if (newState.length > parseInt(props.params.oncecanbooktime)) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n html:\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_date' }) +\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_date_value' }, {\n value: props.params.oncecanbooktime\n }) + ``\n });\n const delCount = newState.length - parseInt(props.params.oncecanbooktime);\n newState.splice(newState.length - delCount, newState.length)\n }\n } else {\n // 若未有任何勾選 || 若 i 小於最小值 \n // 只改為勾選 i\n newState.push(i);\n }\n // setChecked(prevState => [...prevState, i]);\n setChecked(newState);\n }\n }\n\n return (\n \n \n \n \n {\n props.params.oncecanbooktime === '1' ?\n \n :\n \n }\n \n \n {props.data === null ? Loading :\n props.data.length === 0 ? No Data Found :\n props.data.map((row, index) => {\n const isChecked = checked.find(elem => elem === row.bookvalue) ? true : false;\n return (\n \n { handleCheck(row.bookvalue); }} className={row.canbook === '0' ? 'disabled' : null}>\n \n
\n {row.bookdate}\n
\n
\n \n
\n
\n
\n \n )\n })}\n
\n )\n}\n\nfunction AppointmentTimeS0(props) {\n const [sdate_focus, setSdate_focus] = useState(null);\n const [opentime, setOpentime] = useState('00:00');\n const [closetime, setClosetime] = useState('00:00');\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n const intl = useIntl();\n\n const GetOpenTime = () => {\n props.setLoading(true);\n axios.get(config.API_URL + `/GetOpenTime.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n bookdate: props.sdate.format('YYYY/MM/DD'),\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n // setOpentime(data.resdata[0].opentime);\n // setClosetime(data.resdata[0].closetime);\n setOpentime(data.resdata[0].opentime);\n setClosetime(data.resdata[0].closetime);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n function generateOptions(length, excludedOptions) {\n const arr = [];\n for (let value = 0; value < length; value++) {\n if (excludedOptions.indexOf(value) >= 0) {\n arr.push(value);\n }\n }\n return arr;\n }\n\n function disabledHours() {\n const openHour = parseInt(opentime.split(':')[0]);\n const closeHour = parseInt(closetime.split(':')[0]);\n if (opentime === '00:00' && closetime === '00:00') {\n return [];\n } else {\n let temp = [];\n for (let index = 0; index < openHour; index++) {\n temp.push(index);\n }\n for (let index = 23; index > closeHour; index--) {\n temp.push(index);\n }\n return temp;\n }\n }\n\n function disabledMinutes(h) {\n const openHour = parseInt(opentime.split(':')[0]);\n const closeHour = parseInt(closetime.split(':')[0]);\n let temp = [];\n for (let index = 0; index < parseInt(opentime.split(':')[1]); index++) {\n temp.push(index);\n }\n let temp2 = [];\n for (let index = (parseInt(closetime.split(':')[1]) + 1); index < 60; index++) {\n temp2.push(index);\n }\n if (opentime === '00:00' && closetime === '00:00') {\n return [];\n } else {\n switch (h) {\n case openHour:\n return generateOptions(60, temp);\n case closeHour:\n return generateOptions(60, temp2);\n default:\n return generateOptions(60, []);\n }\n }\n }\n\n const handleDateChange = () => {\n const now = moment();\n const openHour = parseInt(opentime.split(':')[0]);\n const openMinute = parseInt(opentime.split(':')[1]);\n const openMoment = moment().hour(openHour).minute(openMinute);\n if (props.sdate.isSame(now, 'day') && now.isAfter(openMoment)) {\n let roundedNow;\n if (now.minute() >= 30) {\n roundedNow = now.minute(30).second(0);\n } else {\n roundedNow = now.minute(0).second(0);\n }\n props.setStime(roundedNow.format(\"HH:mm\"));\n } else {\n props.setStime(opentime);\n }\n if (closetime === '00:00') {\n props.setEtime(moment('23:30', 'HH:mm').format(\"HH:mm\"));\n } else {\n props.setEtime(closetime);\n }\n }\n\n useEffect(GetOpenTime, []);\n\n useEffect(handleDateChange, [props.sdate, closetime]);\n\n return (\n
\n \n \n \n {\n props.setSdate(e);\n }}\n onFocusChange={(e) => {\n setSdate_focus(e.focused);\n }}\n isOutsideRange={(day) => {\n if (props.params === null) {\n return null;\n } else {\n let bookrealeasedays = parseInt(props.params.bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n return !isInclusivelyBeforeDay(day, moment().add(bookrealeasedays - 1, \"days\")) ||\n !isInclusivelyAfterDay(day, moment());\n }\n }}\n placeholder=''\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={1}\n block\n readOnly\n />\n \n \n \n \n \n { props.setStime(moment(val).format(\"HH:mm\")); }}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n />\n \n \n \n { props.setEtime(moment(val).format(\"HH:mm\")); }}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n />\n \n \n
\n )\n}\n\nfunction AppointmentTimeS1(props) {\n const [checked, setChecked] = useState('');\n\n const handleCheck = (i) => {\n setChecked(i);\n }\n\n useEffect(() => {\n setChecked(props.checked);\n }, [props.checked]);\n\n return (\n \n {props.messages.appointment.zone_info[props.selectedzone.zoneid] ?\n \n \n \n : null}\n {props.data === null ? Loading :\n props.data.length === 0 ? No Data Found :\n props.data.map((row, index) => {\n const isChecked = checked === row.deviceid ? true : false;\n const isMac = props.config.IS_MAC_DEVICEID.find(elem => elem === row.deviceid) ? true : false;\n return (\n \n { handleCheck(row.deviceid); }}>\n \n
\n {(row.deviceinfo !== '' && row.deviceinfo !== null) ?\n \n {row.deviceinfo}\n \n }\n >\n \n \n : null}\n {(row.deviceusetype === '4') ?\n \n \n \n }\n >\n \n \n : null}\n
\n
\n {row.devicename} {row.userCount ? : null}\n {(isMac) ?\n \n \n \n }\n >\n
\n \n
\n \n : null}\n
\n
\n \n
\n
\n
\n \n )\n })\n }\n
\n )\n}\n\nfunction AppointmentTimeS2(props) {\n const [checked, setChecked] = useState([]);\n const intl = useIntl();\n\n const handleCheck = (i) => {\n // 若 i 已勾選\n if (checked.find(elem => elem === i)) {\n // 取消勾選 i 及 i 以後的日期時間\n setChecked(checked.filter(elem => elem !== i && parseInt(elem) < parseInt(i)));\n } else {\n // 若 i 未勾選\n let newState = [];\n // 若目前有任何勾選 && 若 i 大於目前已勾選的最小值\n if (checked.length !== 0 && parseInt(i) > parseInt(checked[0])) {\n let cantBookInMiddle = null\n // 勾選所有 i 與 最小值之間的選項\n props.data.map((row, index) => {\n if (parseInt(row.bookvalue) <= parseInt(i) && parseInt(row.bookvalue) >= parseInt(checked[0])) {\n if (row.canbook === '0' && cantBookInMiddle === null) {\n cantBookInMiddle = newState.length;\n }\n newState.push(row.bookvalue);\n }\n return null;\n })\n if (cantBookInMiddle) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.middle_duplicate' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n newState = newState.splice(0, cantBookInMiddle);\n }\n if ((newState.length / 2) > parseInt(props.params.oncecanbooktime)) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n html:\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_time' }) +\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_time_value' }, {\n value: props.params.oncecanbooktime\n }) + ``\n });\n let delCount = ((newState.length / 2) - parseInt(props.params.oncecanbooktime)) * 2;\n newState.splice(newState.length - delCount, newState.length)\n }\n } else {\n // 若未有任何勾選 || 若 i 小於最小值 \n // 只改為勾選 i\n newState.push(i);\n }\n // setChecked(prevState => [...prevState, i]);\n setChecked(newState);\n }\n }\n\n return (\n \n \n \n \n {\n props.params.oncecanbooktime === '1' ?\n \n :\n \n }\n \n \n {props.data === null ? Loading :\n props.data.length === 0 ? No Data Found :\n props.data.map((row, index) => {\n const isChecked = checked.find(elem => elem === row.bookvalue) ? true : false;\n return (\n \n { handleCheck(row.bookvalue); }} className={row.canbook === '0' ? 'disabled' : null}>\n \n
\n {row.booktime}\n
\n
\n \n
\n
\n
\n \n )\n })\n }\n
\n )\n}\n\nfunction AppointmentNightS0(props) {\n const [sdate_focus, setSdate_focus] = useState(null);\n const [opentime, setOpentime] = useState('00:00');\n const [closetime, setClosetime] = useState('00:00');\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n const intl = useIntl();\n\n const GetOpenTime = () => {\n props.setLoading(true);\n axios.get(config.API_URL + `/GetOpenTime.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n bookdate: props.sdate.format('YYYY/MM/DD'),\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n setOpentime(data.resdata[0].opentime);\n setClosetime(data.resdata[0].closetime);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n function generateOptions(length, excludedOptions) {\n const arr = [];\n for (let value = 0; value < length; value++) {\n if (excludedOptions.indexOf(value) >= 0) {\n arr.push(value);\n }\n }\n return arr;\n }\n\n function disabledHours() {\n // const openHour = parseInt(opentime.split(':')[0]);\n // const closeHour = parseInt(closetime.split(':')[0]);\n // if (opentime === '00:00' && closetime === '00:00') {\n // return [];\n // } else {\n // let temp = [];\n // for (let index = 0; index < 24; index++) {\n // if (index < openHour && index > closeHour) {\n // temp.push(index);\n // }\n // }\n // return temp;\n // }\n return [];\n }\n\n function disabledMinutes(h) {\n const openHour = parseInt(opentime.split(':')[0]);\n const closeHour = parseInt(closetime.split(':')[0]);\n let temp = [];\n for (let index = 0; index < parseInt(opentime.split(':')[1]); index++) {\n temp.push(index);\n }\n let temp2 = [];\n for (let index = (parseInt(closetime.split(':')[1]) + 1); index < 60; index++) {\n temp2.push(index);\n }\n if (opentime === '00:00' && closetime === '00:00') {\n return [];\n } else {\n switch (h) {\n case openHour:\n return generateOptions(60, temp);\n case closeHour:\n return generateOptions(60, temp2);\n default:\n return generateOptions(60, []);\n }\n }\n }\n\n const handleDateChange = () => {\n const now = moment();\n const openHour = parseInt(opentime.split(':')[0]);\n const openMinute = parseInt(opentime.split(':')[1]);\n const openMoment = moment().hour(openHour).minute(openMinute);\n if (props.sdate.isSame(now, 'day') && now.isAfter(openMoment)) {\n let roundedNow;\n if (now.minute() >= 30) {\n roundedNow = now.minute(30).second(0);\n } else {\n roundedNow = now.minute(0).second(0);\n }\n props.setStime(roundedNow.format(\"HH:mm\"));\n } else {\n props.setStime(opentime);\n }\n props.setEtime(closetime);\n }\n\n useEffect(GetOpenTime, []);\n\n useEffect(handleDateChange, [props.sdate, closetime]);\n\n return (\n
\n \n \n \n {\n props.setSdate(e);\n }}\n onFocusChange={(e) => {\n setSdate_focus(e.focused);\n }}\n isOutsideRange={(day) => {\n if (props.params === null) {\n return null;\n } else {\n let bookrealeasedays = parseInt(props.params.bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n return !isInclusivelyBeforeDay(day, moment().add(bookrealeasedays - 1, \"days\")) ||\n !isInclusivelyAfterDay(day, moment());\n }\n }}\n placeholder=''\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={1}\n block\n readOnly\n />\n \n \n \n \n \n { props.setStime(moment(val).format(\"HH:mm\")); }}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n />\n \n \n \n { props.setEtime(moment(val).format(\"HH:mm\")); }}\n disabledHours={disabledHours}\n disabledMinutes={disabledMinutes}\n />\n \n \n
\n )\n}\n\nfunction AppointmentNightS1(props) {\n const [checked, setChecked] = useState('');\n\n const handleCheck = (i) => {\n setChecked(i);\n }\n\n useEffect(() => {\n setChecked(props.checked);\n }, [props.checked]);\n\n return (\n \n {props.messages.appointment.zone_info[props.selectedzone.zoneid] ?\n \n \n \n : null}\n {props.data === null ? Loading :\n props.data.length === 0 ? No Data Found :\n props.data.map((row, index) => {\n const isChecked = checked === row.deviceid ? true : false;\n const isMac = props.config.IS_MAC_DEVICEID.find(elem => elem === row.deviceid) ? true : false;\n return (\n \n { handleCheck(row.deviceid); }}>\n \n
\n {(row.deviceinfo !== '' && row.deviceinfo !== null) ?\n \n {row.deviceinfo}\n \n }\n >\n \n \n : null}\n {(row.deviceusetype === '4') ?\n \n \n \n }\n >\n \n \n : null}\n
\n
\n {row.devicename} {row.userCount ? : null}\n {(isMac) ?\n \n \n \n }\n >\n
\n \n
\n \n : null}\n
\n
\n \n
\n
\n
\n \n )\n })\n }\n
\n )\n}\n\nfunction AppointmentNightS2(props) {\n const [checked, setChecked] = useState([]);\n const intl = useIntl();\n\n const handleCheck = (i) => {\n // 若 i 已勾選\n if (checked.find(elem => elem === i)) {\n // 取消勾選 i 及 i 以後的日期時間\n setChecked(checked.filter(elem => elem !== i && parseInt(elem) < parseInt(i)));\n } else {\n // 若 i 未勾選\n let newState = [];\n // 若目前有任何勾選 && 若 i 大於目前已勾選的最小值\n if (checked.length !== 0 && parseInt(i) > parseInt(checked[0])) {\n let cantBookInMiddle = null\n // 勾選所有 i 與 最小值之間的選項\n props.data.map((row, index) => {\n if (parseInt(row.bookvalue) <= parseInt(i) && parseInt(row.bookvalue) >= parseInt(checked[0])) {\n if (row.canbook === '0' && cantBookInMiddle === null) {\n cantBookInMiddle = newState.length;\n }\n newState.push(row.bookvalue);\n }\n return null;\n })\n if (cantBookInMiddle) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.middle_duplicate' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n newState = newState.splice(0, cantBookInMiddle);\n }\n if ((newState.length / 2) > parseInt(props.params.oncecanbooktime)) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n html:\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_time' }) +\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_time_value' }, {\n value: props.params.oncecanbooktime\n }) + ``\n });\n let delCount = ((newState.length / 2) - parseInt(props.params.oncecanbooktime)) * 2;\n newState.splice(newState.length - delCount, newState.length)\n }\n } else {\n // 若未有任何勾選 || 若 i 小於最小值 \n // 只改為勾選 i\n newState.push(i);\n }\n // setChecked(prevState => [...prevState, i]);\n setChecked(newState);\n }\n }\n\n // let prevDate = '';\n return (\n \n \n \n \n {\n props.params.oncecanbooktime === '1' ?\n \n :\n \n }\n \n \n {props.data === null ? Loading :\n props.data.length === 0 ? No Data Found :\n props.data.map((row, index) => {\n // let showDate = null;\n // if (prevDate !== row.bookdate) {\n // showDate = {row.bookdate};\n // prevDate = row.bookdate;\n // }\n const isChecked = checked.find(elem => elem === row.bookvalue) ? true : false;\n return (\n \n { handleCheck(row.bookvalue); }} className={row.canbook === '0' ? 'disabled' : null}>\n \n
\n {row.booktime}\n {/* {showDate} */}\n
\n
\n \n
\n
\n
\n \n )\n })\n }\n
\n )\n}\n\nfunction AppointmentMultiple(props) {\n const handleInput = (elem) => {\n let newState = [...props.userids];\n newState[elem.target.getAttribute('idx')] = elem.target.value;\n props.setUserids(newState);\n }\n\n let useridsForm = [];\n for (let index = 0; index < (props.formUserNumber - 1); index++) {\n useridsForm.push(\n \n \n \n \n );\n }\n\n return (\n
\n \n \n
\n \n
\n \n {useridsForm}\n \n
\n )\n}\n\nexport {\n AppointmentDateS0,\n AppointmentDateS1,\n AppointmentDateS2,\n AppointmentTimeS0,\n AppointmentTimeS1,\n AppointmentTimeS2,\n AppointmentNightS0,\n AppointmentNightS1,\n AppointmentNightS2,\n AppointmentMultiple\n};","import React, { useState } from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport moment from 'moment';\nimport axios from 'axios';\nimport { MySwal, AlertSwal, IconSwal } from '../CustomSwal';\nimport { useIntl, FormattedMessage } from 'react-intl';\nimport {\n AppointmentDateS0,\n AppointmentTimeS0,\n AppointmentDateS1,\n AppointmentTimeS1,\n AppointmentDateS2,\n AppointmentTimeS2,\n AppointmentNightS0,\n AppointmentNightS1,\n AppointmentNightS2,\n AppointmentMultiple\n} from './AppointmentModalBody';\n\nfunction AppointmentModal(props) {\n // s0 state\n const [stage, setStage] = useState(0);\n const [sdate, setSdate] = useState(moment());\n const [edate, setEdate] = useState(moment().add((parseInt(props.params.oncecanbooktime) - 1), 'days'));\n const [stime, setStime] = useState(\"00:00\");\n const [etime, setEtime] = useState(\"00:00\");\n // s1 state\n const [s1data, setS1data] = useState(null);\n const [s1checked, setS1checked] = useState('');\n // s2 state\n const [s2data, setS2data] = useState(null);\n\n // multiple state\n const [userids, setUserids] = useState([]);\n const [stateUserIds, setStateUserIds] = useState(null);\n\n const intl = useIntl();\n const config = props.config;\n const formType = props.selectedzone ? config.SPACETYPE[`st_${props.selectedzone.spacetype}`][0] : null;\n // const formUserNumber = props.selectedzone ? config.SPACETYPE[`st_${props.selectedzone.spacetype}`][1] : null;\n const formUserNumber = props.params.bookuser;\n const userid = sessionStorage.getItem('userid');\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n\n const BookDeviceQuery = (qtype) => {\n let valid = true;\n let invalidMsg = '';\n let params = {};\n if (qtype === 'date') {\n const seqdays = document.getElementById('seqdays').value;\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n zoneid: props.selectedzone.zoneid,\n sdate: sdate.format('YYYY/MM/DD'),\n edate: edate.format('YYYY/MM/DD'),\n seqdays: seqdays,\n restype: 'json'\n }\n } else if (qtype === 'time') {\n const now = moment();\n const beginningTime = moment(stime, 'HH:mm');\n const endTime = moment(etime, 'HH:mm');\n if (endTime.isBefore(beginningTime)) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.end_time_must_larger' });\n }\n if (sdate.isSame(now, 'day')) {\n if (beginningTime.isBefore(now) && now.diff(beginningTime, 'minutes') > 31) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.not_expired' });\n }\n }\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n zoneid: props.selectedzone.zoneid,\n sdate: sdate.format('YYYY/MM/DD'),\n shh: stime.split(':')[0],\n smm: stime.split(':')[1],\n ehh: etime.split(':')[0],\n emm: etime.split(':')[1],\n restype: 'json'\n }\n } else if (qtype === 'night') {\n const now = moment();\n const beginningTime = moment(stime, 'HH:mm');\n if (sdate.isSame(now, 'day')) {\n if (beginningTime.isBefore(now) && now.diff(beginningTime, 'minutes') > 31) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.not_expired' });\n }\n }\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n zoneid: props.selectedzone.zoneid,\n sdate: sdate.format('YYYY/MM/DD'),\n shh: stime.split(':')[0],\n smm: stime.split(':')[1],\n ehh: etime.split(':')[0],\n emm: etime.split(':')[1],\n restype: 'json'\n }\n }\n if (valid) {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookDeviceQuery.aspx`, {\n params: params\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n if (data.resdata) {\n setS1checked('');\n setS1data(data.resdata);\n setStage(stage + 1);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.query_no_data' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error);\n }).finally(() => {\n props.setLoading(false);\n })\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: invalidMsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n\n const BookTimeSegQuery = (qtype) => {\n if (document.querySelector('input[name=\"deviceid\"]:checked')) {\n let params = {};\n const deviceid = document.querySelector('input[name=\"deviceid\"]:checked').value;\n setS1checked(deviceid);\n if (qtype === 'date') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n sdate: sdate.format('YYYY/MM/DD'),\n edate: edate.format('YYYY/MM/DD'),\n deviceid: deviceid,\n restype: 'json'\n }\n } else if (qtype === 'time') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n sdate: sdate.format('YYYY/MM/DD'),\n deviceid: deviceid,\n restype: 'json'\n }\n } else if (qtype === 'night') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n sdate: sdate.format('YYYY/MM/DD'),\n deviceid: deviceid,\n restype: 'json'\n }\n }\n props.setLoading(true);\n axios.get(config.API_URL + `/BookTimeSegQuery.aspx`, {\n params: params\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n setS2data(data.resdata);\n setStage(stage + 1);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.select_space' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n\n const BookAdd = (qtype) => {\n // 檢查是否有選擇日期時間\n let bookvalues = document.querySelector('input[name=\"bookvalue\"]:checked');\n if (bookvalues) {\n let swalMsg;\n let viewArr = [];\n let viewDates = [];\n let params = {};\n let bookvalue = '';\n let useridparam = '';\n if (parseInt(formUserNumber) === 1) {\n useridparam = userid;\n } else if (parseInt(formUserNumber) > 1) {\n useridparam = userid + ',' + stateUserIds;\n }\n const checkboxes = document.getElementsByName('bookvalue');\n // 整理要送出的日期時間格式\n for (let i = 0, n = checkboxes.length; i < n; i++) {\n if (checkboxes[i].checked) {\n bookvalue += \",\" + checkboxes[i].value;\n viewArr.push(checkboxes[i].getAttribute('viewvalue'));\n viewDates.push(checkboxes[i].getAttribute('viewdate'));\n }\n }\n if (bookvalue) bookvalue = bookvalue.substring(1);\n // date time 參數 + swal 的內容 判別\n if (qtype === 'date') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n deviceid: s1checked,\n userid: useridparam,\n sdate: sdate.format('YYYY/MM/DD'),\n bookdate: bookvalue,\n restype: 'json'\n }\n swalMsg =\n
\n {intl.formatMessage({ id: 'global.reader_id' })} : {useridparam}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${props.selectedzone.zoneid}`, defaultMessage: props.selectedzone.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {s2data[0].devicename}
\n {intl.formatMessage({ id: 'global.reservation_date' })} : {(viewArr.length === 1 ? viewArr[0] : `${viewArr[0]} ~ ${viewArr[viewArr.length - 1]}`)}\n
\n ;\n } else if (qtype === 'time') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n deviceid: s1checked,\n userid: useridparam,\n sdate: sdate.format('YYYY/MM/DD'),\n booktime: bookvalue,\n restype: 'json'\n }\n swalMsg =\n
\n {intl.formatMessage({ id: 'global.reader_id' })} : {useridparam}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${props.selectedzone.zoneid}`, defaultMessage: props.selectedzone.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {s2data[0].devicename}
\n {intl.formatMessage({ id: 'global.reservation_date' })} : {sdate.format('YYYY/MM/DD')}
\n {intl.formatMessage({ id: 'global.reservation_time' })} : {(viewArr.length === 1 ? viewArr[0].replace('~', ' ~ ') : `${viewArr[0].split('~')[0]} ~ ${viewArr[viewArr.length - 1].split('~')[1]}`)}\n
\n ;\n } else if (qtype === 'night') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n deviceid: s1checked,\n userid: useridparam,\n sdate: sdate.format('YYYY/MM/DD'),\n booktime: bookvalue,\n restype: 'json'\n }\n let datetimeText = '';\n if (viewArr.length === 1) {\n if (viewArr[0].split(' ').length > 1) {\n datetimeText = viewDates[0] + ' ' + viewArr[0].split(' ')[1].replace('~', ' ~ ');\n } else {\n datetimeText = viewDates[0] + ' ' + viewArr[0].replace('~', ' ~ ');\n }\n } else {\n let stext = '';\n let etext = '';\n if (viewArr[0].split(' ').length > 1) {\n stext = viewArr[0].split(' ')[1].split('~')[0];\n } else {\n stext = viewArr[0].split('~')[0];\n }\n if (viewArr[viewArr.length - 1].split(' ').length > 1) {\n etext = viewArr[viewArr.length - 1].split(' ')[1].split('~')[1];\n } else {\n etext = viewArr[viewArr.length - 1].split('~')[1];\n }\n if (viewDates[0] !== viewDates[viewArr.length - 1]) {\n datetimeText = viewDates[0] + ' ' + stext + ' ~ ' + viewDates[viewArr.length - 1] + ' ' + etext;\n } else {\n datetimeText = viewDates[0] + ' ' + stext + ' ~ ' + etext;\n }\n }\n swalMsg =\n
\n {intl.formatMessage({ id: 'global.reader_id' })} : {useridparam}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${props.selectedzone.zoneid}`, defaultMessage: props.selectedzone.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {s2data[0].devicename}
\n {intl.formatMessage({ id: 'global.reservation_time' })} : {datetimeText}\n
\n ;\n }\n MySwal.fire({\n title: intl.formatMessage({ id: 'appointment.reservation_detail' }),\n html: swalMsg,\n showCancelButton: true,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n cancelButtonText: intl.formatMessage({ id: 'global.cancel' })\n }).then((result) => {\n if (result.value) {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookAdd.aspx`, {\n params: params\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n props.setshow(false);\n if (config.SHOW_GOOGLE) {\n IconSwal.fire({\n title: intl.formatMessage({ id: 'appointment.success_reservation' }),\n icon: 'success',\n html: {intl.formatMessage({ id: 'appointment.add_to_google' })}?,\n showCancelButton: true,\n confirmButtonText: intl.formatMessage({ id: 'global.yes' }),\n cancelButtonText: intl.formatMessage({ id: 'global.no' })\n }).then((result) => {\n if (result.value) {\n const googleForm = document.getElementById('googleForm');\n googleForm.querySelector('input[name=spacetype]').value = props.selectedzone.spacetype;\n googleForm.querySelector('input[name=deviceid]').value = s1checked;\n googleForm.querySelector('input[name=readerid]').value = userid;\n googleForm.querySelector('input[name=booksdate]').value = (qtype === 'date') ? viewArr[0] : sdate.format('YYYY/MM/DD');\n googleForm.querySelector('input[name=bookedate]').value = (qtype === 'date') ? viewArr[viewArr.length - 1] : sdate.format('YYYY/MM/DD');\n googleForm.querySelector('input[name=binbooktime]').value = (qtype === 'date') ? '' : bookvalue;\n googleForm.submit();\n }\n props.setCurrent('info');\n props.history.push('/redirect_to/info');\n });\n } else {\n IconSwal.fire({\n title: intl.formatMessage({ id: 'appointment.success_reservation' }),\n icon: 'success',\n showCancelButton: false,\n customClass: {\n header: 'bg_swal swal-icon-header justify-content-around',\n title: 'modal-title',\n icon: 'swal-icon-class',\n actions: 'modal-footer d-flex justify-content-center',\n confirmButton: 'bg_brand btn btn-primary'\n }\n }).then((result) => {\n props.setCurrent('info');\n props.history.push('/redirect_to/info');\n });\n }\n } else {\n let errMsg = data.resmsg.match(/\\[(.*?)\\]/);\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: errMsg ? intl.formatMessage({ id: `serverResponse.${errMsg[1]}` }) : intl.formatMessage({ id: 'serverResponse.default' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n })\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.select_period' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n\n const BookUserVerify = (qtype) => {\n let findDuplicates = arr => arr.filter((item, index) => arr.indexOf(item) !== index);\n let valid = true;\n let invalidMsg = '';\n let params = {};\n let useridparam = '';\n if (findDuplicates(userids).length > 0) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.reader_id_repeat' });\n }\n for (let i = 0; i < parseInt(formUserNumber) - 1; i++) {\n if (userids[i] !== '' && userids[i] !== undefined) {\n if (userids[i].toUpperCase() === userid.toUpperCase()) {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.reader_id_self' });\n } else if (userids[i].match(/^[a-zA-Z0-9]+$/)) {\n useridparam += \",\" + userids[i];\n } else {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.reader_id_invalid' });\n }\n } else {\n valid = false;\n invalidMsg = intl.formatMessage({ id: 'appointment.alert.reader_id_empty' });\n }\n }\n if (useridparam) useridparam = useridparam.substring(1);\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n userid: useridparam,\n restype: 'json'\n }\n if (valid) {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookUserVerify.aspx`, {\n params: params\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n setStateUserIds(useridparam);\n setStage(stage + 1);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'serverResponse.code_011' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error);\n }).finally(() => {\n props.setLoading(false);\n })\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: invalidMsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n\n const SchAllModal = (qtype) => {\n const params = {\n enableToBook: true,\n spacetype: props.selectedzone.spacetype,\n sdate: sdate.format('YYYY/MM/DD'),\n edate: formType === 'date' ? edate.format('YYYY/MM/DD') : null,\n zonename: props.selectedzone.zonename,\n userids: stateUserIds\n }\n props.setAllData(params);\n props.setAllShow(true);\n }\n\n return (\n {\n props.setShowScrollArrow(true);\n }}\n onHide={() => {\n props.setshow(false);\n props.setSelectedZone(null);\n props.setShowScrollArrow(false);\n }}\n centered\n >\n \n {props.selectedzone ? : null} {s2data ? `【${s2data[0].devicename}】` : null}\n \n \n \n \n )\n}\n\nfunction ModalBody(props) {\n let modalForm = [];\n if (props.formType === 'date') {\n modalForm[0] =\n ;\n modalForm[1] =\n ;\n modalForm[2] =\n ;\n } else if (props.formType === 'time') {\n modalForm[0] =\n ;\n modalForm[1] =\n ;\n modalForm[2] =\n ;\n } else if (props.formType === 'night') {\n modalForm[0] =\n ;\n modalForm[1] =\n ;\n modalForm[2] =\n ;\n }\n\n if (props.formUserNumber > 1) {\n let multipleForm =\n ;\n modalForm.unshift(multipleForm);\n }\n\n return (\n \n {modalForm[props.stage]}\n \n )\n}\n\nfunction ModalFooter(props) {\n let modalFooter = [];\n modalFooter[0] =\n
\n \n \n
;\n modalFooter[1] =\n <>\n \n \n ;\n modalFooter[2] =\n <>\n \n \n ;\n\n if (props.formUserNumber > 1) {\n modalFooter[0] =\n <>\n \n
\n \n \n
\n ;\n\n let multipleFooter =\n <>\n \n ;\n modalFooter.unshift(multipleFooter);\n }\n\n return (\n \n {modalFooter[props.stage]}\n \n )\n}\n\n// function usePrevious(value) {\n// const ref = useRef();\n// useEffect(() => {\n// ref.current = value;\n// });\n// return ref.current;\n// }\n\nexport default AppointmentModal;","import React, { useState, useEffect } from 'react';\nimport axios from 'axios';\nimport Row from 'react-bootstrap/Row';\nimport Col from 'react-bootstrap/Col';\nimport Form from 'react-bootstrap/Form';\nimport Card from 'react-bootstrap/Card';\nimport Alert from 'react-bootstrap/Alert';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport Tooltip from 'react-bootstrap/Tooltip';\nimport OverlayTrigger from 'react-bootstrap/OverlayTrigger';\nimport { MySwal, AlertSwal, IconSwal } from '../CustomSwal';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nfunction AppointmentAllModal(props) {\n const [data, setData] = useState(null);\n const [selectedArea, setSelectedArea] = useState(null);\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n const formType = props.allData.spacetype ? config.SPACETYPE[`st_${props.allData.spacetype}`][0] : null;\n const formUserNumber = props.params.bookuser;\n const userid = sessionStorage.getItem('userid');\n const intl = useIntl();\n\n const GetAllDataByDate = () => {\n let sdate = props.allData.sdate;\n let edate = props.allData.edate;\n const params = {\n sid: sid,\n authid: authid,\n spacetype: props.allData.spacetype,\n zoneid: props.selectedzone ? props.selectedzone.zoneid : null,\n sdate: sdate ? sdate.split(\"/\").join(\"\") : null,\n edate: edate ? edate.split(\"/\").join(\"\") : null,\n restype: 'json'\n }\n props.setLoading(true);\n axios.get(config.API_URL + `/GetAllBookStatus.aspx`, {\n params: params\n }).then((res) => {\n const data = res.data;\n if (data.rescode === 3 || data.rescode === 4) {\n props.setSession(false);\n } else {\n if (data.rescode === 1) {\n let stateData = [];\n for (let i = 0; i < data.deviceinfo.length; i++) {\n stateData[i] = {\n bookinfo: [],\n deviceinfo: data.deviceinfo[i].deviceinfo,\n deviceid: data.deviceinfo[i].deviceid,\n devicename: data.deviceinfo[i].devicename,\n usetype: data.deviceinfo[i].usetype,\n zoneid: props.selectedzone ? null : data.deviceinfo[i].zoneid\n };\n for (let j = 0; j < data.bookvalue.length; j++) {\n stateData[i].bookinfo.push({\n bookdate: data.bookdate[j],\n booktime: data.booktime[j] || null,\n bookvalue: data.bookvalue[j],\n canbook: data.deviceinfo[i].canbook[j],\n closeday: data.deviceinfo[i].closeday[j],\n reason: data.deviceinfo[i].reason[j]\n })\n }\n }\n setData(stateData);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const BookAdd = () => {\n // 檢查是否有選擇日期時間\n let bookvalues = document.querySelector('input[name=\"bookvalue\"]:checked');\n if (bookvalues) {\n let swalMsg;\n let viewArr = [];\n let viewDates = [];\n let params = {};\n let selectedDeviceName = '';\n let bookvalue = '';\n // 取到選擇的 devicename\n data.find(elem => {\n if (elem.deviceid === selectedArea) {\n selectedDeviceName = elem.devicename;\n }\n return null;\n });\n // userids 整理\n let useridparam = '';\n if (parseInt(formUserNumber) === 1) {\n useridparam = userid;\n } else if (parseInt(formUserNumber) > 1) {\n useridparam = userid + ',' + props.allData.userids;\n }\n const checkboxes = document.getElementsByName('bookvalue');\n // 整理要送出的日期時間格式\n for (let i = 0, n = checkboxes.length; i < n; i++) {\n if (checkboxes[i].checked) {\n bookvalue += \",\" + checkboxes[i].value;\n viewArr.push(checkboxes[i].getAttribute('viewvalue'));\n viewDates.push(checkboxes[i].getAttribute('viewdate'));\n }\n }\n if (bookvalue) bookvalue = bookvalue.substring(1);\n // date time 參數 + swal 的內容 判別\n if (formType === 'date') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n deviceid: selectedArea,\n userid: useridparam,\n sdate: props.allData.sdate,\n bookdate: bookvalue,\n restype: 'json'\n }\n swalMsg =\n
\n {intl.formatMessage({ id: 'global.reader_id' })} : {useridparam}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${props.selectedzone.zoneid}`, defaultMessage: props.selectedzone.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {selectedDeviceName}
\n {intl.formatMessage({ id: 'global.reservation_date' })} : {(viewArr.length === 1 ? viewArr[0] : `${viewArr[0]} ~ ${viewArr[viewArr.length - 1]}`)}\n
\n ;\n } else if (formType === 'time') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n deviceid: selectedArea,\n userid: useridparam,\n sdate: props.allData.sdate,\n booktime: bookvalue,\n restype: 'json'\n }\n swalMsg =\n
\n {intl.formatMessage({ id: 'global.reader_id' })} : {useridparam}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${props.selectedzone.zoneid}`, defaultMessage: props.selectedzone.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {selectedDeviceName}
\n {intl.formatMessage({ id: 'global.reservation_date' })} : {props.allData.sdate}
\n {intl.formatMessage({ id: 'global.reservation_time' })} : {(viewArr.length === 1 ? viewArr[0].replace('~', ' ~ ') : `${viewArr[0].split('~')[0]} ~ ${viewArr[viewArr.length - 1].split('~')[1]}`)}\n
\n ;\n } else if (formType === 'night') {\n params = {\n sid: sid,\n authid: authid,\n spacetype: props.selectedzone.spacetype,\n deviceid: selectedArea,\n userid: useridparam,\n sdate: props.allData.sdate,\n booktime: bookvalue,\n restype: 'json'\n }\n let datetimeText = '';\n if (viewArr.length === 1) {\n if (viewArr[0].split(' ').length > 1) {\n datetimeText = viewDates[0] + ' ' + viewArr[0].split(' ')[1].replace('~', ' ~ ');\n } else {\n datetimeText = viewDates[0] + ' ' + viewArr[0].replace('~', ' ~ ');\n }\n } else {\n let stext = '';\n let etext = '';\n if (viewArr[0].split(' ').length > 1) {\n stext = viewArr[0].split(' ')[1].split('~')[0];\n } else {\n stext = viewArr[0].split('~')[0];\n }\n if (viewArr[viewArr.length - 1].split(' ').length > 1) {\n etext = viewArr[viewArr.length - 1].split(' ')[1].split('~')[1];\n } else {\n etext = viewArr[viewArr.length - 1].split('~')[1];\n }\n if (viewDates[0] !== viewDates[viewArr.length - 1]) {\n datetimeText = viewDates[0] + ' ' + stext + ' ~ ' + viewDates[viewArr.length - 1] + ' ' + etext;\n } else {\n datetimeText = viewDates[0] + ' ' + stext + ' ~ ' + etext;\n }\n }\n swalMsg =\n
\n {intl.formatMessage({ id: 'global.reader_id' })} : {useridparam}
\n {intl.formatMessage({ id: 'global.zonename' })} : {intl.formatMessage({ id: `global.zoneid.${props.selectedzone.zoneid}`, defaultMessage: props.selectedzone.zonename })}
\n {intl.formatMessage({ id: 'global.devicename' })} : {selectedDeviceName}
\n {intl.formatMessage({ id: 'global.reservation_time' })} : {datetimeText}\n
\n ;\n }\n MySwal.fire({\n title: intl.formatMessage({ id: 'appointment.reservation_detail' }),\n html: swalMsg,\n showCancelButton: true,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n cancelButtonText: intl.formatMessage({ id: 'global.cancel' })\n }).then((result) => {\n if (result.value) {\n props.setLoading(true);\n axios.get(config.API_URL + `/BookAdd.aspx`, {\n params: params\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n props.setshow(false);\n if (config.SHOW_GOOGLE) {\n IconSwal.fire({\n title: intl.formatMessage({ id: 'appointment.success_reservation' }),\n icon: 'success',\n html: {intl.formatMessage({ id: 'appointment.add_to_google' })}?,\n showCancelButton: true,\n confirmButtonText: intl.formatMessage({ id: 'global.yes' }),\n cancelButtonText: intl.formatMessage({ id: 'global.no' })\n }).then((result) => {\n if (result.value) {\n const googleForm = document.getElementById('googleForm');\n googleForm.querySelector('input[name=spacetype]').value = props.allData.spacetype;\n googleForm.querySelector('input[name=deviceid]').value = selectedArea;\n googleForm.querySelector('input[name=readerid]').value = userid;\n googleForm.querySelector('input[name=booksdate]').value = (formType === 'date') ? viewDates[0] : props.allData.sdate;\n googleForm.querySelector('input[name=bookedate]').value = (formType === 'date') ? viewDates[viewArr.length - 1] : props.allData.sdate;\n googleForm.querySelector('input[name=binbooktime]').value = (formType === 'date') ? '' : bookvalue;\n googleForm.submit();\n }\n props.setCurrent('info');\n props.history.push('/redirect_to/info');\n });\n } else {\n IconSwal.fire({\n title: intl.formatMessage({ id: 'appointment.success_reservation' }),\n icon: 'success',\n showCancelButton: false,\n customClass: {\n header: 'bg_swal swal-icon-header justify-content-around',\n title: 'modal-title',\n icon: 'swal-icon-class',\n actions: 'modal-footer d-flex justify-content-center',\n confirmButton: 'bg_brand btn btn-primary'\n }\n }).then((result) => {\n props.setCurrent('info');\n props.history.push('/redirect_to/info');\n });\n }\n } else {\n let errMsg = data.resmsg.match(/\\[(.*?)\\]/);\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: errMsg ? intl.formatMessage({ id: `serverResponse.${errMsg[1]}` }) : intl.formatMessage({ id: 'serverResponse.default' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n })\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.select_period' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n\n const handleChange = (elem) => {\n if (props.allData.enableToBook) {\n setSelectedArea(elem.currentTarget.value);\n }\n }\n\n useEffect(GetAllDataByDate, []);\n\n return (\n {\n props.setShowScrollArrow(true);\n }}\n onHide={() => {\n props.setAllShow(false);\n props.setShowScrollArrow(false, 1);\n }}\n centered\n backdropClassName='double_modal_backdrop'\n dialogClassName=\"modal-95w\"\n className='double_modal all_modal'\n >\n \n \n \n \n \n \n \n {props.allData.edate ?\n props.allData.sdate + ' ~ ' + props.allData.edate :\n props.allData.sdate}\n \n \n \n \n \n \n \n {props.allData.enableToBook ?\n \n : null}\n \n \n {\n props.params.oncecanbooktime === '1' ?\n \n :\n \n }\n \n \n \n {data === null ? Loading :\n data.length === 0 ? No Data Found :\n data.map((row, index) => {\n const isMac = config.IS_MAC_DEVICEID.find(elem => elem === row.deviceid) ? true : false;\n return (\n \n
\n {(row.deviceinfo !== '' && row.deviceinfo !== null) ?\n \n {row.deviceinfo}\n \n }\n >\n \n \n : null}\n {(row.usetype === 4) ?\n \n \n \n }\n >\n \n \n : null}\n {(isMac) ?\n \n \n \n }\n >\n
\n \n
\n \n : null}\n \n \n \n \n
\n \n \n )\n })}\n
\n
\n {props.allData.enableToBook ?\n \n \n \n : null}\n
\n )\n}\n\nfunction AllCheckArea(props) {\n const [checked, setChecked] = useState([]);\n const intl = props.intl;\n\n const handleCheck = (i) => {\n // 若 i 已勾選\n if (checked.find(elem => elem === i)) {\n // 取消勾選 i 及 i 以後的日期時間\n setChecked(checked.filter(elem => elem !== i && parseInt(elem) < parseInt(i)));\n } else {\n // 若 i 未勾選\n let newState = [];\n // 若目前有任何勾選 && 若 i 大於目前已勾選的最小值\n if (checked.length !== 0 && parseInt(i) > parseInt(checked[0])) {\n let cantBookInMiddle = null\n // 勾選所有 i 與 最小值之間的選項\n props.data.map((row, index) => {\n if (parseInt(row.bookvalue) <= parseInt(i) && parseInt(row.bookvalue) >= parseInt(checked[0])) {\n // 中間有無法預約的時段 ,記錄該 index\n if (row.canbook === 0 && cantBookInMiddle === null) {\n cantBookInMiddle = newState.length;\n }\n newState.push(row.bookvalue);\n }\n return null;\n })\n // 刪掉 index 後的 elem\n if (cantBookInMiddle) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'appointment.alert.middle_duplicate' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n });\n newState = newState.splice(0, cantBookInMiddle);\n }\n // 刪掉超過最大天數的 elem\n if (props.formType === 'date') {\n if (newState.length > parseInt(props.params.oncecanbooktime)) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n html:\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_date' }) +\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_date_value' }, {\n value: props.params.oncecanbooktime\n }) + ``\n });\n const delCount = newState.length - parseInt(props.params.oncecanbooktime);\n newState.splice(newState.length - delCount, newState.length)\n }\n } else {\n if ((newState.length / 2) > parseInt(props.params.oncecanbooktime)) {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n html:\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_time' }) +\n `` +\n intl.formatMessage({ id: 'appointment.alert.reach_max_time_value' }, {\n value: props.params.oncecanbooktime\n }) + ``\n });\n let delCount = ((newState.length / 2) - parseInt(props.params.oncecanbooktime)) * 2;\n newState.splice(newState.length - delCount, newState.length)\n }\n }\n } else {\n // 若未有任何勾選 || 若 i 小於最小值 \n // 只改為勾選 i\n newState.push(i);\n }\n // setChecked(prevState => [...prevState, i]);\n setChecked(newState);\n }\n }\n\n useEffect(() => {\n if (props.enable === false) {\n setChecked([]);\n }\n }, [props.enable]);\n\n let prevDate = '';\n return (\n \n {props.data === null ? Loading :\n props.data.length === 0 ? No Data Found :\n props.data.map((row, index) => {\n let showDate = null;\n if (props.formType === 'night' && prevDate !== row.bookdate) {\n showDate = row.bookdate;\n prevDate = row.bookdate;\n }\n const isChecked = checked.find(elem => elem === row.bookvalue) ? true : false;\n return (\n \n {\n if (props.enable) {\n handleCheck(row.bookvalue);\n }\n }}\n style={props.enable ? null : { pointerEvents: 'none' }}\n className={row.canbook === 0 ? 'disabled' : null}\n >\n \n
\n {showDate} {props.formType === 'date' ? row.bookdate : row.booktime}\n
\n {props.enable ?\n
\n \n
\n : null}\n
\n
\n \n )\n })}\n
\n )\n}\n\nexport default AppointmentAllModal;","export function flattenMessages(nestedMessages, prefix = '') {\n return Object.keys(nestedMessages).reduce((messages, key) => {\n let value = nestedMessages[key];\n let prefixedKey = prefix ? `${prefix}.${key}` : key;\n\n if (typeof value === 'string') {\n messages[prefixedKey] = value;\n } else {\n Object.assign(messages, flattenMessages(value, prefixedKey));\n }\n\n return messages;\n }, {});\n}\n\n","import React, { useState } from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport { IntlProvider, FormattedMessage } from 'react-intl';\nimport { flattenMessages } from '../../utils';\n\nfunction PolicyModal(props) {\n const [isChecked, setIsChecked] = useState(false);\n const messages = props.policy_messages;\n\n if (props.selectedzone === null) {\n return null;\n }\n\n const data = messages[`spacetype_${props.selectedzone.spacetype}`];\n return (\n {\n props.setSelectedZone(null);\n props.setPolicyShow(false);\n }}\n dialogClassName=\"modal-95w\"\n centered\n >\n \n \n \n \n \n \n {data !== undefined ?\n \n
    \n {\n Object.keys(data).map((item, i) => {\n return (\n \n )\n })\n }\n
\n
\n : '查無對應空間類型的語系資料'}\n
\n \n
\n { setIsChecked(!isChecked); }} />\n \n
\n \n
\n
\n )\n}\n\nconst CustomTag = (props) => {\n const TagName = (tagprops) => {\n let InnerTagName = props.jsondata.tag;\n let tagClass = props.jsondata.class || null;\n let tagHref = props.jsondata.href || null;\n let hrefTarget = props.jsondata.href ? '_blank' : null;\n let rowspan = props.jsondata.rowspan || null;\n if (InnerTagName) {\n return {tagprops.children}\n } else {\n return <>{tagprops.children}\n }\n };\n if (props.jsondata.children) {\n return (\n \n {props.jsondata.content ? : null}\n {\n Object.keys(props.jsondata.children).map((item, i) => {\n return (\n \n )\n })\n }\n \n )\n } else {\n return (\n \n \n \n )\n }\n}\n\nexport default PolicyModal;","import React, { useState, useEffect } from 'react';\nimport Accordion from 'react-bootstrap/Accordion';\nimport ListGroup from 'react-bootstrap/ListGroup';\nimport Card from 'react-bootstrap/Card';\nimport Col from 'react-bootstrap/Col';\nimport InputGroup from 'react-bootstrap/InputGroup';\nimport Button from 'react-bootstrap/Button';\nimport axios from 'axios';\nimport Alert from 'react-bootstrap/Alert';\nimport NoData from '../components/NoData.js';\nimport moment from 'moment';\nimport AppointmentModal from '../components/appointment/AppointmentModal';\nimport AppointmentAllModal from '../components/appointment/AppointmentAllModal';\nimport PolicyModal from '../components/appointment/PolicyModal';\nimport { SingleDatePicker, isInclusivelyBeforeDay, isInclusivelyAfterDay } from 'react-dates';\nimport { FormattedMessage, useIntl } from 'react-intl';\nimport { AlertSwal } from '../components/CustomSwal';\nimport '../components/css/appointment.css';\n\nfunction Appointment(props) {\n const [startDate, setStartDate] = useState(null);\n const [startDate_focus, setStartDate_focus] = useState(null);\n const [endDate, setEndDate] = useState(null);\n const [endDate_focus, setEndDate_focus] = useState(null);\n const [data, setData] = useState(null);\n const [remainData, setRemainData] = useState(null);\n const [zoneData, setZoneData] = useState(null);\n const [selectedZone, setSelectedZone] = useState(null);\n const [currentEventKey, setCurrentEventKey] = useState(null);\n const [params, setParams] = useState(null);\n const [show, setShow] = useState(false);\n const [allShow, setAllShow] = useState(false);\n const [policyShow, setPolicyShow] = useState(false);\n const [allData, setAllData] = useState(null);\n\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const isblacklist = sessionStorage.getItem('isblacklist');\n const cardnoexist = sessionStorage.getItem('cardnoexist');\n const config = props.config;\n const formType = currentEventKey ? config.SPACETYPE[`st_${currentEventKey}`][0] : null;\n const intl = useIntl();\n\n const GetCanBookSpaceType = () => {\n props.setLoading(true);\n axios.get(config.API_URL + `/GetCanBookSpaceType.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n if (data.resdata) {\n let stateData = [];\n for (let i = 0; i < config.ST_ORDER.length; i++) {\n let spacetype_index = config.ST_ORDER[i].toString();\n data.resdata.map((row, index) => {\n if (row.spacetype === spacetype_index) {\n stateData.push(row);\n }\n return null;\n })\n }\n setData(stateData);\n } else {\n setData([]);\n }\n GetRemainderSpace();\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n })\n }\n\n const GetRemainderSpace = () => {\n axios.get(config.API_URL + `/GetRemainderSpace.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n if (data.resdata) {\n setRemainData(data.resdata);\n } else {\n setRemainData([]);\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const GetZoneInfo = (elem) => {\n const spacetype = elem.target.getAttribute('spacetype');\n setCurrentEventKey(spacetype);\n setStartDate(moment());\n if (spacetype !== currentEventKey) {\n props.setLoading(true);\n axios.get(config.API_URL + `/GetZoneInfo.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n spacetype: spacetype,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n setZoneData(data.resdata);\n GetParams(spacetype);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n })\n } else {\n setParams(null);\n setStartDate(null);\n setEndDate(null);\n setCurrentEventKey(null);\n setZoneData(null);\n }\n }\n\n const GetParams = (spacetype) => {\n axios.get(config.API_URL + `/GetParams.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n spacetype: spacetype,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n props.setSession(false);\n } else {\n if (data.rescode === '1') {\n setParams(data.resdata[0]);\n let bookrealeasedays = parseInt(data.resdata[0].bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n let edate = moment().add((parseInt(data.resdata[0].oncecanbooktime) - 1), 'days');\n let lastdate = moment().add(bookrealeasedays - 1, 'days');\n if (edate.isAfter(lastdate, 'days')) {\n edate = lastdate;\n }\n setEndDate(edate);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const selectZone = (elem) => {\n const zoneid = elem.target.getAttribute('zoneid');\n const zonename = elem.target.getAttribute('zonename');\n setSelectedZone({\n zoneid: zoneid,\n zonename: zonename,\n spacetype: currentEventKey,\n params: params\n });\n if (document.documentElement.clientWidth > config.POLICY_SHOW_WIDTH) {\n setPolicyShow(true);\n } else {\n setShow(true);\n }\n }\n\n const SchAllModal = () => {\n let zonename = '';\n data.find(elem => {\n if (elem.spacetype === currentEventKey) {\n zonename = elem.spacetypename;\n }\n return null;\n });\n const params = {\n enableToBook: false,\n spacetype: currentEventKey,\n sdate: startDate.format('YYYY/MM/DD'),\n edate: formType === 'date' ? endDate.format('YYYY/MM/DD') : null,\n zonename: zonename\n }\n setAllData(params);\n setAllShow(true);\n }\n\n useEffect(GetCanBookSpaceType, []);\n\n\n const setScrollCount = props.setScrollCount;\n useEffect(() => {\n return function clearModalCount() {\n setScrollCount(0);\n }\n }, [setScrollCount]);\n\n if (data === null) {\n return '';\n } else if (data.length === 0) {\n return ;\n }\n\n let showEndDate = formType === 'date' ?\n <>\n ~\n {\n setEndDate(e);\n }}\n onFocusChange={(e) => {\n setEndDate_focus(e.focused);\n }}\n placeholder=''\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={1}\n block\n readOnly\n disabled\n />\n \n : null;\n\n return (\n <>\n {cardnoexist === '0' ?\n \n : isblacklist === '1' ?\n \n : null}\n \n {\n data.map((row, index) => {\n return (\n \n \n \n \n \n \n {props.messages.appointment.spacetype_info[row.spacetype] ?\n \n {props.messages.appointment.spacetype_info[row.spacetype]}\n \n : null}\n {(config.SHOW_CHECK_ALL_SPACE && (currentEventKey === row.spacetype)) ?\n \n \n {\n setStartDate(e);\n let bookrealeasedays = parseInt(params.bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n let edate = moment(e).add((parseInt(params.oncecanbooktime) - 1), 'days');\n let lastdate = moment().add(bookrealeasedays - 1, 'days');\n if (edate.isAfter(lastdate, 'days')) {\n edate = lastdate;\n }\n setEndDate(edate);\n }}\n onFocusChange={(e) => {\n setStartDate_focus(e.focused);\n }}\n isOutsideRange={(day) => {\n if (params === null) {\n return null;\n } else {\n let bookrealeasedays = parseInt(params.bookrealeasedays);\n if (bookrealeasedays === 0) {\n bookrealeasedays = 1;\n }\n return !isInclusivelyBeforeDay(day, moment().add(bookrealeasedays - 1, \"days\")) ||\n !isInclusivelyAfterDay(day, moment());\n }\n }}\n // placeholder={intl.formatMessage({ id: 'appointment.choose_spacetype_first' })}\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={(document.documentElement.clientWidth < 576 ? 1 : 2)}\n withPortal\n block\n readOnly\n />\n {showEndDate}\n {formType === 'date' ? null :\n \n \n \n }\n \n {formType === 'date' ?\n
\n \n
\n : null}\n
\n : null}\n {zoneData === null ? Loading :\n zoneData.length === 0 ? No Data Found :\n zoneData.map((row, index) => {\n let count = null;\n remainData.find(elem => {\n if (elem.zonename === row.zonename) {\n count = elem.count;\n }\n return null;\n });\n return (\n \n
\n \n \n {\n config.SHOW_CURRENT_SPACE ?\n \n \n \n :\n null\n }\n \n {cardnoexist === '1' && isblacklist === '0' ?\n \n : null}\n
\n
\n )\n })\n }\n
\n
\n
\n )\n })\n }\n
\n {show ?\n \n : null}\n {allShow ?\n \n : null}\n {policyShow ?\n \n : null}\n
\n
\n \n \n \n \n \n \n
\n
\n \n )\n}\n\nexport default Appointment;","import React from 'react';\nimport Pagination from 'react-bootstrap/Pagination';\nimport './css/pagination.css';\n\nclass TablePagination extends React.PureComponent {\n onPageChange = (e) => {\n const newpage = parseInt(e.target.getAttribute('pageno'));\n this.props.onPageChange(newpage);\n }\n\n render() {\n if (this.props.totalpage === 0 || this.props.totalpage === 1) {\n return null;\n }\n\n const totalpage = this.props.totalpage;\n const currentpage = this.props.currentpage;\n const groupCount = this.props.config.PAGINATION_GROUP_COUNT;\n let totalgroup = 1;\n let currentgroup = 1;\n\n if (totalpage > groupCount) {\n if (totalpage / groupCount > parseInt(totalpage / groupCount)) {\n totalgroup = parseInt(totalpage / groupCount) + 1;\n } else {\n totalgroup = parseInt(totalpage / groupCount);\n }\n if (currentpage / groupCount > parseInt(currentpage / groupCount)) {\n currentgroup = parseInt(currentpage / groupCount) + 1;\n } else {\n currentgroup = parseInt(currentpage / groupCount);\n }\n }\n\n const lastGroupDigit = (totalpage % groupCount === 0) ? groupCount : totalpage % groupCount;\n const indexStart = ((currentgroup - 1) * groupCount) + 1;\n const indexEnd = (currentgroup !== totalgroup) ? currentgroup * groupCount : ((currentgroup - 1) * groupCount) + lastGroupDigit;\n\n let items = [];\n if (currentgroup !== 1 && totalgroup > 1) {\n items.push(\n \n 1\n \n );\n items.push(\n \n );\n }\n for (let i = indexStart; i <= indexEnd; i++) {\n items.push(\n \n {i}\n \n );\n }\n if (currentgroup !== totalgroup && totalgroup > 1) {\n items.push(\n \n );\n items.push(\n \n {totalpage}\n \n );\n }\n return (\n
\n {items}\n
\n )\n }\n}\n\nexport default TablePagination;","import React from 'react';\nimport Modal from 'react-bootstrap/Modal';\nimport Button from 'react-bootstrap/Button';\nimport Table from 'react-bootstrap/Table';\nimport Alert from 'react-bootstrap/Alert';\nimport TablePagination from '../TablePagination';\nimport { FormattedMessage } from 'react-intl';\n\nfunction RecordModal(props) {\n return (\n {\n props.setShow(false);\n }}\n dialogClassName=\"modal-95w\"\n centered\n >\n \n \n {props.selectedTitle}\n \n \n \n {props.data.showAlert ?\n \n \n \n : null}\n \n \n \n {\n props.data.thead.map((row, index) => {\n return (\n \n )\n })\n }\n \n \n \n {\n props.data.tbody.map((row, index) => {\n return (\n \n {\n row.map((innerRow, innerIndex) => {\n return (\n \n )\n })\n }\n \n )\n })\n }\n {props.data.tbody.length === 0 ?\n \n \n \n : null}\n \n
{row}
{innerRow}
\n {props.data.page ?\n \n : null\n }\n
\n \n \n \n
\n )\n}\n\nexport default RecordModal;","import React, { useState } from 'react';\nimport moment from 'moment';\nimport Col from 'react-bootstrap/Col';\nimport Form from 'react-bootstrap/Form';\nimport RecordModal from '../components/record/RecordModal';\nimport axios from 'axios';\nimport { SingleDatePicker } from 'react-dates';\nimport { AlertSwal } from '../components/CustomSwal';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nfunction Record(props) {\n const [startDate, setStartDate] = useState(moment().subtract(6, 'days'));\n const [startDate_focus, setStartDate_focus] = useState(null);\n const [endDate, setEndDate] = useState(moment());\n const [endDate_focus, setEndDate_focus] = useState(null);\n const [selectedTitle, setSelectedTitle] = useState('');\n const [data, setData] = useState(null);\n const [show, setShow] = useState(false);\n\n const intl = useIntl();\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n\n const SchBookLogList = (page) => {\n props.setLoading(true);\n setSelectedTitle(intl.formatMessage({ id: 'record.reservation_record' }));\n axios.get(config.API_URL + `/SchBookLogList.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n stime: startDate.format('YYYYMMDD') + '000000',\n etime: endDate.format('YYYYMMDD') + '235959',\n page: page\n }\n }).then((res) => {\n const data = res.data;\n if (data.rescode === 3 || data.rescode === 4) {\n props.setSession(false);\n } else {\n if (data.rescode === 1) {\n if (data.rows.length > 0) {\n let stateData = {\n class: 'record_table_thead record_btn_1',\n thead: [],\n tbody: [],\n onPageChange: SchBookLogList,\n totalpage: data.totalpage,\n page: data.page\n };\n stateData.thead = [\n intl.formatMessage({ id: 'global._spacetype' }),\n intl.formatMessage({ id: 'global.devicename' }),\n intl.formatMessage({ id: 'record.status' }),\n intl.formatMessage({ id: 'global.reader_name' }),\n intl.formatMessage({ id: 'global.reservation_date' }),\n intl.formatMessage({ id: 'global.reservation_time' })\n ]\n for (let i = 0; i < data.rows.length; i++) {\n stateData.tbody.push([\n intl.formatMessage({ id: `global.spacetype.${data.rows[i].spacetype}`, defaultMessage: data.rows[i].spacetypename }),\n data.rows[i].devicename,\n intl.formatMessage({ id: `info.usestatus.${data.rows[i].status}`, defaultMessage: data.rows[i].statusname }),\n data.rows[i].username,\n data.rows[i].bookdate,\n data.rows[i].booktime\n ])\n }\n setData(stateData);\n setShow(true);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.no_data' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const SchBookLogDelList = (page) => {\n props.setLoading(true);\n setSelectedTitle(intl.formatMessage({ id: 'record.deleted_record' }));\n axios.get(config.API_URL + `/SchBookLogDelList.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n stime: startDate.format('YYYYMMDD') + '000000',\n etime: endDate.format('YYYYMMDD') + '235959',\n page: page\n }\n }).then((res) => {\n const data = res.data;\n if (data.rescode === 3 || data.rescode === 4) {\n props.setSession(false);\n } else {\n if (data.rescode === 1) {\n if (data.rows.length > 0) {\n let stateData = {\n class: 'record_table_thead record_btn_0',\n thead: [],\n tbody: [],\n onPageChange: SchBookLogDelList,\n totalpage: data.totalpage,\n page: data.page\n };\n stateData.thead = [\n intl.formatMessage({ id: 'global._spacetype' }),\n intl.formatMessage({ id: 'global.devicename' }),\n intl.formatMessage({ id: 'record.status' }),\n intl.formatMessage({ id: 'global.reader_name' }),\n intl.formatMessage({ id: 'global.reservation_date' }),\n intl.formatMessage({ id: 'global.reservation_time' })\n ]\n for (let i = 0; i < data.rows.length; i++) {\n stateData.tbody.push([\n intl.formatMessage({ id: `global.spacetype.${data.rows[i].spacetype}`, defaultMessage: data.rows[i].spacetypename }),\n data.rows[i].devicename,\n intl.formatMessage({ id: `info.usestatus.${data.rows[i].status}`, defaultMessage: data.rows[i].statusname }),\n data.rows[i].username,\n data.rows[i].bookdate,\n data.rows[i].booktime\n ])\n }\n setData(stateData);\n setShow(true);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.no_data' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const SchSpaceUseLogList = (page) => {\n props.setLoading(true);\n setSelectedTitle(intl.formatMessage({ id: 'record.use_space_record' }));\n axios.get(config.API_URL + `/SchSpaceUseLogList.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n stime: startDate.format('YYYYMMDD') + '000000',\n etime: endDate.format('YYYYMMDD') + '235959',\n page: page\n }\n }).then((res) => {\n const data = res.data;\n if (data.rescode === 3 || data.rescode === 4) {\n props.setSession(false);\n } else {\n if (data.rescode === 1) {\n if (data.rows.length > 0) {\n let stateData = {\n class: 'record_table_thead record_btn_2',\n thead: [],\n tbody: [],\n onPageChange: SchSpaceUseLogList,\n totalpage: data.totalpage,\n page: data.page\n };\n stateData.thead = [\n intl.formatMessage({ id: 'global._spacetype' }),\n intl.formatMessage({ id: 'global.devicename' }),\n intl.formatMessage({ id: 'record.status' }),\n intl.formatMessage({ id: 'global.reader_name' }),\n intl.formatMessage({ id: 'record.mdate' })\n ]\n for (let i = 0; i < data.rows.length; i++) {\n stateData.tbody.push([\n intl.formatMessage({ id: `global.spacetype.${data.rows[i].spacetype}`, defaultMessage: data.rows[i].spacetypename }),\n data.rows[i].devicename,\n (props.locale === 'en') ? data.rows[i].logstatusename : data.rows[i].logstatusname,\n data.rows[i].username,\n data.rows[i].accesstime\n ])\n }\n setData(stateData);\n setShow(true);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.no_data' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const SchViolateLogList = (page) => {\n props.setLoading(true);\n setSelectedTitle(intl.formatMessage({ id: 'record.violating_reservation_record' }));\n axios.get(config.API_URL + `/SchViolateLogList.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n stime: startDate.format('YYYYMMDD') + '000000',\n etime: endDate.format('YYYYMMDD') + '235959',\n page: page\n }\n }).then((res) => {\n const data = res.data;\n if (data.rescode === 3 || data.rescode === 4) {\n props.setSession(false);\n } else {\n if (data.rescode === 1) {\n if (data.rows.length > 0) {\n let stateData = {\n class: 'record_table_thead record_btn_3',\n thead: [],\n tbody: [],\n onPageChange: SchViolateLogList,\n totalpage: data.totalpage,\n page: data.page,\n showAlert: true\n };\n stateData.thead = [\n intl.formatMessage({ id: 'global._spacetype' }),\n intl.formatMessage({ id: 'global.devicename' }),\n intl.formatMessage({ id: 'global.reader_name' }),\n intl.formatMessage({ id: 'record.mdate' })\n ]\n for (let i = 0; i < data.rows.length; i++) {\n stateData.tbody.push([\n intl.formatMessage({ id: `global.spacetype.${data.rows[i].spacetype}`, defaultMessage: data.rows[i].spacetypename }),\n (data.rows[i].seatname === '') ? data.rows[i].spacename : data.rows[i].seatname,\n data.rows[i].username,\n data.rows[i].mdate\n ])\n }\n setData(stateData);\n setShow(true);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.no_data' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const SchSuspendLogList = (page) => {\n props.setLoading(true);\n setSelectedTitle(intl.formatMessage({ id: 'record.suspension_record' }));\n axios.get(config.API_URL + `/SchSuspendLogList.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n stime: startDate.format('YYYYMMDD') + '000000',\n etime: endDate.format('YYYYMMDD') + '235959',\n page: page\n }\n }).then((res) => {\n const data = res.data;\n if (data.rescode === 3 || data.rescode === 4) {\n props.setSession(false);\n } else {\n if (data.rescode === 1) {\n if (data.rows.length > 0) {\n let stateData = {\n class: 'record_table_thead record_btn_4',\n thead: [],\n tbody: [],\n onPageChange: SchSuspendLogList,\n totalpage: data.totalpage,\n page: data.page\n };\n stateData.thead = [\n intl.formatMessage({ id: 'global.reader_name' }),\n intl.formatMessage({ id: 'record.card_no' }),\n intl.formatMessage({ id: 'record.suspend_sdate' }),\n intl.formatMessage({ id: 'record.suspend_edate' }),\n intl.formatMessage({ id: 'record.mdate' })\n ]\n for (let i = 0; i < data.rows.length; i++) {\n stateData.tbody.push([\n data.rows[i].username,\n data.rows[i].cardno,\n data.rows[i].blacksdate,\n data.rows[i].blackedate,\n data.rows[i].mdate\n ])\n }\n setData(stateData);\n setShow(true);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: intl.formatMessage({ id: 'global.no_data' }),\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n props.setLoading(false);\n })\n }\n\n const renderMonthElement = ({ month, onMonthSelect, onYearSelect }) => {\n let i\n let years = []\n for (i = moment().year(); i >= moment().year() - 5; i--) {\n years.push()\n }\n return (\n
\n
\n \n
\n
\n \n
\n
\n )\n }\n\n\n return (\n <>\n
\n \n \n \n {\n setStartDate(e);\n if (e.isAfter(endDate, 'days')) {\n setEndDate(e);\n }\n }}\n onFocusChange={(e) => {\n setStartDate_focus(e.focused);\n }}\n renderMonthElement={renderMonthElement}\n isOutsideRange={d => d.isAfter(moment()) && (!d.isSame(moment(), 'days'))}\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={(document.documentElement.clientWidth < 576 ? 1 : 2)}\n block\n readOnly\n withPortal\n />\n \n \n \n {\n setEndDate(e);\n if (e.isBefore(startDate, 'days')) {\n setStartDate(e);\n }\n }}\n onFocusChange={(e) => {\n setEndDate_focus(e.focused);\n }}\n renderMonthElement={renderMonthElement}\n isOutsideRange={d => d.isAfter(moment()) && (!d.isSame(moment(), 'days'))}\n displayFormat=\"YYYY/MM/DD\"\n numberOfMonths={(document.documentElement.clientWidth < 576 ? 1 : 2)}\n block\n readOnly\n withPortal\n />\n \n \n
\n \n \n \n \n \n {show ?\n \n : null}\n \n )\n}\n\nexport default Record;","import React, { useState, useEffect } from 'react';\n\nconst ScrollArrow = (props) => {\n const [showScroll, setShowScroll] = useState(false);\n const modalELs = document.getElementsByClassName('modal');\n const modalEL = modalELs[props.scrollCount - 1];\n\n const scrollTop = () => {\n if (window.document.documentMode) {\n // specify for IE only ...\n modalEL.scrollTop = 0;\n } else {\n modalEL.scrollTo({ top: 0, behavior: 'smooth' });\n }\n };\n\n useEffect(() => {\n if (props.scrollCount > 0) {\n const checkScrollTop = () => {\n if (modalEL.scrollTop > props.totopPixel) {\n setShowScroll(true);\n } else if (modalEL.scrollTop <= props.totopPixel) {\n setShowScroll(false);\n }\n };\n if (modalEL) {\n modalEL.addEventListener('scroll', checkScrollTop);\n }\n }\n }, [modalEL, props.scrollCount, props.totopPixel]);\n\n return (\n
\n \n
\n );\n}\n\nexport default ScrollArrow;","import React, { useState, useEffect } from 'react';\nimport { Switch, Route, Link } from 'react-router-dom';\nimport axios from 'axios';\nimport Nav from 'react-bootstrap/Nav';\nimport Info from '../pages/Info';\nimport Appointment from '../pages/Appointment';\nimport Record from '../pages/Record';\nimport ScrollArrow from '../components/ScrollArrow';\nimport LoadingSpinner from '../components/LoadingSpinner';\nimport { MySwal, AlertSwal } from '../components/CustomSwal';\nimport { FormattedMessage, useIntl } from 'react-intl';\n\nfunction Space(props) {\n const [current, setCurrent] = useState(props.location.pathname.split('redirect_to/')[1]);\n const [session, setSession] = useState(null);\n const [showScrollArrow, setShowScrollArrow] = useState(false);\n const [scrollCount, setScrollCount] = useState(0);\n const [loading, setLoading] = useState(false);\n const [loadingCount, setLoadingCount] = useState(0);\n // check session\n const sid = sessionStorage.getItem('sid');\n const authid = sessionStorage.getItem('authid');\n const config = props.config;\n const intl = useIntl();\n\n const handlePage = (selectedKey) => {\n if (selectedKey !== 'logout') {\n setCurrent(selectedKey);\n props.history.push('/redirect_to/' + selectedKey);\n } else {\n MySwal.fire({\n title: intl.formatMessage({ id: 'global.logout' }),\n html: intl.formatMessage({ id: 'global.confirm_logout' }) + '?',\n showCancelButton: true,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' }),\n cancelButtonText: intl.formatMessage({ id: 'global.cancel' })\n }).then((result) => {\n if (result.value) {\n sessionStorage.removeItem('userid');\n sessionStorage.removeItem('sid');\n sessionStorage.removeItem('authid');\n sessionStorage.removeItem('isblacklist');\n sessionStorage.removeItem('cardnoexist');\n props.history.push('/');\n }\n });\n }\n }\n\n const triggerLoading = (bool) => {\n if (bool) {\n setLoadingCount(prevCount => prevCount + 1);\n } else {\n setLoadingCount(prevCount => prevCount - 1);\n }\n }\n\n const triggerScroll = (bool,is2nd) => {\n if (bool) {\n setScrollCount(prevCount => prevCount + 1);\n } else {\n if (is2nd === 1) {\n setShowScrollArrow(false);\n } \n setScrollCount(prevCount => prevCount - 1);\n }\n }\n\n const CheckSession = () => {\n triggerLoading(true);\n axios.get(config.API_URL + `/GetBookInfo.aspx`, {\n params: {\n sid: sid,\n authid: authid,\n restype: 'json'\n }\n }).then((res) => {\n const data = res.data[0];\n if (data.rescode === '3' || data.rescode === '4') {\n setSession(false);\n } else {\n if (data.rescode === '1') {\n setSession(true);\n } else {\n AlertSwal.fire({\n title: intl.formatMessage({ id: 'global.alert_title' }),\n text: data.resmsg,\n confirmButtonText: intl.formatMessage({ id: 'global.confirm' })\n })\n }\n }\n }).catch((error) => {\n console.error(error)\n }).finally(() => {\n triggerLoading(false);\n })\n }\n\n useEffect(() => {\n if (loadingCount === 0) {\n setLoading(false);\n } else {\n setLoading(true);\n }\n }, [loadingCount])\n\n useEffect(() => {\n if (scrollCount === 0) {\n setShowScrollArrow(false);\n } else {\n setShowScrollArrow(true);\n }\n }, [scrollCount])\n\n useEffect(CheckSession, []);\n\n useEffect(() => {\n document.body.classList.add('logged');\n return () => {\n document.body.classList.remove('logged');\n };\n }, []);\n\n if (session === null) {\n return ;\n } else if (session === false) {\n return Invalid Session. Please Login to Continue.;\n } else {\n const pageTitle = {\n 'info': ,\n 'appointment': ,\n 'record': ,\n 'logout': \n }\n const navItems = Object.keys(pageTitle).map(key =>\n \n \n \n {pageTitle[key]}\n \n \n )\n return (\n <>\n
\n
\n
\n {/* { props.setLocale(props.locale === 'zh' ? 'en' : 'zh') }}> */}\n
\n
{pageTitle[current]}
\n
{ handlePage('logout'); }}>{pageTitle['logout']}
\n
\n
\n \n
\n
\n
\n
\n \n {/* The component will show here if the current URL matches the path */}\n \n }\n />\n \n }\n />\n \n }\n />\n \n
\n
\n
\n
\n \n {showScrollArrow ? : null}\n \n );\n }\n}\n\nexport default Space;\n","import React from 'react';\nimport App from './App';\nimport Space from './pages/Space';\nimport { BrowserRouter, Route } from 'react-router-dom';\n\nclass MyRouter extends React.Component {\n render() {\n const config = this.props.config;\n\n return (\n \n } />\n } />\n \n )\n }\n}\n\nexport default MyRouter;","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then(registration => {\n registration.unregister();\n })\n .catch(error => {\n console.error(error.message);\n });\n }\n}\n","import 'react-app-polyfill/ie9';\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React, { useState } from 'react';\nimport ReactDOM from 'react-dom';\nimport MyRouter from './Router';\nimport * as serviceWorker from './serviceWorker';\n//init React-dates\nimport 'react-dates/initialize';\n//多國語系\nimport { IntlProvider } from 'react-intl';\nimport { flattenMessages } from './utils';\n//在專案加入FAS icon\nimport { library } from '@fortawesome/fontawesome-svg-core'\nimport { fas } from '@fortawesome/free-solid-svg-icons'\nlibrary.add(fas);\n\nconst Root = (props) => {\n // 取 session 的語系\n let sessionLang = sessionStorage.getItem('lang');\n // 使用 useState 定義 locale 這個 state\n const [locale, setLocale] = useState(sessionLang || 'zh');\n\n let messages;\n let policy_messages;\n // 根據使用者選擇的語系 locale 切換使用不同的 messages\n if (locale.includes('zh')) {\n messages = props.lang.zh;\n policy_messages = props.lang.policy_zh;\n } else if (locale.includes('en')) {\n messages = props.lang.en;\n policy_messages = props.lang.policy_en;\n }\n return (\n \n \n \n );\n};\n\nwindow.RenderApp = function (config, lang) {\n new ReactDOM.render(, document.getElementById('root'));\n}\n\nserviceWorker.unregister();\n"],"sourceRoot":""}