{"version":3,"sources":["api/auth.js","App.js","api/tsDictionaryApi.js","contexts/common.js","api/api_helper.js","app-info.js","state/actions/authActions.js","state/actions/yeuCauHoTroActions.js","state/actions/khaoSatActions.js","state/actions/formKhaoSatActions.js","state/actions/formKhaoSatEditorActions.js","state/actions/rootAction.js","state/actions/formKhaoSatItemActions.js","api/truongApi.js","utils/media-query.js","contexts/navigation.js"],"names":["authApi","signIn","a","ticket_key","hash","axios","post","appInfo","api_url","res","data","is_success","getUser","apiHelper","signOut","Content","Loadable","pMinDelay","fallback","App","useSelector","x","auth","isLoading","user","query","URLSearchParams","useLocation","search","get","user_id","dispatch","useDispatch","useEffect","onGetUserInfo","undefined","id","rootActions","logoutStart","onLoginSSO","window","location","href","app_info","home_url","origin","sub_system_id","loginStart","loginSuccess","getUserStart","getUserSuccess","getUserError","screenSizeClass","useScreenSizeClass","queryClient","QueryClient","client","className","tsDictionaryApi","CommonContext","createContext","HttpMethod","GET","POST","PUT","DELETE","useCommonContext","children","React","useState","Map","dictionary","setDictionary","translate","useScreenSize","isLarge","key","localStorage","language","has","menuItems","useMemo","menus","items","map","item","path","test","handleReloadTruong","handleReloadDictionary","dm_truong_ids","campus","truongApi","SelectAll","dm_truongs","filter","includes","type","truongActionTypes","LOAD","SUCESS","payload","_dictionaryMap","forEach","element","set","vn","en","store","createUUID","uuidv4","showNotify","text","time","notify","canAccessTo","api","httpMethod","Provider","value","useContext","refreshToken","Promise","resolve","setTimeout","app_config","access_token","refresh_token","catch","message","refreshTokenRequest","CheckIsTokenExpired","jwt_decode","exp","parseInt","Math","floor","Date","now","error","handleRefreshToken","newTokens","reload","new_access_token","split","new_refresh_token","handleGetConfig","headers","Authorization","call_post_api","url","post_data","config","response","status","call_get_api","isCheckToken","JSON","stringify","put","delete","UPLOAD","upload","getWithoutCheckToken","postWithoutCheckToken","putWithoutCheckToken","deleteWithoutCheckToken","title","process","register_url","versionDataGridStorageKey","DATA_GRID_STOREGE_VERSION","toString","authActions","authActionTypes","LOGIN","START","loginError","ERROR","GET_INFO","LOGOUT","yeuCauHoTroActions","loadSelectStart","request","yeuCauHoTroActionTypes","LOAD_SELECT","loadSelectSuccess","SUCCESS","loadSelectError","loadDetailStart","LOAD_DETAIL","loadDetailSuccess","loadDetailError","updatePhanHoiStart","UPDATE_PHANHOI","updatePhanHoiSuccess","updatePhanHoiError","changeFilter","CHANGE_FILTER","khaoSatActions","loadStart","khaoSatActionTypes","loadSuccess","loadError","loadByTruongStart","dm_truong_id","nam_hoc","LOAD_BY_TRUONG","loadByTruongSuccess","loadByTruongError","loadResultByTruongStart","sis_khaosat_id","LOAD_RESULT_BY_TRUONG","loadResultByTruongSuccess","loadResultByTruongError","loadKetQuaKhaoSatStart","LOAD_KET_QUA_KHAO_SAT","loadKetQuaKhaoSatSuccess","loadKetQuaKhaoSatError","loadKetQuaKhaoSatChiTietStart","LOAD_KET_QUA_KHAO_SAT_CHI_TIET","loadKetQuaKhaoSatChiTietSuccess","loadKetQuaKhaoSatChiTietError","loadResultDetailStart","sis_form_khaosat_result_id","LOAD_RESULT_DETAIL","loadResultDetailSuccess","loadResultDetailError","deleteStart","ids","deleteSuccess","deleteError","saveStart","SAVE","saveSuccess","saveError","pushNotifyStart","PUSH_NOTIFY","pushNotifySuccess","pushNotifyError","showModal","show","SHOW_MODAL","changeDetail","CHANGE_DETAIL","showConfirm","SHOW_CONFIRM","changeSelectedIds","CHANGE_SELECTED_IDS","clearStatus","CLEAR_STATUS","formKhaoSatActions","formKhaoSatActionTypes","formKhaoSatEditorActions","formKhaoSatEditorActionTypes","loadByFormStart","LOAD_BY_FORM","loadByFormSuccess","loadByFormError","loadEdItorTypeStart","LOAD_EDITOR_TYPE","loadEdItorTypeSuccess","loadEdItorTypeError","updateSelectOptionsStart","UPDATE_SELECT_OPTIONS","updateSelectOptionsSuccess","updateSelectOptionsError","yeuCauHoTro","khaoSat","formKhaoSat","formKhaoSatEditor","formKhaoSatItem","formKhaoSatItemActionTypes","additemsStart","ADD_ITEMS","additemsSuccess","additemsError","addeditorStart","ADD_EDITOR","addeditorSuccess","addeditorError","updateIdxStart","UPDATE_IDX","updateIdxSuccess","updateIdxError","SelectTruongKhoiHe","select_by_id","insert","update","remove","selectKhoiByTruong","update_khoi_by_truong_id","delete_khoi_by_truong_id","getScreenSize","screenSize","setScreenSize","onSizeChanged","useCallback","subscribe","unsubscribe","isMedium","isSmall","handlers","xSmallMedia","matchMedia","smallMedia","mediumMedia","largeMedia","media","addListener","e","matches","handler","push","isXSmall","NavigationContext","useNavigation","NavigationProvider","props","navigationData","setNavigationData","withNavigationWatcher","Component","match","currentPath","createElement"],"mappings":"wRAIaA,EAAU,CACrBC,OAAO,WAAD,4BAAE,iCAAAC,EAAA,6DAASC,EAAT,EAASA,WAAYC,EAArB,EAAqBA,KAArB,kBAEcC,IAAMC,KACtBC,IAAQC,QAAU,iBAClB,CACEL,aACAC,SANA,cAEEK,EAFF,yBASGA,EAAIC,MATP,yDAWG,CACLC,YAAY,IAZV,yDAAF,mDAAC,GAgBPC,QAAS,kBAAMC,IAAUP,KAAK,mBAC9BQ,QAAS,kBAAMD,IAAUP,KAAK,a,+DCF1BS,EAAUC,aAAS,kBAAMC,YAAU,8DADnB,OACwD,CAAEC,SAAU,kBAAC,IAAD,QAE1F,SAASC,IACL,MAA4BC,aAAY,SAAAC,GAAC,OAAIA,EAAEC,QAAvCC,EAAR,EAAQA,UAAWC,EAAnB,EAAmBA,KACbC,EAPC,IAAIC,gBAAgBC,cAAcC,QAQnCxB,EAAOqB,EAAMI,IAAI,QACjBC,EAAUL,EAAMI,IAAI,QACpB1B,EAAasB,EAAMI,IAAI,OACvBE,EAAWC,cACjBC,qBAAU,WACNC,MACD,IACHD,qBAAU,gBAEME,GAARX,IAEIA,EAAKY,GAAK,EACK,MAAXN,GAAmBA,GAAWN,EAAKY,IACnCL,EAASM,IAAYf,KAAKgB,eAGlB,MAARlC,GAA8B,MAAdD,EAChBoC,IAEAC,OAAOC,SAASC,KAAOC,IAASC,SAAW,kBAAoBJ,OAAOC,SAASI,OAAS,cAAgBF,IAASG,iBAI9H,CAACtB,EAAMrB,IACV,IAAMoC,EAAU,uCAAG,4BAAArC,EAAA,6DAEf6B,EAASM,IAAYf,KAAKyB,cAFX,SAGG/C,EAAQC,OAAO,CAAEE,aAAYC,SAHhC,QAGTK,EAHS,QAIPE,WACJoB,EAASM,IAAYf,KAAK0B,aAAavC,EAAIC,OAE3C8B,OAAOC,SAASC,KAAOC,IAASC,SAPrB,2CAAH,qDAUVV,EAAa,uCAAG,4BAAAhC,EAAA,6DAClB6B,EAASM,IAAYf,KAAK2B,gBADR,SAEAjD,EAAQY,UAFR,QAEZH,EAFY,QAGVE,WACJoB,EAASM,IAAYf,KAAK4B,eAAezC,EAAIC,OAE7CqB,EAASM,IAAYf,KAAK6B,gBANZ,2CAAH,qDAmBnB,OACI,yCACahB,GAARX,GAAqB,kBAAC,IAAD,WACZW,GAARX,GAAgC,GAAXA,EAAKY,GAAW,kBAAC,IAAD,MAAgB,MAGrDb,GAAaC,GAAQA,EAAKY,GAAK,GAAK,kBAACrB,EAAD,OAMnC,qBACX,IAAMqC,EAAkBC,cAClBC,EAAc,IAAIC,cACxB,OACI,kBAAC,IAAD,KACI,kBAAC,IAAD,KACI,kBAAC,IAAD,KACI,kBAAC,sBAAD,CAAqBC,OAAQF,GACzB,yBAAKG,UAAS,cAASL,IACnB,kBAACjC,EAAD,a,0NChGfuC,EACE,kBAAM7C,IAAUgB,IAAV,e,4BCIR8B,EAAgBC,wBAAc,MAC9BC,EAAa,CACxBC,IAAK,MACLC,KAAM,OACNC,IAAK,MACLC,OAAQ,UAmGGC,GAjGE,gBAAmB,IAAhBC,EAAe,EAAfA,SACVpC,EAAWC,cACTR,EAASJ,aAAY,SAACC,GAAD,OAAOA,EAAEC,QAA9BE,KACR,EAAoC4C,IAAMC,SAAS,IAAIC,KAAvD,mBAAOC,EAAP,KAAmBC,EAAnB,KAOMC,GALcC,cAAZC,QAKU,SAACC,GACjB,MAA8B,OAA1BC,aAAaC,UAEXP,EAAWQ,IAAIH,GACVL,EAAW1C,IAAI+C,GAKjBA,IAILI,EAAYC,mBAAQ,WACxB,GAAIzD,GAAQA,EAAK0D,MAAO,CACtB,IAAIC,EAOJ,OANAA,EAAQ3D,EAAK0D,MAAME,KAAI,SAACC,GAItB,OAHIA,EAAKC,OAAS,MAAMC,KAAKF,EAAKC,QAChCD,EAAKC,KAAL,WAAgBD,EAAKC,OAEhB,eAAKD,MAEP,YAMFF,GAGL,MAAO,KAER,CAAC3D,IACJS,qBAAU,WACJT,GAAQA,EAAKY,GAAK,IACpBoD,IACAC,OAED,CAACjE,IACJ,IAAMgE,EAAkB,uCAAG,gCAAAtF,EAAA,6DACnBwF,EAAgBlE,EAAKmE,OAASnE,EAAKmE,OAAOP,KAAI,SAAC/D,GAAD,OAAOA,EAAEe,MAAM,GAD1C,SAEPwD,IAAUC,YAFH,QAEnBpF,EAFmB,QAGjBE,aACAmF,EAAarF,EAAIC,KAAKqF,QAAO,SAAC1E,GAAD,OAAOqE,EAAcM,SAAS3E,EAAEe,OACnEL,EAAS,CAAEkE,KAAMC,IAAkBC,KAAKC,OAAQC,QAASP,KALlC,2CAAH,qDAgBlBL,EAAsB,uCAAG,8BAAAvF,EAAA,sEACXwD,IADW,QACvBjD,EADuB,QAErBE,aACF2F,EAAiB,IAAIhC,IACzB7D,EAAIC,KAAK6F,SAAQ,SAACC,GAChBF,EAAeG,IAAID,EAAQE,GAAIF,EAAQG,OAEzCnC,EAAc8B,IAPa,2CAAH,qDAkBtBM,EAAQ,CACZ5B,YACAP,YACAoC,WAhFiB,WACf,OAAOC,eAgFTC,WAXiB,SAAC,GAIb,IAHLC,EAGI,EAHJA,KAGI,IAFJf,YAEI,MAFG,EAEH,MADJgB,YACI,MADG,IACH,EACJC,YAAOzC,EAAUuC,GAAOf,EAAMgB,IAO9BE,YA/BkB,SAACC,EAAKC,GACxB,OAAO,GA+BPvB,WAAY,IAGd,OACE,kBAACnC,EAAc2D,SAAf,CAAwBC,MAAOX,GAAQzC,IAGX,kBAAMqD,qBAAW7D,M,0MC3G3C8D,EAAe,WACjB,OAAO,IAAIC,SAAQ,SAAAC,GACfC,WAAU,sBAAC,4BAAA1H,EAAA,sEACWG,IAAMC,KAAN,UAAcuH,IAAWjF,SAAzB,gCAAiE,CAC/EkF,aAAcjD,aAAaiD,aAC3BC,cAAelD,aAAakD,gBAC7BC,OAAM,WACLL,EAAQ,OALL,QACDlH,EADC,QAQCC,KAAKC,WACTgH,EAAQlH,EAAIC,KAAKuH,SAEjBN,EAAQ,IAXL,2CAcR,SAKPO,EAAsB,KACpBC,EAAsB,WACxB,IACI,IAAMzH,EAAO0H,YAAWvD,aAAaiD,cACrC,GAAIjD,aAAaiD,cAAgBpH,EAAM,CACnC,IAAM2H,EAAM3H,EAAK2H,IACjB,GAAIC,SAASD,GAAOE,KAAKC,MAAMC,KAAKC,MAAQ,KACxC,OAAO,EAGf,OAAO,EACT,MAAOC,GACL,OAAO,IAGTC,EAAkB,uCAAG,gCAAA1I,EAAA,6DACvBgI,EAAsBA,GAEhBT,IAHiB,SAKCS,EALD,OAKjBW,EALiB,OAMvBX,EAAsB,KACL,IAAbW,GACArG,OAAOC,SAASqG,SAEdC,EAAmBF,EAAUG,MAAM,KAAK,GACxCC,EAAoBJ,EAAUG,MAAM,KAAK,GAC/CnE,aAAaiD,aAAeiB,EAC5BlE,aAAakD,cAAgBkB,EAbN,4CAAH,qDAelBC,EAAkB,WAIpB,MAHe,CACXC,QAAS,CAAEC,cAAc,UAAD,OAAYvE,aAAaiD,iBAMlD,SAAeuB,EAAtB,oC,4CAAO,WAA6BC,EAAKC,GAAlC,uBAAArJ,EAAA,mEAEwBiI,IAFxB,wBAIKD,EAAsBA,GAEhBT,IANX,SAQ6BS,EAR7B,OAQWW,EARX,OASKX,EAAsB,KACL,IAAbW,GACArG,OAAOC,SAASqG,SAEdC,EAAmBF,EAAUG,MAAM,KAAK,GACxCC,EAAoBJ,EAAUG,MAAM,KAAK,GAC/CnE,aAAaiD,aAAeiB,EAC5BlE,aAAakD,cAAgBkB,EAhBlC,eAoBOO,EAAS,CAEXL,QAAS,CAAEC,cAAc,UAAD,OAAYvE,aAAaiD,gBAtBtD,UAwBmBzH,IAAMC,KAAKgJ,EAAKC,EAAWC,GAAQxB,OAAM,SAACW,GAC3B,KAAzBA,EAAMc,SAASC,QAAkBJ,EAAItD,SAAS,qBAC9CxD,OAAOC,SAASqG,YA1BzB,WA6BoB,OALbrI,EAxBP,QA6BSiJ,OA7BT,0CA6BgCjJ,EAAIC,MA7BpC,iCA8BQ,CACHC,YAAY,EACZsH,QAASxH,EAAIiJ,SAhClB,2DAmCQ,CACH/I,YAAY,EACZsH,QAAQ,EAAD,KArCZ,2D,sBA0CA,SAAe0B,EAAtB,kC,4CAAO,WAA4BL,GAA5B,yBAAApJ,EAAA,mEAEwBiI,IAFxB,wBAIKD,EAAsBA,GAEhBT,IANX,SAQ6BS,EAR7B,UAQWW,EARX,OASKX,EAAsB,KACL,IAAbW,EAVT,0CAWgB,CACHlI,YAAY,EACZsH,QAAS,mBAbtB,QAgBWc,EAAmBF,EAAUG,MAAM,KAAK,GACxCC,EAAoBJ,EAAUG,MAAM,KAAK,GAC/CnE,aAAaiD,aAAeiB,EAC5BlE,aAAakD,cAAgBkB,EAnBlC,eAuBOO,EAAS,CACXL,QAAS,CAAEC,cAAc,UAAD,OAAYvE,aAAaiD,gBAxBtD,UA0BmBzH,IAAMwB,IAAIyH,EAAKE,GA1BlC,WA2BoB,OADb/I,EA1BP,QA2BSiJ,OA3BT,wBA4BShJ,EAAOD,EAAIC,KA5BpB,kBA6BYA,GA7BZ,iCAiCY,CACHC,YAAY,EACZsH,QAASxH,EAAIiJ,SAnCtB,mFAuCQ,CACH/I,YAAY,EACZsH,QAAQ,EAAD,KAzCZ,2D,sBA8CP,IAAMnE,EAAG,uCAAG,WAAOwF,EAAKM,GAAZ,mBAAA1J,EAAA,mEAEA0J,EAFA,oBAGuBzB,IAHvB,gCAKUS,IALV,cAQEY,EAASN,IARX,SASc7I,IAAMwB,IAAIyH,EAAKE,GAAQxB,OAAM,SAACW,GAAW,IAAD,MACtD,MAAO,CACHhI,YAAY,EACZsH,QAAO,iBAAEU,QAAF,IAAEA,GAAF,UAAEA,EAAOc,gBAAT,iBAAE,EAAiB/I,YAAnB,aAAE,EAAuBuH,eAAzB,QAAoC,QAC3CyB,OAAQf,EAAMc,SAASC,WAb3B,UAgBe,OAPbjJ,EATF,QAgBIiJ,OAhBJ,0CAgB2BjJ,EAAIC,MAhB/B,iCAiBG,CACHC,YAAY,EACZsH,QAAO,UAAExH,EAAIwH,eAAN,QAAiB,KAnBxB,2DAsBG,CACHtH,YAAY,EACZsH,QAAQ,EAAD,KAxBP,0DAAH,wDA4BHlE,EAAI,uCAAG,WAAOuF,EAAK5I,EAAMkJ,GAAlB,mBAAA1J,EAAA,mEAED0J,EAFC,oBAGsBzB,IAHtB,gCAKSS,IALT,cAQCY,EAASN,IARV,SASa7I,IAAMC,KAAKgJ,EAAK5I,EAAM8I,GAAQxB,OAAM,SAACW,GAI7C,IAAD,MAHL,GAA6B,KAAzBA,EAAMc,SAASC,QAAkBJ,EAAItD,SAAS,sBAI9C,MAAO,CACHrF,YAAY,EACZsH,QAAO,iBAAEU,QAAF,IAAEA,GAAF,UAAEA,EAAOc,gBAAT,iBAAE,EAAiB/I,YAAnB,aAAE,EAAuBuH,eAAzB,QAAoC,QAC3CyB,OAAQf,EAAMc,SAASC,QAN3BlH,OAAOC,SAASqG,YAXnB,YASCrI,EATD,SAsBqB,MAAfA,EAAIiJ,OAtBV,0CAsBiCjJ,EAAIC,MAtBrC,iCAuBE,CACHC,YAAY,EACZsH,QAAO,UAAExH,EAAIwH,eAAN,QAAiB,KAzBvB,2DA4BE,CACHtH,YAAY,EACZsH,QAAS4B,KAAKC,UAAL,QA9BR,0DAAH,0DAkCJ9F,EAAG,uCAAG,WAAOsF,EAAK5I,EAAMkJ,GAAlB,mBAAA1J,EAAA,mEAEA0J,EAFA,oBAGuBzB,IAHvB,gCAKUS,IALV,cAQEY,EAASN,IARX,SASc7I,IAAM0J,IAAIT,EAAK5I,EAAM8I,GAAQxB,OAAM,SAACW,GAAW,IAAD,MAC5D,MAAO,CACHhI,YAAY,EACZsH,QAAO,iBAAEU,QAAF,IAAEA,GAAF,UAAEA,EAAOc,gBAAT,iBAAE,EAAiB/I,YAAnB,aAAE,EAAuBuH,eAAzB,QAAoC,QAC3CyB,OAAQf,EAAMc,SAASC,WAb3B,UAgBe,OAPbjJ,EATF,QAgBIiJ,OAhBJ,0CAgB2BjJ,EAAIC,MAhB/B,iCAiBG,CACHC,YAAY,EACZsH,QAAO,UAAExH,EAAIwH,eAAN,QAAiB,KAnBxB,2DAsBG,CACHtH,YAAY,EACZsH,QAAQ,EAAD,KAxBP,0DAAH,0DA4BHhE,EAAM,uCAAG,WAAOqF,EAAKM,GAAZ,mBAAA1J,EAAA,mEAEH0J,EAFG,oBAGoBzB,IAHpB,gCAKOS,IALP,cAQDY,EAASN,IARR,SASW7I,IAAM2J,OAAOV,EAAKE,GAAQxB,OAAM,SAACW,GAAW,IAAD,MACzD,MAAO,CACHhI,YAAY,EACZsH,QAAO,iBAAEU,QAAF,IAAEA,GAAF,UAAEA,EAAOc,gBAAT,iBAAE,EAAiB/I,YAAnB,aAAE,EAAuBuH,eAAzB,QAAoC,QAC3CyB,OAAQf,EAAMc,SAASC,WAbxB,UAgBY,OAPbjJ,EATC,QAgBCiJ,OAhBD,0CAgBwBjJ,EAAIC,MAhB5B,iCAiBA,CACHC,YAAY,EACZsH,QAAO,UAAExH,EAAIwH,eAAN,QAAiB,KAnBrB,2DAsBA,CACHtH,YAAY,EACZsH,QAAQ,EAAD,KAxBJ,0DAAH,wDA4BNgC,EAAM,uCAAG,WAAOX,EAAK5I,EAAMkJ,GAAlB,mBAAA1J,EAAA,mEAEH0J,EAFG,oBAGoBzB,IAHpB,gCAKOS,IALP,cAQDY,EAASN,KACRC,QAAQ,gBAAkB,sBAT1B,UAUW9I,IAAMC,KAAKgJ,EAAK5I,EAAM8I,GAAQxB,OAAM,SAACW,GAI7C,IAAD,MAHL,GAA6B,KAAzBA,EAAMc,SAASC,QAAkBJ,EAAItD,SAAS,sBAI9C,MAAO,CACHrF,YAAY,EACZsH,QAAO,iBAAEU,QAAF,IAAEA,GAAF,UAAEA,EAAOc,gBAAT,iBAAE,EAAiB/I,YAAnB,aAAE,EAAuBuH,eAAzB,QAAoC,QAC3CyB,OAAQf,EAAMc,SAASC,QAN3BlH,OAAOC,SAASqG,YAZjB,aAUDrI,EAVC,SAuBmB,MAAfA,EAAIiJ,OAvBR,0CAuB+BjJ,EAAIC,MAvBnC,iCAwBA,CACHC,YAAY,EACZsH,QAAO,UAAExH,EAAIwH,eAAN,QAAiB,KA1BrB,2DAuCA,CACHtH,YAAY,EACZsH,QAAS4B,KAAKC,UAAL,QAzCN,0DAAH,0DA+CCjJ,EAAY,CACrBgB,IAAK,SAACyD,GAAD,OAAUxB,EAAIvD,IAAQC,QAAU,IAAM8E,IAC3ChF,KAAM,SAACgF,EAAM5E,GAAP,OAAgBqD,EAAKxD,IAAQC,QAAU,IAAM8E,EAAM5E,IACzDqJ,IAAK,SAACzE,EAAM5E,GAAP,OAAgBsD,EAAIzD,IAAQC,QAAU,IAAM8E,EAAM5E,IACvDsJ,OAAQ,SAAC1E,GAAD,OAAUrB,EAAO1D,IAAQC,QAAU,IAAM8E,IACjD4E,OAAQ,SAAC5E,EAAM5E,GAAP,OAAgBuJ,EAAO1J,IAAQC,QAAU,IAAM8E,EAAM5E,IAC7DyJ,qBAAsB,SAAC7E,GAAD,OAAUxB,EAAIvD,IAAQC,QAAU,IAAM8E,GAAM,IAClE8E,sBAAuB,SAAC9E,EAAM5E,GAAP,OAAgBqD,EAAKxD,IAAQC,QAAU,IAAM8E,EAAM5E,GAAM,IAChF2J,qBAAsB,SAAC/E,EAAM5E,GAAP,OAAgBsD,EAAIzD,IAAQC,QAAU,IAAM8E,EAAM5E,GAAM,IAC9E4J,wBAAyB,SAAChF,GAAD,OAAUrB,EAAO1D,IAAQC,QAAU,IAAM8E,GAAM,M,uCCtU7D,KACXiF,MAAO,8CACP/J,QAASgK,6CACT5H,SAAU4H,2CACVC,aAAcD,yCACd1H,cAAe,EACf4H,2BAA2B,UAAAF,uTAAYG,iCAAZ,eAAuCC,aAAc,K,gFCJvEC,EAAc,CACvB9H,WAAY,iBAAO,CAAEkD,KAAM6E,IAAgBC,MAAMC,QACjDhI,aAAc,SAACtC,GAAD,MAAW,CAAEuF,KAAM6E,IAAgBC,MAAM3E,OAAQC,QAAS3F,IACxEuK,WAAY,SAACtC,GAAD,MAAY,CAAE1C,KAAM6E,IAAgBC,MAAMG,MAAO7E,QAASsC,IAEtE1F,aAAc,iBAAO,CAAEgD,KAAM6E,IAAgBK,SAASH,QACtD9H,eAAgB,SAACxC,GAAD,MAAW,CAAEuF,KAAM6E,IAAgBK,SAAS/E,OAAQC,QAAS3F,IAC7EyC,aAAc,iBAAO,CAAE8C,KAAM6E,IAAgBK,SAASD,QAEtD5I,YAAa,iBAAO,CAAE2D,KAAM6E,IAAgBM,OAAOJ,S,SCV1CK,EAAqB,CAC9BC,gBAAiB,SAACC,GAAD,MAAc,CAAEtF,KAAMuF,IAAuBC,YAAYT,QAC1EU,kBAAmB,SAAChL,GAAD,MAAW,CAAEuF,KAAMuF,IAAuBC,YAAYE,QAAStF,QAAS3F,IAC3FkL,gBAAiB,SAACjD,GAAD,MAAY,CAAE1C,KAAMuF,IAAuBC,YAAYP,MAAO7E,QAASsC,IAExFkD,gBAAiB,SAACzJ,GAAD,MAAS,CAAE6D,KAAMuF,IAAuBM,YAAYd,QACrEe,kBAAmB,SAACrL,GAAD,MAAW,CAAEuF,KAAMuF,IAAuBM,YAAYH,QAAStF,QAAS3F,IAC3FsL,gBAAiB,iBAAO,CAAE/F,KAAMuF,IAAuBM,YAAYZ,QAEnEe,mBAAoB,SAACvL,GAAD,MAAW,CAAEuF,KAAMuF,IAAuBU,eAAelB,QAC7EmB,qBAAsB,SAACzL,GAAD,MAAW,CAAEuF,KAAMuF,IAAuBU,eAAeP,QAAStF,QAAS3F,IACjG0L,mBAAoB,iBAAO,CAAEnG,KAAMuF,IAAuBU,eAAehB,QAEzEmB,aAAc,SAAC3L,GAAD,MAAW,CAAEuF,KAAMuF,IAAuBc,cAAejG,QAAS3F,K,SCZvE6L,EAAiB,CAC1BC,UAAW,iBAAO,CAAEvG,KAAMwG,IAAmBtG,KAAK6E,QAClD0B,YAAa,SAAChM,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBtG,KAAKwF,QAAStF,QAAS3F,IAC1EiM,UAAW,SAAChE,GAAD,MAAY,CAAE1C,KAAMwG,IAAmBtG,KAAK+E,MAAO7E,QAASsC,IAEvEiE,kBAAmB,SAACC,EAAcC,GAAf,MAA4B,CAAE7G,KAAMwG,IAAmBM,eAAe/B,QACzFgC,oBAAqB,SAACtM,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBM,eAAepB,QAAStF,QAAS3F,IAC5FuM,kBAAmB,iBAAO,CAAEhH,KAAMwG,IAAmBM,eAAe7B,QAEpEgC,wBAAyB,SAACL,EAAcM,EAAgBL,GAA/B,MAA4C,CAAE7G,KAAMwG,IAAmBW,sBAAsBpC,QACtHqC,0BAA2B,SAAC3M,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBW,sBAAsBzB,QAAStF,QAAS3F,IACzG4M,wBAAyB,iBAAO,CAAErH,KAAMwG,IAAmBW,sBAAsBlC,QAEjFqC,uBAAwB,SAACJ,GAAD,MAAqB,CAAElH,KAAMwG,IAAmBe,sBAAsBxC,QAC9FyC,yBAA0B,SAAC/M,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBe,sBAAsB7B,QAAStF,QAAS3F,IACxGgN,uBAAwB,SAAC/E,GAAD,MAAY,CAAE1C,KAAMwG,IAAmBe,sBAAsBtC,MAAO7E,QAASsC,IAErGgF,8BAA+B,SAACR,GAAD,MAAqB,CAAElH,KAAMwG,IAAmBmB,+BAA+B5C,QAC9G6C,gCAAiC,SAACnN,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBmB,+BAA+BjC,QAAStF,QAAS3F,IACxHoN,8BAA+B,SAACnF,GAAD,MAAY,CAAE1C,KAAMwG,IAAmBmB,+BAA+B1C,MAAO7E,QAASsC,IAErHoF,sBAAuB,SAACC,GAAD,MAAiC,CAAE/H,KAAMwG,IAAmBwB,mBAAmBjD,QACtGkD,wBAAyB,SAACxN,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBwB,mBAAmBtC,QAAStF,QAAS3F,IACpGyN,sBAAuB,SAACxF,GAAD,MAAY,CAAE1C,KAAMwG,IAAmBwB,mBAAmB/C,MAAO7E,QAASsC,IAEjGyF,YAAa,SAACC,GAAD,MAAU,CAAEpI,KAAMwG,IAAmBxI,OAAO+G,QACzDsD,cAAe,SAAC5N,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBxI,OAAO0H,QAAStF,QAAS3F,IAC9E6N,YAAa,SAAC5F,GAAD,MAAY,CAAE1C,KAAMwG,IAAmBxI,OAAOiH,MAAO7E,QAASsC,IAE3E6F,UAAW,SAAC9N,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBgC,KAAKzD,QACtD0D,YAAa,SAAChO,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBgC,KAAK9C,QAAStF,QAAS3F,IAC1EiO,UAAW,SAAChG,GAAD,MAAY,CAAE1C,KAAMwG,IAAmBgC,KAAKvD,MAAO7E,QAASsC,IAEvEiG,gBAAiB,SAAClO,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBoC,YAAY7D,QACnE8D,kBAAmB,SAACpO,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBoC,YAAYlD,QAAStF,QAAS3F,IACvFqO,gBAAiB,SAACpG,GAAD,MAAY,CAAE1C,KAAMwG,IAAmBoC,YAAY3D,MAAO7E,QAASsC,IAEpFqG,UAAW,SAACC,GAAD,MAAW,CAAEhJ,KAAMwG,IAAmByC,WAAY7I,QAAS4I,IACtEE,aAAc,SAACzO,GAAD,MAAW,CAAEuF,KAAMwG,IAAmB2C,cAAe/I,QAAS3F,IAC5E2O,YAAa,SAACJ,GAAD,MAAW,CAAEhJ,KAAMwG,IAAmB6C,aAAcjJ,QAAS4I,IAC1EM,kBAAmB,SAAC7O,GAAD,MAAW,CAAEuF,KAAMwG,IAAmB+C,oBAAqBnJ,QAAS3F,IACvF+O,YAAa,iBAAO,CAAExJ,KAAMwG,IAAmBiD,eAC/CrD,aAAc,SAAC3L,GAAD,MAAW,CAAEuF,KAAMwG,IAAmBH,cAAejG,QAAS3F,K,SC1CnEiP,EAAqB,CAC9BnD,UAAW,iBAAO,CAAEvG,KAAM2J,IAAuBzJ,KAAK6E,QACtD0B,YAAa,SAAChM,GAAD,MAAW,CAAEuF,KAAM2J,IAAuBzJ,KAAKwF,QAAStF,QAAS3F,IAC9EiM,UAAW,SAAChE,GAAD,MAAY,CAAE1C,KAAM2J,IAAuBzJ,KAAK+E,MAAO7E,QAASsC,IAE3EiE,kBAAmB,SAACC,EAAcC,GAAf,MAA4B,CAAE7G,KAAM2J,IAAuB7C,eAAe/B,QAC7FgC,oBAAqB,SAACtM,GAAD,MAAW,CAAEuF,KAAM2J,IAAuB7C,eAAepB,QAAStF,QAAS3F,IAChGuM,kBAAmB,iBAAO,CAAEhH,KAAM2J,IAAuB7C,eAAe7B,QAExEkD,YAAa,SAACC,GAAD,MAAU,CAAEpI,KAAM2J,IAAuB3L,OAAO+G,MAAO3E,QAASgI,IAC7EC,cAAe,SAAC5N,GAAD,MAAW,CAAEuF,KAAM2J,IAAuB3L,OAAO0H,QAAStF,QAAS3F,IAClF6N,YAAa,SAAC5F,GAAD,MAAY,CAAE1C,KAAM2J,IAAuB3L,OAAOiH,MAAO7E,QAASsC,IAE/E6F,UAAW,SAAC9N,GAAD,MAAW,CAAEuF,KAAM2J,IAAuBnB,KAAKzD,MAAO3E,QAAS3F,IAC1EgO,YAAa,SAAChO,GAAD,MAAW,CAAEuF,KAAM2J,IAAuBnB,KAAK9C,QAAStF,QAAS3F,IAC9EiO,UAAW,SAAChG,GAAD,MAAY,CAAE1C,KAAM2J,IAAuBnB,KAAKvD,MAAO7E,QAASsC,IAE3EqG,UAAW,SAACC,GAAD,MAAW,CAAEhJ,KAAM2J,IAAuBV,WAAa7I,QAAS4I,IAC3EE,aAAc,SAACzO,GAAD,MAAW,CAAEuF,KAAM2J,IAAuBR,cAAe/I,QAAS3F,IAChF2O,YAAa,SAACJ,GAAD,MAAW,CAAEhJ,KAAM2J,IAAuBN,aAAejJ,QAAS4I,IAC/EM,kBAAmB,SAAC7O,GAAD,MAAW,CAAEuF,KAAM2J,IAAuBJ,oBAAqBnJ,QAAS3F,IAC3F+O,YAAa,iBAAO,CAAExJ,KAAM2J,IAAuBF,eACnDrD,aAAc,SAAC3L,GAAD,MAAW,CAAEuF,KAAM2J,IAAuBtD,cAAejG,QAAS3F,K,SCtBvEmP,EAA2B,CACpCrD,UAAW,iBAAO,CAAEvG,KAAM6J,IAA6B3J,KAAK6E,QAC5D0B,YAAa,SAAChM,GAAD,MAAW,CAAEuF,KAAM6J,IAA6B3J,KAAKwF,QAAStF,QAAS3F,IACpFiM,UAAW,SAAChE,GAAD,MAAY,CAAE1C,KAAM6J,IAA6B3J,KAAK+E,MAAO7E,QAASsC,IAEjFoH,gBAAiB,SAAClD,GAAD,MAAmB,CAAE5G,KAAM6J,IAA6BE,aAAahF,QACtFiF,kBAAmB,SAACvP,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BE,aAAarE,QAAStF,QAAS3F,IAClGwP,gBAAiB,iBAAO,CAAEjK,KAAM6J,IAA6BE,aAAa9E,QAE1EiF,oBAAqB,iBAAO,CAAElK,KAAM6J,IAA6BM,iBAAiBpF,QAClFqF,sBAAuB,SAAC3P,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BM,iBAAiBzE,QAAStF,QAAS3F,IAC1G4P,oBAAqB,iBAAO,CAAErK,KAAM6J,IAA6BM,iBAAiBlF,QAElFkD,YAAa,SAACC,GAAD,MAAU,CAAEpI,KAAM6J,IAA6B7L,OAAO+G,QACnEsD,cAAe,SAAC5N,GAAD,MAAW,CAAEuF,KAAM6J,IAA6B7L,OAAO0H,QAAStF,QAAS3F,IACxF6N,YAAa,SAAC5F,GAAD,MAAY,CAAE1C,KAAM6J,IAA6B7L,OAAOiH,MAAO7E,QAASsC,IAErF6F,UAAW,SAAC9N,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BrB,KAAKzD,QAChE0D,YAAa,SAAChO,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BrB,KAAK9C,QAAStF,QAAS3F,IACpFiO,UAAW,SAAChG,GAAD,MAAY,CAAE1C,KAAM6J,IAA6BrB,KAAKvD,MAAO7E,QAASsC,IAEjF4H,yBAA0B,SAAC7P,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BU,sBAAsBxF,QAChGyF,2BAA4B,SAAC/P,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BU,sBAAsB7E,QAAStF,QAAS3F,IACpHgQ,yBAA0B,SAAC/H,GAAD,MAAY,CAAE1C,KAAM6J,IAA6BU,sBAAsBtF,MAAO7E,QAASsC,IAEjHqG,UAAW,SAACC,GAAD,MAAW,CAAEhJ,KAAM6J,IAA6BZ,WAAa7I,QAAS4I,IACjFE,aAAc,SAACzO,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BV,cAAe/I,QAAS3F,IACtF2O,YAAa,SAACJ,GAAD,MAAW,CAAEhJ,KAAM6J,IAA6BR,aAAcjJ,QAAS4I,IACpFM,kBAAmB,SAAC7O,GAAD,MAAW,CAAEuF,KAAM6J,IAA6BN,oBAAqBnJ,QAAS3F,IACjG+O,YAAa,iBAAO,CAAExJ,KAAM6J,IAA6BJ,gB,SCxBhDrN,EAAc,CACvBf,KAAMuJ,EACN8F,YAAatF,EACbuF,QAASrE,EACTsE,YAAalB,EACbmB,kBAAmBjB,EACnBkB,gBCXkC,CAClCvE,UAAW,iBAAO,CAAEvG,KAAM+K,IAA2B7K,KAAK6E,QAC1D0B,YAAa,SAAChM,GAAD,MAAW,CAAEuF,KAAM+K,IAA2B7K,KAAKwF,QAAStF,QAAS3F,IAClFiM,UAAW,SAAChE,GAAD,MAAY,CAAE1C,KAAM+K,IAA2B7K,KAAK+E,MAAO7E,QAASsC,IAE/EoH,gBAAiB,SAAClD,GAAD,MAAmB,CAAE5G,KAAM+K,IAA2BhB,aAAahF,QACpFiF,kBAAmB,SAACvP,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BhB,aAAarE,QAAStF,QAAS3F,IAChGwP,gBAAiB,iBAAO,CAAEjK,KAAM+K,IAA2BhB,aAAa9E,QAGxEkD,YAAa,SAACC,GAAD,MAAU,CAAEpI,KAAM+K,IAA2B/M,OAAO+G,MAAO3E,QAASgI,IACjFC,cAAe,SAAC5N,GAAD,MAAW,CAAEuF,KAAM+K,IAA2B/M,OAAO0H,QAAStF,QAAS3F,IACtF6N,YAAa,SAAC5F,GAAD,MAAY,CAAE1C,KAAM+K,IAA2B/M,OAAOiH,MAAO7E,QAASsC,IAEnF6F,UAAW,SAAC9N,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BvC,KAAKzD,MAAO3E,QAAS3F,IAC9EgO,YAAa,SAAChO,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BvC,KAAK9C,QAAStF,QAAS3F,IAClFiO,UAAW,SAAChG,GAAD,MAAY,CAAE1C,KAAM+K,IAA2BvC,KAAKvD,MAAO7E,QAASsC,IAE/EsI,cAAe,SAACvQ,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BE,UAAUlG,MAAO3E,QAAS3F,IACvFyQ,gBAAiB,SAACzQ,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BE,UAAUvF,QAAStF,QAAS3F,IAC3F0Q,cAAe,iBAAO,CAAEnL,KAAM+K,IAA2BE,UAAUhG,QAEnEmG,eAAgB,SAAC3Q,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BM,WAAWtG,QACzEuG,iBAAkB,SAAC7Q,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BM,WAAW3F,QAAStF,QAAS3F,IAC7F8Q,eAAgB,SAAC7I,GAAD,MAAY,CAAE1C,KAAM+K,IAA2BM,WAAWpG,MAAO7E,QAASsC,IAE1F8I,eAAgB,SAAC/Q,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BU,WAAW1G,MAAO3E,QAAS3F,IACzFiR,iBAAkB,SAACjR,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BU,WAAW/F,QAAStF,QAAS3F,IAC7FkR,eAAgB,SAACjJ,GAAD,MAAY,CAAE1C,KAAM+K,IAA2BU,WAAWxG,MAAO7E,QAASsC,IAE1FqG,UAAW,SAACC,GAAD,MAAW,CAAEhJ,KAAM+K,IAA2B9B,WAAY7I,QAAS4I,IAC9EE,aAAc,SAACzO,GAAD,MAAW,CAAEuF,KAAM+K,IAA2B5B,cAAe/I,QAAS3F,IACpF2O,YAAa,SAACJ,GAAD,MAAW,CAAEhJ,KAAM+K,IAA2B1B,aAAejJ,QAAS4I,IACnFM,kBAAmB,SAAC7O,GAAD,MAAW,CAAEuF,KAAM+K,IAA2BxB,oBAAqBnJ,QAAS3F,IAC/F+O,YAAa,iBAAO,CAAExJ,KAAM+K,IAA2BtB,eACvDrD,aAAc,SAAC3L,GAAD,MAAW,CAAEuF,KAAM+K,IAA2B1E,cAAejG,QAAS3F,O,iCCrCxF,+CAGakF,EAAY,CACrBC,UAAW,kBAAMhF,IAAUgB,IAAI,WAC/BgQ,mBAAoB,kBAAMhR,IAAUgB,IAAI,mBACxCiQ,aAAc,SAAC1P,GAAD,OAAQvB,IAAUgB,IAAV,UAJQ,SAIR,YAAuCO,KAC7D2P,OAAQ,SAACrR,GAAD,OAAUG,IAAUP,KALE,SAKuBI,IACrDsR,OAAS,SAACtR,GAAD,OAAUG,IAAUkJ,IANC,SAMuBrJ,IACrDuR,OAAQ,SAAC7P,GAAD,OAAQvB,IAAUmJ,OAAV,UAPc,SAOd,YAA0C5H,KAC1D8P,mBAAoB,SAACrF,GAAD,OAAkBhM,IAAUgB,IAAV,iBAAwBgL,EAAxB,WACtCsF,yBAA0B,SAACzR,GAAD,OAAUG,IAAUP,KAAV,qBAAoCI,IACxE0R,yBAA0B,SAAC1R,GAAD,OAAUG,IAAUP,KAAV,qBAAoCI,M,yHCV/DgE,EAAgB,WAC3B,MAAoCL,mBAASgO,KAA7C,mBAAOC,EAAP,KAAmBC,EAAnB,KACMC,EAAgBC,uBAAY,WAChCF,EAAcF,OACb,IAUH,OARApQ,qBAAU,WAGR,OAFAyQ,EAAUF,GAEH,WACLG,EAAYH,MAEb,CAACA,IAEGF,GAGIjP,EAAqB,WAChC,IAAMiP,EAAa5N,IAEnB,OAAI4N,EAAW3N,QACN,eAGL2N,EAAWM,SACN,gBAGLN,EAAWO,QACN,eAGF,kBAGLC,EAAW,GACTC,EAAcvQ,OAAOwQ,WAAW,yBAChCC,EAAazQ,OAAOwQ,WAAW,gDAC/BE,EAAc1Q,OAAOwQ,WAAW,iDAChCG,EAAa3Q,OAAOwQ,WAAW,uBAErC,CAACD,EAAaE,EAAYC,EAAaC,GAAY5M,SAAQ,SAAA6M,GACzDA,EAAMC,aAAY,SAACC,GACjBA,EAAEC,SAAWT,EAASvM,SAAQ,SAAAiN,GAAO,OAAIA,aAI7C,IAAMd,EAAY,SAAAc,GAAO,OAAIV,EAASW,KAAKD,IAErCb,EAAc,SAAAa,GAClBV,EAAWA,EAAS/M,QAAO,SAAAV,GAAI,OAAIA,IAASmO,MAG9C,SAASnB,IACP,MAAO,CACLqB,SAAUX,EAAYQ,QACtBV,QAASI,EAAWM,QACpBX,SAAUM,EAAYK,QACtB5O,QAASwO,EAAWI,W,oKC1DlBI,EAAoB/P,wBAAc,IAClCgQ,EAAgB,kBAAMpM,qBAAWmM,IAEvC,SAASE,EAAmBC,GAC1B,MAA4CzP,mBAAS,IAArD,mBAAO0P,EAAP,KAAuBC,EAAvB,KAEA,OACE,kBAACL,EAAkBrM,SAAnB,eACEC,MAAO,CAAEwM,iBAAgBC,sBACrBF,IAKV,SAASG,EAAsBC,GAC7B,OAAO,SAAUJ,GACf,IAAQxO,EAASwO,EAAMK,MAAf7O,KACA0O,EAAsBJ,IAAtBI,kBAMR,OAJA/R,qBAAU,WACR+R,EAAkB,CAAEI,YAAa9O,MAChC,CAACA,EAAM0O,IAEH5P,IAAMiQ,cAAcH,EAAWJ","file":"static/js/24.3da897bc.chunk.js","sourcesContent":["import axios from 'axios';\r\nimport appInfo from \"../app-info\";\r\nimport { apiHelper } from \"./api_helper\";\r\n\r\nexport const authApi = {\r\n signIn: async ({ ticket_key, hash }) => {\r\n try {\r\n const res = await axios.post(\r\n appInfo.api_url + '/account/login',\r\n {\r\n ticket_key,\r\n hash\r\n }\r\n );\r\n return res.data;\r\n } catch (error) {\r\n return {\r\n is_success: false\r\n }\r\n }\r\n },\r\n getUser: () => apiHelper.post('account/detail'),\r\n signOut: () => apiHelper.post('/logout')\r\n}","import 'devextreme/dist/css/dx.common.css';\r\nimport React, { useEffect } from 'react';\r\nimport { QueryClient, QueryClientProvider } from \"react-query\";\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { BrowserRouter as Router, useLocation } from 'react-router-dom';\r\n\r\nimport { authApi } from './api/auth';\r\nimport { LoaderApp } from './components/loader-page';\r\nimport StoreProvider from \"./contexts/common\";\r\nimport { NavigationProvider } from './contexts/navigation';\r\n\r\nimport pMinDelay from 'p-min-delay';\r\nimport app_info from './app-info';\r\nimport { Loadable } from './components/loadable';\r\nimport { rootActions } from './state/actions/rootAction';\r\nimport { useScreenSizeClass } from './utils/media-query';\r\nconst useQuery = () => {\r\n return new URLSearchParams(useLocation().search);\r\n}\r\nconst pMinDelayTime = 250;\r\nconst Content = Loadable(() => pMinDelay(import('./Content'), pMinDelayTime), { fallback: });\r\n\r\nfunction App() {\r\n const { isLoading, user } = useSelector(x => x.auth)\r\n const query = useQuery();\r\n const hash = query.get(\"hash\");\r\n const user_id = query.get(\"user\");\r\n const ticket_key = query.get(\"key\");\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n onGetUserInfo();\r\n }, [])\r\n useEffect(() => {\r\n //neu da lay user tu token\r\n if (user != undefined) {\r\n //neu da dang nhap nhung id khac nhau\r\n if (user.id > 0) {\r\n if (user_id != null && user_id != user.id) {\r\n dispatch(rootActions.auth.logoutStart())\r\n }\r\n } else {\r\n if (hash != null && ticket_key != null) {\r\n onLoginSSO();\r\n } else {\r\n window.location.href = app_info.home_url + \"/login?service=\" + window.location.origin + \"&system_id=\" + app_info.sub_system_id;\r\n }\r\n }\r\n }\r\n }, [user, ticket_key])\r\n const onLoginSSO = async () => {\r\n\r\n dispatch(rootActions.auth.loginStart())\r\n const res = await authApi.signIn({ ticket_key, hash });\r\n if (res.is_success) {\r\n dispatch(rootActions.auth.loginSuccess(res.data))\r\n } else {\r\n window.location.href = app_info.home_url\r\n }\r\n }\r\n const onGetUserInfo = async () => {\r\n dispatch(rootActions.auth.getUserStart());\r\n const res = await authApi.getUser();\r\n if (res.is_success) {\r\n dispatch(rootActions.auth.getUserSuccess(res.data));\r\n } else {\r\n dispatch(rootActions.auth.getUserError());\r\n }\r\n }\r\n \r\n // if (user == undefined) {\r\n // // chưa get user info\r\n // return (\r\n // \r\n // );\r\n\r\n // } else {\r\n\r\n // }\r\n return (\r\n <>\r\n {user == undefined && }\r\n {(user != undefined && user.id == 0) ? : null}\r\n {/* {isLoading && } */}\r\n {/* {isLoading && } */}\r\n {!isLoading && user && user.id > 0 && }\r\n >\r\n );\r\n}\r\n\r\n\r\nexport default function () {\r\n const screenSizeClass = useScreenSizeClass();\r\n const queryClient = new QueryClient();\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","import appInfo from \"../app-info\";\r\nimport { apiHelper } from \"./api_helper\";\r\n\r\nexport const tsDictionaryApi = {\r\n selectAll: () => apiHelper.get(`dictionary`),\r\n}","import notify from 'devextreme/ui/notify';\r\nimport React, { createContext, useContext, useEffect, useMemo } from 'react';\r\nimport { useDispatch, useSelector } from 'react-redux';\r\nimport { truongApi } from '../api/truongApi';\r\nimport { tsDictionaryApi } from '../api/tsDictionaryApi';\r\nimport { truongActionTypes } from '../state/reducers/truongReducer';\r\nimport { useScreenSize } from '../utils/media-query';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nexport const CommonContext = createContext(null);\r\nexport const HttpMethod = {\r\n GET: \"GET\",\r\n POST: \"POST\",\r\n PUT: \"PUT\",\r\n DELETE: \"DELETE\"\r\n}\r\nexport default ({ children }) => {\r\n const dispatch = useDispatch();\r\n const { user } = useSelector((x) => x.auth);\r\n const [dictionary, setDictionary] = React.useState(new Map());\r\n\r\n const { isLarge } = useScreenSize();\r\n \r\n const createUUID = () => {\r\n return uuidv4();\r\n };\r\n const translate = (key) => {\r\n if (localStorage.language === 'en') {\r\n // console.log(dictionary);\r\n if (dictionary.has(key)) {\r\n return dictionary.get(key);\r\n }\r\n\r\n return key;\r\n } else {\r\n return key;\r\n }\r\n };\r\n\r\n const menuItems = useMemo(() => {\r\n if (user && user.menus) {\r\n let items = [];\r\n items = user.menus.map((item) => {\r\n if (item.path && !/^\\//.test(item.path)) {\r\n item.path = `/${item.path}`;\r\n }\r\n return { ...item };\r\n });\r\n return [\r\n // {\r\n // name: translate('Trang chủ'),\r\n // path: '/home',\r\n // icon: 'fas fa-home',\r\n // },\r\n ...items,\r\n ];\r\n } else {\r\n return [];\r\n }\r\n }, [user]);\r\n useEffect(() => {\r\n if (user && user.id > 0) {\r\n handleReloadTruong();\r\n handleReloadDictionary();\r\n }\r\n }, [user]);\r\n const handleReloadTruong = async () => {\r\n const dm_truong_ids = user.campus ? user.campus.map((x) => x.id) : [];\r\n const res = await truongApi.SelectAll();\r\n if (res.is_success) {\r\n const dm_truongs = res.data.filter((x) => dm_truong_ids.includes(x.id));\r\n dispatch({ type: truongActionTypes.LOAD.SUCESS, payload: dm_truongs });\r\n }\r\n };\r\n const canAccessTo = (api, httpMethod) => {\r\n return true;\r\n return user.apis.find(\r\n (x) =>\r\n x.url.toUpperCase() === api.toUpperCase() ||\r\n x.url.toUpperCase() === ('api/' + api).toUpperCase()\r\n );\r\n };\r\n const handleReloadDictionary = async () => {\r\n const res = await tsDictionaryApi.selectAll();\r\n if (res.is_success) {\r\n let _dictionaryMap = new Map();\r\n res.data.forEach((element) => {\r\n _dictionaryMap.set(element.vn, element.en);\r\n });\r\n setDictionary(_dictionaryMap);\r\n }\r\n };\r\n\r\n const showNotify = ({\r\n text,\r\n type = 'info' | 'warning' | 'success' | 'error' | 'default',\r\n time = 3000,\r\n }) => {\r\n notify(translate(text), type, time);\r\n };\r\n const store = {\r\n menuItems,\r\n translate,\r\n createUUID,\r\n showNotify,\r\n canAccessTo,\r\n dm_truongs: [],\r\n };\r\n\r\n return (\r\n {children}\r\n );\r\n};\r\nexport const useCommonContext = () => useContext(CommonContext);\r\n","import axios from 'axios';\r\nimport app_config from '../app-info';\r\nimport jwt_decode from 'jwt-decode'\r\nimport appInfo from '../app-info';\r\n\r\nconst refreshToken = () => {\r\n return new Promise(resolve => {\r\n setTimeout(async () => {\r\n const res = await axios.post(`${app_config.home_url}/api/login/refresh_new_token`, {\r\n access_token: localStorage.access_token,\r\n refresh_token: localStorage.refresh_token\r\n }).catch(() => {\r\n resolve(\"\");\r\n });\r\n\r\n if (res.data.is_success) {\r\n resolve(res.data.message)\r\n } else {\r\n resolve(\"\");\r\n }\r\n\r\n }, 1000);\r\n });\r\n};\r\n\r\n\r\nlet refreshTokenRequest = null;\r\nconst CheckIsTokenExpired = () => {\r\n try {\r\n const data = jwt_decode(localStorage.access_token)\r\n if (localStorage.access_token && data) {\r\n const exp = data.exp;\r\n if (parseInt(exp) > Math.floor(Date.now() / 1000)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n } catch (error) {\r\n return false;\r\n }\r\n}\r\nconst handleRefreshToken = async () => {\r\n refreshTokenRequest = refreshTokenRequest\r\n ? refreshTokenRequest\r\n : refreshToken();\r\n\r\n const newTokens = await refreshTokenRequest;\r\n refreshTokenRequest = null;\r\n if (newTokens == \"\") {\r\n window.location.reload();\r\n }\r\n const new_access_token = newTokens.split(' ')[0];\r\n const new_refresh_token = newTokens.split(' ')[1];\r\n localStorage.access_token = new_access_token;\r\n localStorage.refresh_token = new_refresh_token;\r\n}\r\nconst handleGetConfig = () => {\r\n const config = {\r\n headers: { Authorization: `Bearer ${localStorage.access_token}` }\r\n }\r\n return config;\r\n}\r\n\r\n\r\nexport async function call_post_api(url, post_data) {\r\n try {\r\n const isTokenExpired = CheckIsTokenExpired();\r\n if (isTokenExpired) {\r\n refreshTokenRequest = refreshTokenRequest\r\n ? refreshTokenRequest\r\n : refreshToken(url);\r\n\r\n const newTokens = await refreshTokenRequest;\r\n refreshTokenRequest = null;\r\n if (newTokens == \"\") {\r\n window.location.reload();\r\n }\r\n const new_access_token = newTokens.split(' ')[0];\r\n const new_refresh_token = newTokens.split(' ')[1];\r\n localStorage.access_token = new_access_token;\r\n localStorage.refresh_token = new_refresh_token;\r\n\r\n }\r\n\r\n const config = {\r\n\r\n headers: { Authorization: `Bearer ${localStorage.access_token}` }\r\n }\r\n const res = await axios.post(url, post_data, config).catch((error) => {\r\n if (error.response.status == 401 && !url.includes('api/login/detail')) {\r\n window.location.reload();\r\n }\r\n });\r\n if (res.status === 200) return res.data;\r\n return {\r\n is_success: false,\r\n message: res.status\r\n }\r\n } catch (error) {\r\n return {\r\n is_success: false,\r\n message: error\r\n }\r\n }\r\n}\r\n\r\nexport async function call_get_api(url) {\r\n try {\r\n const isTokenExpired = CheckIsTokenExpired();\r\n if (isTokenExpired) {\r\n refreshTokenRequest = refreshTokenRequest\r\n ? refreshTokenRequest\r\n : refreshToken(url);\r\n\r\n const newTokens = await refreshTokenRequest;\r\n refreshTokenRequest = null;\r\n if (newTokens == \"\") {\r\n return {\r\n is_success: false,\r\n message: \"Token expired.\"\r\n }\r\n }\r\n const new_access_token = newTokens.split(' ')[0];\r\n const new_refresh_token = newTokens.split(' ')[1];\r\n localStorage.access_token = new_access_token;\r\n localStorage.refresh_token = new_refresh_token;\r\n\r\n }\r\n\r\n const config = {\r\n headers: { Authorization: `Bearer ${localStorage.access_token}` }\r\n }\r\n const res = await axios.get(url, config);\r\n if (res.status === 200) {\r\n let data = res.data;\r\n return data;\r\n }\r\n else {\r\n\r\n return {\r\n is_success: false,\r\n message: res.status\r\n }\r\n }\r\n } catch (error) {\r\n return {\r\n is_success: false,\r\n message: error\r\n }\r\n }\r\n}\r\n\r\nconst GET = async (url, isCheckToken) => {\r\n try {\r\n if (isCheckToken) {\r\n const isTokenExpired = CheckIsTokenExpired();\r\n if (isTokenExpired) {\r\n await handleRefreshToken();\r\n }\r\n }\r\n const config = handleGetConfig();\r\n const res = await axios.get(url, config).catch((error) => {\r\n return {\r\n is_success: false,\r\n message: error?.response?.data?.message ?? \"Error\",\r\n status: error.response.status\r\n }\r\n });\r\n if (res.status === 200) return res.data;\r\n return {\r\n is_success: false,\r\n message: res.message ?? \"\"\r\n }\r\n } catch (error) {\r\n return {\r\n is_success: false,\r\n message: error\r\n }\r\n }\r\n}\r\nconst POST = async (url, data, isCheckToken) => {\r\n try {\r\n if (isCheckToken) {\r\n const isTokenExpired = CheckIsTokenExpired();\r\n if (isTokenExpired) {\r\n await handleRefreshToken();\r\n }\r\n }\r\n const config = handleGetConfig();\r\n const res = await axios.post(url, data, config).catch((error) => {\r\n if (error.response.status == 401 && !url.includes('api/account/detail')) {\r\n window.location.reload();\r\n }\r\n else {\r\n return {\r\n is_success: false,\r\n message: error?.response?.data?.message ?? \"Error\",\r\n status: error.response.status\r\n }\r\n }\r\n });\r\n\r\n if (res && res.status === 200) return res.data;\r\n return {\r\n is_success: false,\r\n message: res.message ?? \"\"\r\n }\r\n } catch (error) {\r\n return {\r\n is_success: false,\r\n message: JSON.stringify(error)\r\n }\r\n }\r\n}\r\nconst PUT = async (url, data, isCheckToken) => {\r\n try {\r\n if (isCheckToken) {\r\n const isTokenExpired = CheckIsTokenExpired();\r\n if (isTokenExpired) {\r\n await handleRefreshToken();\r\n }\r\n }\r\n const config = handleGetConfig();\r\n const res = await axios.put(url, data, config).catch((error) => {\r\n return {\r\n is_success: false,\r\n message: error?.response?.data?.message ?? \"Error\",\r\n status: error.response.status\r\n }\r\n });\r\n if (res.status === 200) return res.data;\r\n return {\r\n is_success: false,\r\n message: res.message ?? \"\"\r\n }\r\n } catch (error) {\r\n return {\r\n is_success: false,\r\n message: error\r\n }\r\n }\r\n}\r\nconst DELETE = async (url, isCheckToken) => {\r\n try {\r\n if (isCheckToken) {\r\n const isTokenExpired = CheckIsTokenExpired();\r\n if (isTokenExpired) {\r\n await handleRefreshToken();\r\n }\r\n }\r\n const config = handleGetConfig();\r\n const res = await axios.delete(url, config).catch((error) => {\r\n return {\r\n is_success: false,\r\n message: error?.response?.data?.message ?? \"Error\",\r\n status: error.response.status\r\n }\r\n });\r\n if (res.status === 200) return res.data;\r\n return {\r\n is_success: false,\r\n message: res.message ?? \"\"\r\n }\r\n } catch (error) {\r\n return {\r\n is_success: false,\r\n message: error\r\n }\r\n }\r\n}\r\nconst UPLOAD = async (url, data, isCheckToken) => {\r\n try {\r\n if (isCheckToken) {\r\n const isTokenExpired = CheckIsTokenExpired();\r\n if (isTokenExpired) {\r\n await handleRefreshToken();\r\n }\r\n }\r\n const config = handleGetConfig();\r\n config.headers['Content-Type'] = 'multipart/form-data'\r\n const res = await axios.post(url, data, config).catch((error) => {\r\n if (error.response.status == 401 && !url.includes('api/account/detail')) {\r\n window.location.reload();\r\n }\r\n else {\r\n return {\r\n is_success: false,\r\n message: error?.response?.data?.message ?? \"Error\",\r\n status: error.response.status\r\n }\r\n }\r\n });\r\n\r\n if (res && res.status === 200) return res.data;\r\n return {\r\n is_success: false,\r\n message: res.message ?? \"\"\r\n }\r\n // await configIfTokenExpired();\r\n // const config = {\r\n\r\n // headers: {\r\n // Authorization: `Bearer ${localStorage.access_token}`, 'Content-Type': 'multipart/form-data',\r\n // language: localStorage.getItem(\"language\"),\r\n // }\r\n // }\r\n // const res = await axiosClient.post(url, data, config);\r\n // return res;\r\n } catch (error) {\r\n return {\r\n is_success: false,\r\n message: JSON.stringify(error)\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const apiHelper = {\r\n get: (path) => GET(appInfo.api_url + '/' + path),\r\n post: (path, data) => POST(appInfo.api_url + '/' + path, data),\r\n put: (path, data) => PUT(appInfo.api_url + '/' + path, data),\r\n delete: (path) => DELETE(appInfo.api_url + '/' + path),\r\n upload: (path, data) => UPLOAD(appInfo.api_url + '/' + path, data),\r\n getWithoutCheckToken: (path) => GET(appInfo.api_url + '/' + path, false),\r\n postWithoutCheckToken: (path, data) => POST(appInfo.api_url + '/' + path, data, false),\r\n putWithoutCheckToken: (path, data) => PUT(appInfo.api_url + '/' + path, data, false),\r\n deleteWithoutCheckToken: (path) => DELETE(appInfo.api_url + '/' + path, false),\r\n}\r\n","export default {\r\n title: 'Tuyển sinh Năm học 2024-2025',\r\n api_url: process.env.REACT_APP_API_BASE_URL,\r\n home_url: process.env.REACT_APP_PORTAL_URL,\r\n register_url: process.env.REACT_APP_REGISTER_URL,\r\n sub_system_id: 1,\r\n versionDataGridStorageKey: process.env.DATA_GRID_STOREGE_VERSION?.toString() || \"\",\r\n};\r\n","import { authActionTypes } from \"../reducers/authReducer\";\r\n\r\nexport const authActions = {\r\n loginStart: () => ({ type: authActionTypes.LOGIN.START }),\r\n loginSuccess: (data) => ({ type: authActionTypes.LOGIN.SUCESS, payload: data }),\r\n loginError: (error) => ({ type: authActionTypes.LOGIN.ERROR, payload: error }),\r\n\r\n getUserStart: () => ({ type: authActionTypes.GET_INFO.START }),\r\n getUserSuccess: (data) => ({ type: authActionTypes.GET_INFO.SUCESS, payload: data }),\r\n getUserError: () => ({ type: authActionTypes.GET_INFO.ERROR }),\r\n\r\n logoutStart: () => ({ type: authActionTypes.LOGOUT.START })\r\n}","import { yeuCauHoTroActionTypes } from \"../reducers/yeuCauHoTroReducer\";\r\nexport const yeuCauHoTroActions = {\r\n loadSelectStart: (request) => ({ type: yeuCauHoTroActionTypes.LOAD_SELECT.START }),\r\n loadSelectSuccess: (data) => ({ type: yeuCauHoTroActionTypes.LOAD_SELECT.SUCCESS, payload: data }),\r\n loadSelectError: (error) => ({ type: yeuCauHoTroActionTypes.LOAD_SELECT.ERROR, payload: error }),\r\n\r\n loadDetailStart: (id) => ({ type: yeuCauHoTroActionTypes.LOAD_DETAIL.START }),\r\n loadDetailSuccess: (data) => ({ type: yeuCauHoTroActionTypes.LOAD_DETAIL.SUCCESS, payload: data }),\r\n loadDetailError: () => ({ type: yeuCauHoTroActionTypes.LOAD_DETAIL.ERROR }),\r\n\r\n updatePhanHoiStart: (data) => ({ type: yeuCauHoTroActionTypes.UPDATE_PHANHOI.START }),\r\n updatePhanHoiSuccess: (data) => ({ type: yeuCauHoTroActionTypes.UPDATE_PHANHOI.SUCCESS, payload: data }),\r\n updatePhanHoiError: () => ({ type: yeuCauHoTroActionTypes.UPDATE_PHANHOI.ERROR }),\r\n \r\n changeFilter: (data) => ({ type: yeuCauHoTroActionTypes.CHANGE_FILTER, payload: data }),\r\n\r\n}","import { khaoSatActionTypes } from \"../reducers/khaoSatReducer\";\r\n\r\nexport const khaoSatActions = {\r\n loadStart: () => ({ type: khaoSatActionTypes.LOAD.START }),\r\n loadSuccess: (data) => ({ type: khaoSatActionTypes.LOAD.SUCCESS, payload: data }),\r\n loadError: (error) => ({ type: khaoSatActionTypes.LOAD.ERROR, payload: error }),\r\n\r\n loadByTruongStart: (dm_truong_id, nam_hoc) => ({ type: khaoSatActionTypes.LOAD_BY_TRUONG.START }),\r\n loadByTruongSuccess: (data) => ({ type: khaoSatActionTypes.LOAD_BY_TRUONG.SUCCESS, payload: data }),\r\n loadByTruongError: () => ({ type: khaoSatActionTypes.LOAD_BY_TRUONG.ERROR }),\r\n\r\n loadResultByTruongStart: (dm_truong_id, sis_khaosat_id, nam_hoc) => ({ type: khaoSatActionTypes.LOAD_RESULT_BY_TRUONG.START }),\r\n loadResultByTruongSuccess: (data) => ({ type: khaoSatActionTypes.LOAD_RESULT_BY_TRUONG.SUCCESS, payload: data }),\r\n loadResultByTruongError: () => ({ type: khaoSatActionTypes.LOAD_RESULT_BY_TRUONG.ERROR }),\r\n \r\n loadKetQuaKhaoSatStart: (sis_khaosat_id) => ({ type: khaoSatActionTypes.LOAD_KET_QUA_KHAO_SAT.START }),\r\n loadKetQuaKhaoSatSuccess: (data) => ({ type: khaoSatActionTypes.LOAD_KET_QUA_KHAO_SAT.SUCCESS, payload: data }),\r\n loadKetQuaKhaoSatError: (error) => ({ type: khaoSatActionTypes.LOAD_KET_QUA_KHAO_SAT.ERROR, payload: error }),\r\n \r\n loadKetQuaKhaoSatChiTietStart: (sis_khaosat_id) => ({ type: khaoSatActionTypes.LOAD_KET_QUA_KHAO_SAT_CHI_TIET.START }),\r\n loadKetQuaKhaoSatChiTietSuccess: (data) => ({ type: khaoSatActionTypes.LOAD_KET_QUA_KHAO_SAT_CHI_TIET.SUCCESS, payload: data }),\r\n loadKetQuaKhaoSatChiTietError: (error) => ({ type: khaoSatActionTypes.LOAD_KET_QUA_KHAO_SAT_CHI_TIET.ERROR, payload: error }),\r\n \r\n loadResultDetailStart: (sis_form_khaosat_result_id) => ({ type: khaoSatActionTypes.LOAD_RESULT_DETAIL.START }),\r\n loadResultDetailSuccess: (data) => ({ type: khaoSatActionTypes.LOAD_RESULT_DETAIL.SUCCESS, payload: data }),\r\n loadResultDetailError: (error) => ({ type: khaoSatActionTypes.LOAD_RESULT_DETAIL.ERROR, payload: error }),\r\n\r\n deleteStart: (ids) => ({ type: khaoSatActionTypes.DELETE.START }),\r\n deleteSuccess: (data) => ({ type: khaoSatActionTypes.DELETE.SUCCESS, payload: data }),\r\n deleteError: (error) => ({ type: khaoSatActionTypes.DELETE.ERROR, payload: error }),\r\n\r\n saveStart: (data) => ({ type: khaoSatActionTypes.SAVE.START }),\r\n saveSuccess: (data) => ({ type: khaoSatActionTypes.SAVE.SUCCESS, payload: data }),\r\n saveError: (error) => ({ type: khaoSatActionTypes.SAVE.ERROR, payload: error }),\r\n\r\n pushNotifyStart: (data) => ({ type: khaoSatActionTypes.PUSH_NOTIFY.START }),\r\n pushNotifySuccess: (data) => ({ type: khaoSatActionTypes.PUSH_NOTIFY.SUCCESS, payload: data }),\r\n pushNotifyError: (error) => ({ type: khaoSatActionTypes.PUSH_NOTIFY.ERROR, payload: error }),\r\n \r\n showModal: (show) => ({ type: khaoSatActionTypes.SHOW_MODAL, payload: show }),\r\n changeDetail: (data) => ({ type: khaoSatActionTypes.CHANGE_DETAIL, payload: data }),\r\n showConfirm: (show) => ({ type: khaoSatActionTypes.SHOW_CONFIRM, payload: show }),\r\n changeSelectedIds: (data) => ({ type: khaoSatActionTypes.CHANGE_SELECTED_IDS, payload: data }),\r\n clearStatus: () => ({ type: khaoSatActionTypes.CLEAR_STATUS }),\r\n changeFilter: (data) => ({ type: khaoSatActionTypes.CHANGE_FILTER, payload: data }),\r\n\r\n}","import { formKhaoSatReducer, formKhaoSatActionTypes } from \"../reducers/formKhaoSatReducer\";\r\n\r\nexport const formKhaoSatActions = {\r\n loadStart: () => ({ type: formKhaoSatActionTypes.LOAD.START }),\r\n loadSuccess: (data) => ({ type: formKhaoSatActionTypes.LOAD.SUCCESS, payload: data }),\r\n loadError: (error) => ({ type: formKhaoSatActionTypes.LOAD.ERROR, payload: error }),\r\n\r\n loadByTruongStart: (dm_truong_id, nam_hoc) => ({ type: formKhaoSatActionTypes.LOAD_BY_TRUONG.START }),\r\n loadByTruongSuccess: (data) => ({ type: formKhaoSatActionTypes.LOAD_BY_TRUONG.SUCCESS, payload: data }),\r\n loadByTruongError: () => ({ type: formKhaoSatActionTypes.LOAD_BY_TRUONG.ERROR }),\r\n\r\n deleteStart: (ids) => ({ type: formKhaoSatActionTypes.DELETE.START, payload: ids }),\r\n deleteSuccess: (data) => ({ type: formKhaoSatActionTypes.DELETE.SUCCESS, payload: data }),\r\n deleteError: (error) => ({ type: formKhaoSatActionTypes.DELETE.ERROR, payload: error }),\r\n \r\n saveStart: (data) => ({ type: formKhaoSatActionTypes.SAVE.START, payload: data }),\r\n saveSuccess: (data) => ({ type: formKhaoSatActionTypes.SAVE.SUCCESS, payload: data }),\r\n saveError: (error) => ({ type: formKhaoSatActionTypes.SAVE.ERROR, payload: error }),\r\n \r\n showModal: (show) => ({ type: formKhaoSatActionTypes.SHOW_MODAL , payload: show }),\r\n changeDetail: (data) => ({ type: formKhaoSatActionTypes.CHANGE_DETAIL, payload: data}),\r\n showConfirm: (show) => ({ type: formKhaoSatActionTypes.SHOW_CONFIRM , payload: show }),\r\n changeSelectedIds: (data) => ({ type: formKhaoSatActionTypes.CHANGE_SELECTED_IDS, payload: data }),\r\n clearStatus: () => ({ type: formKhaoSatActionTypes.CLEAR_STATUS }),\r\n changeFilter: (data) => ({ type: formKhaoSatActionTypes.CHANGE_FILTER, payload: data }),\r\n\r\n}","import { formKhaoSatEditorActionTypes } from \"../reducers/formKhaoSatEditorReducer\";\r\n\r\nexport const formKhaoSatEditorActions = {\r\n loadStart: () => ({ type: formKhaoSatEditorActionTypes.LOAD.START }),\r\n loadSuccess: (data) => ({ type: formKhaoSatEditorActionTypes.LOAD.SUCCESS, payload: data }),\r\n loadError: (error) => ({ type: formKhaoSatEditorActionTypes.LOAD.ERROR, payload: error }),\r\n\r\n loadByFormStart: (dm_truong_id) => ({ type: formKhaoSatEditorActionTypes.LOAD_BY_FORM.START }),\r\n loadByFormSuccess: (data) => ({ type: formKhaoSatEditorActionTypes.LOAD_BY_FORM.SUCCESS, payload: data }),\r\n loadByFormError: () => ({ type: formKhaoSatEditorActionTypes.LOAD_BY_FORM.ERROR }),\r\n\r\n loadEdItorTypeStart: () => ({ type: formKhaoSatEditorActionTypes.LOAD_EDITOR_TYPE.START }),\r\n loadEdItorTypeSuccess: (data) => ({ type: formKhaoSatEditorActionTypes.LOAD_EDITOR_TYPE.SUCCESS, payload: data }),\r\n loadEdItorTypeError: () => ({ type: formKhaoSatEditorActionTypes.LOAD_EDITOR_TYPE.ERROR }),\r\n \r\n deleteStart: (ids) => ({ type: formKhaoSatEditorActionTypes.DELETE.START }),\r\n deleteSuccess: (data) => ({ type: formKhaoSatEditorActionTypes.DELETE.SUCCESS, payload: data }),\r\n deleteError: (error) => ({ type: formKhaoSatEditorActionTypes.DELETE.ERROR, payload: error }),\r\n \r\n saveStart: (data) => ({ type: formKhaoSatEditorActionTypes.SAVE.START }),\r\n saveSuccess: (data) => ({ type: formKhaoSatEditorActionTypes.SAVE.SUCCESS, payload: data }),\r\n saveError: (error) => ({ type: formKhaoSatEditorActionTypes.SAVE.ERROR, payload: error }),\r\n \r\n updateSelectOptionsStart: (data) => ({ type: formKhaoSatEditorActionTypes.UPDATE_SELECT_OPTIONS.START }),\r\n updateSelectOptionsSuccess: (data) => ({ type: formKhaoSatEditorActionTypes.UPDATE_SELECT_OPTIONS.SUCCESS, payload: data }),\r\n updateSelectOptionsError: (error) => ({ type: formKhaoSatEditorActionTypes.UPDATE_SELECT_OPTIONS.ERROR, payload: error }),\r\n\r\n showModal: (show) => ({ type: formKhaoSatEditorActionTypes.SHOW_MODAL , payload: show}),\r\n changeDetail: (data) => ({ type: formKhaoSatEditorActionTypes.CHANGE_DETAIL, payload: data }),\r\n showConfirm: (show) => ({ type: formKhaoSatEditorActionTypes.SHOW_CONFIRM, payload: show }),\r\n changeSelectedIds: (data) => ({ type: formKhaoSatEditorActionTypes.CHANGE_SELECTED_IDS, payload: data }),\r\n clearStatus: () => ({ type: formKhaoSatEditorActionTypes.CLEAR_STATUS }),\r\n\r\n}","import { authActions } from \"./authActions\";\r\nimport { yeuCauHoTroActions } from \"./yeuCauHoTroActions\";\r\nimport { khaoSatActions } from \"./khaoSatActions\";\r\nimport { formKhaoSatActions } from \"./formKhaoSatActions\";\r\nimport { formKhaoSatEditorActions } from \"./formKhaoSatEditorActions\";\r\nimport { formKhaoSatItemActions } from \"./formKhaoSatItemActions\";\r\n\r\nexport const rootActions = {\r\n auth: authActions,\r\n yeuCauHoTro: yeuCauHoTroActions,\r\n khaoSat: khaoSatActions,\r\n formKhaoSat: formKhaoSatActions,\r\n formKhaoSatEditor: formKhaoSatEditorActions,\r\n formKhaoSatItem: formKhaoSatItemActions\r\n}","import { formKhaoSatItemActionTypes } from \"../reducers/formKhaoSatItemReducer\";\r\n\r\nexport const formKhaoSatItemActions = {\r\n loadStart: () => ({ type: formKhaoSatItemActionTypes.LOAD.START }),\r\n loadSuccess: (data) => ({ type: formKhaoSatItemActionTypes.LOAD.SUCCESS, payload: data }),\r\n loadError: (error) => ({ type: formKhaoSatItemActionTypes.LOAD.ERROR, payload: error }),\r\n\r\n loadByFormStart: (dm_truong_id) => ({ type: formKhaoSatItemActionTypes.LOAD_BY_FORM.START }),\r\n loadByFormSuccess: (data) => ({ type: formKhaoSatItemActionTypes.LOAD_BY_FORM.SUCCESS, payload: data }),\r\n loadByFormError: () => ({ type: formKhaoSatItemActionTypes.LOAD_BY_FORM.ERROR }),\r\n\r\n\r\n deleteStart: (ids) => ({ type: formKhaoSatItemActionTypes.DELETE.START, payload: ids }),\r\n deleteSuccess: (data) => ({ type: formKhaoSatItemActionTypes.DELETE.SUCCESS, payload: data }),\r\n deleteError: (error) => ({ type: formKhaoSatItemActionTypes.DELETE.ERROR, payload: error }),\r\n \r\n saveStart: (data) => ({ type: formKhaoSatItemActionTypes.SAVE.START, payload: data }),\r\n saveSuccess: (data) => ({ type: formKhaoSatItemActionTypes.SAVE.SUCCESS, payload: data }),\r\n saveError: (error) => ({ type: formKhaoSatItemActionTypes.SAVE.ERROR, payload: error }),\r\n \r\n additemsStart: (data) => ({ type: formKhaoSatItemActionTypes.ADD_ITEMS.START, payload: data }),\r\n additemsSuccess: (data) => ({ type: formKhaoSatItemActionTypes.ADD_ITEMS.SUCCESS, payload: data }),\r\n additemsError: () => ({ type: formKhaoSatItemActionTypes.ADD_ITEMS.ERROR }),\r\n \r\n addeditorStart: (data) => ({ type: formKhaoSatItemActionTypes.ADD_EDITOR.START }),\r\n addeditorSuccess: (data) => ({ type: formKhaoSatItemActionTypes.ADD_EDITOR.SUCCESS, payload: data }),\r\n addeditorError: (error) => ({ type: formKhaoSatItemActionTypes.ADD_EDITOR.ERROR, payload: error }),\r\n\r\n updateIdxStart: (data) => ({ type: formKhaoSatItemActionTypes.UPDATE_IDX.START, payload: data }),\r\n updateIdxSuccess: (data) => ({ type: formKhaoSatItemActionTypes.UPDATE_IDX.SUCCESS, payload: data }),\r\n updateIdxError: (error) => ({ type: formKhaoSatItemActionTypes.UPDATE_IDX.ERROR, payload: error }),\r\n\r\n showModal: (show) => ({ type: formKhaoSatItemActionTypes.SHOW_MODAL, payload: show }),\r\n changeDetail: (data) => ({ type: formKhaoSatItemActionTypes.CHANGE_DETAIL, payload: data }),\r\n showConfirm: (show) => ({ type: formKhaoSatItemActionTypes.SHOW_CONFIRM , payload: show}),\r\n changeSelectedIds: (data) => ({ type: formKhaoSatItemActionTypes.CHANGE_SELECTED_IDS, payload: data}),\r\n clearStatus: () => ({ type: formKhaoSatItemActionTypes.CLEAR_STATUS }),\r\n changeFilter: (data) => ({ type: formKhaoSatItemActionTypes.CHANGE_FILTER, payload: data }),\r\n\r\n}","import { apiHelper } from './api_helper';\r\n\r\nexport const TRUONG_API_ENDPOIT = 'truong';\r\nexport const truongApi = {\r\n SelectAll: () => apiHelper.get('truong'),\r\n SelectTruongKhoiHe: () => apiHelper.get('truong/khoi/he'),\r\n select_by_id: (id) => apiHelper.get(`${TRUONG_API_ENDPOIT}/${id}`),\r\n insert: (data) => apiHelper.post(TRUONG_API_ENDPOIT, data),\r\n update: (data) => apiHelper.put(TRUONG_API_ENDPOIT, data),\r\n remove: (id) => apiHelper.delete(`${TRUONG_API_ENDPOIT}/${id}`),\r\n selectKhoiByTruong: (dm_truong_id) => apiHelper.get(`truong/${dm_truong_id}/khoi`),\r\n update_khoi_by_truong_id: (data) => apiHelper.post(`truong/update/khoi`,data),\r\n delete_khoi_by_truong_id: (data) => apiHelper.post(`truong/delete/khoi`,data),\r\n}\r\n","import { useState, useCallback, useEffect } from 'react';\r\n\r\nexport const useScreenSize = () => {\r\n const [screenSize, setScreenSize] = useState(getScreenSize());\r\n const onSizeChanged = useCallback(() => {\r\n setScreenSize(getScreenSize());\r\n }, []);\r\n\r\n useEffect(() => {\r\n subscribe(onSizeChanged);\r\n\r\n return () => {\r\n unsubscribe(onSizeChanged);\r\n };\r\n }, [onSizeChanged]);\r\n\r\n return screenSize;\r\n};\r\n\r\nexport const useScreenSizeClass = () => {\r\n const screenSize = useScreenSize();\r\n\r\n if (screenSize.isLarge) {\r\n return 'screen-large';\r\n }\r\n\r\n if (screenSize.isMedium) {\r\n return 'screen-medium';\r\n }\r\n\r\n if (screenSize.isSmall) {\r\n return 'screen-small';\r\n }\r\n\r\n return 'screen-x-small';\r\n}\r\n\r\nlet handlers = [];\r\nconst xSmallMedia = window.matchMedia('(max-width: 599.99px)');\r\nconst smallMedia = window.matchMedia('(min-width: 600px) and (max-width: 959.99px)');\r\nconst mediumMedia = window.matchMedia('(min-width: 960px) and (max-width: 1279.99px)');\r\nconst largeMedia = window.matchMedia('(min-width: 1280px)');\r\n\r\n[xSmallMedia, smallMedia, mediumMedia, largeMedia].forEach(media => {\r\n media.addListener((e) => {\r\n e.matches && handlers.forEach(handler => handler());\r\n });\r\n});\r\n\r\nconst subscribe = handler => handlers.push(handler);\r\n\r\nconst unsubscribe = handler => {\r\n handlers = handlers.filter(item => item !== handler);\r\n};\r\n\r\nfunction getScreenSize() {\r\n return {\r\n isXSmall: xSmallMedia.matches,\r\n isSmall: smallMedia.matches,\r\n isMedium: mediumMedia.matches,\r\n isLarge: largeMedia.matches\r\n };\r\n};\r\n","import React, { createContext, useContext, useEffect, useState } from 'react';\r\n\r\nconst NavigationContext = createContext({});\r\nconst useNavigation = () => useContext(NavigationContext);\r\n\r\nfunction NavigationProvider(props) {\r\n const [navigationData, setNavigationData] = useState({});\r\n\r\n return (\r\n \r\n );\r\n}\r\n\r\nfunction withNavigationWatcher(Component) {\r\n return function (props) {\r\n const { path } = props.match;\r\n const { setNavigationData } = useNavigation();\r\n\r\n useEffect(() => {\r\n setNavigationData({ currentPath: path });\r\n }, [path, setNavigationData]);\r\n\r\n return React.createElement(Component, props);\r\n }\r\n}\r\n\r\nexport {\r\n NavigationProvider,\r\n useNavigation,\r\n withNavigationWatcher\r\n};\r\n\r\n"],"sourceRoot":""}