{"version":3,"sources":["Utils/GetVoTheme.ts","Components/Common/AlertIconOverride/AlertIconOverride.tsx","Components/Common/PasswordInput/PasswordInput.tsx","Interface/KaFlServerRouteConst.ts","store/SkrinHttpRequest.ts","store/StudentJournalsInfo.ts","Components/Main/PrivateRouts/PrivateRouts.tsx","store/Error.ts","Components/Common/ErrrorView/ErrorView.tsx","Components/Common/UpdateInfo/UpdateInfo.tsx","Components/Common/UpdateInfo/StartUpdateInfo.tsx","Components/Common/UpdateInfo/StartUpdateDbInfo.tsx","Components/Common/ClearCacheComponent/ClearCacheComponent.tsx","Components/Common/UpdateInfo/DbUpdateHasError.tsx","Components/Main/DynamicFavicon/DynamicFavicon.tsx","Components/Common/UpdateAppAlert/UpdateAppAlert.tsx","Components/Common/UpdateDbInfo/UpdateDbInfo.tsx","Components/Common/HttpErrorModal/ModalList.tsx","Components/Common/HttpErrorModal/HttpErrorModal.tsx","App.tsx","store/index.ts","Components/Common/ErrrorView/ErrorBoundary.tsx","RequestStatus.tsx","index.tsx","store/configureStore.ts","Utils/Fetch.ts","Components/Common/Loader/Loader.tsx","Interface/ServerRouteConst.ts","Components/Common/LazyWithRetry/lazyWithRetry.ts","Utils/IsEqualFun.ts","store/AuthStatus.ts","Interface/MainTypes.ts","store/HttpErrorMessages.ts","store/HttpWarningMessages.ts","Components/Common/QueryDialog/QueryDialog.tsx","Components/Common/ModalMessageWithNode/ModalMessageWithNode.tsx","Components/Main/DefaultWrapperWidth/WrapperPaddingWidth.tsx","store/VoAuth.ts","Components/Main/CommonSetting/AccessPage.tsx","Interface/RouteConst.ts","store/KaFlAuth.ts"],"names":["GetVoTheme","modules","stateType","defaultValueTheme","id","name","_modules$find","_modules$find2","siteTheme","undefined","find","x","ISiteList","voDesktop","voWeb","AlertIconOverride","props","_jsx","Alert","_objectSpread","icon","severity","DoneAllIcon","children","PasswordInput","_useState","useState","_useState2","_slicedToArray","showPassword","setShowPassword","label","TextField","disabled","fullWidth","type","autoComplete","onChange","e","password","target","value","setValue","InputProps","endAdornment","IconButton","onClick","onMouseDown","event","preventDefault","onMouseUp","size","Visibility","VisibilityOff","apiKaFlLogin","apiKaFlAuthAuto","apiKaFlLogOut","apiKaFlCreateReport","apiKaFLGetReportPdf","apiKaFLGetGeneratedReportList","apiKaFLSearchGeneratedReportList","apiKaFlDeleteSelectedReports","apiKaFlDeleteAllReports","apiKaFlGetLimitCount","apiKaFlGetInformers","apiKaFlGetInformerStatus","apiKaFlCloseAllCompletedInformer","apiKaFlDeleteCompletedInformer","apiKaFlNextQuestionRequest","ISkrinResponseStatus","GetRequestData","url","method","body","baseUrl","window","location","origin","fullPath","concat","Request","JSON","stringify","headers","IsJsonResponse","contentTypeHeader","length","toLowerCase","includes","MessageFormatHttp","responseStatus","responseStatusText","message","stacktrace","methodLabel","urlLabel","responseStatusLabel","responseStatusTextLabel","bodyLabel","messageLabel","stacktraceLabel","SkrinHttpRequest","setStatusRequest","_ref","_asyncToGenerator","_regeneratorRuntime","mark","_callee","dispatch","request","response","contentType","isJsonResponse","responseData","errorMessages","warningMessages","bodyJson","msg","wrap","_context","prev","next","fetch","sent","status","statusText","ok","Error","get","abrupt","json","Success","data","uuidv4","toString","messages","SetHttpErrorMessages","Warning","SetHttpWarningMessages","t0","String","stack","console","log","stop","_x","apply","arguments","SetJournalsInfo","info","SetClearJournalsInfo","reducer","state","incomingAction","studentJournalsInfo","startDate","endDate","selectedAll","selectedIds","areaId","action","ApiRoutePage","lazyWithRetry","StartPage","VoRoutePage","UserInfo","SettingLogs","ImportPage","CreateDbBackUpPage","KaFlRoutePage","connector","connect","isAuth","appAuth","Redirect","to","MainAuthPath","_jsxs","Switch","Route","path","UserInfoPath","component","UserSettingLogs","DataImportPath","CreateDbBackUpPagePath","VoRoutePath","ApiRoutePath","KaFlRoutePath","setError","error","ResetApp","getState","push","StartPagePath","unSetError","Grid","container","spacing","justifyContent","item","lg","md","xs","sm","style","textAlign","Button","variant","color","hasUpdate","setAuth","auth","SetAuth","setStatus","_useState3","_useState4","openQuryDialog","setOpenQuryDialog","_useState5","_useState6","showUserDialog","setShowUserDialog","onSendQuery","apiStartUpdate","then","hasAccess","apiMainAuthAuto","Form","_Fragment","NavLink","DefaultWrapperWidth","direction","alignItems","marginTop","Loader","ModalMessageWithNode","title","show","handleClose","AccessPage","handleSuccess","QueryDialog","open","onClose","textQuery","onAgree","updateting","updateProcess","hasErrorUpdate","setHasErrorUpdate","useEffect","timeout","setTimeout","clearTimeout","AlertTitle","blockDbChanges","ClearCacheComponent","intervalId","setIntervalId","showQuery","setShowQuery","intervalID","setInterval","timeLabel","Date","getTime","buildDate","catch","clearInterval","reason","Snackbar","zIndex","reload","RefreshIcon","fontSize","CloseIcon","dbUpdateProcessHasError","fullPathFile","setFullPathFile","showSnack","setShowSnack","apiImportDataGetFullPathFileDb","responseFolder","handelCloseSnack","display","readOnly","startAdornment","navigator","clipboard","writeText","FileCopyIcon","autoHideDuration","anchorOrigin","vertical","horizontal","getActiveSitePage","PodftFlRoutePath","getNewFaviconLink","themeSite","faviconLink","activeSite","setActiveSite","setFaviconLink","activeThemeId","setActiveThemeId","activeVoTheme","useLocation","pathname","activeSitePage","Helmet","rel","href","appHasUpdate","hasLongScriptDbUpdate","setOpen","timer","setTimer","history","useHistory","interval","prevTimer","needShowFromRedux","handleSnackbarClose","width","maxWidth","border","StartUpdateInfoPath","StartUpdateDbInfoPath","ArrowForwardIcon","handelSend","apiStartDbUpdate","useStyles","makeStyles","dialog","position","top","closeButton","ShowList","list","map","index","Typography","ModalList","classes","onCloseModal","Dialog","scroll","paper","DialogTitle","className","DialogContent","dividers","DialogContentText","tabIndex","errorMessagesInfo","httpErrorMessages","warningMessagesInfo","httpWarningMessages","closeErrorModal","SetClearHttpErrorMessages","closeWarningModal","SetClearHttpWarningMessages","MainAuth","CommonSettingPage","root","flexDirection","minHeight","footer","minWidth","link","margin","textDecoration","toolbar","flexWrap","_state$error","appError","appStartUpdate","setVoAuth","SetVoAuth","updateModules","SetAuthModules","updateKaFLAuth","SetKalAuth","getAuthStateKaFl","HttpRequest","authDesktop","authWeb","subAuthModule","apiVoAuthAutoWeb","voAuth","_yield$Promise$all","_yield$Promise$all2","voAuthResponse","kaFlAuthResponse","Promise","all","apiVoAuthAuto","ErrorView","StartUpdateInfo","DbUpdateHasError","StartUpdateDbInfo","defaultTheme","createTheme","ThemeProvider","theme","CssBaseline","DynamicFavicon","UpdateAppAlert","HttpErrorModal","Suspense","fallback","exact","UpdateInfo","UpdateDbInfo","CommonSettingPath","PrivateRouts","getFullYear","reducers","ClientError","Auth","VoAth","StudentJournalsInfo","HttpErrorMessages","HttpWarningMessages","kaFlAuth","KaFlAuth","ErrorBoundary","_Component","_inherits","_super","_createSuper","_this","_classCallCheck","_len","args","Array","_key","call","hasError","TryRefresh","setState","_createClass","key","errorInfo","_this2","customErr","post","apiWriteError","this","_","Component","updateAppState","serverState","UpdateAppStateToTimer","setStartUpdateStatus","SetStartUpdateStatus","GetRequest","text","serverStateType","shortAjax","document","getElementsByTagName","getAttribute","createBrowserHistory","basename","store","initialState","middleware","thunk","routerMiddleware","rootReducer","combineReducers","router","connectRouter","enhancers","windowIfDefined","__REDUX_DEVTOOLS_EXTENSION__","createStore","compose","applyMiddleware","configureStore","ReduxStore","ReactDOM","render","Provider","ConnectedRouter","App","RequestStatus","getElementById","http","_x2","_http","config","_x3","_x4","_get","_callee2","init","_context2","_x5","_x6","_post","_callee3","_args3","_context3","put","_x7","_x8","_put","_callee4","_args4","_context4","deleteData","_x9","_x10","_deleteData","_callee5","_context5","CircularProgress","disableShrink","apiMainAuth","apiUserInfo","apiReloginUser","apiCheckUser","apiVoAuth","apiVoLogOut","apiVoAuthWeb","apiVoAuthPasswordRecovery","apiVoTestList","apiVoTest","apiVoTestMaterialList","apiVoTestExportDocFile","apiVoSkrinTest","apiVoAdminSettings","apiVoAdminSmtpStatus","apiVoAdminSmtpTest","apiSettionLog","apiImportDataGetAdminAuth","apiImportDataGetTempFolder","apiImportDataCheckTempFolder","apiImportDataStartUnZip","apiImportDataGetStatusUnZip","apiImportDataCheckUnZipFolder","apiImportDataCheckLogins","apiImportDataCheckStudentLimit","apiImportDataCheckStartImport","apiAutoBackupConfigGetInfo","apiAutoBackupConfigSetInfo","apiVoAdminSettingsSave","apiVoCommonSettingGetProxy","apiVoCommonSettingSetProxy","apiVoCommonSettingSetProxyAuth","apiVoCommonTestProxy","apiVoAdminSdl","apiVoAdminSdlSetActive","apiVoAdminSdlSendNewPassword","apiVoAdminSdlGetLinkNewPassword","apiVoAdmintruct","apiVoAdminStructCheckLinks","apiVoCheckPassword","apiVoSetUserPassword","apiVoAreaSaveLogo","apiVoAreaDropLogo","apiVoAreas","apiVoAreasVoWeb","apiVoAreasGetLast","apiVoAreasSetUnActive","apiVoAreasSetActive","apiVoAreasWebSetActive","apiVoGetAllNews","apiVoGetSkrinNews","apiVoGetSdlNews","apiVoSkrinNewsGetStudentStatus","apiVoSkrinNewsSetStudentStatus","apiVoSdlNews","apiVoSdlNewsChangeStatus","apiVoSdlNewsChangeAllStatus","apiVoGetAllDocs","apiVoGetSdlDocs","apiVoGetSdlDocsSearch","apiVoGetSdlVideo","apiVoGetSkrinVideo","apiVoGetSdlVideoSearch","apiVoGetSkrinVideoUrl","apiFileViewPrefixLoadFile","apiFileViewPrefixGetList","apiFileViewPrefixSave","apiFileViewPrefixDownLoad","apiVoStudents","apiVoStudentsWebVo","apiVoStudentsArhive","apiVoStudentChangeArhiveStatus","apiVoStudentChangeArhiveStatusWeb","apiVoStudentsNewLogin","apiVoStudentsLoadList","apiWebVoStudentsLoadList","apiVoStudentsSendNewPassword","apiVoStudentsGetLinkNewPassword","apiVoStudentsTreeView","apiVoDepartamenTreeView","apiVoStudentsTreeViewTraining","apiVoStudentsGetShortInfo","apiVoStudentSearchHistory","apiVoStudentJournals","apiVoStudentJournalsGetPdf","apiVoStudentJournalsGetDoc","apiVoStudnetJournalSaved","apiVoStudentJournalJournalFile","apiVoStudentsFilterJournalsList","apiVoStudentsFilterJournalsCreateFilePdf","apiVoStudentsFilterJournalsCreateFileDoc","apiVoStudentsCertList","apiVoStudentsFilterCount","apiVoStudentsCertGetFileId","apiVoStudentsCertGetFileStatus","apiVoStudentsCertStartProcess","apiVoStudentsCertLoad","apiVoTraningStartGenCerts","apiVoStudentCertCountById","apiVoStudentCertStartGenById","apiVoTrainingSelectorOptions","apiVoTraining","apiVoTrainingStartSendMails","apiVoTrainingChangeStatus","apiVoTrainingSendMailsInvit","apiVoTrainingProgress","apiVoTrainingSendStudentMailInvit","apiVoTrainingUpdateStudentList","apiVoTrainingSearch","apiVoTrainingGetSdlCertPdf","apiVoTrainingGetSdlCertDoc","apiVoTrainingGetSdlTestResult","apiVoTrainginJournal","apiVoTrainingJournalGetPdf","apiVoTrainingJournalGetDoc","apiVoStudentSkrinNews","apiVoStudentSdlNews","apiVoStudentSkrinNewsStatus","apiVoStudentTraining","apiVoStudentTrainingDescript","apiVoStudentTrainingDocs","apiVoStudentTrainingVideo","apiVoStudentTrainingTests","apiVoStudentTrainingSetStatusDelay","apiVoLoadSkrinDocById","apiVoLoadSdlDocById","apiVoLoadSdlVideoById","apiVoWriteVideoSkrinEvent","apiVoWriteVideoSdlEvent","apiVoStudentSdlTest","apiVoStudentSkrinTest","apiVoStudentStartTestSdl","apiVoStudentStartTestSkrin","apiVoStudentGetQuestion","apiVoStudentSetQuestionAnswer","apiVoStudentGetTestResult","apiVoStudentGetTestFinishInfo","apiVoStudentTestFinishedForward","apiVoStudentGetTestResultPdf","apiVoStudentTrainingConfirm","apiVoStudentGetCertPdf","apiVoStudentGetCertDoc","apiVoFeedbackSend","apiVoFeedbackSendSupport","apiLoadLogo","apiVoInstructionVideo","apiVoInstructionVideoTag","componentImport","lazy","pageHasAlreadyBeenForceRefreshed","parse","localStorage","getItem","setItem","IsEqual","object1","object2","hasNullValue","props1","Object","getOwnPropertyNames","props2","i","prop","bothAreObjects","SetEndUpdateStatus","isRun","errorMessage","actualData","ISiteTypeDesktopDictionary","vo","soap","api","kafl","kaFl","podftfl","podftFl","IPeriodCron","IPeriodDayOfWeek","_toConsumableArray","filter","right","align","DialogActions","autoFocus","left","transform","backgroundColor","padding","borderRadius","paddingLeft","cursor","Modal","WrapperPaddingWidth","SetActiveArea","activeArea","SetAreaList","userAreas","UpdateAreaList","activeUserArea","activeAreaInList","isEnable","nameActiveAreaId","userLogin","role","_action$auth$userArea","oldSelctAreaId","getCookie","Number","setCookie","expires","actulState","ShowErrorMessage","login","messageError","setMessageError","noValidate","newAuth","VoAuthPath","VoSettingSdlPath","VoSettingSdlAddPath","VoSettingSdlEditRoute","VoSettingSdlEditPath","VoSettingAreasPath","VoAdminSettingSmtpPath","VoSettingAreasAddRoute","VoSettingAreasAddPath","VoSettingAreasEditRoute","VoSettingAreasEditPath","VoSettingStructCompany","VoSetUserPassword","VoQuestionBasePath","VoQuestionBaseRoute","VoQuestionBaseListPath","VoQuestionBaseListRoute","VoQuestionBaseCreatePath","VoQuestionBaseEditPath","VoQuestionBaseEditRoute","VoQuestionBaseCopyPath","VoQuestionBaseCopyRoute","VoNewsPath","VoNewsTabPath","VoNewsTabRoute","VoSkrinNewsAdminShowListPath","VoSkrinNewsAdminShowListRoute","VoSkrinNewsAdminOpenItemPath","VoSkrinNewsAdminOpenItemRoute","VoSDLNewsAdminShowListPath","VoSDLNewsAdminShowListRoute","VoSDLNewsAdminOpenItemPath","VoSDLNewsAdminOpenItemRoute","VoSDLNewsAdminCreatePath","VoSDLNewsAdminEditPath","VoSDLNewsAdminEditRoute","VoDocumentsPath","VoDocumentsTabPath","VoDocumentsTabRoute","VoVideoClipsPath","VoVideoClipsTabPath","VoVideoClipsTabRoute","VoStudetsTabPath","VoStudetsTabRoute","VoStudentTabShowList","VoStudetAddPath","VoStudetEditRoute","VoStudetEditPath","VoStudentsJournalsRoute","VoStudentsJournalsPath","VoStudentLoadFile","VoTrainingStudentHistoryRoute","VoTrainingStudentHistoryPath","VoStudentJournalRoute","VoStudentJournalPath","VoStudentCertPath","VoStudentCertRoute","VoTrainingPath","VoTrainingRoute","VoTrainingShowListPath","VoTrainingShowListRoute","VoTrainingAddPath","VoTrainingOpenRoute","VoTrainingOpenPath","VoTrainingEditRoute","VoTrainingEditPath","VoTrainingCopyRoute","VoTrainingCopyPath","VoTrainingProgressRoute","VoTrainingProgressPath","VoTrainingJournalRoute","VoTrainingJournalPath","VoUserManualPath","VoStudentNewsTabs","VoStudentNewsTabRoute","VoStudentSkrinNewsShowListPath","VoStudentSkrinNewsShowListRoute","VoStudentSkrinNewsOpenItemPath","VoStudentSkrinNewsOpenItemRoute","VoStudentSdlNewsShowListPath","VoStudentSdlNewsShowListRoute","VoStudentSdlNewsOpenItemPath","VoStudentSdlNewsOpenItemRoute","VoStudentTrainingsPath","VoStudentTrainingsRoute","VoStudentTrainingShowPath","VoStudentTrainingShowRoute","VoStudentOpenTrainingPath","VoStudentOpenTrainingRoute","VoStudentOpenTrainingTabsRoute","VoStudentOpenTestPath","VoStudentOpenTestRoute","VoStudentOpenQuestionPath","VoStudentOpenQuestionRoute","VoStudentOpenTestResultPath","VoStudentOpenTestResultRoute","VoPricePath","ApiRegistryPath","SetKaFlLogOut","defaultState","accesses"],"mappings":"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","file":"static/js/main.06844392.chunk.js","sourcesContent":["import { IStateType, IModules, ISiteTheme, ISiteList } from './../Interface/MainTypes';\r\n\r\nexport function GetVoTheme(modules: IModules[] | null, stateType: IStateType): ISiteTheme {\r\n const defaultValueTheme: ISiteTheme = { id: 0, name: \"Default\" };\r\n \r\n if (modules === null)\r\n return defaultValueTheme;\r\n \r\n let siteTheme: ISiteTheme | undefined = undefined;\r\n \r\n if (stateType === 'Desktop') {\r\n siteTheme = modules.find(x => x.id === ISiteList.voDesktop)?.siteTheme;\r\n }\r\n else {\r\n siteTheme = modules.find(x => x.id === ISiteList.voWeb)?.siteTheme;\r\n }\r\n \r\n if (siteTheme)\r\n return siteTheme;\r\n \r\n return defaultValueTheme;\r\n }","import React from \"react\";\r\nimport { Alert, AlertProps } from \"@material-ui/lab\";\r\nimport DoneAllIcon from '@material-ui/icons/DoneAll';\r\n\r\n// вместо Alert заменить на AlertIconOverride - для всего проекта целиком \r\n\r\n\r\nconst AlertIconOverride = (props: AlertProps) => {\r\n\r\n // замена иконки успешного сообщения - похоже на лого СБЕРА\r\n // null - заначение по умолчанию для Icons\r\n\r\n const getIcon = (): React.ReactNode => {\r\n switch (props.severity) {\r\n case \"success\":\r\n return ;\r\n default:\r\n return null;\r\n }\r\n };\r\n\r\n\r\n return (\r\n \r\n {props.children}\r\n \r\n );\r\n}\r\n\r\nexport default AlertIconOverride;","import { useState } from \"react\"\r\nimport Visibility from '@material-ui/icons/Visibility';\r\nimport VisibilityOff from '@material-ui/icons/VisibilityOff';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport TextField from '@material-ui/core/TextField';\r\n\r\ninterface IProps {\r\n value: string,\r\n setValue(value: string): void,\r\n\r\n label?: string | undefined\r\n disabled?: boolean | undefined\r\n}\r\n\r\nconst PasswordInput = (props: IProps) => {\r\n const [showPassword, setShowPassword] = useState(false);\r\n\r\n const label: string = props.label ? props.label : \"Пароль\";\r\n\r\n const handleClickShowPassword = () => setShowPassword(!showPassword);\r\n\r\n const handelChangePassword = (e: React.ChangeEvent) => {\r\n const { target: { value: password } } = e;\r\n props.setValue(password);\r\n }\r\n\r\n return (\r\n { event.preventDefault();}}\r\n onMouseUp={(event) => { event.preventDefault(); }}\r\n size=\"small\"\r\n >\r\n {showPassword ? : }\r\n \r\n )\r\n }}\r\n />\r\n )\r\n}\r\n\r\nexport default PasswordInput;","\r\n//авторизация \r\n\r\nexport const apiKaFlLogin: string = \"api/KaflAuth/Login\";\r\nexport const apiKaFlAuthAuto: string = \"api/KaflAuth/LoginAuto\";\r\nexport const apiKaFlLogOut: string = \"api/KaflAuth/Logout\";\r\n\r\n\r\n//отчеты\r\nexport const apiKaFlCreateReport: string = \"api/kaflreport/createReport\";\r\nexport const apiKaFLGetReportPdf: string = \"api/kaflreport/GetReportPdf\";\r\nexport const apiKaFLGetGeneratedReportList: string = \"api/kaflreport/GetReports\";\r\nexport const apiKaFLSearchGeneratedReportList: string = \"api/kaflreport/SearchReports\";\r\nexport const apiKaFlDeleteSelectedReports: string = \"api/kaflreport/DeleteReportListById\";\r\nexport const apiKaFlDeleteAllReports: string = \"api/kaflreport/DeleteReportListBySearch\";\r\nexport const apiKaFlGetLimitCount: string = \"api/KaflReportLimit/KaflGetReportUsage\";\r\n\r\n// информеры \r\nexport const apiKaFlGetInformers: string = \"api/KaflInformer/KaflGetInformers\";\r\nexport const apiKaFlGetInformerStatus: string = \"api/KaflInformer/KaflGetInformerById\";\r\nexport const apiKaFlCloseAllCompletedInformer: string = \"api/KaflInformer/KaflDeleteCompleteInformers\";\r\nexport const apiKaFlDeleteCompletedInformer: string = \"api/KaflInformer/KaflDeleteInformer\";\r\nexport const apiKaFlNextQuestionRequest: string = \"api/KaflReport/CancelCheck\";\r\n\r\n\r\n\r\n\r\n\r\n","import { AppThunkAction } from './index'\r\nimport { IComponentStatus } from '../Interface/MainTypes';\r\nimport { SetHttpErrorMessages, SetHttpErrorMessagesAction } from './HttpErrorMessages';\r\nimport { SetHttpWarningMessages, SetHttpWarningMessagesAction } from './HttpWarningMessages';\r\nimport { v4 as uuidv4 } from 'uuid';\r\nimport { ISkrinResponseMessages } from '../Interface/MainTypes';\r\n\r\nenum ISkrinResponseStatus { Success = 0, Error = 1, Warning = 2 }\r\n\r\ninterface ISkrinResponse {\r\n data: T,\r\n status: ISkrinResponseStatus,\r\n errorMessages: Array,\r\n warningMessages: Array,\r\n}\r\n\r\ntype HttpMethod = 'GET' | 'POST' | 'DELETE' | 'PUT';\r\n\r\nexport type SetStatusRequestType = (status: IComponentStatus) => void;\r\n\r\nfunction GetRequestData(url: string, method: HttpMethod, body?: U): Request {\r\n\r\n const baseUrl = window.location.origin;\r\n const fullPath = `${baseUrl}/${url}`;\r\n\r\n if (body) {\r\n return new Request(fullPath, {\r\n method: method,\r\n body: JSON.stringify(body),\r\n headers: { 'Content-Type': 'application/json' }\r\n });\r\n }\r\n\r\n return new Request(fullPath, { method: method });\r\n}\r\n\r\n\r\nexport const SkrinHttpRequest = (\r\n url: string,\r\n method: HttpMethod,\r\n setStatusRequest?: SetStatusRequestType,\r\n body?: U,\r\n): AppThunkAction | SetHttpWarningMessagesAction | SetHttpErrorMessagesAction> => async (dispatch) => {\r\n\r\n if (setStatusRequest)\r\n setStatusRequest('pending');\r\n\r\n let responseStatus: number | undefined = undefined;\r\n let responseStatusText: string | undefined = undefined;\r\n\r\n const request = GetRequestData(url, method, body);\r\n try {\r\n const response = await fetch(request);\r\n\r\n responseStatus = response.status;\r\n responseStatusText = response.statusText;\r\n\r\n if (false === response.ok) {\r\n throw new Error(\"Failed_request\");\r\n }\r\n\r\n const contentType: string | null = response.headers.get('content-type');\r\n const isJsonResponse: boolean = IsJsonResponse(contentType);\r\n\r\n if (setStatusRequest)\r\n setStatusRequest('success');\r\n\r\n if (false === isJsonResponse)\r\n return undefined;\r\n\r\n const responseData: ISkrinResponse = await response.json();\r\n\r\n if (setStatusRequest)\r\n setStatusRequest('success');\r\n\r\n if (responseData.status === ISkrinResponseStatus.Success) {\r\n return responseData.data;\r\n } else if (responseData.status === ISkrinResponseStatus.Error) {\r\n const errorMessages: ISkrinResponseMessages = { id: uuidv4().toString(), messages: responseData.errorMessages };\r\n dispatch(SetHttpErrorMessages(errorMessages));\r\n } else if (responseData.status === ISkrinResponseStatus.Warning) {\r\n const warningMessages: ISkrinResponseMessages = { id: uuidv4().toString(), messages: responseData.warningMessages };\r\n dispatch(SetHttpWarningMessages(warningMessages));\r\n }\r\n\r\n return undefined;\r\n }\r\n catch (error) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n const stacktrace = error instanceof Error && error.stack ? error.stack : '';\r\n const bodyJson = body ? JSON.stringify(body) : undefined;\r\n const msg = MessageFormatHttp(request.url, responseStatus, responseStatusText, message, stacktrace, bodyJson, request.method);\r\n console.log(msg);\r\n throw new Error(msg);\r\n }\r\n}\r\n\r\nfunction IsJsonResponse(contentTypeHeader: string | null): boolean {\r\n if (contentTypeHeader === null)\r\n return false;\r\n\r\n if (contentTypeHeader && contentTypeHeader.length === 0)\r\n return false;\r\n\r\n if (contentTypeHeader && contentTypeHeader.toLowerCase().includes(\"application/json\"))\r\n return true;\r\n\r\n return false;\r\n}\r\n\r\nfunction MessageFormatHttp(fullPath: string, responseStatus: number | undefined, responseStatusText: string | undefined, message: string, stacktrace: string, body?: string | undefined, method?: string | undefined): string {\r\n const methodLabel: string = `method = ${method};`;\r\n const urlLabel: string = `url = ${fullPath};`;\r\n const responseStatusLabel: string = `responseStatus = ${responseStatus};`;\r\n const responseStatusTextLabel: string = `responseStatusText = ${responseStatusText};`;\r\n const bodyLabel: string = `body = ${body};`;\r\n const messageLabel: string = `message = ${message};`;\r\n const stacktraceLabel: string = `innerStack = ${stacktrace};`;\r\n\r\n return `HttpRequestError ${methodLabel} ${urlLabel} ${responseStatusLabel} ${responseStatusTextLabel} ${bodyLabel} ${messageLabel} ${stacktraceLabel}`;\r\n}\r\n\r\n\r\nexport default SkrinHttpRequest;","import { Action, Reducer } from 'redux';\r\nimport { IStudentJournalsFilterInfo } from './../Interface/VoTypes';\r\n\r\nexport interface VoStudentJournalsInfoState {\r\n studentJournalsInfo: IStudentJournalsFilterInfo\r\n}\r\n\r\nexport interface SetJournalsInfoAction { type: 'SET_VO_STUDENT_JOURNALS_INFO', info: IStudentJournalsFilterInfo }\r\nexport interface SetClearJournalsInfohAction { type: 'SET_VO_STUDENT_JOURNALS_CLEAR_INFO' }\r\n\r\nexport const SetJournalsInfo = (info: IStudentJournalsFilterInfo): SetJournalsInfoAction => (\r\n { type: 'SET_VO_STUDENT_JOURNALS_INFO', info }\r\n)\r\n\r\nexport const SetClearJournalsInfo = (): SetClearJournalsInfohAction => (\r\n { type: 'SET_VO_STUDENT_JOURNALS_CLEAR_INFO' }\r\n)\r\n\r\ntype KnownAction = SetJournalsInfoAction | SetClearJournalsInfohAction;\r\n\r\nexport const reducer: Reducer = (state: VoStudentJournalsInfoState | undefined, incomingAction: Action): VoStudentJournalsInfoState => {\r\n\r\n if (state === undefined) {\r\n return { studentJournalsInfo: { startDate: null, endDate: null, selectedAll: false, selectedIds: [], areaId: undefined } };\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n\r\n switch (action.type) {\r\n case 'SET_VO_STUDENT_JOURNALS_INFO':\r\n return { studentJournalsInfo: action.info };\r\n case 'SET_VO_STUDENT_JOURNALS_CLEAR_INFO':\r\n return { studentJournalsInfo: { startDate: null, endDate: null, selectedAll: false, selectedIds: [], areaId: undefined } };\r\n default:\r\n return state;\r\n }\r\n\r\n};","import { Route, Redirect, Switch } from 'react-router-dom';\r\nimport { MainAuthPath, VoRoutePath, ApiRoutePath, UserInfoPath, UserSettingLogs, DataImportPath, CreateDbBackUpPagePath, KaFlRoutePath} from './../../../Interface/RouteConst';\r\nimport { connect, ConnectedProps} from 'react-redux';\r\nimport { ApplicationState } from './../../../store/index';\r\nimport lazyWithRetry from './../../Common/LazyWithRetry/lazyWithRetry';\r\n\r\nconst ApiRoutePage = lazyWithRetry( ()=> import('./../../SoapApi/Route/Route') );\r\nconst StartPage = lazyWithRetry(() => import('./../../Main/StartPage/StartPage'));\r\nconst VoRoutePage = lazyWithRetry(() => import('./../../VO/Route/VoRouteTheme'));\r\nconst UserInfo = lazyWithRetry(() => import('./../../Main/UserInfo/UserInfo'));\r\nconst SettingLogs = lazyWithRetry(() => import('./../SettingLogs/SettingLogs'));\r\nconst ImportPage = lazyWithRetry(() => import('./../ImportPage/ImportPage'));\r\nconst CreateDbBackUpPage = lazyWithRetry(() => import('../CreateDbBackUpPage/CreateDbBackUpPage'));\r\nconst KaFlRoutePage = lazyWithRetry(() => import('./../../KaFl/Route/KaFlRoute'));\r\n\r\n\r\nconst mapStateToProps = (state : ApplicationState) => ({\r\n isAuth : state.appAuth.appAuth.isAuth\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\n\r\nfunction PrivateRouts(props : PropsFromRedux){\r\n\r\n \r\n \r\n if( props.isAuth === false)\r\n {\r\n return ;\r\n }\r\n\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\r\nexport default connector(PrivateRouts);\r\n","import { Action, Reducer } from 'redux';\r\nimport {AppThunkAction} from './index'\r\nimport { push } from 'connected-react-router'\r\nimport { StartPagePath } from './../Interface/RouteConst';\r\nimport { ClientError } from './../Interface/MainTypes'\r\n\r\nexport interface ErrorState {\r\n error: ClientError | null\r\n}\r\n\r\nexport interface SetErrorAction { type: 'SET_ERROR', error : ClientError }\r\nexport interface UnSetErrorAction { type: 'UNSET_ERROR' }\r\n\r\n\r\ntype KnownAction = SetErrorAction | UnSetErrorAction;\r\n\r\n\r\nexport const setError = (error : Error) : SetErrorAction => (\r\n { type: 'SET_ERROR', error }\r\n)\r\n\r\nconst unSetError = () : UnSetErrorAction => (\r\n { type: 'UNSET_ERROR' }\r\n)\r\n\r\nexport const ResetApp = (): AppThunkAction => (dispatch, getState) => {\r\n const appState = getState();\r\n if (appState) {\r\n dispatch(unSetError());\r\n dispatch(push(StartPagePath));\r\n }\r\n}\r\n\r\nexport const reducer: Reducer = (state: ErrorState | undefined, incomingAction: Action): ErrorState => {\r\n \r\n if (state === undefined) {\r\n return { error : null };\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'SET_ERROR':\r\n return {error : new ClientError(action.error.message, action.error.name, action.error.stack) };\r\n case 'UNSET_ERROR':\r\n return { ...state, error: null };\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\nexport const mapDispatchToPropsError = (dispatch : any) =>{\r\n return {\r\n setError :(error: Error) => dispatch(setError(error)),\r\n }\r\n }","import Grid from '@material-ui/core/Grid';\r\nimport Button from '@material-ui/core/Button';\r\nimport { connect, ConnectedProps} from 'react-redux';\r\nimport { ResetApp } from './../../../store/Error';\r\n\r\n\r\nconst mapDispatchToProps = (dispatch : any) =>{\r\n return {\r\n unSetError : () => dispatch(ResetApp())\r\n }\r\n}\r\n\r\nconst connector = connect(null, mapDispatchToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\nconst ErrorView = (props : PropsFromRedux) =>{\r\n\r\n \r\n \r\n const onResetApp = (e : React.MouseEvent) =>{\r\n props.unSetError();\r\n }\r\n\r\n return(\r\n \r\n \r\n

Произошла ошибка

\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default connector(ErrorView);","import Grid from '@material-ui/core/Grid';\r\nimport Loader from './../../Common/Loader/Loader';\r\nimport { useState } from 'react';\r\nimport { IComponentStatus, IAuthStatus, IAdminActionResult } from '../../../Interface/MainTypes';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Button from '@material-ui/core/Button';\r\nimport { get } from './../../../Utils/Fetch';\r\nimport { apiStartUpdate, apiMainAuthAuto } from './../../../Interface/ServerRouteConst';\r\nimport { SetAuth } from './../../../store/AuthStatus';\r\nimport { ApplicationState } from './../../../store/index';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { StartPagePath } from './../../../Interface/RouteConst';\r\nimport { Redirect } from 'react-router-dom';\r\nimport ModalMessageWithNode from '../../Common/ModalMessageWithNode/ModalMessageWithNode';\r\nimport AccessPage from './../../Main/CommonSetting/AccessPage';\r\nimport QueryDialog from './../../Common/QueryDialog/QueryDialog';\r\nimport DefaultWrapperWidth from '../../Main/DefaultWrapperWidth/WrapperPaddingWidth';\r\n\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n hasUpdate: state.appAuth.appAuth.hasUpdate\r\n});\r\n\r\nexport const mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n setAuth: (auth: IAuthStatus) => dispatch(SetAuth(auth))\r\n }\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\nconst UpdateInfo = (props: PropsFromRedux) => {\r\n\r\n const [status, setStatus] = useState('idle');\r\n const [openQuryDialog, setOpenQuryDialog] = useState(false);\r\n const [showUserDialog, setShowUserDialog] = useState(false);\r\n\r\n const onCloseUserDialog = () => setShowUserDialog(false);\r\n const onCloseDeleteDialog = () => setOpenQuryDialog(false);\r\n\r\n\r\n const handelSend = (e: React.MouseEvent) => {\r\n setOpenQuryDialog(true);\r\n }\r\n\r\n const onSendQuery = () => {\r\n setStatus('pending');\r\n get(apiStartUpdate)\r\n .then((response: IAdminActionResult) => {\r\n if (response.hasAccess) {\r\n get(apiMainAuthAuto)\r\n .then((response: IAuthStatus) => {\r\n props.setAuth(response);\r\n setStatus('success');\r\n })\r\n }\r\n else {\r\n setStatus('success');\r\n setShowUserDialog(true);\r\n }\r\n })\r\n }\r\n\r\n const SaveAfterLogin = () => {\r\n setShowUserDialog(false);\r\n onSendQuery();\r\n };\r\n\r\n\r\n const Form: JSX.Element = (\r\n <>\r\n Запуск процесса обновления\r\n\r\n

\r\n\r\n Перейти на главную страницу\r\n \r\n );\r\n\r\n if (props.hasUpdate === false)\r\n return \r\n\r\n return (\r\n \r\n \r\n \r\n После отправки запроса приложение будет временно недоступно, до завершение обновления\r\n

\r\n
\r\n \r\n {status === 'pending' ? Loader : Form}\r\n \r\n }\r\n />\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default connector(UpdateInfo);","import Grid from '@material-ui/core/Grid';\r\nimport { Alert, AlertTitle } from '@material-ui/lab';\r\nimport Loader from './../../Common/Loader/Loader';\r\nimport { ApplicationState } from './../../../store/index';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { StartPagePath } from './../../../Interface/RouteConst';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { useEffect, useState } from 'react';\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n updateting: state.appAuth.appAuth.updateProcess\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\nconst StartUpdateInfo = (props: PropsFromRedux) => {\r\n const [hasErrorUpdate, setHasErrorUpdate] = useState(false);\r\n\r\n useEffect(() => {\r\n const timeout = setTimeout(() => setHasErrorUpdate(true), 1200000); \r\n\r\n return () => clearTimeout(timeout);\r\n }, [])\r\n\r\n let message : JSX.Element | null = null;\r\n\r\n if(hasErrorUpdate === false)\r\n {\r\n message = Приложение обновляетсяПожалуйста, подождите\r\n }\r\n else\r\n {\r\n message = Ошибка обновления приложенияПожалуйста, обратитесь к администратору\r\n }\r\n \r\n\r\n if (props.updateting === false)\r\n return \r\n\r\n return (\r\n \r\n \r\n {message}\r\n {Loader}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default connector(StartUpdateInfo);","\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { Alert, AlertTitle } from '@material-ui/lab';\r\nimport Loader from '../Loader/Loader';\r\nimport { ApplicationState } from '../../../store/index';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { StartPagePath } from '../../../Interface/RouteConst';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n blockDbChanges: state.appAuth.appAuth.blockDbChanges\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\nconst StartUpdateDbInfo = (props: PropsFromRedux) => {\r\n\r\n if (props.blockDbChanges === false)\r\n return \r\n\r\n return (\r\n \r\n \r\n База данных приложения обновляетсяПожалуйста, подождите\r\n {Loader}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default connector(StartUpdateDbInfo);","import buildDate from \"./../../../buildDate.json\";\r\nimport { get } from \"./../../../Utils/Fetch\";\r\nimport { useState, useEffect } from 'react';\r\nimport { IBuildDate } from \"./../../../Interface/MainTypes\";\r\nimport { Alert } from '@material-ui/lab';\r\nimport RefreshIcon from '@material-ui/icons/Refresh';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\n\r\nconst ClearCacheComponent = () => {\r\n const [intervalId, setIntervalId] = useState(null);\r\n const [showQuery, setShowQuery] = useState(false);\r\n\r\n const onReload = () => {\r\n window.location.reload();\r\n }\r\n\r\n const ClearTimer = () => {\r\n if (intervalId)\r\n clearInterval(intervalId);\r\n }\r\n\r\n useEffect(() => {\r\n\r\n let intervalID = setInterval(() => {\r\n\r\n const timeLabel = new Date().getTime();\r\n const url : string = `meta.json?v${timeLabel}`;\r\n\r\n get(url)\r\n .then((response: IBuildDate) => {\r\n if ((showQuery === false) && (response.buildDate !== buildDate.buildDate)) {\r\n setShowQuery(true);\r\n }\r\n })\r\n .catch(error => {\r\n console.log(\"Error status chank\", error);\r\n })\r\n\r\n }, 180000); // 3 мин. 180000\r\n\r\n setIntervalId(intervalID);\r\n\r\n return () => ClearTimer();\r\n }, [])\r\n\r\n const handleClose = (event?: React.SyntheticEvent, reason?: string) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n\r\n setShowQuery(false);\r\n };\r\n\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\r\nexport default ClearCacheComponent;","\r\nimport Grid from '@material-ui/core/Grid';\r\nimport { Alert, AlertTitle } from '@material-ui/lab';\r\nimport Loader from '../Loader/Loader';\r\nimport { ApplicationState } from '../../../store/index';\r\nimport { Redirect } from 'react-router-dom';\r\nimport { StartPagePath } from '../../../Interface/RouteConst';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { IComponentStatus } from './../../../Interface/MainTypes';\r\nimport { useEffect, useState } from 'react';\r\nimport { get } from './../../../Utils/Fetch';\r\nimport { apiImportDataGetFullPathFileDb } from './../../../Interface/ServerRouteConst';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport FileCopyIcon from '@material-ui/icons/FileCopy';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport AlertIconOverride from './../AlertIconOverride/AlertIconOverride';\r\n\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n dbUpdateProcessHasError: state.appAuth.appAuth.dbUpdateProcessHasError\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\nconst DbUpdateHasError = (props: PropsFromRedux) => {\r\n const [status, setStatus] = useState('idle');\r\n const [fullPathFile, setFullPathFile] = useState('');\r\n const [showSnack, setShowSnack] = useState(false);\r\n\r\n useEffect(() => {\r\n setStatus('pending');\r\n\r\n get(apiImportDataGetFullPathFileDb)\r\n .then((responseFolder: string) => {\r\n setFullPathFile(responseFolder);\r\n setStatus('success');\r\n })\r\n\r\n }, []);\r\n\r\n const handelCloseSnack = () => setShowSnack(false);\r\n\r\n const copyPath = () => {\r\n if (fullPathFile.length > 0) {\r\n navigator.clipboard.writeText(fullPathFile);\r\n setShowSnack(true);\r\n }\r\n }\r\n\r\n if (props.dbUpdateProcessHasError === false)\r\n return \r\n\r\n if (status === 'pending') {\r\n return (\r\n \r\n \r\n {Loader}\r\n \r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n \r\n Ошибка обновления базы данных \r\n

Для восстановления работы приложения требуется :

\r\n
    \r\n
  1. Замена файла БД резервной копией
  2. \r\n
  3. Перезапуск службы SkrinDesktop
  4. \r\n
\r\n
\r\n
\r\n \r\n
\r\n {\r\n (fullPathFile.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 {Loader}\r\n
\r\n
\r\n \r\n \r\n Путь скопирован в буфер\r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default connector(DbUpdateHasError);","import { ApplicationState } from './../../../store/index';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { useLocation } from 'react-router-dom';\r\nimport { Helmet } from 'react-helmet';\r\nimport { useState, useEffect } from 'react';\r\nimport { ISite, ISiteTitleFavicon } from './../../../Interface/MainTypes';\r\nimport { VoRoutePath, ApiRoutePath, KaFlRoutePath, PodftFlRoutePath } from \"./../../../Interface/RouteConst\";\r\nimport { ISiteTheme } from './../../../Interface/MainTypes';\r\nimport { GetVoTheme } from './../../../Utils/GetVoTheme';\r\n\r\n\r\nconst getActiveSitePage = (location: string): ISite | null => {\r\n\r\n if (location.includes(VoRoutePath)) {\r\n return \"vo\";\r\n }\r\n else if (location.includes(ApiRoutePath)) {\r\n return \"soap\";\r\n }\r\n else if (location.includes(PodftFlRoutePath)) {\r\n return \"podftfl\";\r\n }\r\n else if (location.includes(KaFlRoutePath)) {\r\n return \"kafl\"\r\n }\r\n else { return null; }\r\n}\r\n\r\nconst getNewFaviconLink = (value: ISite | null, themeSite: ISiteTheme): ISiteTitleFavicon => {\r\n switch (value) {\r\n case \"vo\":\r\n if (themeSite.id === 1) {\r\n return { title: \"Метр квадратный Обучение\", faviconLink: \"/favicons/favicon_vo_m2_blue.ico?v=1\" };\r\n }\r\n return { title: \"СКРИН : Обучение\", faviconLink: \"/favicons/favicon_vo.ico?v=1\" };\r\n case \"soap\":\r\n return { title: \"СКРИН : API\", faviconLink: \"/favicons/favicon_api.ico?v=2\" };\r\n case \"podftfl\":\r\n return { title: \"СКРИН : ПОДФТ ФЛ\", faviconLink: \"/favicons/favicon_podft.ico?v=3\" };\r\n case \"kafl\":\r\n return { title: \"СКРИН : КА/ФЛ\", faviconLink: \"/favicon.ico?v=0\" };\r\n \r\n case null:\r\n return { title: \"СКРИН : Desktop\", faviconLink: \"/favicon.ico?v=0\" };\r\n }\r\n}\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n stateType: state.appAuth.appAuth.stateType,\r\n modules: state.appAuth.appAuth.modules,\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\nconst DynamicFavicon = (props: PropsFromRedux) => {\r\n const defaultValue: ISiteTitleFavicon = { title: \"СКРИН : Desktop\", faviconLink: \"/favicon.ico?v=0\" };\r\n const themeSite: ISiteTheme = GetVoTheme(props.modules, props.stateType);\r\n const [activeSite, setActiveSite] = useState(null);\r\n const [faviconLink, setFaviconLink] = useState(defaultValue);\r\n const [activeThemeId, setActiveThemeId] = useState(0); // темы по умолчанию id=0\r\n\r\n const activeVoTheme: ISiteTheme = GetVoTheme(props.modules, props.stateType); // тек. момент темы только ВО \r\n const location: string = useLocation().pathname;\r\n\r\n useEffect(() => {\r\n\r\n const activeSitePage: ISite | null = getActiveSitePage(location);\r\n if (false === (activeSitePage === activeSite)) {\r\n setActiveSite(activeSitePage);\r\n setFaviconLink(getNewFaviconLink(activeSitePage, themeSite));\r\n }\r\n }, [location])\r\n\r\n useEffect(() => { // смена темы id \r\n if (false === (activeThemeId === activeVoTheme.id)) {\r\n setActiveThemeId(activeVoTheme.id);\r\n const activeSitePage: ISite | null = getActiveSitePage(location);\r\n setFaviconLink(getNewFaviconLink(activeSitePage, activeVoTheme));\r\n }\r\n }, [activeVoTheme.id])\r\n\r\n\r\n if (props.stateType === \"Web\") {\r\n return (\r\n \r\n \r\n {faviconLink.title}\r\n \r\n );\r\n }\r\n\r\n return (\r\n \r\n \r\n {faviconLink.title}\r\n \r\n );\r\n}\r\n\r\nexport default connector(DynamicFavicon);","import { useState, useEffect } from 'react';\r\nimport { ApplicationState } from './../../../store/index';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { Alert } from '@material-ui/lab';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Snackbar from '@material-ui/core/Snackbar';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport ArrowForwardIcon from '@material-ui/icons/ArrowForward';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { StartUpdateDbInfoPath, StartUpdateInfoPath } from './../../../Interface/RouteConst';\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n appHasUpdate: state.appAuth.appAuth.hasUpdate,\r\n hasLongScriptDbUpdate: state.appAuth.appAuth.hasLongScriptDbUpdate\r\n});\r\n\r\nconst connector = connect(mapStateToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\nconst stepSizeTimer: number = 10000; // 10c. вызов таймера \r\nconst stepSizeCount: number = 60; // 10 мин. после закрытия \r\n\r\nconst UpdateAppAlert = (props: PropsFromRedux) => {\r\n const [open, setOpen] = useState(false);//useState(false);\r\n const [timer, setTimer] = useState(stepSizeCount);\r\n\r\n let history = useHistory();\r\n\r\n useEffect(() => {\r\n if (props.appHasUpdate || props.hasLongScriptDbUpdate) {\r\n setOpen(true);\r\n }\r\n }, [props.appHasUpdate, props.hasLongScriptDbUpdate]);\r\n\r\n useEffect(() => {\r\n let interval: NodeJS.Timeout;\r\n if ((open === false) && timer > 0) {\r\n interval = setInterval(() => {\r\n setTimer((prevTimer) => prevTimer - 1);\r\n }, stepSizeTimer);\r\n }\r\n\r\n const needShowFromRedux: boolean = props.appHasUpdate || props.hasLongScriptDbUpdate;\r\n\r\n if ((0 === timer) && (false === open) && needShowFromRedux)\r\n setOpen(true);\r\n \r\n\r\n return () => {\r\n clearInterval(interval);\r\n };\r\n }, [open, timer]);\r\n\r\n\r\n const handleSnackbarClose = () => {\r\n setOpen(false);\r\n setTimer(stepSizeCount);\r\n };\r\n\r\n const getTitleMessage = (): string => {\r\n if (props.appHasUpdate)\r\n return \"Доступно обновление\";\r\n\r\n if (props.hasLongScriptDbUpdate)\r\n return \"Требуется обновление БД\";\r\n\r\n return \"\";\r\n }\r\n\r\n const handleUpdateClick = () => {\r\n if (props.appHasUpdate) {\r\n setOpen(false);\r\n history.push(StartUpdateInfoPath);\r\n return;\r\n }\r\n\r\n if (props.hasLongScriptDbUpdate) {\r\n setOpen(false);\r\n history.push(StartUpdateDbInfoPath);\r\n return;\r\n }\r\n };\r\n\r\n\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 >{getTitleMessage()}\r\n \r\n )\r\n}\r\n\r\nexport default connector(UpdateAppAlert);","import Grid from '@material-ui/core/Grid';\r\nimport Loader from './../../Common/Loader/Loader';\r\nimport { useState } from 'react';\r\nimport { IComponentStatus, IAuthStatus, IAdminActionResult } from '../../../Interface/MainTypes';\r\nimport Alert from '@material-ui/lab/Alert';\r\nimport Button from '@material-ui/core/Button';\r\nimport { get } from './../../../Utils/Fetch';\r\nimport { apiStartDbUpdate, apiMainAuthAuto } from './../../../Interface/ServerRouteConst';\r\nimport { SetAuth } from './../../../store/AuthStatus';\r\nimport { ApplicationState } from './../../../store/index';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { NavLink } from 'react-router-dom';\r\nimport { StartPagePath } from './../../../Interface/RouteConst';\r\nimport { Redirect } from 'react-router-dom';\r\nimport ModalMessageWithNode from '../../Common/ModalMessageWithNode/ModalMessageWithNode';\r\nimport AccessPage from './../../Main/CommonSetting/AccessPage';\r\nimport QueryDialog from './../../Common/QueryDialog/QueryDialog';\r\nimport DefaultWrapperWidth from '../../Main/DefaultWrapperWidth/WrapperPaddingWidth';\r\n \r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n hasLongScriptDbUpdate: state.appAuth.appAuth.hasLongScriptDbUpdate,\r\n});\r\n\r\nexport const mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n setAuth: (auth: IAuthStatus) => dispatch(SetAuth(auth))\r\n }\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\nconst UpdateDbInfo = (props: PropsFromRedux) => {\r\n const [status, setStatus] = useState('idle');\r\n const [openQuryDialog, setOpenQuryDialog] = useState(false);\r\n const [showUserDialog, setShowUserDialog] = useState(false);\r\n\r\n const onCloseUserDialog = () => setShowUserDialog(false);\r\n const onCloseQuryDialog = () => setOpenQuryDialog(false);\r\n\r\n const handelSend = () => setOpenQuryDialog(true);\r\n\r\n const SaveAfterLogin = () => {\r\n setShowUserDialog(false);\r\n onSendQuery();\r\n };\r\n\r\n const onSendQuery = () => {\r\n setStatus('pending');\r\n get(apiStartDbUpdate)\r\n .then((response: IAdminActionResult) => {\r\n if (response.hasAccess) {\r\n get(apiMainAuthAuto)\r\n .then((response: IAuthStatus) => {\r\n props.setAuth(response);\r\n setStatus('success');\r\n })\r\n }\r\n else {\r\n setStatus('success');\r\n setShowUserDialog(true);\r\n }\r\n })\r\n }\r\n\r\n if (props.hasLongScriptDbUpdate === false)\r\n return \r\n\r\n\r\n return (\r\n \r\n \r\n \r\n После отправки запроса приложение будет временно недоступно, до завершение обновления БД\r\n

\r\n
\r\n \r\n {status === 'pending' ? Loader :
}\r\n \r\n }\r\n />\r\n \r\n \r\n \r\n );\r\n}\r\n\r\ninterface IProps {\r\n handelSend: () => void\r\n}\r\n\r\nconst Form = (props: IProps) => {\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\nexport default connector(UpdateDbInfo);\r\n\r\n","import { IModalType } from \"../../../Interface/MainTypes\";\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogContentText from '@material-ui/core/DialogContentText';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { Alert } from '@material-ui/lab';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport IconButton from '@material-ui/core/IconButton';\r\n\r\nconst useStyles = makeStyles({\r\n dialog: {\r\n position: 'absolute',\r\n top: \"3%\"\r\n },\r\n closeButton: {\r\n color: \"#ccc\",\r\n },\r\n});\r\n\r\ninterface IProps {\r\n title: string,\r\n messages: Array | null,\r\n id : string,\r\n handleClose(id : string) : void,\r\n type: IModalType\r\n}\r\n\r\ninterface IPropsList {\r\n list: Array | null\r\n}\r\n\r\nconst ShowList = (props: IPropsList) => {\r\n if (props.list === null)\r\n return null;\r\n\r\n return (\r\n <>\r\n {props.list.map((item, index) => (\r\n {item}\r\n ))}\r\n \r\n );\r\n}\r\n\r\nconst ModalList = (props: IProps) => {\r\n const classes = useStyles();\r\n const onCloseModal = () => props.handleClose(props.id);\r\n\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n {props.title}\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\nexport default ModalList;","import { ApplicationState } from '../../../store/index';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { SetClearHttpErrorMessages } from './../../../store/HttpErrorMessages';\r\nimport { SetClearHttpWarningMessages } from '../../../store/HttpWarningMessages';\r\nimport ModalList from './ModalList';\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n\terrorMessagesInfo: state.httpErrorMessages.httpErrorMessages,\r\n\twarningMessagesInfo: state.httpWarningMessages.httpWarningMessages\r\n});\r\n\r\nconst mapDispatchToProps = (dispatch: any) => {\r\n\treturn {\r\n\t\tcloseErrorModal: (id: string) => dispatch(SetClearHttpErrorMessages(id)),\r\n\t\tcloseWarningModal: (id: string) => dispatch(SetClearHttpWarningMessages(id))\r\n\t}\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\nconst HttpErrorModal = (props: PropsFromRedux) => {\r\n\r\n\treturn (<>\r\n\t\t{props.errorMessagesInfo.map((item) => (\r\n\t\t\t\r\n\t\t))}\r\n\r\n\t\t{props.warningMessagesInfo.map((item) => (\r\n\t\t\t\r\n\t\t))}\r\n\r\n\t)\r\n}\r\n\r\nexport default connector(HttpErrorModal);","import { Switch, Route } from 'react-router-dom';\r\nimport { Suspense, useState, useEffect } from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport CssBaseline from '@material-ui/core/CssBaseline';\r\nimport Loader from './Components/Common/Loader/Loader';\r\nimport { MainAuthPath, StartPagePath, StartUpdateInfoPath, CommonSettingPath, StartUpdateDbInfoPath } from './Interface/RouteConst';\r\nimport { apiMainAuthAuto, apiVoAuthAuto, apiVoAuthAutoWeb } from './Interface/ServerRouteConst';\r\nimport { IComponentStatus, IAuthStatus, IModules } from './Interface/MainTypes';\r\nimport { IVoAuthState, IVoAuthStateWeb } from './Interface/VoTypes';\r\nimport { get } from './Utils/Fetch';\r\nimport PrivateRouts from './Components/Main/PrivateRouts/PrivateRouts';\r\nimport { ApplicationState } from './store/index';\r\nimport ErrorView from './Components/Common/ErrrorView/ErrorView';\r\nimport UpdateInfo from './Components/Common/UpdateInfo/UpdateInfo';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { SetAuth, SetAuthModules } from './store/AuthStatus';\r\nimport { SetVoAuth } from './store/VoAuth';\r\nimport StartUpdateInfo from './Components/Common/UpdateInfo/StartUpdateInfo';\r\nimport StartUpdateDbInfo from './Components/Common/UpdateInfo/StartUpdateDbInfo';\r\nimport lazyWithRetry from './Components/Common/LazyWithRetry/lazyWithRetry';\r\nimport ClearCacheComponent from './Components/Common/ClearCacheComponent/ClearCacheComponent';\r\nimport DbUpdateHasError from \"./Components/Common/UpdateInfo/DbUpdateHasError\";\r\nimport DynamicFavicon from './Components/Main/DynamicFavicon/DynamicFavicon';\r\nimport UpdateAppAlert from './Components/Common/UpdateAppAlert/UpdateAppAlert';\r\nimport UpdateDbInfo from './Components/Common/UpdateDbInfo/UpdateDbInfo';\r\nimport { ThemeProvider, createTheme } from '@material-ui/core/styles';\r\nimport HttpErrorModal from './Components/Common/HttpErrorModal/HttpErrorModal';\r\nimport HttpRequest from './store/SkrinHttpRequest';\r\nimport { IKaFlAuthState } from './Interface/KaFlTypes';\r\nimport { SetKalAuth } from './store/KaFlAuth';\r\nimport { apiKaFlAuthAuto } from './Interface/KaFlServerRouteConst';\r\n\r\n// import TestSkrinHttpRequest from './Components/Main/TestSkrinHttpRequest/TestSkrinHttpRequest';\r\n// import { TestSkrinHttpRequestPath } from './Interface/RouteConst';\r\n\r\nconst MainAuth = lazyWithRetry(() => import('./Components/Main/Auth/AuthPage'));\r\nconst StartPage = lazyWithRetry(() => import('./Components/Main/StartPage/StartPage'));\r\nconst CommonSettingPage = lazyWithRetry(() => import('./Components/Main/CommonSetting/CommonSettingPage'));\r\n\r\n\r\nconst useStyles = makeStyles({\r\n\troot: {\r\n\t\tdisplay: 'flex',\r\n\t\tflexDirection: 'column',\r\n\t\tminHeight: '95vh'\r\n\t},\r\n\tfooter: {\r\n\t\tmarginTop: 'auto',\r\n\t\tminHeight: '5vh',\r\n\t\ttextAlign: \"center\",\r\n\t\twidth: \"100%\",\r\n\t\tminWidth: \"435px\"\r\n\t},\r\n\tlink: {\r\n\t\tcolor: \"#002984\",\r\n\t\tmargin: \"10px\",\r\n\t\ttextDecoration: \"none\"\r\n\t},\r\n\ttoolbar: {\r\n\t\tflexWrap: 'wrap',\r\n\t}\r\n});\r\n\r\n\r\nconst mapStateToProps = (state: ApplicationState) => ({\r\n\tappError: state.error?.error,\r\n\tappHasUpdate: state.appAuth.appAuth.hasUpdate,\r\n\tappStartUpdate: state.appAuth.appAuth.updateProcess,\r\n\tstateType: state.appAuth.appAuth.stateType,\r\n\tblockDbChanges: state.appAuth.appAuth.blockDbChanges,\r\n\tdbUpdateProcessHasError: state.appAuth.appAuth.dbUpdateProcessHasError,\r\n\thasLongScriptDbUpdate: state.appAuth.appAuth.hasLongScriptDbUpdate\r\n});\r\n\r\nexport const mapDispatchToProps = (dispatch: any) => {\r\n\treturn {\r\n\t\tsetAuth: (auth: IAuthStatus) => dispatch(SetAuth(auth)),\r\n\t\tsetVoAuth: (auth: IVoAuthState) => dispatch(SetVoAuth(auth)),\r\n\t\tupdateModules: (modules: Array | null) => dispatch(SetAuthModules(modules)),\r\n\r\n\t\tupdateKaFLAuth: (auth: IKaFlAuthState) => dispatch(SetKalAuth(auth)),\r\n\r\n\t\tgetAuthStateKaFl: () =>\r\n\t\t\tdispatch(HttpRequest(apiKaFlAuthAuto, \"GET\")),\r\n\t}\r\n}\r\n\r\nconst connector = connect(mapStateToProps, mapDispatchToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\nfunction App(props: PropsFromRedux) {\r\n\tconst [status, setStatus] = useState('idle');\r\n\r\n\tuseEffect(() => {\r\n\t\tif (props.stateType === \"Desktop\") {\r\n\t\t\tauthDesktop();\r\n\t\t}\r\n\t\telse {\r\n\t\t\tauthWeb();\r\n\t\t}\r\n\t}, [props]);\r\n\r\n\r\n\tconst authDesktop = () => {\r\n\t\tif (\r\n\t\t\t(props.appError === null) &&\r\n\t\t\t(props.appHasUpdate === false) &&\r\n\t\t\t(props.appStartUpdate === false) &&\r\n\t\t\t(props.blockDbChanges === false) &&\r\n\t\t\t(props.dbUpdateProcessHasError === false)\r\n\t\t) {\r\n\t\t\tget(apiMainAuthAuto)\r\n\t\t\t\t.then((response: IAuthStatus) => {\r\n\t\t\t\t\tprops.setAuth(response);\r\n\t\t\t\t\tconst needVoAuth: boolean = (response.isAuth &&\r\n\t\t\t\t\t\t(response.updateProcess === false) &&\r\n\t\t\t\t\t\t(response.blockDbChanges === false) &&\r\n\t\t\t\t\t\t(response.dbUpdateProcessHasError === false)\r\n\t\t\t\t\t);\r\n\r\n\t\t\t\t\tif (needVoAuth) {\r\n\t\t\t\t\t\tsubAuthModule();\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tsetStatus('success');\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\tconst authWeb = () => {\r\n\t\tif ((props.appError === null)) {\r\n\t\t\tget(apiMainAuthAuto)\r\n\t\t\t\t.then((response: IAuthStatus) => {\r\n\t\t\t\t\tprops.setAuth(response);\r\n\t\t\t\t\tif (response.isAuth) {\r\n\t\t\t\t\t\tget(apiVoAuthAutoWeb)\r\n\t\t\t\t\t\t\t.then((response: IVoAuthStateWeb) => {\r\n\t\t\t\t\t\t\t\tprops.setVoAuth(response.voAuth);\r\n\t\t\t\t\t\t\t\tif (response.voAuth.isAuth && response.modules && response.modules.length > 0) {\r\n\t\t\t\t\t\t\t\t\tprops.updateModules(response.modules);\r\n\t\t\t\t\t\t\t\t}\r\n\t\t\t\t\t\t\t\tsetStatus('success');\r\n\t\t\t\t\t\t\t})\r\n\t\t\t\t\t}\r\n\t\t\t\t\telse {\r\n\t\t\t\t\t\tsetStatus('success');\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t}\r\n\t}\r\n\r\n\t//авторизация подчиненных сайтов - при условии прохождения MainAuth\r\n\tconst subAuthModule = async () => {\r\n\t\t// при вызыве status === 'idle' \r\n\r\n\t\tconst [voAuthResponse, kaFlAuthResponse] = await Promise.all([\r\n\t\t\tget(apiVoAuthAuto),\r\n\t\t\tprops.getAuthStateKaFl()\r\n\t\t]);\r\n\r\n\r\n\t\tif (voAuthResponse) {\r\n\t\t\tprops.setVoAuth(voAuthResponse);\r\n\t\t}\r\n\r\n\t\tif (kaFlAuthResponse) {\r\n\t\t\tprops.updateKaFLAuth(kaFlAuthResponse);\r\n\t\t}\r\n\r\n\t\tsetStatus('success'); // запросы завершены \r\n\t}\r\n\r\n\tconst classes = useStyles();\r\n\r\n\tif (props.appError !== null)\r\n\t\treturn ;\r\n\r\n\tif (props.appStartUpdate)\r\n\t\treturn ;\r\n\r\n\tif (props.dbUpdateProcessHasError)\r\n\t\treturn ;\r\n\r\n\tif ((props.stateType === \"Desktop\") && (props.blockDbChanges))\r\n\t\treturn ;\r\n\r\n\r\n\tif (status === 'pending' || status === 'idle')\r\n\t\treturn Loader;\r\n\r\n\tconst defaultTheme = createTheme();\r\n\r\n\treturn (\r\n\t\t
\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\r\n\t\t\t\t\t\t\t\t{/* */}\r\n\t\t\t\t\t\t\t\t{/* - тестовый компонет отправки запросов /main/testSkrinRequest*/}\r\n\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t©1999-{new Date().getFullYear()} ООО «СКРИН»\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t
\r\n\t\t
\r\n\t);\r\n};\r\n\r\nexport default connector(App);","import * as Error from './Error';\r\nimport * as Auth from './AuthStatus';\r\nimport * as VoAth from './VoAuth';\r\nimport * as StudentJournalsInfo from './StudentJournalsInfo';\r\nimport * as HttpErrorMessages from './HttpErrorMessages';\r\nimport * as HttpWarningMessages from './HttpWarningMessages';\r\nimport * as KaFlAuth from './KaFlAuth';\r\n\r\nexport interface ApplicationState {\r\n error : Error.ErrorState,\r\n appAuth : Auth.AuthStatusState,\r\n voAuth : VoAth.VoAuthState,\r\n studentJournalsInfo : StudentJournalsInfo.VoStudentJournalsInfoState,\r\n httpErrorMessages: HttpErrorMessages.HttpErrorMessagesState,\r\n httpWarningMessages : HttpWarningMessages.HttpWarningMessagesState,\r\n kaFlAuth : KaFlAuth.KaFlAuthState\r\n}\r\n\r\n\r\nexport const reducers = {\r\n error: Error.reducer,\r\n appAuth : Auth.reducer,\r\n voAuth : VoAth.reducer,\r\n studentJournalsInfo : StudentJournalsInfo.reducer,\r\n httpErrorMessages : HttpErrorMessages.reducer,\r\n httpWarningMessages : HttpWarningMessages.reducer,\r\n kaFlAuth : KaFlAuth.reducer\r\n};\r\n\r\nexport interface AppThunkAction {\r\n (dispatch: (action: TAction) => void, getState: () => ApplicationState): void;\r\n}\r\n","import { Component, ErrorInfo, ReactNode } from \"react\";\r\nimport Grid from '@material-ui/core/Grid';\r\nimport Button from '@material-ui/core/Button';\r\nimport { post } from './../../../Utils/Fetch';\r\nimport {apiWriteError} from './../../../Interface/ServerRouteConst';\r\nimport { IComponentStatus, ClientError } from './../../../Interface/MainTypes';\r\nimport Loader from './../../Common/Loader/Loader';\r\nimport { ResetApp } from './../../../store/Error';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\n\r\ninterface OwnProps {\r\n children: ReactNode\r\n}\r\nconst mapDispatchToProps = (dispatch : any) =>{\r\n return {\r\n unSetError : () => dispatch(ResetApp())\r\n }\r\n}\r\nconst connector = connect(null, mapDispatchToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\n\r\ntype IProps = OwnProps & PropsFromRedux;\r\n\r\ninterface State {\r\n hasError: boolean;\r\n status : IComponentStatus\r\n}\r\n// компонет отображается при деларативных ошибках, связанных с рендариногом\r\n// https://ru.reactjs.org/docs/error-boundaries.html\r\n\r\nclass ErrorBoundary extends Component {\r\n\r\n public state: State = {\r\n hasError: false,\r\n status : 'idle'\r\n };\r\n\r\n public static getDerivedStateFromError(_: Error): State {\r\n return { hasError: true, status : 'idle' };\r\n }\r\n\r\n public componentDidCatch(error: Error, errorInfo: ErrorInfo) \r\n {\r\n const customErr = new ClientError(error.name, error.message, error.stack);\r\n \r\n post(apiWriteError, customErr)\r\n .then( (response : boolean ) =>{\r\n this.setState( { status : \"success\" } );\r\n })\r\n .catch( (error : any) =>{})\r\n }\r\n\r\n public TryRefresh = (e : React.MouseEvent) =>\r\n {\r\n this.setState( { status : \"idle\", hasError : false } );\r\n this.props.unSetError();\r\n }\r\n\r\n public render() {\r\n \r\n\r\n if (this.state.hasError) {\r\n\r\n if(this.state.status === 'pending' || this.state.status === 'idle')\r\n return Loader;\r\n \r\n\r\n return (\r\n \r\n \r\n

Произошла ошибка

\r\n \r\n
\r\n
);\r\n }\r\n\r\n return this.props.children;\r\n }\r\n}\r\n\r\nexport default connector(ErrorBoundary);","import { IAuthStatus } from './Interface/MainTypes';\r\nimport { connect, ConnectedProps } from 'react-redux';\r\nimport { setError } from './store/Error';\r\nimport { useState, useEffect } from 'react';\r\nimport { UpdateAppStateToTimer, SetStartUpdateStatus } from './store/AuthStatus';\r\n\r\nexport const mapDispatchToProps = (dispatch: any) => {\r\n return {\r\n updateAppState: (serverState: IAuthStatus) => dispatch(UpdateAppStateToTimer(serverState)),\r\n setStartUpdateStatus: () => dispatch(SetStartUpdateStatus()),\r\n setError: (error: Error) => dispatch(setError(error))\r\n }\r\n}\r\n\r\nconst connector = connect(null, mapDispatchToProps);\r\ntype PropsFromRedux = ConnectedProps;\r\n\r\nconst GetRequest = (url : string) => {\r\n const baseUrl = window.location.origin;\r\n const fullPath = `${baseUrl}/${url}`;\r\n return new Request(fullPath, { method: \"get\" });\r\n}\r\n\r\nconst RequestStatus = (props: PropsFromRedux) => {\r\n const [intervalId, setIntervalId] = useState(null);\r\n\r\n const ClearTimer = () => {\r\n if (intervalId)\r\n clearInterval(intervalId);\r\n }\r\n\r\n useEffect(() => {\r\n const path = \"api/main/stateType\";\r\n const request = GetRequest(path);\r\n\r\n fetch(request)\r\n .then((response) => {\r\n return response.text();\r\n })\r\n .then((serverStateType) => {\r\n if (serverStateType === \"Desktop\") {\r\n let intervalID = setInterval(shortAjax, 3000);\r\n setIntervalId(intervalID);\r\n }\r\n })\r\n\r\n return () => ClearTimer();\r\n }, [])\r\n\r\n const shortAjax = () => {\r\n \r\n const path = \"api/main/authAuto\";\r\n const request = GetRequest(path);\r\n\r\n fetch(request)\r\n .then((response) => {\r\n if (false === response.ok) {\r\n props.setError(new Error(\"error getStatus\"));\r\n return;\r\n }\r\n return response.json();\r\n })\r\n .then((data) => {\r\n const serverState: IAuthStatus = data as IAuthStatus;\r\n props.updateAppState(serverState);\r\n })\r\n .catch(error => {\r\n props.setStartUpdateStatus();\r\n })\r\n }\r\n\r\n return null;\r\n}\r\n\r\nexport default connector(RequestStatus);","\r\nimport ReactDOM from 'react-dom';\r\nimport App from './App';\r\nimport { Provider } from 'react-redux';\r\nimport configureStore from './store/configureStore';\r\nimport { ConnectedRouter } from 'connected-react-router';\r\nimport { createBrowserHistory } from 'history';\r\nimport ErrorBoundary from './Components/Common/ErrrorView/ErrorBoundary';\r\nimport RequestStatus from './RequestStatus';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href') as string;\r\nconst history = createBrowserHistory({ basename: baseUrl });\r\nconst store = configureStore(history);\r\n\r\n\r\n(window as any).ReduxStore = store; // для отображения ошибки \r\n\r\nReactDOM.render(\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ,\r\n document.getElementById('root'));\r\n","import { applyMiddleware, combineReducers, compose, createStore } from 'redux';\r\nimport thunk from 'redux-thunk';\r\nimport { connectRouter, routerMiddleware } from 'connected-react-router';\r\nimport { History } from 'history';\r\nimport { ApplicationState, reducers } from './';\r\n\r\nexport default function configureStore(history: History, initialState?: ApplicationState) {\r\n const middleware = [\r\n thunk,\r\n routerMiddleware(history)\r\n ];\r\n\r\n const rootReducer = combineReducers({\r\n ...reducers,\r\n router: connectRouter(history)\r\n });\r\n\r\n const enhancers = [];\r\n const windowIfDefined = typeof window === 'undefined' ? null : window as any; // eslint-disable-line @typescript-eslint/no-explicit-any\r\n if (windowIfDefined && windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__) {\r\n enhancers.push(windowIfDefined.__REDUX_DEVTOOLS_EXTENSION__());\r\n }\r\n\r\n return createStore(\r\n rootReducer,\r\n initialState,\r\n compose(applyMiddleware(...middleware), ...enhancers)\r\n );\r\n}","async function http(path: string, config: RequestInit): Promise {\r\n let responseStatus: number | undefined = undefined;\r\n let responseStatusText : string | undefined = undefined;\r\n\r\n const baseUrl = window.location.origin;\r\n const fullPath = `${baseUrl}/${path}`;\r\n\r\n try {\r\n const request = new Request(fullPath, config);\r\n const response = await fetch(request);\r\n \r\n responseStatus = response.status;\r\n responseStatusText = response.statusText;\r\n\r\n if (false === response.ok) {\r\n throw new Error(\"Failed_request\");\r\n }\r\n\r\n return response.json();\r\n }\r\n catch (error) {\r\n const message = error instanceof Error ? error.message : String(error);\r\n const stacktrace = error instanceof Error && error.stack ? error.stack : '';\r\n const msg = MessageFormatHttp(fullPath, responseStatus, responseStatusText, message, stacktrace, config.body, config.method);\r\n console.log(msg);\r\n throw new Error(msg);\r\n }\r\n}\r\n\r\nfunction MessageFormatHttp(fullPath : string, responseStatus: number | undefined, responseStatusText: string | undefined, message: string, stacktrace: string, body?: BodyInit | null | undefined, method?: string | undefined) : string {\r\n const methodLabel : string = `method = ${method};`;\r\n const urlLabel : string = `url = ${fullPath};`;\r\n const responseStatusLabel : string = `responseStatus = ${responseStatus};`;\r\n const responseStatusTextLabel : string = `responseStatusText = ${responseStatusText};`;\r\n const bodyLabel : string = `body = ${body?.toString()};`;\r\n const messageLabel : string = `message = ${message};`;\r\n const stacktraceLabel : string = `innerStack = ${stacktrace};`;\r\n\r\n return `HttpRequestError ${methodLabel} ${urlLabel} ${responseStatusLabel} ${responseStatusTextLabel} ${bodyLabel} ${messageLabel} ${stacktraceLabel}`;\r\n}\r\n\r\nexport async function get(path: string, config?: RequestInit): Promise {\r\n const init = { method: 'get', ...config }\r\n return await http(path, init);\r\n}\r\n\r\nexport async function post(path: string, body: T, config: RequestInit | null = null): Promise {\r\n if (config === null)\r\n config = { headers: { 'Content-Type': 'application/json' } };\r\n\r\n const init = { method: 'post', body: JSON.stringify(body), ...config }\r\n return await http(path, init);\r\n}\r\n\r\nexport async function put(path: string, body: T, config: RequestInit | null = null): Promise {\r\n if (config === null)\r\n config = { headers: { 'Content-Type': 'application/json' } };\r\n const init = { method: 'put', body: JSON.stringify(body), ...config }\r\n return await http(path, init);\r\n}\r\n\r\nexport async function deleteData(path: string, config?: RequestInit): Promise {\r\n const init = { method: 'delete', ...config }\r\n return await http(path, init);\r\n}\r\n\r\n","import Grid from '@material-ui/core/Grid';\r\nimport CircularProgress from '@material-ui/core/CircularProgress';\r\n\r\nconst Loader = (\r\n \r\n \r\n );\r\n\r\nexport default Loader;\r\n","/* сервер */\r\n\r\nexport const apiMainAuth : string = \"api/main/auth\";\r\nexport const apiMainAuthAuto : string = \"api/main/authauto\";\r\n\r\nexport const apiStartUpdate : string = \"api/main/startupdate\";\r\nexport const apiUserInfo : string = \"api/main/userinfo\";\r\nexport const apiReloginUser : string = \"api/main/relogin\";\r\nexport const apiCheckUser : string = \"api/main/checkUser\"; // проверка login + password \r\nexport const apiStartDbUpdate : string = \"api/main/startDbUpdate\";\r\n \r\nexport const apiVoAuth : string = \"api/voauth/auth\";\r\nexport const apiVoAuthAuto : string = \"api/voauth/authauto\";\r\nexport const apiVoAuthAutoWeb : string = \"api/voauth/authautoweb\";\r\n\r\nexport const apiVoLogOut : string = \"api/voauth/logout\";\r\nexport const apiVoAuthWeb : string = \"api/voauth/authweb\";\r\nexport const apiVoAuthPasswordRecovery : string = \"api/voauth/passwordRecovery\";\r\n\r\n\r\nexport const apiVoTestList : string = \"api/votest/area\";\r\nexport const apiVoTest : string = \"api/votest/\";\r\nexport const apiVoTestMaterialList : string = \"api/votest/testmaterials/area\";\r\nexport const apiVoTestExportDocFile : string = \"api/votest/exportdoc\";\r\n\r\nexport const apiVoSkrinTest : string = \"api/votestsskrin\";\r\n\r\nexport const apiVoAdminSettings : string = \"api/voadminsettings/\";\r\nexport const apiVoAdminSmtpStatus : string = \"api/voadminsettings/statussmtp\";\r\nexport const apiVoAdminSmtpTest : string = \"api/voadminsettings/testsmtp\";\r\n\r\nexport const apiSettionLog : string = \"api/logsConfig\";\r\n\r\nexport const apiImportDataGetAdminAuth : string = \"api/ImportData/getAdminAuth\";\r\nexport const apiImportDataGetTempFolder : string = \"api/ImportData/getTempFolder\";\r\nexport const apiImportDataCheckTempFolder : string = \"api/ImportData/checkTempFolder\";\r\nexport const apiImportDataStartUnZip : string = \"api/ImportData/startUnZip\";\r\nexport const apiImportDataGetStatusUnZip : string = \"api/ImportData/getStatusUnZip\";\r\nexport const apiImportDataCheckUnZipFolder : string = \"api/ImportData/checkUnZipFolder\";\r\nexport const apiImportDataCheckLogins: string = \"api/ImportData/checkLogins\";\r\nexport const apiImportDataCheckStudentLimit : string = \"api/ImportData/checkStudentLimit\";\r\n\r\nexport const apiImportDataCheckStartImport: string = \"api/ImportData/startImport\";\r\nexport const apiImportDataGetFullPathFileDb : string = \"api/main/getFullPathFileDb\";\r\n\r\n\r\nexport const apiAutoBackupConfigGetInfo : string = \"api/CreateDbBackUp/getBackUpInfo\";\r\nexport const apiAutoBackupConfigSetInfo : string = \"api/CreateDbBackUp/saveBackUpInfo\";\r\n\r\n\r\nexport const apiVoAdminSettingsSave : string = \"api/voadminsettings/save\";\r\nexport const apiVoAdminSettingLogsConfig : string = \"api/voadminsettings/saveConfigLogs\";\r\n\r\n\r\nexport const apiVoCommonSettingGetProxy : string = \"api/main/getproxyconf\";\r\nexport const apiVoCommonSettingSetProxy : string = \"api/main/setproxyconf\";\r\nexport const apiVoCommonSettingSetProxyAuth : string = \"api/main/setproxyconfAuth\";\r\n\r\nexport const apiVoCommonTestProxy : string = \"api/main/testServ\";\r\n\r\n\r\nexport const apiVoAdminSdl : string = \"api/voadminsdl\";\r\nexport const apiVoAdminSdlSetActive : string = \"api/voadminsdl/setactive\";\r\nexport const apiVoAdminSdlSendNewPassword : string = \"api/voadminsdl/sendnewpass\";\r\nexport const apiVoAdminSdlGetLinkNewPassword = \"api/voadminsdl/getlinknewpass\"\r\n\r\nexport const apiVoAdmintruct : string = \"api/vostruct\";\r\n\r\nexport const apiVoAdminStructCheckLinks = \"api/vostruct/checkLinks\";\r\n\r\nexport const apiVoCheckPassword : string = \"api/voauth/temppassword\";\r\nexport const apiVoSetUserPassword : string = \"api/voauth/setpassword\";\r\n\r\nexport const apiVoAreaSaveLogo : string = \"api/voareas/savelogo\";\r\nexport const apiVoAreaDropLogo : string = \"api/voareas/droplogo\";\r\nexport const apiVoAreas : string = \"api/voareas\"; \r\nexport const apiVoAreasVoWeb : string = \"api/vowebareas\";\r\nexport const apiVoAreasGetLast = \"api/voareas/getlast\"\r\n\r\nexport const apiVoAreasSetUnActive : string = \"api/voareas/setunactive\";\r\nexport const apiVoAreasSetActive : string = \"api/voareas/setactive\";\r\nexport const apiVoAreasWebSetActive : string = \"api/vowebareas/setactive\";\r\n\r\n\r\n// новости \r\nexport const apiVoGetAllNews : string = \"api/vonews/allskrinnews\";\r\nexport const apiVoGetSkrinNews : string = \"api/vonews/skrinnews\";\r\nexport const apiVoGetSdlNews : string = \"api/vosdlnews/show\"; \r\nexport const apiVoSkrinNewsGetStudentStatus : string = \"api/vonews/showstudentstatus\";\r\nexport const apiVoSkrinNewsSetStudentStatus : string = \"api/vonews/setshowstudentstatus\";\r\n\r\nexport const apiVoSdlNews : string = \"api/vosdlnews/\"\r\nexport const apiVoSdlNewsChangeStatus :string = \"api/vosdlnews/changestatus\";\r\nexport const apiVoSdlNewsChangeAllStatus : string = \"api/vosdlnews/changeallstatus\";\r\n\r\n// документы \r\nexport const apiVoGetAllDocs : string = \"api/vodocsskrin/allskrindocs\"; \r\nexport const apiVoGetSdlDocs : string = \"api/vodocssdl\";\r\nexport const apiVoGetSdlDocsSearch : string = \"api/vodocssdl/searchTree\";\r\n\r\n// видео \r\nexport const apiVoGetSdlVideo : string = \"api/vovideosdl\";\r\nexport const apiVoGetSkrinVideo : string = \"api/vovideoskrin\"; \r\nexport const apiVoGetSdlVideoSearch : string = \"api/vovideosdl/searchTree\";\r\nexport const apiVoGetSkrinVideoUrl : string = \"api/vovideoskrin/getVideoLink\"; // получение ссылки на видео СКРИН\r\n\r\n\r\n\r\n\r\n// перфиксы для работы с виджетом файловой системы \r\nexport const apiFileViewPrefixLoadFile : string = \"/loadfile\"; \r\nexport const apiFileViewPrefixGetList : string = \"/getlist\"; \r\nexport const apiFileViewPrefixSave : string = \"/save\";\r\nexport const apiFileViewPrefixDownLoad : string = \"/download\";\r\n//export const apiFileViewPrefixDelete : string = \"/delete\"; -- по т.з. удаление отменено для облака \r\n\r\n// студенты \r\nexport const apiVoStudents : string = \"api/vostudent\";\r\nexport const apiVoStudentsWebVo : string = \"api/vowebstudent\";\r\n\r\nexport const apiVoStudentsArhive : string = \"api/vostudent/searcharhivepage\";\r\n\r\nexport const apiVoStudentChangeArhiveStatus : string = \"api/vostudent/changeStudentArhiveStatus\";\r\nexport const apiVoStudentChangeArhiveStatusWeb : string = \"api/vowebstudent/changeStudentArhiveStatus\";\r\n\r\nexport const apiVoStudentsNewLogin : string = \"api/vostudent/getNewLogin\";\r\nexport const apiVoStudentsLoadList : string = \"api/vostudent/loadlist\";\r\nexport const apiWebVoStudentsLoadList : string = \"api/vowebstudent/loadlist\";\r\n\r\nexport const apiVoStudentsSendNewPassword : string = \"api/vostudent/sendnewpass\";\r\nexport const apiVoStudentsGetLinkNewPassword : string = \"api/vostudent/getlinknewpass\"\r\nexport const apiVoStudentsTreeView : string = \"api/vostruct/searchTree/getlist\";\r\nexport const apiVoDepartamenTreeView : string = \"api/vostruct/searchTreeDepartament/getlist\";\r\nexport const apiVoStudentsTreeViewTraining : string = \"api/vostruct/searchTree/getshowlist\";\r\n\r\nexport const apiVoStudentsGetShortInfo : string = \"api/vostudent/getshortinfo\";\r\nexport const apiVoStudentSearchHistory : string = \"api/vostudent/searchHistory\";\r\nexport const apiVoStudentJournals : string = \"api/vostudentjournal\";\r\nexport const apiVoStudentJournalsGetPdf : string = \"api/vostudentjournal/getpdf\";\r\nexport const apiVoStudentJournalsGetDoc : string = \"api/vostudentjournal/getdoc\";\r\n\r\nexport const apiVoStudnetJournalSaved : string = \"api/vostudentjournalsaved\";\r\nexport const apiVoStudentJournalJournalFile : string = \"api/vostudentjournal/getsavedjournal\";\r\nexport const apiVoStudentsFilterJournalsList : string = \"api/vostudentjournal/getfilterjournals\";\r\n\r\nexport const apiVoStudentsFilterJournalsCreateFilePdf : string = \"api/vostudentjournal/getfileIdjournalsPdf\";\r\nexport const apiVoStudentsFilterJournalsCreateFileDoc : string = \"api/vostudentjournal/getfileIdjournalsDoc\";\r\n\r\nexport const apiVoStudentsCertList : string = \"api/vostudentcert\";\r\n\r\nexport const apiVoStudentsFilterCount : string = \"api/VoStudentTrainig/getCountstudentcerts\";\r\nexport const apiVoStudentsCertGetFileId : string = \"api/VoStudentTrainig/getStudentCertsId\";\r\nexport const apiVoStudentsCertGetFileStatus : string = \"api/VoStudentTrainig/getStudentCertsStatus\";\r\nexport const apiVoStudentsCertStartProcess : string = \"api/VoStudentTrainig/getstudentcertsprocess\";\r\nexport const apiVoStudentsCertLoad : string = \"api/VoStudentTrainig/getstudentcerts\";\r\n\r\nexport const apiVoTraningStartGenCerts : string = \"api/VoStudentTrainig/traningStartGenCerts\";\r\n\r\nexport const apiVoStudentCertCountById : string = \"api/VoStudentTrainig/getCountStudentCerts/student\"; // кол-во сертификатов по id студента \r\nexport const apiVoStudentCertStartGenById : string = \"api/VoStudentTrainig/traningStartGenCertsStudent\"; // запуск генерации по id студента \r\n\r\n\r\n//обучение \r\nexport const apiVoTrainingSelectorOptions : string = \"api/votraining/selectoroptions\";\r\nexport const apiVoTraining : string = \"api/votraining/\";\r\nexport const apiVoTrainingStartSendMails : string = \"api/votraining/startsendmails\";\r\nexport const apiVoTrainingChangeStatus : string = \"api/votraining/changestatus\";\r\nexport const apiVoTrainingSendMailsInvit : string = \"api/votraining/sendinvit\";\r\nexport const apiVoTrainingProgress : string = \"api/votraining/getprogress\";\r\nexport const apiVoTrainingSendStudentMailInvit : string = \"api/votraining/sendinvitstudent\";\r\nexport const apiVoTrainingUpdateStudentList : string = \"api/votraining/updateTrainingStudentList\";\r\nexport const apiVoTrainingSearch : string = \"api/votraining/searchtraining\";\r\n\r\nexport const apiVoTrainingGetSdlCertPdf : string = \"api/vostudenttrainig/getsdlcertPdf\";\r\nexport const apiVoTrainingGetSdlCertDoc : string = \"api/vostudenttrainig/getsdlcertDoc\";\r\n\r\nexport const apiVoTrainingGetSdlTestResult : string = \"/api/vostudenttest/getsdlresultpdf\";\r\nexport const apiVoTrainginJournal : string = \"api/vostudentjournal/gettrainingjournals\";\r\nexport const apiVoTrainingJournalGetPdf : string = \"api/vostudentjournal/trainingjournalpdf\";\r\nexport const apiVoTrainingJournalGetDoc : string = \"api/vostudentjournal/trainingjournaldoc\";\r\n\r\n// новости студента\r\nexport const apiVoStudentSkrinNews : string = \"api/vostudentnews/allskrinnews\";\r\nexport const apiVoStudentSdlNews : string = \"api/vostudentnews/allsdlnews\";\r\nexport const apiVoStudentSkrinNewsStatus : string = \"api/vostudentnews/getshowskrinnewsstatus\";\r\n// обучение студента \r\nexport const apiVoStudentTraining : string = \"api/vostudenttrainig\";\r\nexport const apiVoStudentTrainingDescript : string = \"api/vostudenttrainig/getinfo\";\r\nexport const apiVoStudentTrainingDocs : string = \"api/vostudenttrainig/getdocs\";\r\nexport const apiVoStudentTrainingVideo : string = \"api/vostudenttrainig/getvideo\";\r\nexport const apiVoStudentTrainingTests : string = \"api/vostudenttrainig/gettests\";\r\n\r\nexport const apiVoStudentTrainingSetStatusDelay : string = \"api/votrainingreasonDelay/setStatusDelay\";\r\n\r\n\r\nexport const apiVoLoadSkrinDocById : string = \"api/vodocsskrin/loadbyid/\";\r\nexport const apiVoLoadSdlDocById : string = \"api/vodocssdl/download/\";\r\nexport const apiVoLoadSdlVideoById : string = \"api/vovideosdl/download/student/\";\r\n\r\nexport const apiVoWriteVideoSkrinEvent : string = \"api/vovideoskrin/studenthistory\";\r\nexport const apiVoWriteVideoSdlEvent : string = \"api/vovideosdl/studenthistory\";\r\n\r\n// тесты студента \r\n\r\nexport const apiVoStudentSdlTest : string = \"api/vostudenttest/getsdltest\";\r\nexport const apiVoStudentSkrinTest : string = \"api/vostudenttest/getskrintest\";\r\n\r\nexport const apiVoStudentStartTestSdl : string = \"api/vostudenttest/starttestsdl\";\r\nexport const apiVoStudentStartTestSkrin : string = \"api/vostudenttest/starttestskrin\";\r\n\r\n\r\nexport const apiVoStudentGetQuestion : string = \"api/vostudenttest/question\";\r\nexport const apiVoStudentSetQuestionAnswer : string = \"api/vostudenttest/setanswerforquestion\";\r\nexport const apiVoStudentGetTestResult : string = \"api/vostudenttest/getresult\";\r\nexport const apiVoStudentGetTestFinishInfo : string = \"api/vostudenttest/finishInfo\";\r\nexport const apiVoStudentTestFinishedForward : string = \"api/vostudenttest/finishForward\";\r\n\r\nexport const apiVoStudentGetTestResultPdf : string = \"api/vostudenttest/getresultpdf\";\r\nexport const apiVoStudentTrainingConfirm : string = \"api/vostudenttrainig/confirm\"; \r\n\r\nexport const apiVoStudentGetCertPdf : string = \"api/vostudentTrainig/getCertPdf\";\r\nexport const apiVoStudentGetCertDoc : string = \"api/vostudentTrainig/getCertDoc\";\r\n\r\nexport const apiVoFeedbackSend : string = \"api/VoFeedback/Send\";\r\nexport const apiVoFeedbackSendSupport: string = \"api/VoFeedback/SendSupport\";\r\n\r\n\r\nexport const apiLoadLogo : string = \"/api/voareas/logo/\";\r\nexport const apiWriteError : string = \"api/clienterror/boundarieserror\";\r\n\r\n\r\n/* контроллеры реестров */\r\nexport const apiMVKRegistr : string = \"api/mvkregistry\";\r\nexport const api639PRegistr : string = \"api/fsfmregistry\";\r\n\r\n/* префиксы к регистрам */\r\nexport const apiRegistryPrefixLoadFile : string = \"/loadfile\";\r\nexport const apiRegistryPrefixGetListFile : string = \"/files\";\r\nexport const apiRegistryPrefixRemome : string = \"/remove/\";\r\n\r\n/* инструкции видео*/\r\nexport const apiVoInstructionVideo : string = \"api/voinstructionsvideo/allinstructionvideo\";\r\nexport const apiVoInstructionVideoTag : string = \"api/voinstructionsvideo/allinstructionvideotags\";\r\n\r\n\r\n","import { ComponentType, lazy } from \"react\";\r\n\r\ntype ComponentPromise = Promise<{ default: ComponentType }>;\r\n\r\nexport default function lazyWithRetry(\r\n componentImport: () => ComponentPromise\r\n): React.LazyExoticComponent> {\r\n return lazy( async() => {\r\n \r\n const pageHasAlreadyBeenForceRefreshed = JSON.parse(\r\n window.localStorage.getItem(\r\n 'page-has-been-force-refreshed'\r\n ) || 'false'\r\n );\r\n\r\n try {\r\n const component = await componentImport();\r\n\r\n window.localStorage.setItem(\r\n 'page-has-been-force-refreshed',\r\n 'false'\r\n );\r\n\r\n return component;\r\n } catch (error) {\r\n if (!pageHasAlreadyBeenForceRefreshed) {\r\n // Assuming that the user is not on the latest version of the application.\r\n // Let's refresh the page immediately.\r\n window.localStorage.setItem(\r\n 'page-has-been-force-refreshed',\r\n 'true'\r\n );\r\n \r\n window.location.reload();\r\n\r\n }\r\n\r\n // The page has already been reloaded\r\n // Assuming that user is already using the latest version of the application.\r\n // Let's let the application crash and raise the error.\r\n throw error;\r\n }\r\n });\r\n}\r\n\r\n","\r\nexport function IsEqual(object1: any, object2: any): boolean {\r\n\r\n let hasNullValue: boolean = false;\r\n\r\n if ((object1 === null) || (object2 === null))\r\n hasNullValue = true;\r\n\r\n if (hasNullValue) {\r\n return ((object1 === null) && (object2 === null));\r\n }\r\n\r\n\r\n const props1 = Object.getOwnPropertyNames(object1);\r\n const props2 = Object.getOwnPropertyNames(object2);\r\n\r\n if (props1.length !== props2.length) {\r\n return false;\r\n }\r\n\r\n for (let i = 0; i < props1.length; i += 1) {\r\n const prop = props1[i];\r\n const bothAreObjects = typeof (object1[prop]) === 'object' && typeof (object2[prop]) === 'object';\r\n\r\n if ((!bothAreObjects && (object1[prop] !== object2[prop]))\r\n || (bothAreObjects && !IsEqual(object1[prop], object2[prop]))) {\r\n return false;\r\n }\r\n }\r\n\r\n return true;\r\n}","import { Action, Reducer } from 'redux';\r\nimport { IAuthStatus, IModules } from './../Interface/MainTypes'\r\nimport { AppThunkAction } from './index'\r\nimport { IsEqual } from './../Utils/IsEqualFun';\r\n\r\nexport interface AuthStatusState {\r\n appAuth: IAuthStatus\r\n}\r\n\r\nexport interface SetAuthAction { type: 'SET_AUTH', auth: IAuthStatus }\r\nexport interface SetStartUpdateAction { type: 'SET_START_UPDATE' }\r\nexport interface SetEndUpdateAction { type: 'SET_END_UPDATE' }\r\nexport interface SetAuthModulesAction { type: 'SET_AUTH_MODULES', modules: Array | null }\r\n\r\nexport const SetAuth = (auth: IAuthStatus): SetAuthAction => (\r\n { type: 'SET_AUTH', auth }\r\n)\r\n\r\nexport const SetStartUpdate = (): SetStartUpdateAction => (\r\n { type: 'SET_START_UPDATE' }\r\n)\r\n\r\nexport const SetEndUpdate = (): SetEndUpdateAction => (\r\n { type: 'SET_END_UPDATE' }\r\n)\r\n\r\nexport const SetAuthModules = (modules: Array | null): SetAuthModulesAction => (\r\n { type: 'SET_AUTH_MODULES', modules }\r\n)\r\n\r\nexport const UpdateAppStateToTimer = (serverState: IAuthStatus): AppThunkAction => (dispatch, getState) => {\r\n\r\n let clientState: IAuthStatus = getState().appAuth.appAuth;\r\n let statusState: boolean = IsEqual(clientState, serverState);\r\n\r\n if (false === statusState) {\r\n let clientStatusUpdate: boolean = getState().appAuth.appAuth.updateProcess;\r\n let serverStatusUpdate: boolean = serverState.updateProcess;\r\n\r\n if (clientStatusUpdate === serverStatusUpdate) {\r\n dispatch(SetAuth(serverState));\r\n }\r\n else {\r\n dispatch(SetEndUpdateStatus());\r\n window.location.reload(); // обновление программы\r\n }\r\n }\r\n}\r\n\r\nexport const SetStartUpdateStatus = (): AppThunkAction => (dispatch, getState) => {\r\n let isStartUpdate: boolean = getState().appAuth.appAuth.updateProcess;\r\n\r\n if (false === isStartUpdate) {\r\n dispatch(SetStartUpdate());\r\n }\r\n}\r\n\r\nexport const SetEndUpdateStatus = (): AppThunkAction => (dispatch, getState) => {\r\n let isStartUpdate: boolean = getState().appAuth.appAuth.updateProcess;\r\n\r\n if (isStartUpdate) {\r\n dispatch(SetEndUpdate());\r\n }\r\n}\r\n\r\n\r\ntype KnownAction = SetAuthAction | SetStartUpdateAction | SetAuthModulesAction | SetEndUpdateAction;\r\n\r\nexport const reducer: Reducer = (state: AuthStatusState | undefined, incomingAction: Action): AuthStatusState => {\r\n\r\n if (state === undefined) {\r\n return { appAuth : { isAuth : false, isRun : false, updateProcess : false, hasUpdate : false, blockDbChanges : false, dbUpdateProcessHasError : false ,errorMessage : null, modules : null, stateType : 'Desktop', hasLongScriptDbUpdate : false} };\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'SET_AUTH':\r\n return { appAuth: action.auth };\r\n case 'SET_START_UPDATE':\r\n {\r\n let actualData: IAuthStatus = { ...state.appAuth };\r\n actualData.updateProcess = true;\r\n return { appAuth: actualData };\r\n }\r\n case 'SET_END_UPDATE': {\r\n let actualData: IAuthStatus = { ...state.appAuth };\r\n actualData.updateProcess = false;\r\n return { appAuth: actualData };\r\n }\r\n case 'SET_AUTH_MODULES':\r\n {\r\n let actualData: IAuthStatus = { ...state.appAuth };\r\n actualData.modules = action.modules;\r\n return { appAuth: actualData };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n\r\n\r\n\r\n","\r\nexport type IComponentStatus = 'idle' | 'pending' | 'success' | 'error';\r\n\r\nexport type ISite = 'vo' | 'soap' | 'kafl' | 'podftfl';\r\n\r\n\r\nexport interface IAuth {\r\n login: string,\r\n password: string\r\n}\r\n\r\nexport interface IAuthCommon {\r\n login: string,\r\n password: string,\r\n targetModule : ISiteList\r\n}\r\n\r\n\r\n// карточка вывода на сайте \r\nexport interface ICard {\r\n id: number,\r\n color: string,\r\n url: string,\r\n title: string\r\n}\r\n\r\nexport type IStateType = 'Desktop' | 'Web';\r\n\r\nexport interface IAuthStatus {\r\n isAuth: boolean,\r\n isRun: boolean,\r\n hasUpdate: boolean,\r\n updateProcess: boolean,\r\n blockDbChanges: boolean,\r\n dbUpdateProcessHasError: boolean,\r\n hasLongScriptDbUpdate : boolean,\r\n errorMessage: string | null,\r\n modules: Array | null,\r\n stateType: IStateType,\r\n}\r\n\r\nexport interface ISiteTheme {\r\n id: number,\r\n name: string\r\n}\r\n\r\nexport interface IModules {\r\n id: number,\r\n name: string,\r\n limit: number,\r\n siteTheme: ISiteTheme,\r\n accessTypes: Array\r\n}\r\n\r\nexport interface IAccessTypes {\r\n id: number,\r\n name: string,\r\n limit: number,\r\n beginDate: Date | null,\r\n endDate: Date | null,\r\n}\r\n\r\n\r\nexport type IFormMode = \"editMode\" | \"createMode\";\r\n\r\nexport type IModalType = \"error\" | \"warning\" | \"info\" | \"success\";\r\n\r\n\r\nexport class ClientError {\r\n name: string;\r\n message: string;\r\n stack?: string;\r\n constructor(name: string, message: string, stack?: string) {\r\n this.name = name;\r\n this.message = message;\r\n this.stack = stack;\r\n }\r\n}\r\n\r\n// API = 14,\r\n// VO = 13,\r\n\r\n\r\nexport interface IExtendedModules {\r\n id: number\r\n show: boolean,\r\n title: string\r\n}\r\n\r\nexport interface IUserInfo {\r\n userLogin: string | null,\r\n version: string | null,\r\n modules: Array | null\r\n}\r\n\r\n/// тип возврата содержащий ошибки от сервера \r\nexport interface IResponseData {\r\n status: boolean,\r\n errorMessage: string\r\n}\r\n\r\nexport interface IResponseErorWarningMessage {\r\n status: boolean,\r\n hasWarning: boolean,\r\n errorMessage: string | null,\r\n warningMessage: string | null\r\n}\r\n\r\nexport interface IResponseWarningData {\r\n status: boolean,\r\n errorMessage: Array | null,\r\n warningMessage: Array | null\r\n}\r\n\r\nexport interface IResponseSuccessDate {\r\n status: boolean,\r\n errorMessage: string,\r\n successMessage: string\r\n}\r\n\r\nexport interface PagesData {\r\n currentPage: number,\r\n countPage: number,\r\n pageSize: number,\r\n items: Array\r\n}\r\n\r\n//пагинаци с указанием totalCount \r\nexport interface PagesDataSize {\r\n currentPage: number,\r\n countPage: number,\r\n pageSize: number,\r\n totalCount: number,\r\n items: Array\r\n}\r\n\r\n/** Пагинация из Common с TotalCount */\r\nexport interface PagesDataCommon {\r\n /** тек. страница*/\r\n currentPage: number,\r\n \r\n /** число страниц */\r\n countPage: number,\r\n \r\n /** размер страницы */\r\n pageSize: number,\r\n \r\n /** общее количество объектов */\r\n totalItemCount: number,\r\n \r\n /** список элементов */\r\n items: Array\r\n}\r\n\r\nexport type ITextFieldVariants = \"filled\" | \"outlined\" | \"standard\";\r\n\r\nexport type ITextFieldSizes = \"medium\" | \"small\";\r\n\r\nexport enum ISiteList { api = 14, voWeb = 13, voDesktop = 15, kaFl = 16, podftFl = 5 } // список сайтов \r\n\r\nexport const ISiteTypeDesktopDictionary : Record = {\r\n vo : ISiteList.voDesktop,\r\n soap : ISiteList.api,\r\n kafl : ISiteList.kaFl,\r\n podftfl : ISiteList.podftFl\r\n}\r\n\r\nexport type ISortingOrder = 'asc' | 'desc' | 'none';\r\n\r\nexport interface IVoEmailSendResult {\r\n smtpStatus: boolean,\r\n countSucces: number,\r\n emailsFailedSend: Array\r\n}\r\n\r\nexport interface IAdminActionResult {\r\n hasAccess: boolean,\r\n status: boolean\r\n}\r\n\r\nexport interface IBuildDate {\r\n buildDate: number\r\n}\r\n\r\nexport enum IPeriodCron { none = 0, onceDay = 1, onceWeek = 2, onceMonth = 3 }\r\nexport enum IPeriodDayOfWeek { sunday = 0, monday = 1, tuesday = 2, wednesday = 3, thursday = 4, friday = 5, saturday = 6 }\r\n\r\nexport interface IAutoBackupConfig {\r\n folder: string,\r\n status: boolean,\r\n afterDayesCount: number,\r\n dateTimeBackup: Date | null,\r\n timeSpanBackup: string,\r\n\r\n // новые поля \r\n period: IPeriodCron,\r\n periodDayOfWeek: IPeriodDayOfWeek,\r\n periodDayOfMonth: number\r\n}\r\n\r\nexport interface ISiteTitleFavicon {\r\n title: string,\r\n faviconLink: string\r\n}\r\n\r\nexport interface ISkrinResponseMessages\r\n{\r\n id : string,\r\n messages: Array\r\n}\r\n\r\nexport interface ISearchStringPaging {\r\n\tsearchString : string, \r\n\tpage : number,\r\n\tpageSize : number,\r\n}\r\n\r\nexport interface ISelectOptions {\r\n key : string ,\r\n value : string,\r\n name : string\r\n}","import { Action, Reducer } from 'redux';\r\nimport { ISkrinResponseMessages } from './../Interface/MainTypes';\r\n\r\n\r\nexport interface HttpErrorMessagesState {\r\n httpErrorMessages: Array\r\n}\r\n\r\nexport interface SetHttpErrorMessagesAction { type: 'SET_HTTP_ERROR_MESSAGES_INFO', messages: ISkrinResponseMessages }\r\nexport interface SetClearHttpErrorMessagesAction { type: 'SET_HTTP_ERROR_MESSAGES_CLEAR_INFO', id: string }\r\n\r\nexport const SetHttpErrorMessages = (messages: ISkrinResponseMessages): SetHttpErrorMessagesAction => (\r\n { type: 'SET_HTTP_ERROR_MESSAGES_INFO', messages }\r\n)\r\n\r\nexport const SetClearHttpErrorMessages = (id: string): SetClearHttpErrorMessagesAction => (\r\n { type: 'SET_HTTP_ERROR_MESSAGES_CLEAR_INFO', id }\r\n)\r\n\r\ntype KnownAction = SetHttpErrorMessagesAction | SetClearHttpErrorMessagesAction;\r\n\r\nexport const reducer: Reducer = (state: HttpErrorMessagesState | undefined, incomingAction: Action): HttpErrorMessagesState => {\r\n\r\n if (state === undefined) {\r\n return { httpErrorMessages: [] };\r\n }\r\n const action = incomingAction as KnownAction;\r\n\r\n switch (action.type) {\r\n case 'SET_HTTP_ERROR_MESSAGES_INFO':\r\n return { httpErrorMessages: [...state.httpErrorMessages, action.messages] };\r\n case 'SET_HTTP_ERROR_MESSAGES_CLEAR_INFO':\r\n const newItems : Array = state.httpErrorMessages.filter(item => (false === (item.id === action.id)));\r\n return { httpErrorMessages: newItems };\r\n default:\r\n return state;\r\n }\r\n\r\n};\r\n\r\n","import { Action, Reducer } from 'redux';\r\nimport { ISkrinResponseMessages } from './../Interface/MainTypes';\r\n\r\n\r\nexport interface HttpWarningMessagesState {\r\n httpWarningMessages: Array\r\n}\r\n\r\nexport interface SetHttpWarningMessagesAction { type: 'SET_HTTP_WARNING_MESSAGES_INFO', messages: ISkrinResponseMessages }\r\nexport interface SetClearHttpWarningMessagesAction { type: 'SET_HTTP_WARNING_MESSAGES_CLEAR_INFO', id: string }\r\n\r\nexport const SetHttpWarningMessages = (messages: ISkrinResponseMessages): SetHttpWarningMessagesAction => (\r\n { type: 'SET_HTTP_WARNING_MESSAGES_INFO', messages }\r\n)\r\n\r\nexport const SetClearHttpWarningMessages = (id: string): SetClearHttpWarningMessagesAction => (\r\n { type: 'SET_HTTP_WARNING_MESSAGES_CLEAR_INFO', id }\r\n)\r\n\r\ntype KnownAction = SetHttpWarningMessagesAction | SetClearHttpWarningMessagesAction;\r\n\r\nexport const reducer: Reducer = (state: HttpWarningMessagesState | undefined, incomingAction: Action): HttpWarningMessagesState => {\r\n\r\n if (state === undefined) {\r\n return { httpWarningMessages: [] };\r\n }\r\n const action = incomingAction as KnownAction;\r\n\r\n switch (action.type) {\r\n case 'SET_HTTP_WARNING_MESSAGES_INFO':\r\n return { httpWarningMessages : [...state.httpWarningMessages, action.messages] };\r\n case 'SET_HTTP_WARNING_MESSAGES_CLEAR_INFO':\r\n const newItems : Array = state.httpWarningMessages.filter(item => (false === (item.id === action.id)));\r\n return { httpWarningMessages: newItems };\r\n default:\r\n return state;\r\n }\r\n\r\n};\r\n\r\n","import Button from '@material-ui/core/Button';\r\nimport Dialog from '@material-ui/core/Dialog';\r\nimport DialogActions from '@material-ui/core/DialogActions';\r\nimport DialogContent from '@material-ui/core/DialogContent';\r\nimport DialogTitle from '@material-ui/core/DialogTitle';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport IconButton from '@material-ui/core/IconButton';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport Grid from '@material-ui/core/Grid';\r\n\r\nconst useStyles = makeStyles({\r\n dialog: {\r\n position: 'absolute',\r\n top: \"5%\"\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: \"1%\",\r\n top: \"1%\",\r\n color: \"#ccc\",\r\n },\r\n});\r\n\r\n\r\ninterface IProps {\r\n open: boolean,\r\n onClose(): void,\r\n title: string,\r\n textQuery: string,\r\n onAgree(): void\r\n}\r\n\r\nconst QueryDialog = (props: IProps) => {\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n \r\n \r\n \r\n {props.title}\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n {props.textQuery}\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n\r\nexport default QueryDialog;","import { makeStyles } from '@material-ui/core/styles';\r\nimport Modal from '@material-ui/core/Modal';\r\nimport Grid from '@material-ui/core/Grid';\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Typography from '@material-ui/core/Typography';\r\nimport { ReactNode } from 'react';\r\n\r\ninterface IModalProps {\r\n title: string,\r\n message: ReactNode,\r\n show: boolean,\r\n handleClose(): void,\r\n}\r\n\r\n\r\nconst useStyles = makeStyles({\r\n paper: {\r\n position: 'absolute',\r\n width: 550,\r\n top: \"20%\",\r\n left: \"50%\",\r\n transform: \"translate(-50%, -50%)\",\r\n backgroundColor: \"#fff\",\r\n textAlign: \"center\",\r\n padding: \"25px\",\r\n borderRadius: \"6px\",\r\n border: \"1px solid rgba(0,0,0,.2)\"\r\n }\r\n});\r\n\r\n\r\nconst ModalMessageWithNode = (props: IModalProps) => {\r\n const classes = useStyles();\r\n\r\n const body = (\r\n
\r\n \r\n \r\n {props.title}\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {props.message}\r\n \r\n
\r\n );\r\n\r\n if (props.show === false) {\r\n return null;\r\n }\r\n\r\n return (\r\n <>\r\n \r\n {body}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default ModalMessageWithNode;","import Grid from '@material-ui/core/Grid';\r\n\r\n/** компонент общей обертки по ширине + paddind 1% общий */\r\n\r\nconst WrapperPaddingWidth : React.FC = ({ children }) => {\r\n return (\r\n \r\n \r\n {children}\r\n \r\n \r\n )\r\n}\r\n\r\nexport default WrapperPaddingWidth;","import { Action, Reducer } from 'redux';\r\nimport { IVoAuthState, IVoUserArea } from './../Interface/VoTypes';\r\nimport { AppThunkAction } from './index'\r\nimport { getCookie, setCookie } from 'typescript-cookie'\r\n\r\nexport interface VoAuthState {\r\n voAuth: IVoAuthState\r\n}\r\n\r\nexport interface SetAuthAction { type: 'SET_VO_AUTH', auth: IVoAuthState }\r\nexport interface SetActiveUserArea { type: 'SET_VO_AREA_SET_ACTIVE', activeArea: IVoUserArea | null }\r\nexport interface SetUserAreas { type: 'SET_VO_AREA_SET_LIST', userAreas: Array | null }\r\n\r\nexport const SetVoAuth = (auth: IVoAuthState): SetAuthAction => (\r\n { type: 'SET_VO_AUTH', auth }\r\n)\r\n\r\nexport const SetActiveArea = (activeArea: IVoUserArea | null): SetActiveUserArea => (\r\n { type: 'SET_VO_AREA_SET_ACTIVE', activeArea }\r\n)\r\n\r\nexport const SetAreaList = (userAreas: Array | null): SetUserAreas => (\r\n { type: 'SET_VO_AREA_SET_LIST', userAreas }\r\n)\r\n\r\nexport const UpdateAreaList = (userAreas: Array | null): AppThunkAction => (dispatch, getState) => {\r\n const activeArea: IVoUserArea | null = getState().voAuth.voAuth.activeUserArea;\r\n\r\n if (activeArea === null) {\r\n dispatch(SetAreaList(userAreas));\r\n return;\r\n }\r\n\r\n const activeAreaInList: IVoUserArea | undefined = userAreas?.find(x => x.id === activeArea.id);\r\n\r\n if ((!activeAreaInList) || (activeAreaInList.isEnable === false)) {\r\n dispatch(SetActiveArea(null));\r\n dispatch(SetAreaList(userAreas));\r\n return;\r\n }\r\n\r\n if (activeAreaInList.isEnable) {\r\n dispatch(SetAreaList(userAreas));\r\n return;\r\n }\r\n}\r\n\r\n\r\n\r\ntype KnownAction = SetAuthAction | SetActiveUserArea | SetUserAreas;\r\nconst nameActiveAreaId : string = \"_actAreaId\";\r\n\r\n\r\nexport const reducer: Reducer = (state: VoAuthState | undefined, incomingAction: Action): VoAuthState => {\r\n\r\n if (state === undefined) {\r\n return { voAuth: { isAuth: false, userLogin: null, role: null, errorMessage: null, userAreas: null, activeUserArea: null } };\r\n }\r\n\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'SET_VO_AUTH': {\r\n const oldSelctAreaId : string | undefined = getCookie(nameActiveAreaId);\r\n\r\n if(!oldSelctAreaId)\r\n return { voAuth: action.auth };\r\n\r\n const item : IVoUserArea | undefined = action.auth.userAreas?.find(x => x.id === Number(oldSelctAreaId) && x.isEnable === true);\r\n\r\n if(item)\r\n {\r\n const newState = {...action.auth, activeUserArea : item };\r\n return { voAuth: newState };\r\n }\r\n\r\n return { voAuth: action.auth };\r\n }\r\n case 'SET_VO_AREA_SET_ACTIVE':\r\n {\r\n let actualData: IVoAuthState = { ...state.voAuth };\r\n actualData.activeUserArea = action.activeArea;\r\n \r\n if(action.activeArea)\r\n setCookie(nameActiveAreaId, action.activeArea.id, { expires: 7, path : \"/\" } );\r\n \r\n return { voAuth: actualData };\r\n }\r\n case 'SET_VO_AREA_SET_LIST':\r\n {\r\n let actulState: IVoAuthState = { ...state.voAuth };\r\n actulState.userAreas = action.userAreas;\r\n return { voAuth: actulState };\r\n }\r\n default:\r\n return state;\r\n }\r\n};\r\n\r\n\r\n\r\n","import Grid from '@material-ui/core/Grid';\r\nimport TextField from '@material-ui/core/TextField';\r\nimport Button from '@material-ui/core/Button';\r\nimport { useState } from 'react';\r\nimport { IAuth, IComponentStatus } from '../../../Interface/MainTypes';\r\nimport Loader from './../../Common/Loader/Loader';\r\nimport { post } from './../../../Utils/Fetch';\r\nimport { apiCheckUser } from './../../../Interface/ServerRouteConst';\r\nimport { IAuthStatus } from '../../../Interface/MainTypes';\r\nimport PasswordInput from '../../Common/PasswordInput/PasswordInput';\r\n\r\ninterface IPropsShowError {\r\n message: string | null\r\n}\r\n\r\nconst ShowErrorMessage = (props: IPropsShowError) => {\r\n if ((props.message === null) || (props.message.length === 0))\r\n return null;\r\n\r\n return ({props.message})\r\n}\r\n\r\ninterface IProps {\r\n handleSuccess(): void // при успешной автризации \r\n}\r\n\r\nconst AccessPage = (props: IProps) => {\r\n\r\n const [status, setStatus] = useState('idle');\r\n const defaultValue: IAuth = { login: \"\", password: \"\" };\r\n const [auth, setAuth] = useState(defaultValue);\r\n const [messageError, setMessageError] = useState(null);\r\n\r\n const handelChangeLogin = (e: React.ChangeEvent) => {\r\n const { target: { value: login } } = e;\r\n const newAuth = { ...auth, login: login };\r\n setAuth(newAuth);\r\n }\r\n\r\n const handelChangePassword = (e: React.ChangeEvent) => {\r\n const { target: { value: password } } = e;\r\n const newAuth = { ...auth, password: password };\r\n setAuth(newAuth);\r\n }\r\n\r\n const setPassword = (value : string) => {\r\n const newAuth = { ...auth, password: value };\r\n setAuth(newAuth);\r\n }\r\n\r\n const handelSend = (e: React.MouseEvent) => {\r\n if (auth.login.length > 0 && auth.password.length > 0) {\r\n setMessageError(\"\");\r\n setStatus('pending');\r\n post(apiCheckUser, auth)\r\n .then((response: IAuthStatus) => {\r\n setStatus('success');\r\n if (response.isAuth) {\r\n props.handleSuccess();\r\n }\r\n else {\r\n setMessageError(response.errorMessage);\r\n }\r\n })\r\n }\r\n }\r\n\r\n\r\n\r\n const Form: JSX.Element = (\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 return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {status === 'pending' ? Loader : Form}\r\n \r\n \r\n );\r\n}\r\n\r\nexport default AccessPage;","\r\n/* клиент */\r\nexport const StartPagePath : string = \"/\";\r\nexport const MainAuthPath : string = \"/main/auth\";\r\nexport const StartUpdateInfoPath : string = \"/main/startupdate\";\r\nexport const StartUpdateDbInfoPath : string = \"/main/startdbupdate\";\r\n\r\nexport const UserInfoPath : string = \"/main/userinfo\";\r\nexport const CommonSettingPath : string = \"/main/commonsetting\";\r\nexport const UserSettingLogs : string = \"/main/settingLogs\";\r\nexport const DataImportPath : string = \"/main/dataImport\";\r\nexport const CreateDbBackUpPagePath : string = \"/main/createdbbackuppage\";\r\nexport const TestSkrinHttpRequestPath : string = \"/main/testSkrinRequest\";\r\n\r\n\r\n\r\nexport const VoRoutePath : string = \"/vo\";\r\n\r\nexport const VoAuthPath : string = \"/vo/auth\";\r\nexport const VoSettingSdlPath : string = \"/vo/setting/sdl\";\r\nexport const VoSettingSdlAddPath : string = \"/vo/setting/sdl/create\";\r\nexport const VoSettingSdlEditRoute : string = \"/vo/setting/sdl/edit/:id\";\r\nexport const VoSettingSdlEditPath : string = \"/vo/setting/sdl/edit/\"; \r\nexport const VoSettingAreasPath : string = \"/vo/setting/areas\";\r\n\r\n\r\nexport const VoAdminSettingSmtpPath : string = \"/vo/adminsetting/smtp\"\r\n\r\n\r\nexport const VoSettingAreasAddRoute : string = \"/vo/setting/areas/create/:typeParam\";\r\nexport const VoSettingAreasAddPath : string = \"/vo/setting/areas/create/\";\r\n\r\nexport const VoSettingAreasEditRoute : string = \"/vo/setting/areas/edit/:id\";\r\nexport const VoSettingAreasEditPath : string = \"/vo/setting/areas/edit/\"\r\n\r\nexport const VoSettingStructCompany : string = \"/vo/setting/struct\";\r\n\r\nexport const VoSetUserPassword : string = \"/vo/setpassword/:key\";\r\n\r\n// вопросная база \r\n\r\nexport const VoQuestionBasePath : string = \"/vo/questionbase\";\r\nexport const VoQuestionBaseRoute : string = \"/vo/questionbase/:mode/:page?\";\r\n\r\nexport const VoQuestionBaseListPath : string = \"/vo/questionbase/show\";\r\nexport const VoQuestionBaseListRoute : string = \"/vo/questionbase/show/:page?\";\r\n\r\nexport const VoQuestionBaseCreatePath : string = \"/vo/questionbase/create\";\r\n\r\nexport const VoQuestionBaseEditPath : string = \"/vo/questionbase/edit/\";\r\nexport const VoQuestionBaseEditRoute : string = \"/vo/questionbase/edit/:id\";\r\n\r\nexport const VoQuestionBaseCopyPath : string = \"/vo/questionbase/copy/\";\r\nexport const VoQuestionBaseCopyRoute : string = \"/vo/questionbase/copy/:id\";\r\n\r\n// табы новостей \r\n\r\nexport const VoNewsPath : string = \"/vo/news\";\r\nexport const VoNewsTabPath : string = \"/vo/news/tab\";\r\nexport const VoNewsTabRoute : string = \"/vo/news/tab/:tabId/:mode/:page?\";\r\n\r\n//новости СКРИН вывод списка \r\nexport const VoSkrinNewsAdminShowListPath: string = \"/vo/news/tab/0/show/\";\r\nexport const VoSkrinNewsAdminShowListRoute : string = \"/vo/news/tab/0/show/:page?\";\r\n\r\nexport const VoSkrinNewsAdminOpenItemPath : string = \"/vo/news/tab/0/open/\";\r\nexport const VoSkrinNewsAdminOpenItemRoute : string = \"/vo/news/tab/0/open/:id\";\r\n\r\n//новости СДЛ \r\nexport const VoSDLNewsAdminShowListPath: string = \"/vo/news/tab/1/show/\";\r\nexport const VoSDLNewsAdminShowListRoute : string = \"/vo/news/tab/1/show/:page?\";\r\n\r\nexport const VoSDLNewsAdminOpenItemPath : string = \"/vo/news/tab/1/open/\";\r\nexport const VoSDLNewsAdminOpenItemRoute : string = \"/vo/news/tab/1/open/:id\";\r\n\r\nexport const VoSDLNewsAdminCreatePath : string = \"/vo/news/tab/1/create\";\r\n\r\nexport const VoSDLNewsAdminEditPath : string = \"/vo/news/tab/1/edit/\";\r\nexport const VoSDLNewsAdminEditRoute : string = \"/vo/news/tab/1/edit/:id\";\r\n\r\n\r\n// табы документов \r\nexport const VoDocumentsPath : string = \"/vo/documents\";\r\nexport const VoDocumentsTabPath : string = \"/vo/documents/tab\";\r\nexport const VoDocumentsTabRoute : string = \"/vo/documents/tab/:tabId/:page\";\r\n\r\n//таб видео video\r\nexport const VoVideoClipsPath : string = \"/vo/video\";\r\nexport const VoVideoClipsTabPath : string = \"/vo/video/tab\";\r\nexport const VoVideoClipsTabRoute : string = \"/vo/video/tab/:tabId/:page\";\r\n\r\n\r\n\r\n\r\n//студенты\r\n\r\nexport const VoStudetsTabPath : string = \"/vo/students/tab\";\r\nexport const VoStudetsTabRoute : string = \"/vo/students/tab/:tabId/:mode/:page?\";\r\n\r\n\r\nexport const VoStudentTabShowList : string = \"/vo/students/tab/0/show/:page?\";\r\nexport const VoStudetAddPath : string = \"/vo/students/tab/0/create\";\r\n\r\nexport const VoStudetEditRoute : string = \"/vo/students/tab/0/edit/:id\";\r\nexport const VoStudetEditPath : string = \"/vo/students/tab/0/edit/\";\r\n\r\n//журнал нескольких студентов \r\nexport const VoStudentsJournalsRoute : string = \"/vo/students/tab/0/journals/:page\";\r\nexport const VoStudentsJournalsPath : string = \"/vo/students/tab/0/journals\";\r\n\r\n// загрузка студентов из файла \r\nexport const VoStudentLoadFile : string = \"/vo/students/tab/0/loadlist\";\r\n\r\n// история активности студента\r\nexport const VoTrainingStudentHistoryRoute : string = \"/vo/students/tab/0/studenthistory/:id/:page\";\r\nexport const VoTrainingStudentHistoryPath : string = \"/vo/students/tab/0/studenthistory/\";\r\n\r\n// жкрнал 1 студента\r\nexport const VoStudentJournalRoute : string = \"/vo/students/tab/0/journal/:id/:page\";\r\nexport const VoStudentJournalPath : string = \"/vo/students/tab/0/journal\";\r\n\r\n// сертификаты 1 студента\r\nexport const VoStudentCertPath : string = \"/vo/students/tab/0/certs\";\r\nexport const VoStudentCertRoute : string = \"/vo/students/tab/0/certs/:id/:page\";\r\n\r\n\r\n// обучение \r\nexport const VoTrainingPath : string = \"/vo/training\";\r\nexport const VoTrainingRoute : string = \"/vo/training/:mode/:id?\";\r\n\r\nexport const VoTrainingShowListPath : string = \"/vo/training/show\";\r\nexport const VoTrainingShowListRoute : string = \"/vo/training/show/:page?\";\r\n\r\nexport const VoTrainingAddPath : string = \"/vo/training/create\";\r\n\r\nexport const VoTrainingOpenRoute : string = \"/vo/training/open/:id\";\r\nexport const VoTrainingOpenPath : string = \"/vo/training/open/\";\r\n\r\nexport const VoTrainingEditRoute : string = \"/vo/training/edit/:id\";\r\nexport const VoTrainingEditPath : string = \"/vo/training/edit/\";\r\n\r\nexport const VoTrainingCopyRoute : string = \"/vo/training/copy/:id\";\r\nexport const VoTrainingCopyPath : string = \"/vo/training/copy/\";\r\n\r\nexport const VoTrainingProgressRoute : string = \"/vo/training/progress/:id/:page\";\r\nexport const VoTrainingProgressPath : string = \"/vo/training/progress/\";\r\n\r\nexport const VoTrainingJournalRoute : string = \"/vo/training/journal/:id/:page\";\r\nexport const VoTrainingJournalPath : string = \"/vo/training/journal/\";\r\n\r\nexport const VoUserManualPath : string = \"/vo/usermanual\";\r\n\r\n// раздел роли студента \r\n//новости 1 компонет\r\nexport const VoStudentNewsTabs : string = \"/vo/student/news/tab\";\r\nexport const VoStudentNewsTabRoute : string = \"/vo/student/news/tab/:tabId/:mode/:page?\";\r\n\r\nexport const VoStudentSkrinNewsShowListPath : string = \"/vo/student/news/tab/0/show/\";\r\nexport const VoStudentSkrinNewsShowListRoute : string = \"/vo/student/news/tab/0/show/:page?\";\r\n\r\nexport const VoStudentSkrinNewsOpenItemPath : string = \"/vo/student/news/tab/0/open/\";\r\nexport const VoStudentSkrinNewsOpenItemRoute : string = \"/vo/student/news/tab/0/open/:id?\";\r\n\r\nexport const VoStudentSdlNewsShowListPath : string = \"/vo/student/news/tab/1/show/\";\r\nexport const VoStudentSdlNewsShowListRoute : string = \"/vo/student/news/tab/1/show/:page?\";\r\n\r\nexport const VoStudentSdlNewsOpenItemPath : string = \"/vo/student/news/tab/1/open/\";\r\nexport const VoStudentSdlNewsOpenItemRoute : string = \"/vo/student/news/tab/1/open/:id?\";\r\n\r\n\r\n// студенты обучение \r\n\r\nexport const VoStudentTrainingsPath : string = \"/vo/student/training\";\r\nexport const VoStudentTrainingsRoute : string = \"/vo/student/training/:mode/:id?\";\r\n\r\nexport const VoStudentTrainingShowPath : string = \"/vo/student/training/show\";\r\nexport const VoStudentTrainingShowRoute : string = \"/vo/student/training/show/:page?\";\r\n\r\nexport const VoStudentOpenTrainingPath : string = \"/vo/student/training/open/\";\r\nexport const VoStudentOpenTrainingRoute : string = \"/vo/student/training/open/:id\";\r\n\r\nexport const VoStudentOpenTrainingTabsRoute : string = \"/vo/student/training/open/:id/tabs/:tabId\";\r\n\r\n\r\nexport const VoStudentOpenTestPath : string = \"/vo/student/training/open/\";\r\nexport const VoStudentOpenTestRoute : string = \"/vo/student/training/open/:traingingId/tabs/3/testInfo/:id/:materialtype\";\r\n\r\n\r\nexport const VoStudentOpenQuestionPath : string = \"/vo/student/training/open/\";\r\nexport const VoStudentOpenQuestionRoute : string = \"/vo/student/training/open/:traingingId/tabs/3/openquestion/:execId\";\r\n\r\nexport const VoStudentOpenTestResultPath : string = \"/vo/student/training/open/\";\r\nexport const VoStudentOpenTestResultRoute : string = \"/vo/student/training/open/:traingingId/tabs/3/testresult/:execId\";\r\n\r\nexport const VoPricePath : string = \"/vo/price\";\r\n\r\nexport const ApiRoutePath : string = \"/soap\";\r\nexport const ApiRegistryPath : string = \"/soap/registry\";\r\nexport const KaFlRoutePath : string = \"/kafl\";\r\nexport const PodftFlRoutePath : string = \"/podftfl\";\r\n\r\n","import { Action, Reducer } from 'redux';\r\nimport { IKaFlAuthState } from './../Interface/KaFlTypes';\r\n\r\nexport interface KaFlAuthState {\r\n kaFlAuth: IKaFlAuthState\r\n}\r\n\r\nexport interface SetAuthAction { type: 'SET_KAFL_AUTH', auth: IKaFlAuthState }\r\nexport interface SetLogOutAction { type: 'SET_KAFL_AUTH_LOGOUT'}\r\n\r\nexport const SetKalAuth = (auth: IKaFlAuthState): SetAuthAction => (\r\n { type: 'SET_KAFL_AUTH', auth }\r\n)\r\n\r\nexport const SetKaFlLogOut = (): SetLogOutAction => (\r\n { type: 'SET_KAFL_AUTH_LOGOUT' }\r\n)\r\n\r\ntype KnownAction = SetAuthAction | SetLogOutAction;\r\n\r\nconst defaultState : IKaFlAuthState = { isAuth : false, login : null, error : null, accesses : null };\r\n\r\n\r\nexport const reducer: Reducer = (state: KaFlAuthState | undefined, incomingAction: Action): KaFlAuthState => {\r\n\r\n if (state === undefined) {\r\n return { kaFlAuth: defaultState };\r\n }\r\n const action = incomingAction as KnownAction;\r\n switch (action.type) {\r\n case 'SET_KAFL_AUTH': {\r\n return { kaFlAuth: action.auth };\r\n }\r\n case 'SET_KAFL_AUTH_LOGOUT' : {\r\n return { kaFlAuth: defaultState };\r\n }\r\n default:\r\n return state;\r\n }\r\n};"],"sourceRoot":""}