{"version":3,"sources":["components/common/UnmountStateHelper.js","components/api-authorization/ApiAuthorizationConstants.js","components/api/HospitalApi.js","components/common/DateTimeHelper.js","components/common/PageTitle.js","components/snackbar/DefaultSnackbar.js","components/dialog/ChangeHospitalDialog.js","components/input/button/ChangeHospitalButton.js","components/api-authorization/MaterialLoginMenu.js","components/NavBar.js","pages/Layout.js","components/api/DivisionsApi.js","components/common/UseEffect2.js","components/api-authorization/AuthorizeService.js","pages/shared/NotFound.js","components/api/CheckRevisionApi.js","components/common/Const.js","pages/homePages/HomePage.js","App.js","WrapApp.js","index.js","components/styles/CommonStyle.js","components/input/button/IconTextButton.js","components/api-authorization/UserContext.js","components/common/ErrorMessageProvider.js","components/context/MessageContext.js"],"names":["useUnmountRef","unmountRef","useRef","useEffect","current","useSafeState","defaultValue","useState","state","changeState","useCallback","v","QueryParameterNames","ReturnUrl","Message","LogoutActions","LoginActions","Login","LoginCallback","LoginFailed","Profile","Register","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","LogOut","LoggedOut","LogOutCallback","IdentityManagePath","IdentityRegisterPath","FeedbackPath","Claims","Has_All_Claims","Hospital_Create","Hospital_Edit","Hospital_Delete","Hospital_Dept_Create","Hospital_Dept_Edit","Hospital_Dept_Delete","Doctor_Create","Doctor_Edit","Doctor_Delete","Role_Create","Roles_Edit","RoleClaims_Edit","Time_Table_Create","Time_Table_Edit","Time_Table_Delete","User_Create","User_Edit","User_Delete","UserClaims_Edit","Can_Use_Admin_Menu","Not_Require_Hospital_Id","Doctor_Read","Hospital_Read","Hospital_Dept_Read","Roles_Read","User_Read","Time_Table_Read","Manage_Administorator","Manage_ImuraEnvelope","Manage_TokyoPrinting","Manage_HospitalAdmin","Manage_HospitalStaff","Not_Require_Hospital_Dept_Id","Change_Password_Others","ContactList_Read","Calendar_Create","Calendar_Edit","Calendar_Delete","Calendar_Read","Edit_Common_Calendar","Holiday_Create","Holiday_Edit","Holiday_Delete","Holiday_Read","Notices_Create","Notices_Read","Card_Create","Card_Edit","Card_Delete","Card_Read","Edit_Account_Info","Manage_All_Hospitals","Manage_All_Depts","AllInformation_Create","AllInformation_Read","AllInformation_Edit","AllInformation_Delete","Information_Create","Information_Read","Information_Edit","Information_Delete","Allow_Use_Homepage","Common_Time_Table_Create","Common_Time_Table_Edit","Common_Time_Table_Delete","Common_Time_Table_Read","Can_Use_Various_Settings","Disp_Invisible_Reservation","ApiGetHospital","hid","a","axios","get","then","response","status","result","data","catch","error","ApiGetHospitals","authService","getAccessToken","token","headers","Authorization","ApiGetDepts","params","ApiGetDeptsForHomePage","ApiGetDept","did","ApiSearchDept","parameter","tkn","ApiGetMyDepts","ApiGetTimeTables","hospitalId","deptId","date","time","dayOfWeek","DateToString","ApiGetReservationTables","days","ApiGetMonthlyReservationTables","bgnDate","endDate","isShowDashboard","dayOfWeekJp","objectSupport","require","JsonDateTimeToDate","jsonDate","Date","getFullYear","getMonth","getDate","DateTime","timeFormat","d","dayjs","t","year","month","day","hour","minute","TimeToDamyDatetime","GetDayofWeekJp","getDay","GetTimeRangeStr","bgnTime","endTime","formatIn","formatOut","format","GetTimeRangeString","CompareDate","date1","date2","year1","month1","day1","year2","month2","day2","extend","PageTitle","props","title","document","systemConst","name","Alert","elevation","variant","useStyles","makeStyles","theme","root","width","marginTop","spacing","DefaultSnackbar","classes","other","autoHideDuration","anchorOrigin","open","severity","className","vertical","horizontal","children","margin","padding","smartLineUpLeft","breakpoints","up","float","down","smartLineUpRight","marginBottom","rightContentCell","formControl","textAlign","dialogBox","minWidth","ChangeHospitalDialog","openDialog","handleClose","isMyPage","handleSubmit","isHeaderButton","cancelLabel","okLabel","disable1","setErrorMessage","style","commonStyle","useTheme","action","readingHospital","setReadingHospital","prefNameData","setPrefNameData","userctx","useContext","UserContext","setHospitalId","setDeptId","prefId","setPrefId","hospitalSetter","setHospitalSetter","deptSetter","setDeptSetter","msg","setMsg","setOpen","snackbarSeverity","setSnackbarSeverity","useReactRouter","history","layoutCtx","location","match","LayoutContext","depts","setDepts","object","GetUser","isSuccess","json","message","console","log","errors","useForm","put","setUser","isMypage","push","reservationPath","GetDivisions","GetHospital","GetDepts","onClose","event","Dialog","DialogContent","Grid","container","direction","alignContent","alignItems","justify","item","xs","md","Typography","border","borderRadius","fontWeight","color","errMsg","id","noValidate","autoComplete","length","FormControl","InputLabel","Select","value","onChange","target","label","MenuItem","key","map","pref","index","hospital","DialogContentText","Skeleton","Box","dept","Button","onClick","disabled","fullWidth","DialogActions","e","autoFocus","loginLabel","loginLink","confirmHospital","display","cursor","transition","ChangeHospitalHeader","setOpenDialog","MessageContext","claims","hasClaim","IconTextButton","text","TouchApp","LoginMenu","profilePath","user","useHistory","handleLogoutClick","logout","fn","component","Link","to","PostAdd","AccountCircle","isRemindResult","window","close","Close","ExitToApp","userName","Settings","grow","flexGrow","menuButton","marginRight","titleImg","height","appBar","zIndex","drawer","position","search","shape","backgroundColor","fade","palette","common","white","marginLeft","searchIcon","pointerEvents","justifyContent","inputRoot","inputInput","paddingLeft","transitions","create","sectionDesktop","sectionMobile","paddingRight","NavBar","AppBar","Toolbar","IconButton","edge","aria-label","onDrawerMenuClick","src","alt","flexDirection","wrapper","minHeight","mainContainer","flex","footer","flexShrink","maxHeight","primary","main","contrastText","footerDivider","firstContent","React","createContext","Layout","isDrawerOpen","setIsDrawerOpen","setClaims","setHospital","setIsMypage","setIsRemindResult","handleDrawerMenuClick","isAuthenticated","GetClaims","getBelongClaims","enqueue","asyncF","Provider","refreshHospital","refreshUser","claimName","checkHospitalDept","toString","replace","enqueueNotClose","GetErrMsg","ErrMsgKey","ToggleMain","ToggleDrawer","SetHospitalId","Container","maxWidth","disableGutters","setter","i","divisionValue","divisionText1","UseEffect2","func","dependencyList","fisrtFlgRef","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","this","localStorage","getItem","localStorageKeys","LoginJWT","userid","postObj","post","Accept","removeItem","NotFound","GetRevision","hash","getTime","CheckRevision","msgctx","pattern","errorFunction","localVersion","sessionStorage","sessionStorageKeys","Revision","serverVersion","setItem","doPattern","Reload","reload","ServerRevision","RecaptchaSiteKeyV2","imageConst","logo_image_max_count","hospital_image_max_count","director_image_max_count","hospital_image_compress_size","hospital_dept_image_max_count","doctor_image_max_count","validationConst","phone_reg_exp","phone_reg_exp_no_hyphen","ip_reg_exp","postal_reg_exp","patientConst","new_patient","not","EntryDefaultValues","RolesPageNo","UsersPageNo","DoctorsPageNo","HospitalsPageNo","HospitalDeptsPageNo","InformationListPageNo","ExamCardsPageNo","weekDayMap","resourceId","resourceTitle","otherWeeksMap","calendarStyle","start","end","isSelected","fontColor","String","substr","allDay","Number","requireRed","createMuiTheme","overrides","MuiFormLabel","asterisk","termOfUseHtml","HomePage1","lazy","HomePage2","HomePage3","HomePage4","HomePage5","left","top","HomePage","styles","setTheme","seoKeywords","setSeoKeywords","seoDescription","setSeoDescription","keywords","prefName","cityName","isVisibleHomePage","SetSeoKeywords","hospitalName","description","SetSeoDescription","useHomePage","templatePattern","primaryColor","secondaryColor","thm","secondary","contrastThreshold","ThemeProvider","isSearchable","Helmet","content","fallback","centerFlex","CircularProgress","AppRouter","App","useSnackbar","enqueueSnackbar","closeSnackbar","useLocation","closeSnackbarWhenlocationChange","setCloseSnackbarWhenlocationChange","onbeforeunload","defaults","setRevisionFn","revision","forEach","type","enqueueWithOption","option","isLocationClose","reCaptchaKey","exact","path","fontSize","containerRoot","variantWarning","WrapApp","domain","maxSnack","async","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","render","basename","textField","background","pageTitle","cenerTitleInBox","catchCopy","subTitle","toolTip","center","hiddenXs","visibility","hiddenSm","hiddenMd","visibleXs","visibleSm","successLight","success","light","dark","successText","warning","warningText","delete","noBorder","sunday","saturday","sundayColor","saturdayColor","noPrint","printOnly","noPaddingXs","fab","bottom","right","fabL","fab2L","fab3L","lineBreak","wordBreak","overflowWrap","wordWrap","whiteSpace","FloatingBackgroundGlobalCss","withStyles","iconButtonLabel","iconButtonText","badgeContent","badgeColor","noWrap","required","number","email","phoneNumber","phoneNumberNoHyphen","postalCodeRegEx","unexpected","passwordUnmatch","notAgree","passwordPolicy","ipRegEx","positive","integer","halfAlphaNumericSymbole","url","select","errMsgKey","ErrorMessages","ErrMsg","messages","useErrorMessageProvider","setValidationErrorsForaxios","setError","undefined","field","err","messageForUser","setValidationErrorsForFetch"],"mappings":"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","file":"static/js/main.c9e7c80d.chunk.js","sourcesContent":["import React, { useCallback, useRef, useEffect, useState } from 'react';\r\n\r\nexport const useUnmountRef = () => {\r\n const unmountRef = useRef(false);\r\n\r\n useEffect(\r\n () => () => {\r\n unmountRef.current = true;\r\n },\r\n []\r\n );\r\n\r\n return unmountRef;\r\n};\r\n\r\nexport const useSafeState = (unmountRef, defaultValue) => {\r\n const [state, changeState] = useState(defaultValue);\r\n const wrapChangeState = useCallback(\r\n (v) => {\r\n if (!unmountRef.current) {\r\n changeState(v);\r\n }\r\n },\r\n [changeState, unmountRef]\r\n );\r\n\r\n return [state, wrapChangeState];\r\n};","export const ApplicationName = \"HospitalReservationSystem\";\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: \"returnUrl\",\r\n Message: \"message\",\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: \"logout-callback\",\r\n Logout: \"logout\",\r\n LoggedOut: \"logged-out\",\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: \"login\",\r\n LoginCallback: \"login-callback\",\r\n LoginFailed: \"login-failed\",\r\n Profile: \"profile\",\r\n Register: \"register\",\r\n};\r\n\r\nconst prefix = \"/authentication\";\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: \"/\",\r\n ApiAuthorizationClientConfigurationUrl: `/_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n // Login: `${prefix}/${LoginActions.Login}`,\r\n Login: \"/login\",\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n // IdentityRegisterPath: '/Identity/Account/Register',\r\n IdentityManagePath: \"/Identity/Account/Manage\",\r\n IdentityRegisterPath: \"/register\",\r\n FeedbackPath: \"/feedback\",\r\n};\r\n\r\nexport const Claims = {\r\n Has_All_Claims: \"Has_All_Claims\",\r\n Hospital_Create: \"Hospital_Create\",\r\n Hospital_Edit: \"Hospital_Edit\",\r\n Hospital_Delete: \"Hospital_Delete\",\r\n Hospital_Dept_Create: \"Hospital_Dept_Create\",\r\n Hospital_Dept_Edit: \"Hospital_Dept_Edit\",\r\n Hospital_Dept_Delete: \"Hospital_Dept_Delete\",\r\n Doctor_Create: \"Doctor_Create\",\r\n Doctor_Edit: \"Doctor_Edit\",\r\n Doctor_Delete: \"Doctor_Delete\",\r\n Role_Create: \"Role_Create\",\r\n Roles_Edit: \"Roles_Edit\",\r\n RoleClaims_Edit: \"RoleClaims_Edit\",\r\n Time_Table_Create: \"Time_Table_Create\",\r\n Time_Table_Edit: \"Time_Table_Edit\",\r\n Time_Table_Delete: \"Time_Table_Delete\",\r\n User_Create: \"User_Create\",\r\n User_Edit: \"User_Edit\",\r\n User_Delete: \"User_Delete\",\r\n UserClaims_Edit: \"UserClaims_Edit\",\r\n Can_Use_Admin_Menu: \"Can_Use_Admin_Menu\",\r\n Not_Require_Hospital_Id: \"Not_Require_Hospital_Id\",\r\n Doctor_Read: \"Doctor_Read\",\r\n Hospital_Read: \"Hospital_Read\",\r\n Hospital_Dept_Read: \"Hospital_Dept_Read\",\r\n Roles_Read: \"Roles_Read\",\r\n User_Read: \"User_Read\",\r\n Time_Table_Read: \"Time_Table_Read\",\r\n Manage_Administorator: \"Manage_Administorator\",\r\n Manage_ImuraEnvelope: \"Manage_ImuraEnvelope\",\r\n Manage_TokyoPrinting: \"Manage_TokyoPrinting\",\r\n Manage_HospitalAdmin: \"Manage_HospitalAdmin\",\r\n Manage_HospitalStaff: \"Manage_HospitalStaff\",\r\n Not_Require_Hospital_Dept_Id: \"Not_Require_Hospital_Dept_Id\",\r\n Change_Password_Others: \"Change_Password_Others\",\r\n ContactList_Read: \"ContactList_Read\",\r\n Calendar_Create: \"Calendar_Create\",\r\n Calendar_Edit: \"Calendar_Edit\",\r\n Calendar_Delete: \"Calendar_Delete\",\r\n Calendar_Read: \"Calendar_Read\",\r\n Edit_Common_Calendar: \"Edit_Common_Calendar\",\r\n Holiday_Create: \"Holiday_Create\",\r\n Holiday_Edit: \"Holiday_Edit\",\r\n Holiday_Delete: \"Holiday_Delete\",\r\n Holiday_Read: \"Holiday_Read\",\r\n Notices_Create: \"Notices_Create\",\r\n Notices_Read: \"Notices_Read\",\r\n Card_Create: \"Card_Create\",\r\n Card_Edit: \"Card_Edit\",\r\n Card_Delete: \"Card_Delete\",\r\n Card_Read: \"Card_Read\",\r\n Edit_Account_Info: \"Edit_Account_Info\",\r\n Manage_All_Hospitals: \"Manage_All_Hospitals\",\r\n Manage_All_Depts: \"Manage_All_Depts\",\r\n AllInformation_Create: \"AllInformation_Create\",\r\n AllInformation_Read: \"AllInformation_Read\",\r\n AllInformation_Edit: \"AllInformation_Edit\",\r\n AllInformation_Delete: \"AllInformation_Delete\",\r\n Information_Create: \"Information_Create\",\r\n Information_Read: \"Information_Read\",\r\n Information_Edit: \"Information_Edit\",\r\n Information_Delete: \"Information_Delete\",\r\n Allow_Use_Homepage: \"Allow_Use_Homepage\",\r\n\r\n Common_Time_Table_Create: \"Common_Time_Table_Create\",\r\n Common_Time_Table_Edit: \"Common_Time_Table_Edit\",\r\n Common_Time_Table_Delete: \"Common_Time_Table_Delete\",\r\n Common_Time_Table_Read: \"Common_Time_Table_Read\",\r\n\r\n Can_Use_Various_Settings: \"Can_Use_Various_Settings\",\r\n Disp_Invisible_Reservation: \"Disp_Invisible_Reservation\",\r\n\r\n // 包装材の残り物\r\n // Customer_Read: 'Customer_Read',\r\n // Require_Customer_Info: 'Require_Customer_Info',\r\n // Require_Employee_Number: 'Require_Employee_Number',\r\n // CustomProductImages_Edit: 'CustomProductImages_Edit',\r\n // StandardProductImages_Edit: 'StandardProductImages_Edit',\r\n};\r\n","import axios from \"axios\";\r\nimport authService from \"components/api-authorization/AuthorizeService\";\r\nimport { DateToString } from \"components/common/DateTimeHelper\";\r\n\r\n/**\r\n * 医療機関の情報を取得します\r\n * @param {int} hid - 医療機関ID\r\n */\r\nexport async function ApiGetHospital(hid) {\r\n let result;\r\n await axios\r\n .get(`api/hospitals/${hid}`)\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n/**\r\n * 医療機関の一覧を取得します\r\n */\r\nexport async function ApiGetHospitals() {\r\n let result;\r\n const token = await authService.getAccessToken();\r\n await axios\r\n .get(`api/hospitals/search?getDeleted=false`, {\r\n // + queryString.toString(), {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 予約項目の一覧を取得します\r\n * @param {int} hid - 医療機関ID\r\n */\r\nexport async function ApiGetDepts(hid) {\r\n let result;\r\n const token = await authService.getAccessToken();\r\n await axios\r\n .get(\"api/hospitalDepts/byhospital\", {\r\n params: { hid: hid },\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 予約項目の一覧を取得します\r\n * @param {int} hid - 医療機関ID\r\n */\r\nexport async function ApiGetDeptsForHomePage(hid) {\r\n let result;\r\n const token = await authService.getAccessToken();\r\n await axios\r\n .get(\"api/hospitalDepts/byhospitalforhomepage\", {\r\n params: { hid: hid },\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 予約項目を取得します\r\n * @param {int} hid - 医療機関ID\r\n */\r\nexport async function ApiGetDept(did) {\r\n let result;\r\n await axios\r\n .get(`api/hospitalDepts/${did}`)\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 予約項目を取得します\r\n * @param {string} parameter - パラメータストリング\r\n */\r\nexport async function ApiSearchDept(parameter) {\r\n let result;\r\n var tkn = await authService.getAccessToken();\r\n await axios\r\n .get(`api/hospitalDepts/search?${parameter}`, {\r\n headers: !tkn ? {} : { Authorization: `Bearer ${tkn}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 閲覧可能な予約項目の一覧を取得します\r\n * @param {*} token - アクセストークン 既に取得済みの場合、指定してください。未指定の場合、取得します\r\n */\r\nexport async function ApiGetMyDepts(token) {\r\n let result;\r\n let tkn = token;\r\n if (!tkn) tkn = await authService.getAccessToken();\r\n await axios\r\n .get(\"api/hospitalDepts/my?\", {\r\n headers: !tkn ? {} : { Authorization: `Bearer ${tkn}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 時間枠の一覧を取得します\r\n * @param {string} token - アクセストークン 既に取得済みの場合、指定してください。未指定の場合、取得します\r\n * @param {sring} hospitalId - 医療機関ID\r\n * @param {sring} deptId - 予約項目ID\r\n * @param {date?} date - 対象の日付\r\n * @param {time?} time - 対象の時刻\r\n * @param {int?} dayOfWeek - 対象の曜日\r\n */\r\nexport async function ApiGetTimeTables(\r\n token,\r\n hospitalId,\r\n deptId,\r\n date,\r\n time,\r\n dayOfWeek\r\n) {\r\n let result;\r\n let tkn = token;\r\n if (!tkn) tkn = await authService.getAccessToken();\r\n await axios\r\n .get(\"api/timeTables?\", {\r\n params: {\r\n hid: hospitalId,\r\n did: deptId,\r\n date: DateToString(date),\r\n time: time,\r\n dayOfWeek: dayOfWeek,\r\n },\r\n headers: !tkn ? {} : { Authorization: `Bearer ${tkn}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 予約テーブルを取得します\r\n * @param {sring} hospitalId - 医療機関ID\r\n * @param {sring} deptId - 予約項目ID\r\n * @param {date?} date - 対象の日付\r\n * @param {int} days - 表示する日数\r\n */\r\nexport async function ApiGetReservationTables(\r\n hospitalId,\r\n deptId,\r\n date,\r\n days = 0\r\n) {\r\n let result;\r\n let tkn = await authService.getAccessToken();\r\n await axios\r\n .get(\"api/Reservations\", {\r\n params: {\r\n hid: hospitalId,\r\n did: deptId,\r\n date: DateToString(date),\r\n days: days,\r\n },\r\n headers: !tkn ? {} : { Authorization: `Bearer ${tkn}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n\r\n/**\r\n * 月間予約状況を取得します\r\n * @param {sring} hospitalId - 医療機関ID\r\n * @param {sring} deptId - 予約項目ID\r\n * @param {date?} bgnDate - 開始日付\r\n * @param {date?} endDate - 終了日付\r\n */\r\nexport async function ApiGetMonthlyReservationTables(\r\n hospitalId,\r\n deptId,\r\n bgnDate,\r\n endDate,\r\n isShowDashboard\r\n) {\r\n let result;\r\n let tkn = \"\";\r\n if (!tkn) tkn = await authService.getAccessToken();\r\n await axios\r\n .get(\"api/Reservations/m\", {\r\n params: {\r\n hid: hospitalId,\r\n did: deptId,\r\n bgnDate: DateToString(bgnDate),\r\n endDate: DateToString(endDate),\r\n isShowDashboard: isShowDashboard,\r\n },\r\n headers: !tkn ? {} : { Authorization: `Bearer ${tkn}` },\r\n })\r\n .then(function (response) {\r\n if (response.status === 200) result = response.data;\r\n })\r\n .catch(function (error) {\r\n throw error;\r\n });\r\n return result;\r\n}\r\n","import dayjs from \"dayjs\";\r\n\r\nconst dayOfWeekJp = [\"日\", \"月\", \"火\", \"水\", \"木\", \"金\", \"土\"]; // 曜日(日本語表記)\r\nvar objectSupport = require(\"dayjs/plugin/objectSupport\");\r\ndayjs.extend(objectSupport);\r\nexport function JsonDateTimeToDate(jsonDate) {\r\n let date = new Date(jsonDate);\r\n return DateToString(date);\r\n}\r\n\r\nexport function JsonDateTimeToJpDate(jsonDate) {\r\n let date = new Date(jsonDate);\r\n return DateToJpString(date);\r\n}\r\n\r\nexport function DateToString(date) {\r\n return (\r\n date.getFullYear() + \"/\" + (date.getMonth() + 1) + \"/\" + date.getDate()\r\n );\r\n}\r\n\r\nexport function DateToJpString(date) {\r\n return (\r\n date.getFullYear() +\r\n \"年\" +\r\n (date.getMonth() + 1) +\r\n \"月\" +\r\n date.getDate() +\r\n \"日\"\r\n );\r\n}\r\n\r\n/**\r\n * 日付と時刻を合成して日時を返します\r\n * @return - dayjs\r\n * @param {Date} date - javascriptのDate\r\n * @param {string} time - 時刻の文字列\r\n * @param {string} timeFormat - HH:mm等\r\n */\r\nexport function DateTime(date, time, timeFormat) {\r\n const d = dayjs(new Date(date));\r\n const t = dayjs(\"20200101 \" + time, \"YYYYMMDD \" + timeFormat);\r\n return dayjs({\r\n year: d.year(),\r\n month: d.month(),\r\n day: d.date(),\r\n // hour: t.hours(),\r\n hour: t.hour(),\r\n minute: t.minute(),\r\n });\r\n}\r\n\r\n/**\r\n * 時刻にダミーの日付を付加してdayjsオブジェクトを返します。\r\n * @return - dayjs\r\n * @param {string} time - 時刻の文字列\r\n */\r\nexport function TimeToDamyDatetime(time) {\r\n return dayjs(\"2020-1-1 \" + time);\r\n}\r\n\r\n/**\r\n * 指定されたDateの日本語の曜日を取得します (日、月、火・・・)\r\n * @param {Date} date - Dateオブジェクト\r\n */\r\nexport function GetDayofWeekJp(date) {\r\n return dayOfWeekJp[date.getDay()];\r\n}\r\n\r\n/**\r\n * 指定された時間帯の文字列を返します\r\n * @param {string} bgnTime\r\n * @param {string} endTime\r\n * @param {string} formatIn - bgnTime, endTimeのフォーマット ex-\"HH:mm\"\r\n * @param {string} formatOut - 出力するフォーマット ex \"HH時mm分\"\r\n */\r\nexport function GetTimeRangeString(bgnTime, endTime, formatIn, formatOut) {\r\n return (\r\n dayjs(\"20200101 \" + bgnTime, \"YYYYMMDD \" + formatIn).format(formatOut) +\r\n \" ~ \" +\r\n dayjs(\"20200101 \" + endTime, \"YYYYMMDD \" + formatIn).format(formatOut)\r\n );\r\n}\r\n/**\r\n * 指定された時間帯の文字列を返します 出力フォーマット HH:mm\r\n * @param {string} bgnTime - 開始時刻 \"HH:mm・・・\"形式\r\n * @param {string} endTime - 終了時刻 \"HH:mm・・・\"形式\r\n */\r\nexport function GetTimeRangeStr(bgnTime, endTime) {\r\n return GetTimeRangeString(bgnTime, endTime, \"HH:mm\", \"HH:mm\");\r\n}\r\n\r\n/**\r\n * 日付を比較した結果を返します\r\n * @returns -1:date1がdate2より古い、 0:同じ日付、1:date1がdate2より新しい\r\n * @param {Date} date1\r\n * @param {Date} date2\r\n */\r\nexport function CompareDate(date1, date2) {\r\n var year1 = date1.getFullYear();\r\n var month1 = date1.getMonth() + 1;\r\n var day1 = date1.getDate();\r\n\r\n var year2 = date2.getFullYear();\r\n var month2 = date2.getMonth() + 1;\r\n var day2 = date2.getDate();\r\n\r\n if (year1 === year2) {\r\n if (month1 === month2) {\r\n if (day1 === day2) {\r\n return 0;\r\n } else {\r\n if (day1 > day2) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n } else {\r\n if (month1 > month2) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n } else {\r\n if (year1 > year2) {\r\n return 1;\r\n } else {\r\n return -1;\r\n }\r\n }\r\n}\r\n","import React, { useEffect } from 'react';\r\nimport { systemConst } from './Const';\r\n\r\n/**\r\n * ページタイトルを設定します\r\n * @example - \r\n * @param {*} props\r\n * @param {string} props.title - 指定するページタイトル\r\n */\r\nexport function PageTitle(props)\r\n{\r\n const { title, ...other } = props;\r\n useEffect(()=>{\r\n document.title = title + \" - \" + systemConst.name\r\n },[])\r\n\r\n return (null);\r\n}","import React from 'react';\r\nimport Button from '@material-ui/core/Button';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport MuiAlert from '@material-ui/lab/Alert';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nfunction Alert(props) {\r\n return ;\r\n}\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n width: '100%',\r\n '& > * + *': {\r\n marginTop: theme.spacing(2),\r\n },\r\n },\r\n}));\r\n\r\n/**\r\n * スタイルを適用したSnackbar\r\n * @module DefaultSnackbar\r\n * @example\r\n * エラーが発生しました\r\n * const handleSnackbarClose = useCallback(() => {\r\n * setIsOpenSnackbar(false);\r\n * });\r\n * @param {Object} props - 基本的にpropsはSnackbarに準じます\r\n * @param {boolean} props.open - 表示/非表示フラグ\r\n * @param {string} props.severity - Alertの種別、error, warning, info, successを指定可能\r\n */\r\nexport default function DefaultSnackbar(props) {\r\n const classes = useStyles();\r\n const { autoHideDuration, anchorOrigin, open, severity, ...other } = props;\r\n\r\n return (\r\n
\r\n \r\n \r\n {props.children}\r\n \r\n \r\n
\r\n );\r\n}\r\n","import {\r\n useSafeState,\r\n useUnmountRef,\r\n} from \"components/common/UnmountStateHelper\";\r\nimport React, { useContext, useEffect } from \"react\";\r\nimport { Typography, InputLabel, Select, MenuItem } from \"@material-ui/core/\";\r\nimport {\r\n Box,\r\n Button,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogContentText,\r\n FormControl,\r\n Grid,\r\n} from \"@material-ui/core\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport { commonStyle } from \"components/styles/CommonStyle\";\r\nimport { UserContext } from \"components/api-authorization/UserContext\";\r\nimport authService from \"components/api-authorization/AuthorizeService\";\r\nimport axios from \"axios\";\r\nimport Skeleton from \"@material-ui/lab/Skeleton\";\r\nimport { ErrMsg } from \"components/common/ErrorMessageProvider\";\r\n\r\nimport useReactRouter from \"use-react-router\";\r\nimport { useForm } from \"react-hook-form\";\r\n\r\nimport { GetDivisions } from \"components/api/DivisionsApi\";\r\nimport DefaultSnackbar from \"components/snackbar/DefaultSnackbar\";\r\nimport { reservationPath } from \"components/common/Const\";\r\nimport { LayoutContext } from \"pages/Layout\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n margin: 0,\r\n padding: theme.spacing(2),\r\n },\r\n smartLineUpLeft: {\r\n [theme.breakpoints.up(\"lg\")]: {\r\n float: \"left\",\r\n width: \"60%\",\r\n },\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n smartLineUpRight: {\r\n [theme.breakpoints.up(\"lg\")]: {\r\n float: \"left\",\r\n width: \"40%\",\r\n //marginTop: \"10px\"\r\n },\r\n [theme.breakpoints.down(\"md\")]: {\r\n width: \"100%\",\r\n marginBottom: \"20px\",\r\n },\r\n },\r\n rightContentCell: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: \"50%\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n formControl: {\r\n textAlign: \"left\",\r\n [theme.breakpoints.up(\"md\")]: {\r\n width: \"75%\",\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n width: \"100%\",\r\n },\r\n },\r\n date: {\r\n \"& > span\": {\r\n width: \"100%\",\r\n },\r\n },\r\n dialogBox: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n \"& > div > div\": {\r\n minWidth: \"700px\",\r\n },\r\n },\r\n [theme.breakpoints.down(\"sm\")]: {\r\n \"& > div > div\": {\r\n width: \"100vw\",\r\n },\r\n },\r\n },\r\n}));\r\n\r\n/**\r\n * ユーザーに紐づく病院IDを変更するダイアログを表示します。\r\n * @module ChangeHospitalDialog\r\n * @param {Object} props - Dialogに準じます\r\n * @param {function} props.handleClose - キャンセル時処理\r\n //* @param {function} props.handleSubmit - hospitalIdを引数に持つOK時処理/空の場合AspNetUsersのhospitalIdを更新し、UserContextを更新する\r\n * @param {string} props.okLabel - OKボタンラベル「確定」\r\n * @param {string} props.cancelLabel - キャンセルボタンラベル「キャンセル」\r\n * @param {string} props.disable1 - OKボタンdisable\r\n * @param {object} props.parameter - Submit時、Close時に渡すパラメータ\r\n */\r\nexport default function ChangeHospitalDialog(props) {\r\n const unmountRef = useUnmountRef();\r\n const {\r\n openDialog,\r\n handleClose,\r\n handleSubmit,\r\n isMyPage,\r\n isHeaderButton,\r\n title,\r\n okLabel,\r\n cancelLabel,\r\n disable1,\r\n parameter,\r\n ...other\r\n } = props;\r\n\r\n //const { edit ,...other } = props;\r\n\r\n const [errorMessage, setErrorMessage] = useSafeState(unmountRef, \"\");\r\n const classes = useStyles();\r\n const style = commonStyle();\r\n const theme = useTheme();\r\n\r\n //const selectedId = new URLSearchParams(props.location.search).toString();\r\n const [action, setAction] = useSafeState(unmountRef, false);\r\n\r\n const [readingHospital, setReadingHospital] = useSafeState(unmountRef, null);\r\n\r\n const [prefNameData, setPrefNameData] = useSafeState(unmountRef, []); // 県名\r\n\r\n const userctx = useContext(UserContext);\r\n\r\n const [hospitalId, setHospitalId] = useSafeState(unmountRef, \"\");\r\n const [deptId, setDeptId] = useSafeState(unmountRef, \"0\");\r\n\r\n const [prefId, setPrefId] = useSafeState(unmountRef, 0);\r\n\r\n const [hospitalSetter, setHospitalSetter] = useSafeState(unmountRef, false);\r\n\r\n const [deptSetter, setDeptSetter] = useSafeState(unmountRef, false);\r\n\r\n const [msg, setMsg] = useSafeState(unmountRef, null);\r\n const [open, setOpen] = useSafeState(unmountRef, false);\r\n const [snackbarSeverity, setSnackbarSeverity] = useSafeState(\r\n unmountRef,\r\n \"error\"\r\n );\r\n\r\n const [isRedirectMypage] = useSafeState(unmountRef, isMyPage);\r\n\r\n const { history, location, match } = useReactRouter();\r\n\r\n //const reservePath = `/:hid${reservationPath}`;\r\n const layoutCtx = useContext(LayoutContext);\r\n\r\n const [depts, setDepts] = useSafeState(unmountRef, null);\r\n\r\n var object = {};\r\n\r\n async function GetUser() {\r\n let isSuccess = false;\r\n const token = await authService.getAccessToken();\r\n\r\n await axios\r\n .get(\"api/account\", {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then(function (response) {\r\n if (response.status == 200) {\r\n isSuccess = true;\r\n }\r\n return response;\r\n })\r\n .then(function (json) {\r\n if (!isSuccess) {\r\n setErrorMessage(json.message);\r\n } else {\r\n json.data.hospitalId && setHospitalId(json.data.hospitalId);\r\n json.data.deptId && setDeptId(json.data.deptId);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(\"getItem error\", error);\r\n });\r\n }\r\n\r\n const {\r\n // register,\r\n // watch,\r\n errors,\r\n // setError,\r\n // setValue,\r\n // getValues,\r\n // clearErrors,\r\n } = useForm({});\r\n\r\n async function GetHospital() {\r\n let isSuccess = false;\r\n const token = await authService.getAccessToken();\r\n\r\n await axios\r\n .get(\"api/hospitals/change?prefCd=\" + prefId, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then(function (response) {\r\n if (response.status == 200) {\r\n isSuccess = true;\r\n }\r\n return response;\r\n })\r\n .then(function (json) {\r\n if (!isSuccess) {\r\n setErrorMessage(json.message);\r\n setReadingHospital([]);\r\n setHospitalSetter(true);\r\n } else {\r\n setReadingHospital(json.data);\r\n setHospitalSetter(true);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(\"test\");\r\n });\r\n }\r\n\r\n async function GetDepts(hid) {\r\n let isSuccess = false;\r\n const token = await authService.getAccessToken();\r\n\r\n await axios\r\n .get(\"api/hospitalDepts/change?hid=\" + hid, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then(function (response) {\r\n if (response.status == 200) {\r\n isSuccess = true;\r\n }\r\n return response;\r\n })\r\n .then(function (json) {\r\n if (!isSuccess) {\r\n setErrorMessage(json.message);\r\n setDepts([]);\r\n setDeptSetter(true);\r\n } else {\r\n setDepts(json.data);\r\n setDeptSetter(true);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(hid);\r\n //setDeptSetter(true);\r\n });\r\n //console.log(\"deptsErr1\");\r\n //await ApiGetDepts(hid)\r\n // .then(function (response) {\r\n // setDepts(response);\r\n // setDeptSetter(true);\r\n // }).catch(function (error) {\r\n // console.log(\"deptsErr\");\r\n // setDeptSetter(true);\r\n // });\r\n }\r\n\r\n const handleChangePref = (event) => {\r\n //setRoleId(event.target.value);\r\n setPrefId(event.target.value);\r\n setHospitalId(0);\r\n setDeptId(\"0\");\r\n setHospitalSetter(false);\r\n setDeptSetter(false);\r\n };\r\n\r\n const handleChangeHospital = (event) => {\r\n //setRoleId(event.target.value);\r\n setHospitalId(event.target.value);\r\n setDeptId(\"0\");\r\n setDeptSetter(false);\r\n };\r\n\r\n const handleChangeDept = (event) => {\r\n //setRoleId(event.target.value);\r\n setDeptId(event.target.value);\r\n };\r\n\r\n useEffect(() => {\r\n GetDivisions(\"prefCd\", setPrefNameData);\r\n GetUser();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (!openDialog) {\r\n GetUser();\r\n setPrefId(0);\r\n }\r\n }, [openDialog]);\r\n\r\n useEffect(() => {\r\n GetHospital();\r\n }, [prefId, openDialog]);\r\n\r\n useEffect(() => {\r\n if (hospitalId) GetDepts(hospitalId);\r\n }, [hospitalId, openDialog]);\r\n\r\n async function onUpdate() {\r\n //var form_data = new FormDataToJson('role-form');\r\n object[\"hospitalId\"] = hospitalId;\r\n object[\"deptId\"] = deptId;\r\n\r\n const token = await authService.getAccessToken();\r\n await axios\r\n .put(\"api/account/hospital\", object, {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then((response) => {\r\n setMsg(\"医療機関を更新しました。\");\r\n setSnackbarSeverity(\"success\");\r\n setOpen(true);\r\n userctx.setUser(response.data);\r\n setPrefId(0);\r\n handleClose();\r\n isHeaderButton &&\r\n (layoutCtx.isMypage\r\n ? history.push(\"/manage/\")\r\n : history.push(`/${hospitalId}${reservationPath}sc/0`));\r\n })\r\n .catch((error) => {\r\n setMsg(\"エラーが発生しました。時間をおいて再度実行してください。\");\r\n setSnackbarSeverity(\"error\");\r\n setOpen(true);\r\n });\r\n }\r\n const handleSnackbarClose = (event) => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n
\r\n \r\n {msg}\r\n \r\n \r\n {/*病院選択*/}\r\n \r\n {/* */}\r\n {/*医療機関選択*/}\r\n \r\n \r\n \r\n 医療機関選択\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {prefNameData && prefNameData.length > 1 && (\r\n \r\n \r\n 都道府県\r\n \r\n \r\n すべて\r\n \r\n {prefNameData.map((pref, index) => {\r\n return (\r\n \r\n  {pref}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n )}\r\n {hospitalSetter ? (\r\n readingHospital && readingHospital.length > 0 ? (\r\n \r\n \r\n 医療機関名\r\n \r\n {readingHospital.map((hospital) => {\r\n return (\r\n \r\n  {hospital.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n この都道府県にWeb予約システムを導入しているお客様はございません\r\n \r\n \r\n \r\n )\r\n ) : (\r\n \r\n \r\n \r\n )}\r\n {deptSetter && (\r\n <>\r\n {depts && depts.length > 0 ? (\r\n \r\n \r\n 予約項目名\r\n \r\n \r\n  指定しない\r\n \r\n {depts.map((dept) => {\r\n //TODO セッションが切れるとここでエラーが出る模様\r\n return (\r\n \r\n  {dept.name}\r\n \r\n );\r\n })}\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n この医療機関には科目が存在しません。\r\n \r\n \r\n \r\n )}\r\n \r\n )}\r\n\r\n {hospitalSetter &&\r\n readingHospital &&\r\n readingHospital.length > 0 && (\r\n \r\n \r\n \r\n 更新\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleClose(e, parameter)}\r\n color=\"primary\"\r\n autoFocus\r\n >\r\n {cancelLabel ? cancelLabel : \"キャンセル\"}\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n","import {\r\n useSafeState,\r\n useUnmountRef,\r\n} from \"components/common/UnmountStateHelper\";\r\nimport React, { useContext } from \"react\";\r\nimport { Button } from \"@material-ui/core\";\r\nimport { makeStyles, useTheme } from \"@material-ui/core/styles\";\r\nimport ChangeHospitalDialog from \"components/dialog/ChangeHospitalDialog\";\r\nimport { TouchApp } from \"@material-ui/icons\";\r\nimport IconTextButton from \"components/input/button/IconTextButton\";\r\nimport { UserContext } from \"components/api-authorization/UserContext\";\r\nimport { Claims } from \"components/api-authorization/ApiAuthorizationConstants\";\r\nimport { MessageContext } from \"components/context/MessageContext\";\r\n\r\n//クラスコンポーネントに対してMaterial-uiのスタイルを当てたい場合はこう書く\r\nconst useStyles = makeStyles((theme) => ({\r\n loginLabel: {\r\n padding: \"12px\",\r\n },\r\n loginLink: {\r\n color: \"inherit\",\r\n \"&:hover\": {\r\n color: \"inherit\",\r\n },\r\n },\r\n confirmHospital: {\r\n color: \"black\",\r\n display: \"inline-block\",\r\n cursor: \"pointer\",\r\n transition: \"0.3s\",\r\n },\r\n}));\r\n/**\r\n * 病院選択ダイアログ表示のボタンです\r\n * ApsNatUsersのhospitalIdを更新し、userContextを更新します。\r\n */\r\nexport function ChangeHospitalButton(props) {\r\n const unmountRef = useUnmountRef();\r\n const { ...others } = props;\r\n const [openDialog, setOpenDialog] = useSafeState(unmountRef, false);\r\n const handleButtonClick = () => {\r\n setOpenDialog(true);\r\n };\r\n const handleDialogClose = () => {\r\n setOpenDialog(false);\r\n };\r\n return (\r\n <>\r\n handleDialogClose()}\r\n />\r\n handleButtonClick()}\r\n variant=\"contained\"\r\n {...others}\r\n >\r\n 病院選択\r\n \r\n \r\n );\r\n}\r\n//export function ChangeHospitalFunction(props) {\r\n// const [openDialog, setOpenDialog] = useSafeState(unmountRef, false);\r\n// const handleButtonClick = () => {\r\n// setOpenDialog(true);\r\n// }\r\n// const handleDialogClose = () => {\r\n// setOpenDialog(false);\r\n// }\r\n// return (\r\n// <>\r\n// handleDialogClose()} />\r\n// \r\n// );\r\n//}\r\n\r\nexport function ChangeHospitalHeader(props) {\r\n const unmountRef = useUnmountRef();\r\n const classes = useStyles();\r\n const [openDialog, setOpenDialog] = useSafeState(unmountRef, false);\r\n const userctx = useContext(UserContext);\r\n const theme = useTheme();\r\n const msg = useContext(MessageContext);\r\n const [snackbarSeverity, setSnackbarSeverity] = useSafeState(\r\n unmountRef,\r\n \"error\"\r\n );\r\n\r\n const handleButtonClick = () => {\r\n setOpenDialog(true);\r\n };\r\n const handleDialogClose = () => {\r\n setOpenDialog(false);\r\n };\r\n const [openName, setOpenName] = useSafeState(unmountRef, false);\r\n const handleHospitalNameChange = () => {\r\n //setOpenName(!openName);\r\n msg.enqueue(userctx && userctx.hospital.name);\r\n //setSnackbarSeverity(\"success\");\r\n //setOpen(true);\r\n };\r\n\r\n const [open, setOpen] = useSafeState(unmountRef, false);\r\n\r\n const handleSnackbarClose = (event) => {\r\n setOpen(false);\r\n };\r\n\r\n return (\r\n <>\r\n {userctx.claims && userctx.hasClaim(Claims.Manage_TokyoPrinting) && (\r\n <>\r\n handleDialogClose()}\r\n isHeaderButton={true}\r\n />\r\n handleButtonClick()}\r\n className={classes.loginLink}\r\n text=\"医院選択\"\r\n variant=\"contained\"\r\n >\r\n \r\n \r\n\r\n {/*\r\n * 現在の医療機関を確認する処理\r\n
\r\n {\r\n openName &&\r\n
handleHospitalNameChange()} style={{ backgroundColor: \"#e0e0e0\", borderRadius: \"5px 0 0 5px\", paddingLeft: \"10px\", paddingRight: \"10px\", padding: \"0px 6px\", }} className={classes.confirmHospital}>\r\n\r\n \r\n {userctx && userctx.hospital.name}\r\n \r\n\r\n \r\n {userctx && userctx.hospital.name}\r\n \r\n
\r\n }\r\n
handleHospitalNameChange()} variant=\"contained\" style={{ backgroundColor: theme.palette.secondary.main, borderRadius: \"5px\", padding: \"2px 6px\", }} className={classes.confirmHospital}>\r\n \r\n
\r\n
\r\n */}\r\n \r\n )}\r\n \r\n );\r\n}","import { makeStyles } from \"@material-ui/core\";\r\nimport {\r\n AccountCircle,\r\n ExitToApp,\r\n PostAdd,\r\n Settings,\r\n Close,\r\n} from \"@material-ui/icons\";\r\nimport {\r\n ApplicationPaths,\r\n Claims,\r\n} from \"components/api-authorization/ApiAuthorizationConstants\";\r\nimport authService from \"components/api-authorization/AuthorizeService\";\r\nimport { UserContext } from \"components/api-authorization/UserContext\";\r\nimport {\r\n useSafeState,\r\n useUnmountRef,\r\n} from \"components/common/UnmountStateHelper\";\r\nimport { ChangeHospitalHeader } from \"components/input/button/ChangeHospitalButton\";\r\nimport IconTextButton from \"components/input/button/IconTextButton\";\r\nimport { LayoutContext } from \"pages/Layout\";\r\nimport React, { Fragment, useContext, useEffect } from \"react\";\r\nimport { Link, useHistory } from \"react-router-dom\";\r\n// //クラスコンポーネントでMaterial-uiのスタイルを当てたい場合はこう書く\r\n//クラスコンポーネントに対してMaterial-uiのスタイルを当てたい場合はこう書く\r\nconst useStyles = makeStyles((theme) => ({\r\n loginLabel: {\r\n padding: \"12px\",\r\n },\r\n loginLink: {\r\n color: \"inherit\",\r\n \"&:hover\": {\r\n color: \"inherit\",\r\n },\r\n },\r\n}));\r\n\r\n//Drawerを開閉するたびにカートカウントを取得するAPIが実行されるため、\r\n//LoginMenuをfunction化\r\nexport default function LoginMenu(props) {\r\n const userctx = useContext(UserContext);\r\n const layoutCtx = useContext(LayoutContext);\r\n const classes = useStyles();\r\n // const theme = useTheme();\r\n // const classes = useStyles(props, theme);\r\n const unmountRef = useUnmountRef();\r\n const [user, setUser] = useSafeState(unmountRef);\r\n\r\n const history = useHistory();\r\n\r\n const handleLogoutClick = () => {\r\n var fn = async () => {\r\n await authService.logout(\r\n userctx.user.id,\r\n () => {\r\n userctx.setUser(null);\r\n },\r\n history\r\n );\r\n };\r\n fn();\r\n };\r\n\r\n useEffect(() => {\r\n if (userctx && userctx.user) setUser(userctx.user);\r\n else setUser(null);\r\n }, [userctx, userctx.user]);\r\n\r\n function authenticatedView(userName, profilePath, logoutPath) {\r\n return (\r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {/* ハンバーガーメニューに表示させる */}\r\n \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n function anonymousView(registerPath, loginPath) {\r\n return (\r\n \r\n {layoutCtx.hospitalId ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (layoutCtx.isRemindResult ? (\r\n \r\n {\r\n window.close();\r\n }}\r\n >\r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n ))}\r\n \r\n );\r\n }\r\n return (\r\n <>\r\n {!user &&\r\n anonymousView(\r\n `${ApplicationPaths.Register}`,\r\n `${ApplicationPaths.Login}`\r\n )}\r\n {user && authenticatedView(user.userName, \"/manage/\", {})}\r\n \r\n );\r\n // if (!userctx.user) {\r\n // const registerPath = `${ApplicationPaths.Register}`;\r\n // const loginPath = `${ApplicationPaths.Login}`;\r\n // return anonymousView(registerPath, loginPath);\r\n // } else {\r\n // const profilePath = \"/manage/\";\r\n // const logoutPath = {};\r\n // return authenticatedView(userctx.user.userName, profilePath, logoutPath);\r\n // }\r\n}\r\n","import {\r\n useSafeState,\r\n useUnmountRef,\r\n} from \"components/common/UnmountStateHelper\";\r\nimport React from \"react\";\r\nimport { fade, makeStyles } from \"@material-ui/core/styles\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport IconButton from \"@material-ui/core/IconButton\";\r\nimport Badge from \"@material-ui/core/Badge\";\r\nimport MenuItem from \"@material-ui/core/MenuItem\";\r\nimport Menu from \"@material-ui/core/Menu\";\r\nimport MenuIcon from \"@material-ui/icons/Menu\";\r\nimport AccountCircle from \"@material-ui/icons/AccountCircle\";\r\nimport MailIcon from \"@material-ui/icons/Mail\";\r\nimport NotificationsIcon from \"@material-ui/icons/Notifications\";\r\nimport LoginMenu from \"./api-authorization/MaterialLoginMenu\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { Fragment } from \"react\";\r\nimport { commonStyle } from \"./styles/CommonStyle\";\r\nimport clsx from \"clsx\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n grow: {\r\n flexGrow: 1,\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(1),\r\n },\r\n title: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"block\",\r\n },\r\n },\r\n titleImg: {\r\n height: \"44px\",\r\n marginTop: \"4px\",\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n position: \"fixed\",\r\n \"@media print\": {\r\n display: \"none\",\r\n \"& *\": {\r\n display: \"none\",\r\n },\r\n },\r\n },\r\n search: {\r\n position: \"relative\",\r\n borderRadius: theme.shape.borderRadius,\r\n backgroundColor: fade(theme.palette.common.white, 0.15),\r\n \"&:hover\": {\r\n backgroundColor: fade(theme.palette.common.white, 0.25),\r\n },\r\n marginRight: theme.spacing(2),\r\n marginLeft: 0,\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"sm\")]: {\r\n marginLeft: theme.spacing(3),\r\n width: \"auto\",\r\n },\r\n },\r\n searchIcon: {\r\n padding: theme.spacing(0, 2),\r\n height: \"100%\",\r\n position: \"absolute\",\r\n pointerEvents: \"none\",\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"center\",\r\n },\r\n inputRoot: {\r\n color: \"inherit\",\r\n },\r\n inputInput: {\r\n padding: theme.spacing(1, 1, 1, 0),\r\n // vertical padding + font size from searchIcon\r\n paddingLeft: `calc(1em + ${theme.spacing(4)}px)`,\r\n transition: theme.transitions.create(\"width\"),\r\n width: \"100%\",\r\n [theme.breakpoints.up(\"lg\")]: {\r\n width: \"20ch\",\r\n },\r\n },\r\n sectionDesktop: {\r\n display: \"none\",\r\n [theme.breakpoints.up(\"lg\")]: {\r\n display: \"flex\",\r\n },\r\n },\r\n sectionMobile: {\r\n display: \"flex\",\r\n //スマホ版navbarレイアウト調整中\r\n \"& > div\": {\r\n \"& > a\": {\r\n paddingRight: \"2px\",\r\n },\r\n },\r\n [theme.breakpoints.up(\"lg\")]: {\r\n display: \"none\",\r\n },\r\n //[theme.breakpoints.up(\"md\")]: {\r\n // display: \"none\",\r\n //},\r\n },\r\n loginLabel: {\r\n padding: \"12px\",\r\n },\r\n loginLink: {\r\n color: \"inherit !important\",\r\n \"&:hover\": {\r\n color: \"inherit\",\r\n },\r\n },\r\n}));\r\n\r\nexport default function NavBar(props) {\r\n const unmountRef = useUnmountRef();\r\n const classes = useStyles();\r\n\r\n return (\r\n //
\r\n \r\n \r\n \r\n
\r\n {/*
*/}\r\n {props.isMypage && ( //TODO isMypageはisManageに変更する\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n \r\n //bottomNavigationテスト\r\n // {\r\n // setValue(newValue);\r\n // }}\r\n // showLabels\r\n // className={classes.root}\r\n //>\r\n // } />\r\n // } />\r\n // } />\r\n //\r\n );\r\n}\r\n","/**\r\n * @file ナビゲーションバーを表示とユーザー・権限の情報を提供するコンポーネントです。\r\n */\r\nimport {\r\n useSafeState,\r\n useUnmountRef,\r\n} from \"components/common/UnmountStateHelper\";\r\nimport React, { useEffect, useContext, useCallback } from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { Container } from \"@material-ui/core\";\r\nimport NavBar from \"components/NavBar\";\r\nimport authService from \"components/api-authorization/AuthorizeService\";\r\nimport axios from \"axios\";\r\nimport { UserContext } from \"components/api-authorization/UserContext\";\r\nimport useReactRouter from \"use-react-router\";\r\nimport { ApiGetHospital } from \"components/api/HospitalApi\";\r\nimport { MessageContext } from \"components/context/MessageContext\";\r\nimport { ErrMsgKey, GetErrMsg } from \"components/common/ErrorMessageProvider\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n },\r\n wrapper: {\r\n display: \"flex\",\r\n flexDirection: \"column\",\r\n minHeight: \"100vh\",\r\n },\r\n mainContainer: {\r\n flex: \"1 0 auto\",\r\n },\r\n footer: {\r\n textAlign: \"right\",\r\n flexShrink: \"0\",\r\n marginTop: \"auto\",\r\n paddingRight: \"20px\",\r\n maxHeight: \"25px\",\r\n backgroundColor: theme.palette.primary.main,\r\n color: theme.palette.primary.contrastText,\r\n },\r\n footerDivider: {\r\n margin: \"20px 0px 0px 0px\",\r\n },\r\n firstContent: {\r\n marginTop: theme.spacing(5),\r\n },\r\n}));\r\n\r\nexport const LayoutContext = React.createContext();\r\n\r\nexport function Layout(props) {\r\n const unmountRef = useUnmountRef();\r\n const classes = useStyles();\r\n const msg = useContext(MessageContext);\r\n const [isDrawerOpen, setIsDrawerOpen] = useSafeState(unmountRef, false);\r\n const [user, setUser] = useSafeState(unmountRef, null);\r\n const [claims, setClaims] = useSafeState(unmountRef, null);\r\n const [hospitalId, setHospitalId] = useSafeState(unmountRef, null); //マイページを開く用の医療機関ID\r\n const [hospital, setHospital] = useSafeState(unmountRef, null);\r\n const [isMypage, setIsMypage] = useSafeState(unmountRef, false);\r\n const [isRemindResult, setIsRemindResult] = useSafeState(unmountRef, false);\r\n\r\n //TODO UserContextはトークン情報を入れずに、ユーザーの情報と権限の情報を持つようにする\r\n //AuthorizeServiceにsubscribeして変更があった場合、サーバーから取り直す\r\n\r\n const { history } = useReactRouter();\r\n\r\n const handleDrawerMenuClick = function () {\r\n setIsDrawerOpen(!isDrawerOpen);\r\n };\r\n const handleMainClick = function () {\r\n if (isDrawerOpen) setIsDrawerOpen(!isDrawerOpen);\r\n };\r\n\r\n const handleHospitalIdChange = function (hid) {\r\n setHospitalId(hid);\r\n };\r\n\r\n async function GetUser() {\r\n //ユーザー情報取得\r\n\r\n if (await authService.isAuthenticated()) {\r\n const token = await authService.getAccessToken();\r\n await axios\r\n .get(\"api/Account/\", {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then((response) => {\r\n if (response.status === 200) setUser(response.data);\r\n })\r\n .catch((error) => {\r\n //TODO エラー処理はどうする?\r\n });\r\n }\r\n }\r\n\r\n async function GetClaims() {\r\n if (await authService.isAuthenticated()) {\r\n await authService.getBelongClaims().then((result) => {\r\n if (result) {\r\n setClaims(result[\"claims\"]);\r\n }\r\n });\r\n }\r\n }\r\n\r\n const GetHospital = useCallback(() => {\r\n if (user) {\r\n ApiGetHospital(user.hospitalId)\r\n .then(function (response) {\r\n if (response && response.length > 0) setHospital(response[0]);\r\n })\r\n .catch(function (error) {\r\n msg.enqueue(\"医療機関データが取得できませんでした\", \"error\");\r\n });\r\n }\r\n });\r\n\r\n useEffect(() => {\r\n GetUser();\r\n return () => {\r\n //Unmount時 テスト\r\n // alert(\"Unmount\");\r\n };\r\n //setIsNoneHeader(false);\r\n }, []);\r\n\r\n //setIsMypage(false);\r\n\r\n useEffect(() => {\r\n GetHospital();\r\n const asyncF = async () => {\r\n if (await authService.isAuthenticated()) {\r\n await GetClaims();\r\n }\r\n };\r\n asyncF();\r\n }, [user]);\r\n\r\n return (\r\n
\r\n
\r\n {/*ユーザー情報を全コンポーネントに伝播するプロバイダ*/}\r\n {\r\n if (claims) {\r\n if (claims[claimName] === \"true\") {\r\n return true;\r\n }\r\n if (claims[\"Has_All_Claims\"] === \"true\") {\r\n return true;\r\n }\r\n }\r\n return false;\r\n },\r\n checkHospitalDept: (hid, did) => {\r\n // TODO 所 全ての医療機関の管理が可能な権限があればスルーするようにする\r\n if (user) {\r\n if (user.hospitalId && hid) {\r\n // 全ての病院を管理可能 でない場合のみチェック\r\n if (\r\n !(\r\n claims &&\r\n (claims[\"Manage_All_Hospitals\"] === \"true\" ||\r\n claims[\"Has_All_Claims\"] === \"true\")\r\n )\r\n ) {\r\n if (user.hospitalId.toString() !== hid.toString()) {\r\n // 前画面に戻す\r\n history.replace(\"/admin\");\r\n // msg.enqueueNotClose(\"表示できませんでした\", \"error\");\r\n msg.enqueueNotClose(\r\n GetErrMsg(ErrMsgKey.checkHospitalDept),\r\n \"error\"\r\n );\r\n } else return true;\r\n } else return true;\r\n }\r\n if (user.deptId && did) {\r\n // 全ての予約項目を管理可能 でない場合のみチェック\r\n if (\r\n !(\r\n claims &&\r\n (claims[\"Manage_All_Depts\"] === \"true\" ||\r\n claims[\"Has_All_Claims\"] === \"true\")\r\n )\r\n ) {\r\n if (user.deptId !== did) {\r\n // admin にでもとばす\r\n history.replace(\"/admin\");\r\n // msg.enqueueNotClose(\"表示できませんでした\", \"error\");\r\n msg.enqueueNotClose(\r\n GetErrMsg(ErrMsgKey.checkHospitalDept),\r\n \"error\"\r\n );\r\n } else return true;\r\n } else return true;\r\n }\r\n }\r\n },\r\n }}\r\n >\r\n \r\n \r\n \r\n {props.children}\r\n \r\n
\r\n
\r\n © 2020 - Imura Envelope CO.,INC.\r\n
\r\n \r\n \r\n
\r\n
\r\n );\r\n}\r\n","import axios from \"axios\";\r\n// import authService from 'components/api-authorization/AuthorizeService';\r\n\r\nexport async function GetDivisions(key, setter) {\r\n await axios\r\n .get(\"api/divisions?key=\" + key)\r\n .then(function (json) {\r\n // 正常の場合\r\n if (json.data) {\r\n // var object = new Array();\r\n var object = [];\r\n for (let i = 0; i < json.data.length; i++) {\r\n let item = json.data[i];\r\n object[item.divisionValue] = item.divisionText1;\r\n }\r\n setter(object);\r\n }\r\n })\r\n .catch(function (error) {\r\n console.log(\"GetDivisions error\", error);\r\n throw error;\r\n });\r\n}\r\n","// 絶対に初回走るな\r\nimport { useEffect, useRef } from \"react\";\r\n\r\nconst UseEffect2 = (func, dependencyList) => {\r\n const fisrtFlgRef = useRef(true);\r\n\r\n useEffect(() => {\r\n if (!fisrtFlgRef.current) {\r\n func();\r\n } else {\r\n fisrtFlgRef.current = false;\r\n }\r\n }, dependencyList);\r\n};\r\n\r\nexport default UseEffect2;\r\n","import axios from \"axios\";\r\nimport {\r\n ApplicationName,\r\n ApplicationPaths,\r\n} from \"components/api-authorization/ApiAuthorizationConstants\";\r\nimport { localStorageKeys } from \"components/common/Const\";\r\nimport { UserManager, WebStorageStateStore } from \"oidc-client\";\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const token = await this.getAccessToken();\r\n return !!token;\r\n }\r\n\r\n async getAccessToken() {\r\n return localStorage.getItem(localStorageKeys.LoginJWT);\r\n }\r\n\r\n async getBelongClaims() {\r\n // アクセストークン取得\r\n const token = await this.getAccessToken();\r\n // ユーザー情報取得\r\n let claims;\r\n await axios\r\n .get(\"api/getbelongclaims\", {\r\n headers: !token ? {} : { Authorization: `Bearer ${token}` },\r\n })\r\n .then(function (response) {\r\n claims = response.data;\r\n })\r\n .catch(function (error) {\r\n console.log(\"getbelongclaims error\", error);\r\n });\r\n\r\n return claims;\r\n }\r\n\r\n async logout(userid, fn, history) {\r\n var postObj = {};\r\n postObj[\"userId\"] = userid;\r\n postObj[\"roleId\"] = \"\";\r\n var token = await authService.getAccessToken();\r\n\r\n if (userid && token) {\r\n await axios\r\n .post(\"api/logout\", postObj, {\r\n headers: !token\r\n ? { Accept: \"application/json\", \"Content-Type\": \"application/json\" }\r\n : {\r\n Accept: \"application/json\",\r\n \"Content-Type\": \"application/json\",\r\n Authorization: `Bearer ${token}`,\r\n },\r\n })\r\n .then((response) => {\r\n console.log(userid + \"をログアウトさせました。\");\r\n localStorage.removeItem(localStorageKeys.LoginJWT);\r\n fn();\r\n history && history.push(\"/login\");\r\n })\r\n .catch((error) => {\r\n console.log(\"失敗しました\");\r\n // msgctx.enqueue(\r\n // error.response.data + \"時間をおいて再度実行してください。\",\r\n // \"error\"\r\n // );\r\n // isSuccess = false;\r\n history && history.push(\"/login\");\r\n });\r\n } else {\r\n localStorage.removeItem(localStorageKeys.LoginJWT);\r\n history && history.push(\"/login\");\r\n fn();\r\n }\r\n }\r\n\r\n static get instance() {\r\n return authService;\r\n }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: \"redirect\",\r\n Success: \"success\",\r\n Fail: \"fail\",\r\n};\r\n","/**\r\n * @file 404 NotFound時に表示されるページです\r\n */\r\nimport React, {useContext} from 'react';\r\nimport { Container } from '@material-ui/core';\r\nimport { LayoutContext } from 'pages/Layout';\r\n\r\nexport default function NotFound()\r\n{\r\n const layoutCtx = useContext(LayoutContext);\r\n layoutCtx.setIsMypage(false);\r\n return (\r\n \r\n
\r\n お探しのページは見つかりませんでした。
\r\n - 404 NotFound\r\n
\r\n
\r\n );\r\n}","import { sessionStorageKeys } from \"components/common/Const\";\r\nimport { useContext } from \"react\";\r\nimport { MessageContext } from \"components/context/MessageContext\";\r\nimport axios from \"axios\";\r\n\r\nexport const GetRevision = async () => {\r\n // サーバーバージョンの取得\r\n let hash = new Date().getTime();\r\n return await axios\r\n .get(\"/revision.txt?\" + hash)\r\n .then(function (response) {\r\n return response.data;\r\n })\r\n .catch(function (error) {\r\n console.log(\"revision.txt error\", error);\r\n });\r\n};\r\n\r\nexport default async function CheckRevision(msgctx, pattern, errorFunction) {\r\n var localVersion = sessionStorage.getItem(sessionStorageKeys.Revision);\r\n var serverVersion = await GetRevision();\r\n\r\n if (localVersion == \"init\") {\r\n sessionStorage.setItem(sessionStorageKeys.Revision, serverVersion);\r\n return;\r\n }\r\n\r\n const doPattern = (pattern) => {\r\n if (pattern === 2) {\r\n // リビジョン更新開始\r\n msgctx.enqueueNotClose(\r\n \"最新バージョンがあります。画面をリロードします。\",\r\n \"info\"\r\n );\r\n sessionStorage.setItem(\r\n sessionStorageKeys.Reload,\r\n \"最新バージョンへ更新しました。\"\r\n );\r\n window.location.reload(true);\r\n } else if (pattern === 1) {\r\n msgctx.enqueueNotClose(\r\n \"最新バージョンがあります。画面をリロードしてください。\",\r\n \"info\"\r\n );\r\n }\r\n };\r\n\r\n if (serverVersion) {\r\n if (localVersion) {\r\n // 現在のリビジョンと取得したリビジョンが異なる場合はリロード\r\n if (localVersion !== serverVersion && localVersion !== \"init\") {\r\n sessionStorage.setItem(\r\n sessionStorageKeys.ServerRevision,\r\n serverVersion\r\n );\r\n doPattern(pattern);\r\n errorFunction && errorFunction();\r\n }\r\n } else {\r\n doPattern(pattern);\r\n }\r\n }\r\n}\r\n","import { createMuiTheme } from \"@material-ui/core/styles\";\r\n\r\nexport const systemConst = {\r\n name: \"えみでる Web予約システム\",\r\n};\r\n\r\nexport const RecaptchaSiteKeyV2 = \"6Lch1uMZAAAAAJPTou0yk7JrdpHlI8K25Rte90gB\";\r\n\r\n/**\r\n * 定数\r\n */\r\nexport const imageConst = {\r\n logo_image_max_count: 1, // 医療施設ロゴ画像枚数\r\n hospital_image_max_count: 3, // 医療施設画像枚数\r\n director_image_max_count: 1, // 院長画像枚数\r\n hospital_image_compress_size: 0.2, // 医療施設画像の圧縮(200kb)\r\n hospital_dept_image_max_count: 1, // 予約項目画像枚数\r\n doctor_image_max_count: 1, // 所属医師画像枚数\r\n};\r\nexport const validationConst = {\r\n phone_reg_exp: /^0\\d{1,4}-\\d{1,4}-\\d{3,4}$/, // 電話番号の正規表現\r\n phone_reg_exp_no_hyphen: /^0\\d{9,10}$/, // 電話番号の正規表現\r\n ip_reg_exp: /^\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}\\.\\d{1,3}$/, // IPの正規表現\r\n postal_reg_exp: /^[0-9]{3}-[0-9]{4}$/, // 郵便番号の正規表現\r\n};\r\nexport const patientConst = {\r\n new_patient: \"初診\",\r\n not: \"再診\",\r\n};\r\n\r\n/**\r\n * SessionStorageのキー\r\n * Login.jsにて、ログインボタン押下時にいったんすべて削除されます。\r\n */\r\nexport const sessionStorageKeys = {\r\n EntryDefaultValues: \"HRS_Entry_Default_Values\",\r\n RolesPageNo: \"HRS_Roles_Page_No\",\r\n UsersPageNo: \"HRS_Users_Page_No\",\r\n DoctorsPageNo: \"HRS_Doctors_Page_No\",\r\n HospitalsPageNo: \"HRS_Hospitals_Page_No\",\r\n HospitalDeptsPageNo: \"HRS_HospitalDepts_Page_No\",\r\n InformationListPageNo: \"HRS_InformationList_Page_No\",\r\n ExamCardsPageNo: \"HRS_ExamCards_Page_No\",\r\n InformationListPageNo: \"HRS_InformationList_Page_No\",\r\n InformationListAdminPageNo: \"HRS_InformationList_Admin_Page_No\",\r\n NoticesPageNo: \"HRS_Notices_Page_No\",\r\n BookingsSelectedHospital: \"HRS_Bookings_Selected_Hospital\", //予約一覧画面で表示した医療機関\r\n BookingsSelectedDate: \"HRS_Bookings_Selected_Date\", //予約一覧画面で選択された日付\r\n BookingsSelectedDept: \"HRS_Bookings_Selected_Dept\", //予約一覧画面で選択された予約項目\r\n BookingsSelectedTime: \"HRS_Bookings_Selected_Time\", //予約一覧画面で選択された時間枠\r\n NewPatient: \"HRS_New_Patient\", // 診察券を持っていない患者(初診)かどうかの判定\r\n ReservationTableDeptId: \"HRS_Reservation_Table_Dept_Id\", // 予約状況テーブルの予約項目を保持\r\n PreConfirmSelectValue: \"HRS_Pre_Confirm_Select_Value\", //事前画面の選択値を保持\r\n Revision: \"HRS_Revision\", // バージョン情報\r\n ServerRevision: \"HRS_Server_Revision\", // サーバーバージョン情報\r\n Reload: \"HRS_Reload\", // リロードフラグ 値がある時は強制リロードした後\r\n};\r\n/**\r\n * LocalStorageのキー\r\n */\r\nexport const localStorageKeys = {\r\n LoginJWT: \"B502E5CA-A39C-42FA-9845-3F9080654ED2\",\r\n};\r\n\r\n/**\r\n * 予約の一連の画面のパス\r\n */\r\nexport const reservationPath = \"/r/\";\r\n\r\n/**\r\n * 予約枠設定画面のカレンダーに利用する週のリソースIDとリソース名のマッピング\r\n */\r\nexport const weekDayMap = [\r\n { resourceId: 1, resourceTitle: \"月\" },\r\n { resourceId: 2, resourceTitle: \"月(祝)\" },\r\n { resourceId: 3, resourceTitle: \"火\" },\r\n { resourceId: 4, resourceTitle: \"火(祝)\" },\r\n { resourceId: 5, resourceTitle: \"水\" },\r\n { resourceId: 6, resourceTitle: \"水(祝)\" },\r\n { resourceId: 7, resourceTitle: \"木\" },\r\n { resourceId: 8, resourceTitle: \"木(祝)\" },\r\n { resourceId: 9, resourceTitle: \"金\" },\r\n { resourceId: 10, resourceTitle: \"金(祝)\" },\r\n { resourceId: 11, resourceTitle: \"土\" },\r\n { resourceId: 12, resourceTitle: \"土(祝)\" },\r\n { resourceId: 13, resourceTitle: \"日\" },\r\n { resourceId: 14, resourceTitle: \"日(祝)\" },\r\n];\r\n\r\n/**\r\n * 予約枠設定画面の適用週とタイトルのマッピング\r\n */\r\nexport const otherWeeksMap = [\r\n { key: \"99\", title: \"毎週\" },\r\n { key: \"1\", title: \"第1週\" },\r\n { key: \"2\", title: \"第2週\" },\r\n { key: \"3\", title: \"第3週\" },\r\n { key: \"4\", title: \"第4週\" },\r\n { key: \"5\", title: \"第5週\" },\r\n { key: \"6\", title: \"第6週\" },\r\n];\r\n\r\n/**\r\n * 予約枠設定画面のカレンダーに利用するイベント枠の設定\r\n */\r\nexport const calendarStyle = (event, start, end, isSelected) => {\r\n const colors = [\"#34A853\", \"#4285F4\"];\r\n var backgroundColor;\r\n var border = \"0px\";\r\n var fontColor = \"white\";\r\n if (String(event.id).substr(0, 3) === \"new\") {\r\n // 新規追加分は、色固定\r\n backgroundColor = \"white\";\r\n border = \"1px solid #6473D3\";\r\n fontColor = \"#6473D3\";\r\n } else if (event.allDay === true) {\r\n // 全日分も色固定\r\n backgroundColor = \"#BB001B\";\r\n } else {\r\n // その他は、曜日ごとの色にする\r\n var colorId = Number(event.resourceId) % 2;\r\n backgroundColor = colors[colorId];\r\n }\r\n\r\n var style = {\r\n backgroundColor: backgroundColor,\r\n color: fontColor,\r\n border: border,\r\n display: \"block\",\r\n };\r\n return {\r\n style: style,\r\n };\r\n};\r\n\r\n/**\r\n * 必須の※マークを赤色にする設定\r\n */\r\nexport const requireRed = createMuiTheme({\r\n overrides: {\r\n MuiFormLabel: {\r\n asterisk: {\r\n color: \"#db3131\",\r\n \"&$error\": {\r\n color: \"#db3131\",\r\n },\r\n },\r\n },\r\n },\r\n});\r\n\r\n/**\r\n * 利用規約\r\n */\r\nexport const termOfUseHtml = `「Emidel(えみでる)」(以下「本サイト」といいます)は、東杏印刷株式会社(以下「当社」といいます)が医療施設等向けに提供する診療予約システムです。本サイトの利用者には本規約が適用されます。本サイトのご利用に際しては本規約の内容をご確認ください。また、当社は、本サイトのご利用条件を変更することがあります。その際にはこの文書の改訂版を掲載することといたしますので、最新の内容をご確認いただきますようお願い申し上げます。\r\n\r\n■ 著作権\r\n本サイトの一切のコンテンツに係る著作権その他の権利は当社に帰属します。これらコンテンツは、日本の著作権法、条約および他国の著作権法にいう著作権により保護されており、私的利用の範囲を超えて利用することはできず、また、権利者の許可なく改変、複製、賃貸、貸与、販売、出版、送信、放送等、方法のいかんを問わず第三者の利用に供することを固く禁じます。ただし、個々の著作物に個別の利用条件が付されている場合は、当該条件が優先されます。\r\n\r\n■ 免責事項\r\n当社は、本サイトに情報を掲載するにあたり、十分に検討・確認作業を行っておりますが、その内容に関し、その正確性、有用性、確実性、安全性、特定目的に対する合目的性その他いかなる保証もするものではありません。本サイトのご利用により万一何らかの損害が発生したとしても、当社は一切責任を負いません。\r\n当社は、本サイトの構成、利用条件、URL、およびコンテンツ等を、予告なしに変更または中止する場合や、本サイトの運営を予告なしに中断または中止することがあります。なお、当社は理由のいかんに関わらず、これら変更および本サイトの運用の中断、または中止によって生じるいかなる損害についても責任を負いません。\r\n本サイトからリンクしている、当社以外の第三者が運営するWebサイト(以下「リンクサイト」といいます)の内容は、当該第三者の責任で管理されるものであり、当社の管理下にあるものではありません。当社はリンクサイトの内容について、また、それらのご利用によって生じるいかなる損害についても責任を負いません。\r\n\r\n■ 禁止事項\r\n本サイトの利用者は、本サイトの利用にあたって、以下の行為を行ってはならないものとします。\r\nまた、違反した場合には予約等が無効になる場合があります。\r\n(1)第三者、当社もしくは当社の業務委託先の著作権、商標権等の知的財産権を侵害する行為または侵害する恐れのある行為\r\n(2)第三者、当社または当社の業務委託先の財産もしくはプライバシーを侵害する行為または侵害する恐れのある行為\r\n(3)第三者、当社または当社の業務委託先に対し不利益もしくは損害を与える行為またはそれらの恐れのある行為\r\n(4)本サイトに関連して営利を目的とした活動を行う行為またはその準備行為\r\n(5)本サイトの利用の権利を第三者に譲渡し、もしくは本サイトを第三者に有償無償を問わず利用させ、または、これについて担保その他の権利を設定する行為\r\n(6)本サイトの運営を妨げる行為\r\n(7)本サイトの信用を毀損する行為\r\n(8)自動化ツール等、人間による端末操作を介さずにサイトへの入力を行うツールを用いる行為\r\n(9)コンピュータウィルス等有害なプログラムを本サイトに関連して使用しまたは提供する行為\r\n(10)本サイトに関して複製、改変、方法のいかんを問わずリバースエンジニアリングを行う行為\r\n(11)本サイトと同一ないし類似品を開発・製造、販売または利用許諾する行為\r\n(12)前各号に定める行為を助長する行為\r\n(13)その他、法令に違反するまたは違反の恐れがある行為\r\n(14)その他、当社が不適切と判断する行為\r\n\r\n■ 個人情報の取得および利用\r\n本サイトにおける個人情報の取得は、本サイト上で提供するサービスの充実ならびに円滑な提供(予約情報の発信等)および当サイトの円滑な運営を目的として、その目的の達成に必要な範囲内で行います。取得した個人情報は、取得目的の範囲内で利用し、これらの目的以外で利用する場合には、利用者に対し事前に確認または同意を求めます。\r\nなお、個人情報の取得は、本サイト上での利用者本人による入力により取得を行い、本サイト上での個人情報の取得にあたっては、個人情報ご入力時における確認欄等へのクリックによって本人の同意を得たものとします。\r\n\r\n■ 損害賠償\r\n本サイトの利用者が本サイトの利用条件に違反して当社に損害を与えた場合、当該利用者は当社または第三者等が被った損害の全額を賠償する義務を負うものとします。\r\n\r\n■ 準拠法および管轄裁判所\r\n本サイトは法律の異なる全世界の国々からアクセスすることが可能ですが、本サイトにアクセスされた利用者および当社の両者は、かかる法律の原理の違いに関わらず、本サイトの利用に関して日本国の法律および東京都の条令に拘束されることに同意するものとします。また、本サイトの利用に関して、利用者と当社との間の一切の紛争については、東京地方裁判所を第一審の専属的合意管轄裁判所とします。なお、本サイトへのアクセスは利用者の自由意志によるものとし、本サイトの利用に関しての責任は利用者にあるものとします。\r\n\r\n2021年1月15日制定`;\r\n","import {\r\n useSafeState,\r\n useUnmountRef,\r\n} from \"components/common/UnmountStateHelper\";\r\nimport React, { lazy, Suspense, useEffect } from \"react\";\r\nimport {\r\n createMuiTheme,\r\n makeStyles,\r\n ThemeProvider,\r\n useTheme,\r\n} from \"@material-ui/core/styles\";\r\nimport useReactRouter from \"use-react-router\";\r\n// import HomePage1 from \"pages/homePages/HomePage1\";\r\n// import HomePage2 from \"pages/homePages/HomePage2\";\r\n// import HomePage3 from \"pages/homePages/HomePage3\";\r\n// import HomePage4 from \"pages/homePages/HomePage4\";\r\n// import HomePage5 from \"pages/homePages/HomePage5\";\r\nimport {\r\n ApiGetDeptsForHomePage,\r\n ApiGetHospital,\r\n} from \"components/api/HospitalApi\";\r\nimport NotFound from \"pages/shared/NotFound\";\r\nimport { PageTitle } from \"components/common/PageTitle\";\r\nimport { Fragment } from \"react\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport UseEffect2 from \"components/common/UseEffect2\";\r\nimport { commonStyle } from \"components/styles/CommonStyle\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\n\r\nconst HomePage1 = lazy(() => import(\"pages/homePages/HomePage1\"));\r\nconst HomePage2 = lazy(() => import(\"pages/homePages/HomePage2\"));\r\nconst HomePage3 = lazy(() => import(\"pages/homePages/HomePage3\"));\r\nconst HomePage4 = lazy(() => import(\"pages/homePages/HomePage4\"));\r\nconst HomePage5 = lazy(() => import(\"pages/homePages/HomePage5\"));\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n fullWidth: {\r\n width: \"99vw\",\r\n position: \"relative\",\r\n marginLeft: \"-50vw\",\r\n left: \"50%\",\r\n top: theme.spacing(1),\r\n },\r\n}));\r\n\r\nexport function HomePage(props) {\r\n const unmountRef = useUnmountRef();\r\n const styles = commonStyle();\r\n const { history, location, match } = useReactRouter();\r\n const [hospital, setHospital] = useSafeState(unmountRef, null);\r\n const [depts, setDepts] = useSafeState(unmountRef, null);\r\n const [theme, setTheme] = useSafeState(unmountRef, useTheme());\r\n const [seoKeywords, setSeoKeywords] = useSafeState(unmountRef, \"予約\");\r\n const [seoDescription, setSeoDescription] = useSafeState(\r\n unmountRef,\r\n \"当医院のホームページです\"\r\n );\r\n\r\n UseEffect2(() => {\r\n /// SEOキーワードの設定\r\n SetSeoKeywords(hospital, depts);\r\n SetSeoDescription(hospital, depts);\r\n }, [hospital, depts]);\r\n\r\n function SetSeoKeywords(hospital, depts) {\r\n /// SEOキーワードの設定\r\n var keywords = \"予約\";\r\n // 病院\r\n if (hospital) {\r\n keywords = `${keywords},${hospital.name}`;\r\n // 病院都道府県名\r\n if (hospital.prefName) keywords = `${keywords},${hospital.prefName}`;\r\n // 市区町村名\r\n if (hospital.cityName) keywords = `${keywords},${hospital.cityName}`;\r\n }\r\n // 診療科名\r\n if (depts) {\r\n var text = \"\";\r\n for (let i = 0; i < depts.length; i++) {\r\n let item = depts[i];\r\n if (item.isVisibleHomePage) text = `${text},${item.name}`;\r\n }\r\n keywords = keywords + text;\r\n }\r\n setSeoKeywords(keywords);\r\n }\r\n\r\n function SetSeoDescription(hospital, depts) {\r\n var hospitalName = \"当医院\";\r\n var prefName = \"\";\r\n var cityName = \"\";\r\n var description = \"\";\r\n // 病院名\r\n if (hospital) {\r\n hospitalName = hospital.name;\r\n if (hospital.prefName) prefName = hospital.prefName;\r\n if (hospital.cityName) cityName = hospital.cityName;\r\n if (hospital.description) description = hospital.description;\r\n }\r\n setSeoDescription(\r\n `${prefName ? prefName : \"\"}${cityName ? cityName : \"\"}${\r\n (prefName || cityName) && \"の\"\r\n }${hospitalName}のホームページです。${description}`\r\n );\r\n }\r\n\r\n //パラメーターを取得\r\n var hospitalId = props.match.params.hid;\r\n\r\n async function GetHospital(hid) {\r\n await ApiGetHospital(hid)\r\n .then(function (response) {\r\n setHospital(response[0]);\r\n\r\n if (\r\n response[0].useHomePage == false ||\r\n response[0].templatePattern == null\r\n ) {\r\n history.push(\"*\");\r\n }\r\n if (response[0].primaryColor && response[0].secondaryColor) {\r\n const thm = createMuiTheme({\r\n palette: {\r\n primary: {\r\n main: `${response[0].primaryColor}`,\r\n },\r\n secondary: {\r\n main: response[0].secondaryColor,\r\n },\r\n contrastThreshold: 1.5,\r\n },\r\n });\r\n setTheme(thm);\r\n }\r\n\r\n //なぜかパラメーターから取得した数値を引数にすると,引数がnullになりBadRequestになるので、responseのidから取得する\r\n GetDepts(response[0].id);\r\n })\r\n .catch(function (error) {});\r\n }\r\n async function GetDepts(hid) {\r\n await ApiGetDeptsForHomePage(hid)\r\n .then(function (response) {\r\n setDepts(response);\r\n })\r\n .catch(function (error) {});\r\n }\r\n useEffect(() => {\r\n GetHospital(hospitalId);\r\n }, []);\r\n\r\n return (\r\n \r\n <>\r\n {hospital && (\r\n \r\n {!hospital.isSearchable ? (\r\n <>\r\n \r\n \r\n \r\n \r\n ) : (\r\n <>\r\n \r\n {seoKeywords && (\r\n \r\n )}\r\n {seoDescription && (\r\n \r\n )}\r\n \r\n \r\n )}\r\n \r\n <>\r\n {hospital.useHomePage ? (\r\n hospital.templatePattern ? (\r\n \r\n \r\n
\r\n }\r\n >\r\n {(() => {\r\n if (hospital.templatePattern == 1) {\r\n return ;\r\n } else if (hospital.templatePattern == 2) {\r\n return ;\r\n } else if (hospital.templatePattern == 3) {\r\n return ;\r\n } else if (hospital.templatePattern == 4) {\r\n return ;\r\n } else if (hospital.templatePattern == 5) {\r\n return ;\r\n }\r\n })()}\r\n \r\n ) : (\r\n \r\n )\r\n ) : (\r\n <>\r\n )}\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n}\r\n","/**\r\n * @file このアプリケーションの共通機能を提供するコンポーネントです。\r\n */\r\nimport {\r\n useSafeState,\r\n useUnmountRef,\r\n} from \"components/common/UnmountStateHelper\";\r\nimport React, { lazy, Suspense } from \"react\";\r\nimport { Route, Switch, useLocation } from \"react-router\";\r\nimport { HomePage } from \"pages/homePages/HomePage\";\r\nimport { createMuiTheme, ThemeProvider } from \"@material-ui/core/styles\";\r\nimport \"react-app-polyfill/stable\";\r\nimport \"custom.css\";\r\nimport { useEffect } from \"react\";\r\n// import AppRouter from \"./AppRouter\";\r\nimport { GoogleReCaptchaProvider } from \"react-google-recaptcha-v3\";\r\nimport { SnackbarProvider, useSnackbar } from \"notistack\";\r\nimport { MessageContext } from \"components/context/MessageContext\";\r\nimport axios from \"axios\";\r\nimport { GetRevision } from \"components/api/CheckRevisionApi\";\r\nimport { sessionStorageKeys } from \"components/common/Const\";\r\nimport { CircularProgress } from \"@material-ui/core\";\r\nimport { commonStyle } from \"components/styles/CommonStyle\";\r\n\r\nconst AppRouter = lazy(() => import(\"./AppRouter\"));\r\n\r\nexport default function App() {\r\n const unmountRef = useUnmountRef();\r\n const styles = commonStyle();\r\n const displayName = App.name;\r\n const { enqueueSnackbar, closeSnackbar } = useSnackbar();\r\n const location = useLocation();\r\n const [closeSnackbarWhenlocationChange, setCloseSnackbarWhenlocationChange] =\r\n useSafeState(unmountRef, []);\r\n\r\n window.onbeforeunload = (event) => {\r\n // // リロードされたときに、バージョン等の情報を初期化する\r\n console.log(\"App.js onbeforeunload\");\r\n // console.log(\"リロード!!!\");\r\n // var setRevision = async () => {\r\n // await GetRevision().then((revision) => {\r\n // sessionStorage.setItem(sessionStorageKeys.Revision, revision);\r\n // });\r\n // };\r\n // // バージョンを更新\r\n // setRevision();\r\n sessionStorage.removeItem(sessionStorageKeys.Revision);\r\n // // リロードメッセージを削除\r\n // sessionStorage.removeItem(sessionStorageKeys.Reload);\r\n // // サーバーバージョンを削除\r\n // sessionStorage.removeItem(sessionStorageKeys.ServerRevision);\r\n };\r\n\r\n useEffect(() => {\r\n //axiosでキャッシュしない設定\r\n //IE11でaxiosがキャッシュする動作の対応\r\n axios.defaults.headers[\"Pragma\"] = \"no-cache\";\r\n sessionStorage.setItem(sessionStorageKeys.Revision, \"init\");\r\n\r\n var setRevisionFn = async () => {\r\n await GetRevision().then((revision) => {\r\n sessionStorage.setItem(sessionStorageKeys.Revision, revision);\r\n });\r\n };\r\n // バージョンを更新\r\n console.log(\"App.js初期化\");\r\n setRevisionFn();\r\n }, []);\r\n\r\n useEffect(() => {\r\n if (closeSnackbarWhenlocationChange.length > 0) {\r\n closeSnackbarWhenlocationChange.forEach((key, index) => {\r\n closeSnackbar(key);\r\n });\r\n setCloseSnackbarWhenlocationChange([]);\r\n }\r\n }, [location]);\r\n\r\n return (\r\n {\r\n // setSnackbarClose(true);\r\n var key = enqueueSnackbar(message, {\r\n variant: type,\r\n });\r\n closeSnackbarWhenlocationChange.push(key);\r\n setCloseSnackbarWhenlocationChange(closeSnackbarWhenlocationChange);\r\n },\r\n enqueueNotClose: (message, type) => {\r\n enqueueSnackbar(message, {\r\n variant: type,\r\n });\r\n },\r\n enqueueWithOption: (message, option) => {\r\n var key = enqueueSnackbar(message, option);\r\n return key;\r\n },\r\n closeSnackbar: (key) => {\r\n if (key) closeSnackbar(key);\r\n },\r\n enqueueWithOption: (message, option, isLocationClose) => {\r\n var key = enqueueSnackbar(message, option);\r\n if (isLocationClose) {\r\n closeSnackbarWhenlocationChange.push(key);\r\n setCloseSnackbarWhenlocationChange(closeSnackbarWhenlocationChange);\r\n }\r\n return key;\r\n },\r\n }}\r\n >\r\n \r\n \r\n \r\n \r\n \r\n
\r\n }\r\n >\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","/**\r\n * @file App.jsをWrapするコンポーネントです\r\n */\r\nimport {\r\n createMuiTheme,\r\n makeStyles,\r\n ThemeProvider,\r\n} from \"@material-ui/core/styles\";\r\nimport App from \"App\";\r\nimport \"custom.css\";\r\nimport { SnackbarProvider } from \"notistack\";\r\nimport React from \"react\";\r\nimport \"react-app-polyfill/stable\";\r\nimport { Helmet } from \"react-helmet\";\r\n\r\nlet theme = createMuiTheme({\r\n overrides: {\r\n MuiFormLabel: {\r\n asterisk: {\r\n fontSize: \"1.3rem\",\r\n color: \"#db3131\",\r\n \"&$error\": {\r\n color: \"#db3131\",\r\n },\r\n },\r\n },\r\n },\r\n palette: {\r\n primary: {\r\n main: \"#6473D3\",\r\n },\r\n secondary: {\r\n main: \"#85D44E\",\r\n },\r\n },\r\n});\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n containerRoot: { top: \"65px\" },\r\n variantWarning: { color: \"#575757 !important\" },\r\n}));\r\n\r\nexport default function WrapApp() {\r\n const classes = useStyles();\r\n const domain = document.domain;\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {domain !== \"emidel-tokyop.com\" ? (\r\n \r\n \r\n {/* デモ用 Google Analytics */}\r\n {/* */}\r\n \r\n \r\n \r\n ) : (\r\n \r\n {/* 本番用 Google Analytics */}\r\n {/* */}\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n );\r\n}\r\n","/**\r\n * @file \r\n * Reactのエントリポイントです。\r\n * このアプリケーションが実行されると最初に呼び出されます\r\n */\r\nimport \"react-app-polyfill/ie11\";\r\nimport \"react-app-polyfill/stable\";\r\n// import \"bootstrap/dist/css/bootstrap.css\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport { BrowserRouter } from \"react-router-dom\";\r\nimport App from \"./App\";\r\nimport { SnackbarProvider } from \"notistack\";\r\nimport { Helmet } from \"react-helmet\";\r\nimport { Grow, makeStyles } from \"@material-ui/core\";\r\nimport WrapApp from \"WrapApp\";\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName(\"base\")[0].getAttribute(\"href\");\r\nconst rootElement = document.getElementById(\"root\");\r\nconst domain = document.domain;\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement\r\n);\r\n\r\n// Uncomment the line above that imports the registerServiceWorker function\r\n// and the line below to register the generated service worker.\r\n// By default create-react-app includes a service worker to improve the\r\n// performance of the application by caching static assets. This service\r\n// worker can interfere with the Identity UI, so it is\r\n// disabled by default when Identity is being used.\r\n//\r\n//registerServiceWorker();\r\n","import { makeStyles, withStyles } from \"@material-ui/core/styles\";\r\n\r\nexport const commonStyle = makeStyles((theme) => ({\r\n textField: {\r\n marginTop: theme.spacing(1) + \"px !important\",\r\n marginBottom: theme.spacing(1) + \"px !important\",\r\n background: \"white\",\r\n },\r\n pageTitle: {\r\n margin: theme.spacing(2),\r\n },\r\n cenerTitleInBox: {\r\n margin: theme.spacing(5),\r\n },\r\n loginLabel: {\r\n padding: \"12px\",\r\n },\r\n loginLink: {\r\n color: \"inherit\",\r\n \"&:hover\": {\r\n color: \"inherit\",\r\n },\r\n },\r\n errMsg: {\r\n color: theme.palette.error.main,\r\n },\r\n catchCopy: {\r\n textAlign: \"center\",\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n fontWeight: 600,\r\n },\r\n subTitle: {\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n color: theme.palette.primary.main,\r\n fontWeight: 600,\r\n },\r\n fullWidth: {\r\n width: \"100%\",\r\n },\r\n toolTip: {\r\n fontSize: \"14px\",\r\n },\r\n center: {\r\n textAlign: \"center\",\r\n },\r\n hiddenXs: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n display: \"none !important\",\r\n visibility: \"collapse !important\",\r\n },\r\n },\r\n hiddenSm: {\r\n [theme.breakpoints.down(\"sm\")]: {\r\n display: \"none !important\",\r\n visibility: \"collapse !important\",\r\n },\r\n },\r\n hiddenMd: {\r\n [theme.breakpoints.down(\"md\")]: {\r\n display: \"none !important\",\r\n visibility: \"collapse !important\",\r\n },\r\n },\r\n visibleXs: {\r\n [theme.breakpoints.up(\"sm\")]: {\r\n display: \"none !important\",\r\n visibility: \"collapse !important\",\r\n },\r\n },\r\n visibleSm: {\r\n [theme.breakpoints.up(\"md\")]: {\r\n display: \"none !important\",\r\n visibility: \"collapse !important\",\r\n },\r\n },\r\n successLight: {\r\n backgroundColor: theme.palette.success.light,\r\n color: theme.palette.success.contrastText,\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.success.main,\r\n },\r\n },\r\n success: {\r\n backgroundColor: theme.palette.success.main,\r\n color: theme.palette.success.contrastText,\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.success.dark,\r\n },\r\n },\r\n successText: {\r\n color: theme.palette.success.main,\r\n },\r\n warning: {\r\n backgroundColor: theme.palette.warning.main,\r\n color: theme.palette.warning.contrastText,\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.warning.dark,\r\n },\r\n },\r\n warningText: {\r\n color: theme.palette.warning.main,\r\n },\r\n delete: {\r\n backgroundColor: theme.palette.error.main,\r\n color: theme.palette.error.contrastText,\r\n \"&:hover\": {\r\n backgroundColor: theme.palette.error.dark,\r\n },\r\n },\r\n noBorder: {\r\n border: \"none !important\",\r\n },\r\n sunday: {\r\n backgroundColor: \"#ffe6e6\",\r\n },\r\n saturday: {\r\n backgroundColor: \"#f0f6ff\",\r\n },\r\n sundayColor: {\r\n color: \"#ff1f1f\",\r\n },\r\n saturdayColor: {\r\n color: \"#0067ff\",\r\n },\r\n \"@media print\": {\r\n noPrint: {\r\n display: \"none\",\r\n \"& *\": {\r\n display: \"none\",\r\n },\r\n },\r\n printOnly: {\r\n display: \"inherit\",\r\n \"& *\": {\r\n display: \"inherit\",\r\n },\r\n },\r\n },\r\n noPaddingXs: {\r\n [theme.breakpoints.down(\"xs\")]: {\r\n padding: 0,\r\n },\r\n },\r\n fab: {\r\n zIndex: \"100\",\r\n position: \"fixed\",\r\n [theme.breakpoints.up(\"xs\")]: {\r\n bottom: theme.spacing(6),\r\n right: theme.spacing(6),\r\n },\r\n [theme.breakpoints.down(\"xs\")]: {\r\n bottom: theme.spacing(2),\r\n right: theme.spacing(2),\r\n },\r\n },\r\n fabL: {\r\n width: \"62px\",\r\n height: \"62px\",\r\n fontSize: \"0.9rem\",\r\n },\r\n fab2L: {\r\n width: \"68px\",\r\n height: \"68px\",\r\n fontSize: \"0.95rem\",\r\n },\r\n fab3L: {\r\n width: \"76px\",\r\n height: \"76px\",\r\n fontSize: \"1.0rem\",\r\n },\r\n /* 超良い感じに改行してくれるcss */\r\n lineBreak: {\r\n wordBreak: \"break-all\",\r\n overflowWrap: \"break-word\",\r\n wordWrap: \"break-word\",\r\n lineBreak: \"anywhere\",\r\n whiteSpace: \"pre-wrap\",\r\n whiteSpace: \"breakSpaces\",\r\n },\r\n /* 画面中央配置 flex版 */\r\n centerFlex: {\r\n display: \"flex\",\r\n justifyContent: \"center\",\r\n alignItems: \"center\",\r\n },\r\n}));\r\n\r\nexport const FloatingBackgroundGlobalCss = withStyles({\r\n \"@global\": {\r\n \"#root\": {\r\n backgroundColor: \"rgba(248,248,248,1)\",\r\n },\r\n },\r\n})(() => null);\r\n","import React from 'react';\r\nimport { IconButton, Badge, Typography } from '@material-ui/core';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n iconButtonLabel: {\r\n display: 'flex',\r\n flexDirection: 'column',\r\n },\r\n iconButtonText:{\r\n fontSize:\"11px\"\r\n }\r\n}));\r\n\r\nexport default function IconTextButton(props) {\r\n const classes = useStyles(props);\r\n const {text, badgeContent, badgeColor,...other} = props;\r\n return (\r\n
\r\n \r\n \r\n {props.children}\r\n \r\n {text}\r\n {/* 複数のクラスを指定する場合はclsxを使う */}\r\n {/* */}\r\n {/* clsxを使わない場合は以下のように書ける */}\r\n {/* \r\n {props.children}\r\n \r\n \r\n {text}\r\n \r\n
*/}\r\n \r\n
\r\n );\r\n}","import React from 'react';\r\n\r\nexport const UserContext = React.createContext({\r\n name: '',\r\n});\r\n\r\n","import React, { Fragment, useCallback } from \"react\";\r\nimport { ErrorMessage } from \"@hookform/error-message\";\r\nimport ErrorMessages from \"../../ErrorMessages.json\";\r\nimport { commonStyle } from \"components/styles/CommonStyle\";\r\n\r\n/**\r\n * エラーメッセージのキー\r\n */\r\nexport const ErrMsgKey = {\r\n required: \"requireErrorMessage\",\r\n number: \"numberErrorMessage\",\r\n email: \"emailErrorMessage\",\r\n phoneNumber: \"phoneNumberErrorMessage\",\r\n phoneNumberNoHyphen: \"phoneNumberNoHyphenErrorMessage\",\r\n postalCodeRegEx: \"postalCodeRegExErrorMessage\",\r\n unexpected: \"unexpectedErrorMessage\",\r\n passwordUnmatch: \"passwordUnmatchErrorMessage\",\r\n notAgree: \"notAgreeErrorMessage\",\r\n passwordPolicy: \"passwordPolicyErrorMessage\",\r\n ipRegEx: \"ipRegExErrorMessage\",\r\n date: \"dateErrorMessage\",\r\n time: \"timeErrorMessage\",\r\n positive: \"positiveErrorMessage\",\r\n integer: \"integerErrorMessage\",\r\n halfAlphaNumericSymbole: \"halfAlphaNumericSymboleErrorMessage\",\r\n url: \"urlErrorMessage\",\r\n select: \"selectErrorMessage\",\r\n checkHospitalDept: \"checkHospitalDeptErrorMessage\",\r\n};\r\n\r\n/**\r\n * ErrorMessages.jsonからErrMsgKeyに対応するエラーメッセージを取得して返します。\r\n * @example\r\n * \r\n * @param {*} errMsgKey - エラー時に表示するメッセージのキー ErrMsgKey.require等\r\n */\r\nexport function GetErrMsg(errMsgKey) {\r\n return ErrorMessages[errMsgKey];\r\n}\r\n\r\n/**\r\n * エラーメッセージ表示用のコンポーネント\r\n * @param {Object} props\r\n * @param {string} name - 入力チェックエラーを表示する際は入力フィールドのname エラーのみ表示したい場合は任意のnameを指定する\r\n * @param {any} errors - react-hook-formの errros\r\n * @param {string} message - 表示するエラーメッセージ\r\n */\r\nexport function ErrMsg(props) {\r\n const style = commonStyle();\r\n const { messages, className, id, ...other } = props;\r\n return (\r\n
\r\n \r\n {({ message }) => {message}}\r\n \r\n
\r\n );\r\n}\r\n\r\n/**\r\n * エラーメッセージ表示用カスタムフック\r\n */\r\nexport function useErrorMessageProvider() {\r\n //useで始まるfunctionはカスタムフックといいます\r\n /**\r\n * axiosでレスポンスのstatusが400の場合に\r\n * react-hook-formを使用して、画面にエラー内容を表示します。\r\n *\r\n * @example\r\n * await fetch('api/xxx', object, {\r\n *\r\n * }).then(function (response) {\r\n *\r\n * }).catch(function (error) {\r\n * if (error.response.status == 400)\r\n * setValidationErrorsForaxios(error, setError);\r\n *\r\n * @param {*} error - axiosのリクエスト結果 exampleを参照してください\r\n * @param {*} setError - react-hooks-formのsetError関数\r\n */\r\n const setValidationErrorsForaxios = useCallback((error, setError) => {\r\n // if (error) {\r\n // console.log(\"error >>> \" + JSON.stringify(error));\r\n // if (error.response) {\r\n // console.log(\"response >>> \" + JSON.stringify(error.response));\r\n // if (error.response.data) {\r\n // console.log(\"data >>> \" + JSON.stringify(error.response.data));\r\n // if (error.response.data.errors)\r\n // console.log(\"errors >>> \" + error.response.data.errors);\r\n // }\r\n // }\r\n // }\r\n\r\n try {\r\n if (error.response.status === 400) {\r\n //Bad Request\r\n if (error.response.data.errors !== undefined) {\r\n // console.log(\"Error Result\");\r\n // console.log(\"message >>> \" + error.response.data.message);\r\n setError(\"summary\", {\r\n type: \"manual\",\r\n message: error.response.data.message,\r\n });\r\n //ErrorResult\r\n if (error.response.data.errors.length > 0) {\r\n for (var field in error.response.data.errors) {\r\n let err = error.response.data.errors[field];\r\n if (err.messageForUser !== undefined)\r\n setError(field, {\r\n type: \"manual\",\r\n message: err.messageForUser,\r\n });\r\n else {\r\n setError(field, { type: \"manual\", message: err[0] });\r\n }\r\n }\r\n }\r\n } else {\r\n //ModelState\r\n for (var key in error.response.data) {\r\n let errMsg = error.response.data[key].map((err) => (\r\n \r\n {err}\r\n
\r\n
\r\n ));\r\n setError(key, {\r\n type: \"manual\",\r\n message: {errMsg},\r\n });\r\n }\r\n }\r\n }\r\n // console.log(\"Error表示終了\");\r\n } catch (e) {\r\n console.log(\"Error表示時に例外が発生しました\");\r\n }\r\n });\r\n\r\n /**\r\n * fetchでレスポンスのstatusが400の場合に\r\n * react-hook-formを使用して、画面にエラー内容を表示します。\r\n *\r\n * @example\r\n * fetch('api/account', {\r\n * method: 'POST',\r\n * headers: {\r\n * 'Accept': 'application/json',\r\n * 'Content-Type': 'application/json'\r\n * },\r\n * body: JSON.stringify(object)\r\n * }).then(function (response) {\r\n *\r\n * }).catch(function (error) {\r\n * if (error.status == 400)\r\n * setValidationErrorsForFetch(error, setError);\r\n *\r\n * @param {*} error - axiosのリクエスト結果 exampleを参照してください\r\n * @param {*} setError - react-hooks-formのsetError関数\r\n */\r\n const setValidationErrorsForFetch = useCallback((error, setError) => {\r\n if (error.errors !== undefined) {\r\n setError(\"summary\", { type: \"manual\", message: error.message });\r\n //ErrorResult\r\n if (error.errors.length > 0) {\r\n for (var field in error.errors) {\r\n let err = error.errors[field];\r\n if (err.messageForUser !== undefined)\r\n setError(field, { type: \"manual\", message: err.messageForUser });\r\n else {\r\n setError(field, { type: \"manual\", message: err[0] });\r\n }\r\n }\r\n }\r\n } else {\r\n //ModelState\r\n for (var key in error) {\r\n setError(key, {\r\n type: \"manual\",\r\n message: (\r\n \r\n {error[key]}\r\n
\r\n
\r\n ),\r\n });\r\n }\r\n }\r\n });\r\n\r\n //最後にreturnすると外側から {setValidationErrorsForFetch, setValidationErrorsForaxios} = useErrorMessageProvider();というように呼び出すことが出来るようになる\r\n return {\r\n setValidationErrorsForaxios,\r\n setValidationErrorsForFetch,\r\n };\r\n}\r\n","import React from 'react';\r\n\r\n/**\r\n * 共通のメッセージ表示機能を提供するコンテキストです\r\n * @function -enqueue メッセージを表示します\r\n * @example\r\n * const context = useContext(MessageContext);\r\n * context.enqueue(\"メッセージ\", \"error\"); //default, info, success, warning, error\r\n */\r\nexport const MessageContext = React.createContext({\r\n name: '',\r\n});\r\n\r\n"],"sourceRoot":""}