Mr.Combet Webshell
Your IP :
216.73.216.136
Server IP :
103.233.58.157
Server :
Windows NT WIN-4PGF72KEHKB 10.0 build 17763 (Windows Server 2016) AMD64
Server Software :
Microsoft-IIS/10.0
PHP Version :
7.3.25
Add File :
Submit
Add Directory :
Submit
Dir :
C:
/
inetpub
/
wwwroot
/
IRC
/
ClientApp
/
build
/
static
/
js
/
Edit File Name :
main.120bcd07.chunk.js.map
{"version":3,"sources":["store/types.tsx","store/reducers/common/commonReducer.ts","store/reducers/validateReducer.ts","store/reducers/userReducer.ts","store/reducers/metaReducer.ts","store/reducers/articleReducer.ts","store/reducers/index.ts","store/configureStore.ts","assets/logo.png","networkService/api.ts","constants/urls.ts","store/actions/validateAction.ts","helpers/dispatchError.ts","networkService/service.ts","constants/routesEnum.ts","store/actions/auth/index.ts","store/actions/user/index.tsx","navigation/layout/changePassword.tsx","components/toast/index.tsx","helpers/isEmpty.ts","constants/validExtensions.ts","constants/articleStatusEnum.ts","constants/roleEnum.ts","helpers/getStatus.tsx","helpers/utility.ts","navigation/layout/header.tsx","store/actions/meta/index.ts","navigation/layout/AdminLayout/adminSideBar.tsx","navigation/layout/AdminLayout/index.tsx","navigation/layout/index.tsx","scenes/auth/login/index.tsx","assets/document.svg","components/form/checkList.tsx","assets/pdf.svg","components/icons/svgIcons.tsx","constants/index.ts","helpers/checkFileExtension.ts","components/imageViewer/index.js","components/form/attachmentButton.tsx","constants/templateEnum.ts","components/form/wrapper.tsx","components/form/editor.tsx","store/actions/articles/index.ts","scenes/submitter/submission/start.tsx","scenes/submitter/submission/uploadSubmission/uploadFile.tsx","scenes/submitter/submission/uploadSubmission/index.tsx","scenes/submitter/submission/authors/entryForm.tsx","scenes/submitter/submission/authors/coAuthorList.tsx","scenes/submitter/submission/authors/index.tsx","scenes/submitter/submission/metaData.tsx","scenes/submitter/submission/submitArticle.tsx","scenes/submitter/submission/index.tsx","components/loader.tsx/index.tsx","scenes/common/review/attachments/index.tsx","scenes/submitter/revision/index.tsx","scenes/common/articles/cardView/articleCard.tsx","scenes/common/articles/cardView/index.tsx","scenes/common/articles/searchFilter.tsx","scenes/common/articles/index.tsx","scenes/submitter/component/actions.tsx","scenes/submitter/component/submissionList.tsx","scenes/common/tabTitle.tsx","routes/submitterRoutes.ts","scenes/submitter/index.tsx","scenes/viewArticle/components/start.tsx","scenes/viewArticle/components/author.tsx","scenes/viewArticle/components/attachment.tsx","scenes/viewArticle/components/metaInfo.tsx","scenes/viewArticle/index.tsx","store/actions/common/index.ts","scenes/Administrator/user/verifyEmailAddress.tsx","scenes/Administrator/user/forgotPassword.tsx","scenes/Administrator/user/sendPasswordResetLink.tsx","scenes/Administrator/user/signUp.tsx","routes/publicRoutes.ts","scenes/Administrator/user/search.tsx","scenes/Administrator/user/addUser.tsx","scenes/Administrator/user/changeUserPassword.tsx","scenes/Administrator/user/index.tsx","components/tableView/index.tsx","scenes/Administrator/components/assignUser.tsx","scenes/Administrator/components/actions.tsx","scenes/Administrator/components/submissionList.tsx","scenes/Administrator/index.tsx","routes/adminRoutes.ts","scenes/editor/components/actionConfirmation.tsx","scenes/editor/components/assignUserButton.tsx","hooks/useOutsideClick.tsx","components/popup/_popover.tsx","constants/emailTemplateEnum.ts","constants/reviewRecommendation.ts","helpers/dateHelper.ts","scenes/editor/components/assignUserDialog.tsx","scenes/editor/components/reviewDetail.tsx","scenes/editor/components/actions.tsx","scenes/editor/components/submissionList.tsx","routes/editorRoutes.ts","scenes/editor/index.tsx","scenes/reviewer/components/actions.tsx","scenes/reviewer/components/submissionList.tsx","scenes/reviewer/index.tsx","scenes/common/review/request.tsx","scenes/common/review/guidelines.tsx","scenes/common/review/uploadReviewFiles/uploadFile.tsx","scenes/common/review/uploadReviewFiles/index.tsx","scenes/common/review/downloadReview.tsx","scenes/common/review/submitArticle.tsx","scenes/common/review/index.tsx","routes/reviewerRoutes.ts","routes/index.ts","scenes/notFound.tsx","navigation/links/privateRoute.tsx","navigation/links/baseRoute.tsx","navigation/links/index.tsx","App.tsx","index.tsx"],"names":["initialState","roles","messages","otherMessage","arrayMessages","validateReducer","state","action","type","types","payload","filter","message","id","loggedInUserDetail","userList","usersReducer","checkList","sections","templates","components","recommendations","article","review","articleCounts","combineReducers","commonReducer","userReducer","metaReducer","articleReducer","configureStore","production","process","middleware","thunk","createStore","reducers","applyMiddleware","compose","api","siginIn","signOut","emailTemplate","downloadFiles","verifyEmail","signup","list","users","userDetails","forgotPassword","resetPassword","changePassword","changePasswordByUser","status","count","start","authors","attachments","metadata","confirmation","assignArticleForEditor","assingedInfo","updateStatus","reviewDetail","reviewByArticle","acknowledgeReview","submitReview","requestRevision","revision","baseURL","window","location","origin","clearMessage","dispatch","dispatchError","error","response","MessageType","messageType","Message","res","data","toastMessage","RouteEnum","getHeaders","isMultipart","header","headers","Authorization","localStorage","getItem","actionBase","axios","create","get","url","param","showResponseMessage","Promise","resolve","reject","fullUrl","getFullStringUrl","then","onSuccess","catch","err","onFailure","post","put","deletion","delete","entries","Object","map","entry","ind","Status","undefined","saveToken","AuthToken","Token","expires_in","ExpireMinutes","RefreshToken","IdleTimeoutMinutes","setItem","Role","Username","login","history","a","ex","result","Data","href","GetUserList","SaveUser","act","Id","DeleteUser","ChangeUserStatus","userId","isInactive","userName","newPassword","currentPassword","confirmNewPassword","signUp","email","dipatch","ChangeUserPasswordDailog","props","user","isVisible","setVisible","ref","useRef","useDispatch","useState","isLoading","setState","handleChangePassword","current","validate","valid","reset","resetFields","title","visible","onCancel","style","width","Body","rules","required","trigger","Item","name","value","placeholder","onChange","val","onClick","loading","Toast","useSelector","timeout","getType","toLowerCase","useEffect","length","Array","isArray","forEach","Notification","duration","offset","setTimeout","isEmpty","keys","trim","ArticleStatusEnum","RoleEnum","renderStatus","role","recommendation","Submitter","statusTextForSubmitter","Reviewer","statusTextForReviewer","Editor","statusTextForEditor","getStatusText","className","color","text","REVISION","SUBMITTED","RESUBMITTED","ASSIGNEDEDITOR","ASSIGNEDREVIEWER","REVIEWING","REVIEWED","NEW","APPROVED","REJECTED","createMarkup","html","__html","Header","useHistory","authToken","isChangePasswordVisible","setChangePasswordVisible","isAuth","setAuth","FullName","Email","UserName","loadData","handleLogout","clear","RoutesEnum","src","logo","to","base","onCommand","command","menu","Menu","divided","AdminSideBar","defaultActive","onOpen","onClose","SubMenu","index","adminSubmission","AdminLayout","Row","Col","span","children","Layout","Administrator","_linearGradient","_linearGradient2","_linearGradient3","_linearGradient4","_linearGradient5","_linearGradient6","_g","Login","username","password","formRef","key","handleLoginClick","e","preventDefault","model","labelPosition","labelWidth","label","prop","Option","Name","nativeType","Routes","CheckList","handleCheckBoxChange","item","isChecked","newState","findIndex","x","push","splice","containsItems","checked","_excluded","_extends","assign","target","i","arguments","source","prototype","hasOwnProperty","call","apply","this","_objectWithoutProperties","excluded","sourceKeys","indexOf","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgDocument","_ref","svgRef","titleId","height","viewBox","xmlns","xmlnsXlink","gradientUnits","x1","x2","y1","y2","stopColor","xlinkHref","d","fill","ForwardRef","SvgPdf","SvgIcons","size","SvgIcon","Document","PDF","getIconComponent","defaultProps","Constant","checkFileExtension","file","isImage","match","isPdf","isXls","isDocs","ext","substring","ImageViewer","image","dowloadLinkUrl","show","hostedUrl","imageSrc","serverFileName","stopPropagation","open","zoomSrc","zoomScale","AttachmentButton","fileRef","enableUpload","disabled","multiple","maxFiles","isPreview","preview","setPreview","handleChange","event","files","getDownloadLink","FileType","ServerFileName","display","UserFileName","URL","createObjectURL","Uploads","getDiplayIcon","margin","click","TemplateEnum","Wrapper","config","editor","ClassicEditor","getData","GetArticles","CountArticle","GetArticle","DeleteArticle","clearArticle","SaveStart","SaveAuthors","SaveAttachment","SaveMetaData","SaveConfrimation","AssignArticleForEditor","SaveReview","ReviewId","reviewId","GetReviewDetails","GetReviewByArticleId","AcknowledgeReview","SubmitReview","FormData","append","console","log","Attachment","userWithAssignedInfo","UpdateArticleStatus","RequestRevision","GetRevision","Start","onSave","ArticleId","SectionId","setLoading","ckBody","setCkBody","st","commentsEditor","obj","CommentsForEditor","CheckListId","CheckListName","copyrightStatements","find","TemplateKey","CopyrightStatements","privacyStatements","PrivacyStatements","handleNextClick","Comments","Steps","TemplateTitle","TemplateText","Component","FileFormat","Size","UploadFile","selectedFileData","ComponentId","ComponentName","handleSave","UploadSubmission","setSelectedFileData","setAttachments","ArticleAttachments","onSaveClicked","attachment","handleAttachmentEditClick","newAttachments","handleAttachmentDeleteClick","handleSaveFile","Salutation","Designation","Institute","PostalAddress","MobileNo","Photo_ServerFileName","Photo_UserFileName","Photo","DigitalSignature_ServerFileName","DigitalSignature_UserFileName","DigitalSignature","EntryForm","coAuthorList","coAuthorData","handleSubmit","gutter","CoAuthorList","CoAuthors","onEditClicked","onDelelteClicked","columns","fixed","render","row","column","fit","Authors","setCoAuthorData","InvestigatorName","InvestigatorSalutation","InvestigatorDesignation","InvestigatorInstitute","InvestigatorPostalAddress","InvestigatorMobileNo","InvestigatorEmail","InvestigatorPhoto_ServerFileName","InvestigatorPhoto_UserFileName","InvestigatorDigitalSignature_ServerFileName","InvestigatorDigitalSignature_UserFileName","ArticleCoAuthors","k","el","nextState","prefix","introduction","methods","citedReference","MetaData","ProposalTitle","ProposalIntroduction","PropsalMethods","ProposalCitedReferences","articleId","steps","SubmitArticle","onConfirmation","revisionId","parseInt","Submisson","setSteps","selectedTab","setSelectedTab","params","step","fetchArticle","updateStep","newStep","tabs","component","showClose","submitter","separator","revisionDetail","onTabClick","Pane","tab","Loader","classNames","Attachments","Revision","isloading","fetchRevision","dangerouslySetInnerHTML","ArticleCard","actions","RoleName","completion","SectionName","SubmittedOn","DateInString","SubmissionNumber","strokeWidth","percentage","ReviewRecommendation","ReviewResponsedOnString","ReviewResponseDueDate","ReviewResponseDueDateString","ReviewDueDateString","CardView","totalData","pageSize","PageIndex","handlePageSizeChanged","handlePageChanged","layout","total","pageSizes","currentPage","onSizeChange","onCurrentChange","SearchFilter","onSearchClicked","inline","proposalTitle","onChangeSearch","Articles","getStatus","propsalTitle","fetchData","useImperativeHandle","setList","ls","countArticles","TotalData","pageIndex","page","forwardRef","Actions","handleEditClick","handleDelete","handleRevisionClick","viewArticle","div","getActions","Submissions","articlesRef","submission","MessageBox","confirm","confirmButtonText","cancelButtonText","RevisionId","toString","TabTitle","Type","Total","getValue","SubmitterRoutes","exact","path","CoAuthor","Author","InvestigatorEmai","MetaInfo","ViewArticle","homeLink","GetRoles","verifyUserEmailAddress","GetEmailTemplate","templateType","VerifyEmailAddress","verify","queryString","parse","search","ForgotPassword","Password","ConfirmPassword","Code","code","validator","rule","callback","Error","validateField","PasswordReset","isSuccessSubmitting","Roles","MobileNumber","Country","Affiliation","Captcha","SignUp","recaptchaRef","routes","sitekey","PublicRoutes","Public","verifyEmailAddress","Search","onAddUserClicked","isActive","AddUser","onSaveSuccess","fetchRoles","RoleId","onText","offText","IsInactive","ChangeUserPassword","UserDialog","Index","setData","fetchUserList","handleAddUser","changeUserStatus","confirmDelete","border","TableView","showNoData","Editors","editorName","selectedIndex","remarks","tableData","setTableData","fullname","IsAssigned","Done","Active","assignTo","assignedAs","AssignUser","assignProps","handleCancel","closeOnClickModal","AdminLandingPage","AdminRoutes","User","ActionConfirmation","closeModal","AssignUserButton","onAssignClick","useOutsideClick","setDrop","parentRef","handleClickOutside","contains","document","addEventListener","removeEventListener","store","Popover","popupRef","containerClassName","createElement","left","top","visibility","handleOutsideClick","body","appendChild","handleSCroll","ReactDOM","unmountComponentAtNode","removeChild","isEqual","getBoundingClientRect","popupWidth","popupHeight","y","newTop","newLeft","innerHeight","innerWidth","rightMargin","setPosition","EmailTemplateEnum","ReviewRecommendationEnum","dateFormat","date","moment","format","AssignReviewer","emailText","setEmailText","selectedReviewer","setSelectedReviewer","reveiwer","responseDueDate","reviewDueDate","loadReview","loadEmailTemplate","getRules","submit","onChangeDate","AssingReviewArticle","BodyText","ReviewerName","ReviewerId","EmailText","Date","ReviewDueDate","ResponsDueDate","handleReveiwerSelected","disabledDate","time","getTime","now","Reviewers","popRef","setOpen","setSelectedIndex","handleSelected","ReviewerPopup","onSelected","selectedData","onChangeName","AssignUserDialog","ReviewDetail","commentsForAuthor","setCommentsForAuthor","onClickRequestRevison","Title","Reviews","CommentsForEditorAndAuthor","ReviewFiles","updateArticleStatus","EditorRoutes","handleReviewClick","acceptAndContinue","decline","DeclineSubmission","ArticleTitle","SubmissoinFiles","CreatedOn","IsAccepted","Guidelines","ReviewGuideline","UploadReviewFiles","padding","textAlign","DownloadReview","commentsForEditor","setCommentsForEditor","commentsForEditorAndAuthor","setCommentsForEditorAndAuthor","RecommendationId","recommendationId","Review","IsCompleted","fetchReview","revResult","reviewer","ReviewerRoutes","ReviewerLanding","NotFound","PrivateRoute","rest","BaseRoute","Links","route","i18n","use","locale","baseUrl","getElementsByTagName","getAttribute","basename","App","getElementById"],"mappings":"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","file":"static/js/main.120bcd07.chunk.js","sourcesContent":["export default {\n ADD_MESSAGE: \"ADD_MESSAGE\",\n ADD_MESSAGES: \"ADD_MESSAGES\",\n ADD_OTHER_MESSAGES: \"ADD_OTHER_MESSAGES\",\n REMOVE_MESSAGE: \"REMOVE_MESSAGE\",\n CLEAR_MESSAGE: \"CLEAR_MESSAGE\",\n\n GET_ROLES: \"GET_ROLES\",\n GET_TEMPLATES: \"GET_TEMPLATES\",\n GET_CHECKLIST: \"GET_CHECKLIST\",\n GET_SECTIONS: \"GET_SECTIONS\",\n GET_COMPONENTS: \"GET_COMPONENTS\",\n GET_RECOMMENDATIONS: \"GET_RECOMMENDATIONS\",\n\n GET_LOGGEDIN_USER_DETAIL: \"GET_LOGGEDIN_USER_DETAIL\",\n GET_USER_LIST: \"GET_USER_LIST\",\n\n GET_ARTICLE: \"GET_ARTICLE\",\n COUNT_ARTICLE: \"COUNT_ARTICLE\",\n DELETE_ARTICLE: \"DELETE_ARTICLE\",\n\n GET_REVIEW: \"GET_REVIEW\",\n};\n","import types from \"../../types\";\n\nconst initialState = {\n roles: [],\n};\n\nexport default function (state: any = initialState, action: any) {\n switch (action.type) {\n case types.GET_ROLES:\n return {\n ...state,\n roles: action.payload,\n };\n\n default:\n return state;\n }\n}\n","import types from \"../types\";\nimport { Action, Reducer } from \"redux\";\n\nexport interface InitialState {\n messages: object;\n otherMessage: object;\n arrayMessages?: any;\n}\n\nconst initialState: InitialState = {\n messages: {},\n otherMessage: {},\n arrayMessages: [],\n};\nconst validateReducer: Reducer = (state = initialState, action: any) => {\n switch (action.type) {\n case types.ADD_MESSAGE:\n return {\n ...state,\n messages: action.payload,\n };\n\n case types.ADD_MESSAGES:\n return {\n ...state,\n arrayMessages: [action.payload, ...state.arrayMessages],\n };\n\n case types.ADD_OTHER_MESSAGES:\n return {\n ...state,\n otherMessage: action.payload,\n };\n\n case types.REMOVE_MESSAGE:\n return {\n ...state,\n arrayMessages: state.arrayMessages.filter(\n (message: any) => message.id !== action.payload\n ),\n };\n\n case types.CLEAR_MESSAGE:\n return {\n ...state,\n messages: {},\n };\n\n default:\n return state;\n }\n};\n\nexport default validateReducer;\n","import types from \"../types\";\n\nimport { Action, Reducer } from \"redux\";\nimport { UserDetailInterface } from \"interfaces/actions/auth\";\nexport interface InitialState {\n loggedInUserDetail: UserDetailInterface;\n userList: [];\n}\n\nconst initialState: InitialState = {\n loggedInUserDetail: {} as UserDetailInterface,\n userList: [],\n};\n\nconst usersReducer: Reducer = (state = initialState, action: any) => {\n switch (action.type) {\n case types.GET_LOGGEDIN_USER_DETAIL:\n return {\n ...state,\n loggedInUserDetail: action.payload,\n };\n\n case types.GET_USER_LIST:\n return {\n ...state,\n userList: action.payload,\n };\n\n default:\n return state;\n }\n};\nexport default usersReducer;\n","import types from \"../types\";\n\nconst initialState = {\n checkList: [],\n sections: [],\n templates: [],\n components: [],\n recommendations: [],\n};\n\nexport default function (state: any = initialState, action: any) {\n switch (action.type) {\n case types.GET_CHECKLIST:\n return {\n ...state,\n checkList: action.payload,\n };\n case types.GET_SECTIONS:\n return {\n ...state,\n sections: action.payload,\n };\n case types.GET_TEMPLATES:\n return {\n ...state,\n templates: action.payload,\n };\n case types.GET_COMPONENTS:\n return {\n ...state,\n components: action.payload,\n };\n case types.GET_RECOMMENDATIONS:\n return {\n ...state,\n recommendations: action.payload,\n };\n default:\n return state;\n }\n}\n","import types from \"../types\";\r\n\r\nconst initialState = {\r\n article: {},\r\n review: {},\r\n articleCounts: [],\r\n};\r\n\r\nexport default function (state: any = initialState, action: any) {\r\n switch (action.type) {\r\n case types.GET_ARTICLE:\r\n return {\r\n ...state,\r\n article: action.payload,\r\n };\r\n case types.GET_REVIEW:\r\n return { ...state, review: action.payload };\r\n\r\n case types.COUNT_ARTICLE:\r\n return { ...state, articleCounts: action.payload };\r\n\r\n default:\r\n return state;\r\n }\r\n}\r\n","import { combineReducers } from \"redux\";\nimport commonReducer from \"./common/commonReducer\";\nimport validateReducer from \"./validateReducer\";\nimport userReducer from \"./userReducer\";\nimport metaReducer from \"./metaReducer\";\nimport articleReducer from \"./articleReducer\";\n\nexport default combineReducers({\n commonReducer,\n validateReducer,\n userReducer,\n metaReducer,\n articleReducer,\n});\n","import { createStore, applyMiddleware, compose } from \"redux\";\nimport thunk from \"redux-thunk\";\nimport reducers from \"./reducers\";\n\nexport default function configureStore(initialState: any = {}) {\n const production = process.env.NODE_ENV !== \"development\";\n\n let middleware = [thunk];\n\n // if (!production) {\n // middleware.push(require(\"redux-immutable-state-invariant\").default());\n // }\n\n if (production) {\n return createStore(reducers, initialState, applyMiddleware(...middleware));\n } else {\n return createStore(\n reducers,\n initialState,\n compose(applyMiddleware(...middleware))\n );\n }\n}\n","export default __webpack_public_path__ + \"static/media/logo.b47ed324.png\";","export const api = {\n auth: {\n siginIn: \"auth/signin\",\n signOut: \"auth/signout\",\n },\n meta: {\n templates: \"meta/templates\",\n checkList: \"meta/checklist\",\n sections: \"meta/sections\",\n components: \"meta/components\",\n recommendations: \"meta/recommendations\",\n },\n common: {\n roles: \"security/roles\",\n emailTemplate: \"common/email-template\",\n downloadFiles: `common/download`,\n },\n users: {\n verifyEmail: \"security/verify-email\",\n signup: \"security/signup\",\n list: \"security/users/list\",\n users: \"security/users\",\n userDetails: \"security/users/details\",\n forgotPassword: \"security/users/forgot-password\",\n resetPassword: \"security/users/reset-password\",\n changePassword: \"security/users/change-password\",\n changePasswordByUser: \"security/users/change-user-password\",\n status: \"security/users/status\",\n },\n articles: {\n article: \"articles/article\",\n count: \"articles/count\",\n start: \"articles/start\",\n authors: \"articles/authors\",\n attachments: \"articles/attachments\",\n metadata: \"articles/metadata\",\n confirmation: \"articles/submit\",\n assignArticleForEditor: \"articles/assign-article/editor\",\n\n assingedInfo: \"articles/assigned-info\",\n updateStatus: \"articles/update-status\",\n review: \"articles/review\",\n reviewDetail: \"articles/review-detail\",\n reviewByArticle: \"articles/review-by-article\",\n acknowledgeReview: \"articles/acknowledge-review\",\n submitReview: \"articles/submit-review\",\n requestRevision: \"articles/request-revision\",\n revision: \"articles/revision\",\n },\n};\n","export const baseURL = `${window.location.origin}/v1/`;\n// export const baseURL = `http://103.233.58.157:8080/v1`;\n","import types from \"../types\";\n\ninterface dispatchAction {\n type: string;\n payload: object | string | [];\n}\n\nexport const toastMessage = (dispatch: any, res: any) => {\n let MessageType = null;\n let Message = [];\n if (res) {\n if (res.MessageType) {\n MessageType = res.MessageType;\n } else if (res.data && res.data.MessageType) {\n MessageType = res.data.MessageType;\n }\n\n if (res.Message) {\n Message = res.Message;\n } else if (res.data && res.data.Message) {\n Message = res.data.Message;\n }\n }\n\n if (MessageType || Message) {\n dispatch({\n type: types.ADD_MESSAGE,\n payload: { type: MessageType, message: Message },\n });\n }\n};\n\nexport const clearMessage =\n () => (dispatch: (action: dispatchAction) => dispatchAction) => {\n dispatch({\n type: types.CLEAR_MESSAGE,\n payload: null,\n });\n };\n","import React from \"react\";\nimport { toastMessage } from \"../store/actions/validateAction\";\n\nexport function dispatchError(dispatch: Function, error: any) {\n let response: any = {};\n\n response.MessageType = error.MessageType || error.messageType || \"Warning\";\n response.Message = error.Message || error.message || error;\n\n dispatch && toastMessage(dispatch, response);\n}\n","import axios from \"axios\";\nimport { baseURL } from \"../constants/urls\";\nimport { dispatchError } from \"../helpers/dispatchError\";\n\nconst getHeaders = (isMultipart = false) => {\n var header = {\n headers: {\n Authorization: localStorage.getItem(\"AuthToken\"),\n },\n };\n\n if (isMultipart) {\n header.headers[\"content-type\"] = \"multipart/form-data\";\n }\n return header;\n};\n\nconst actionBase = axios.create({ baseURL: baseURL });\n\nexport const get = (\n url: any,\n dispatch: Function,\n param = null,\n showResponseMessage = false\n) => {\n return new Promise((resolve, reject) => {\n const fullUrl = getFullStringUrl(url, param);\n actionBase\n .get(fullUrl, getHeaders())\n .then((res) => onSuccess(res, dispatch, resolve, showResponseMessage))\n .catch((err) => onFailure(err, dispatch, resolve));\n });\n};\n\nexport const get_by_id = (\n url: any,\n dispatch: Function,\n id: any,\n showResponseMessage = false\n) => {\n return new Promise((resolve, reject) => {\n const fullUrl = `${url}/${id}`;\n actionBase\n .get(fullUrl, getHeaders())\n .then((res) => onSuccess(res, dispatch, resolve, showResponseMessage))\n .catch((err) => onFailure(err, dispatch, resolve));\n });\n};\n\nexport const post = (\n url: any,\n dispatch: Function,\n param: any,\n showResponseMessage = true,\n isMultipart = false\n) => {\n return new Promise((resolve, reject) => {\n actionBase\n .post(url, param, getHeaders(isMultipart))\n .then((res) => onSuccess(res, dispatch, resolve, showResponseMessage))\n .catch((err) => onFailure(err, dispatch, resolve));\n });\n};\n\nexport const put = (\n url: any,\n dispatch: Function,\n param: any,\n showResponseMessage = true,\n isMultipart = false\n) => {\n return new Promise((resolve, reject) => {\n actionBase\n .put(url, param, getHeaders(isMultipart))\n .then((res) => onSuccess(res, dispatch, resolve, showResponseMessage))\n .catch((err) => onFailure(err, dispatch, resolve));\n });\n};\n\nexport const deletion = (\n url: any,\n dispatch: Function,\n id: any,\n showResponseMessage = true\n) => {\n return new Promise((resolve, reject) => {\n const fullUrl = `${url}/${id}`;\n actionBase\n .delete(fullUrl, getHeaders())\n .then((res) => onSuccess(res, dispatch, resolve, showResponseMessage))\n .catch((err) => onFailure(err, dispatch, resolve));\n });\n};\n\nconst getFullStringUrl = (url: any, param: any) => {\n const entries = param ? Object.entries(param) : null;\n let fullUrl = url;\n entries &&\n entries.map((entry, ind) => {\n if (ind == 0) {\n fullUrl = `${fullUrl}?${`${entry[0]}=${entry[1]}`}`;\n } else {\n fullUrl = `${fullUrl}&${`${entry[0]}=${entry[1]}`}`;\n }\n });\n return fullUrl;\n};\n\nconst onSuccess = (\n res: any,\n dispatch: Function,\n resolve: any,\n showResponseMessage: any\n) => {\n let response = res.data;\n if (response.Status == true) {\n if (showResponseMessage) {\n dispatchError(dispatch, response);\n }\n } else if (response.Status == undefined) {\n if (res.status == 200) {\n // resolve(response);\n } else {\n dispatchError(dispatch, \"Response status is not 200\");\n response = null;\n }\n } else {\n dispatchError(dispatch, response);\n response = null;\n }\n resolve(response);\n};\n\nconst onFailure = (err: any, dispatch: Function, resolve: any) => {\n dispatchError(dispatch, err.message);\n resolve(null);\n};\n","export enum RouteEnum {\n base = \"/\",\n login = \"/login\",\n viewArticle = \"/view-article\",\n\n adminSubmission = \"/admin/submission\",\n user = \"/admin/user\",\n\n forgotPassword = \"/reset-password\",\n resetPassword = \"/reset-password/send\",\n signup = \"/signup\",\n verifyEmailAddress = \"/email-verification\",\n\n submitter = \"/submitter\",\n submission = \"/submitter/submission\",\n revision = \"/submitter/revision\",\n revisionDetail = \"/submitter/revision-detail\",\n editor = \"/editor\",\n\n reviewer = \"/reviewer\",\n review = \"/reviewer/review\",\n}\n\nexport default RouteEnum;\n","import { post, api } from \"networkService\";\nimport { LoginInterface } from \"interfaces/actions/auth\";\nimport RoutesEnum from \"constants/routesEnum\";\nimport RoleEnum from \"constants/roleEnum\";\n\nconst saveToken = (res: any, dispatch: Function) => {\n if (res) {\n //Save to local Storage\n let AuthToken = \"bearer \" + res.Token;\n let expires_in = res.ExpireMinutes;\n let RefreshToken = res.RefreshToken;\n let IdleTimeoutMinutes = res.IdleTimeoutMinutes;\n //Set token to ls\n localStorage.setItem(\"Role\", res.Role);\n localStorage.setItem(\"AuthToken\", AuthToken);\n localStorage.setItem(\"UserName\", res.Username);\n localStorage.setItem(\"RefreshToken\", RefreshToken);\n localStorage.setItem(\"IdleTimeOut\", IdleTimeoutMinutes);\n localStorage.setItem(\"ExpiresMinutes\", expires_in);\n }\n};\nconst clearToken = () => {\n localStorage.setItem(\"Role\", \"\");\n localStorage.setItem(\"AuthToken\", null);\n localStorage.setItem(\"UserName\", null);\n localStorage.setItem(\"RefreshToken\", null);\n localStorage.setItem(\"IdleTimeOut\", null);\n localStorage.setItem(\"ExpiresMinutes\", null);\n};\nexport const login =\n (param: LoginInterface, history: any) => async (dispatch: Function) => {\n let result: any = await post(api.auth.siginIn, dispatch, param).catch(\n (ex) => {\n return false;\n }\n );\n if (result && result.Status) {\n saveToken(result.Data, dispatch);\n window.location.href = \"/\";\n }\n };\n\nexport const logout =\n (param: any, history: any) => async (dipatch: Function) => {\n //clearToken();\n localStorage.clear();\n window.location.href = RoutesEnum.login;\n };\n","import { post, put, get, deletion, api } from \"networkService\";\nimport types from \"store/types\";\n\nexport const GetLoggedInUserDetails = () => async (dispatch: Function) => {\n const res = await get(api.users.userDetails, dispatch);\n dispatch({ type: types.GET_LOGGEDIN_USER_DETAIL, payload: res });\n return res;\n};\n\nexport const GetUserList = (param) => async (dispatch: Function) => {\n const res: any = await post(api.users.list, dispatch, param, false);\n dispatch({ type: types.GET_USER_LIST, payload: res.Data });\n return res.Data;\n};\n\nexport const SaveUser = (param) => async (dispatch: Function) => {\n const act = param.Id ? put : post;\n const res: any = await act(api.users.users, dispatch, param);\n return res.Data;\n};\nexport const DeleteUser = (id) => async (dispatch: Function) => {\n const res: any = await deletion(`${api.users.users}`, dispatch, id);\n return res;\n};\n\nexport const ChangeUserStatus =\n ({ userId, isInactive }) =>\n async (dispatch: Function) => {\n const res: any = await get(\n `${api.users.status}/${userId}?isInactive=${isInactive}`,\n dispatch\n );\n return res.Data;\n };\n\nexport const changePasswordByUser =\n ({ userName, newPassword }) =>\n async (dispatch: Function) => {\n const res = await post(api.users.changePasswordByUser, dispatch, {\n userName,\n newPassword,\n });\n return res;\n };\n\nexport const changePassword =\n ({ currentPassword, newPassword, confirmNewPassword }) =>\n async (dispatch: Function) => {\n const res = await post(api.users.changePassword, dispatch, {\n currentPassword,\n confirmNewPassword,\n newPassword,\n });\n return res;\n };\n\nexport const signUp = (param) => async (dispatch: Function) => {\n const res = await post(api.users.signup, dispatch, param);\n return res;\n};\n\nexport const forgotPassword =\n ({ email }) =>\n async (dipatch: Function) => {\n const res = await post(api.users.forgotPassword, dipatch, { email });\n return res;\n };\n\nexport const resetPassword = (param) => async (dipatch: Function) => {\n const res = await post(api.users.resetPassword, dipatch, param);\n return res;\n};\n","import React, { useRef, useState } from \"react\";\nimport { Form, Input, Button, Select, Dialog, Message } from \"element-react\";\nimport { changePassword } from \"store/actions/user\";\nimport { useDispatch } from \"react-redux\";\n\nconst ChangeUserPasswordDailog = (props) => {\n const { user, isVisible, setVisible } = props;\n const ref: any = useRef();\n const dispatch = useDispatch();\n\n const [state, setState] = useState({\n currentPassword: \"\",\n newPassword: \"\",\n confirmNewPassword: \"\",\n isLoading: false,\n });\n\n const rules = {\n newPassword: [\n {\n required: true,\n message: \"New password is required\",\n trigger: \"blur\",\n },\n ],\n };\n\n const handleChangePassword = async () => {\n ref.current.validate(async (valid) => {\n if (valid) {\n var res: any = await dispatch(\n changePassword({\n currentPassword: state.currentPassword,\n newPassword: state.newPassword,\n confirmNewPassword: state.confirmNewPassword,\n })\n );\n if (res && res.Status) reset();\n }\n });\n };\n\n const reset = () => {\n ref.current.resetFields();\n setState({\n newPassword: \"\",\n currentPassword: \"\",\n confirmNewPassword: \"\",\n isLoading: false,\n });\n setVisible(false);\n };\n return (\n <Dialog\n title=\"Change Password\"\n visible={isVisible}\n onCancel={() => reset()}\n style={{ width: \"350px\" }}\n >\n <Dialog.Body>\n <Form ref={ref} rules={rules}>\n <Form.Item>\n <Input\n name=\"currentPassword\"\n type=\"password\"\n value={state.currentPassword}\n placeholder=\"Old Pasword\"\n onChange={(val: any) =>\n setState({ ...state, currentPassword: val })\n }\n ></Input>\n </Form.Item>\n <Form.Item>\n <Input\n name=\"newPassword\"\n type=\"password\"\n value={state.newPassword}\n placeholder=\"New Pasword\"\n onChange={(val: any) => setState({ ...state, newPassword: val })}\n ></Input>\n </Form.Item>\n <Form.Item>\n <Input\n name=\"confirmNewPassword\"\n type=\"password\"\n value={state.confirmNewPassword}\n placeholder=\"New Pasword\"\n onChange={(val: any) =>\n setState({ ...state, confirmNewPassword: val })\n }\n ></Input>\n </Form.Item>\n <Form.Item>\n <Button\n onClick={() => handleChangePassword()}\n loading={state.isLoading}\n >\n Change Password\n </Button>\n </Form.Item>\n </Form>\n </Dialog.Body>\n </Dialog>\n );\n};\n\nexport default ChangeUserPasswordDailog;\n","import React, { useEffect } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { Notification } from \"element-react\";\nimport { clearMessage } from \"store/actions/validateAction\";\n\nconst Toast = (props) => {\n const { messages } = useSelector((state: any) => state.validateReducer);\n const dispatch = useDispatch();\n const timeout = 3000;\n\n const getType = (messageType) => {\n let type = messageType.toLowerCase();\n\n if (\n !(\n type === \"success \" ||\n type === \"warning\" ||\n type === \"info\" ||\n type === \"error\"\n )\n )\n type = \"info\";\n return type;\n };\n useEffect(() => {\n if (\n messages &&\n messages.message &&\n messages.message !== undefined &&\n messages.message.length > 0\n ) {\n if (Array.isArray(messages.message)) {\n messages.message.forEach((message: any) => {\n const type = getType(messages.type);\n\n Notification({\n message: message,\n type: type,\n duration: timeout,\n offset: 50,\n });\n\n setTimeout(() => {\n dispatch(clearMessage());\n }, timeout);\n });\n } else {\n let type = getType(messages.type);\n\n if (\n !(\n type === \"success \" ||\n type === \"warning\" ||\n type === \"info\" ||\n type === \"error\"\n )\n )\n type = \"info\";\n\n Notification({\n message: messages.message,\n type: type,\n duration: timeout,\n offset: 50,\n });\n\n setTimeout(() => {\n dispatch(clearMessage());\n }, timeout);\n }\n }\n }, [messages]);\n\n return <></>;\n};\nexport default Toast;\n","export const isEmpty = (value: any): boolean =>\n value === undefined ||\n value === null ||\n value === {} ||\n value === \"\" ||\n value === \"null\" ||\n (typeof value === \"object\" && Object.keys(value).length === 0) ||\n (typeof value === \"string\" && value.trim().length === 0);\n\nexport default isEmpty;\n","export const validFileExtension = [\"txt\", \"csv\"];\n\nexport const validImageExtension = [\"png\", \"jpg\", \"jpeg\"];\n\nexport const validApplicationExtension = [\"pdf\", \"xml\"];\n\nexport const validUploadDocExtension = [\"png\", \"jpg\", \"jpeg\", \"pdf\", \"docx\"];\n","export enum ArticleStatusEnum {\r\n NEW = 1,\r\n SUBMITTED = 2,\r\n RESUBMITTED = 3,\r\n REVISION = 4,\r\n REJECTED = 5,\r\n APPROVED = 6,\r\n ASSIGNEDEDITOR = 7,\r\n ASSIGNEDREVIEWER = 8,\r\n REVIEWING = 9,\r\n REVIEWED = 10,\r\n}\r\nexport default ArticleStatusEnum;\r\n","export enum RoleEnum {\n Public = \"Public\",\n Submitter = \"Submitter\",\n Administrator = \"Administrator\",\n Editor = \"Editor\",\n Reviewer = \"Reviewer\",\n}\nexport default RoleEnum;\n","import ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport RoleEnum from \"constants/roleEnum\";\r\nimport React from \"react\";\r\nimport { toastMessage } from \"../store/actions/validateAction\";\r\nimport isEmpty from \"./isEmpty\";\r\n\r\nexport function getStatus(status) {\r\n switch (status) {\r\n case 1:\r\n return \"NEW\";\r\n case 2:\r\n return \"SUBMITTED\";\r\n case 3:\r\n return \"REVERTED\";\r\n case 4:\r\n return \"REJECTED\";\r\n case 5:\r\n return \"APPROVED\";\r\n case 6:\r\n return \"ASSIGNED EDITOR\";\r\n case 7:\r\n return \"ASSIGNED REVIEWER\";\r\n case 8:\r\n return \"REVEIW ACEEPTED\";\r\n case 9:\r\n return \"REVIEW REJECTED\";\r\n case 10:\r\n return \"REVIEW COMPLETED\";\r\n\r\n default:\r\n return \"NEW\";\r\n }\r\n}\r\n\r\nexport function renderStatus(role, status, recommendation = \"\") {\r\n let res: any = {};\r\n\r\n if (role === RoleEnum.Submitter)\r\n res = statusTextForSubmitter(status, recommendation);\r\n else if (role === RoleEnum.Reviewer)\r\n res = statusTextForReviewer(status, recommendation);\r\n else if (role === RoleEnum.Editor)\r\n res = statusTextForEditor(status, recommendation);\r\n else res = getStatusText(status, recommendation);\r\n\r\n return !isEmpty(res) ? (\r\n <div className={`article-card__status-block ${res.color}`}>\r\n <span>{res.text}</span>\r\n </div>\r\n ) : null;\r\n}\r\n\r\nconst getStatusText = (status, recommendation = \"\") => {\r\n if (status === ArticleStatusEnum.REVISION) {\r\n if (recommendation === \"Revision Required\")\r\n return { text: \"Revision required\", color: \"yellow\" };\r\n if (recommendation === \"Decline Submission\")\r\n return { text: \"Review declined\", color: \"red\" };\r\n if (recommendation === \"See Comments\")\r\n return { text: \"Request to see comments\", color: \"yellow\" };\r\n return { text: \"Revision required\", color: \"yellow\" };\r\n }\r\n\r\n if (\r\n status === ArticleStatusEnum.SUBMITTED ||\r\n status === ArticleStatusEnum.RESUBMITTED\r\n )\r\n return { text: \"Submission\", color: \"blue\" };\r\n\r\n if (status === ArticleStatusEnum.ASSIGNEDEDITOR)\r\n return { text: \"Need to assign reviewer\", color: \"yellow\" };\r\n\r\n if (status === ArticleStatusEnum.ASSIGNEDREVIEWER)\r\n return {\r\n text: \"Waiting for a response from the reviewer\",\r\n color: \"yellow\",\r\n };\r\n\r\n if (status === ArticleStatusEnum.REVIEWING)\r\n return { text: \"Under review\", color: \"yellow\" };\r\n\r\n if (status === ArticleStatusEnum.REVIEWED) {\r\n if (recommendation === \"Accept Submission\")\r\n return { text: \"Submisson accepted\", color: \"green\" };\r\n if (recommendation === \"Revision Required\")\r\n return { text: \"Revision required\", color: \"yellow\" };\r\n if (recommendation === \"Decline Submission\")\r\n return { text: \"Review declined\", color: \"red\" };\r\n if (recommendation === \"See Comments\")\r\n return { text: \"Request to see comments\", color: \"yellow\" };\r\n return { text: \"Reviewd\", color: \"green\" };\r\n }\r\n};\r\nconst statusTextForSubmitter = (status, recommendation = \"\") => {\r\n if (status === ArticleStatusEnum.NEW)\r\n return { text: \"Need to submit\", color: \"blue\" };\r\n\r\n if (status === ArticleStatusEnum.REVISION) {\r\n if (recommendation === \"Revision Required\")\r\n return { text: \"Revision required\", color: \"yellow\" };\r\n if (recommendation === \"Decline Submission\")\r\n return { text: \"Review declined\", color: \"red\" };\r\n if (recommendation === \"See Comments\")\r\n return { text: \"Request to see comments\", color: \"\" };\r\n return { text: \"Revision required\", color: \"yellow\" };\r\n }\r\n if (status === ArticleStatusEnum.APPROVED)\r\n return { text: \"Approved\", color: \"green\" };\r\n\r\n if (status === ArticleStatusEnum.REJECTED)\r\n return { text: \"Declined\", color: \"red\" };\r\n\r\n return { text: \"Under review\", color: \"yellow\" };\r\n};\r\n\r\nconst statusTextForEditor = (status, recommendation = \"\") => {\r\n if (status === ArticleStatusEnum.ASSIGNEDEDITOR)\r\n return {\r\n text: \"Submission\",\r\n color: \"blue\",\r\n };\r\n if (status === ArticleStatusEnum.ASSIGNEDREVIEWER)\r\n return {\r\n text: \"Waiting for a response from the reviewer\",\r\n color: \"yellow\",\r\n };\r\n if (status === ArticleStatusEnum.REVIEWING)\r\n return {\r\n text: \"Under review\",\r\n color: \"yellow\",\r\n };\r\n\r\n if (status === ArticleStatusEnum.REVISION)\r\n return {\r\n text: \"Revision required\",\r\n color: \"green\",\r\n };\r\n\r\n if (status === ArticleStatusEnum.REVIEWED) {\r\n if (recommendation === \"Accept Submission\")\r\n return { text: \"Submisson accepted\", color: \"green\" };\r\n if (recommendation === \"Revision Required\")\r\n return { text: \"Revision required\", color: \"yellow\" };\r\n if (recommendation === \"Decline Submission\")\r\n return { text: \"Review declined\", color: \"red\" };\r\n if (recommendation === \"See Comments\")\r\n return { text: \"Request to see comments\", color: \"yellow\" };\r\n return { text: \"Reviewed\", color: \"green\" };\r\n }\r\n if (status === ArticleStatusEnum.APPROVED)\r\n return { text: \"Approved\", color: \"green\" };\r\n\r\n if (status === ArticleStatusEnum.REJECTED)\r\n return { text: \"Declined\", color: \"red\" };\r\n};\r\n\r\nconst statusTextForReviewer = (status, recommendation = \"\") => {\r\n if (status === ArticleStatusEnum.ASSIGNEDREVIEWER)\r\n return {\r\n text: \"Waiting for a response\",\r\n color: \"blue\",\r\n };\r\n if (status === ArticleStatusEnum.REVIEWING)\r\n return {\r\n text: \"Under review\",\r\n color: \"yellow\",\r\n };\r\n if (status === ArticleStatusEnum.REVIEWED) {\r\n if (recommendation === \"Accept Submission\")\r\n return { text: \"Submisson accepted\", color: \"green\" };\r\n if (recommendation === \"Revision Required\")\r\n return { text: \"Revision required\", color: \"yellow\" };\r\n if (recommendation === \"Decline Submission\")\r\n return { text: \"Review declined\", color: \"red\" };\r\n if (recommendation === \"See Comments\")\r\n return { text: \"Request to see comments\", color: \"yellow\" };\r\n return { text: \"Reviewed\", color: \"green\" };\r\n }\r\n};\r\n","export function createMarkup(html) {\r\n return { __html: html };\r\n}\r\n","import React, { useEffect, useState } from \"react\";\nimport { useDispatch, useSelector, useStore } from \"react-redux\";\nimport { Dropdown } from \"element-react\";\nimport logo from \"../../assets/logo.png\";\nimport { useHistory } from \"react-router\";\nimport { logout } from \"store/actions/auth\";\nimport { GetLoggedInUserDetails, changePassword } from \"store/actions/user\";\nimport {\n GetCheckList,\n GetSection,\n GetTemplates,\n GetComponents,\n GetRecommendations,\n} from \"store/actions/meta\";\nimport { GetRoles } from \"store/actions/common\";\nimport { UserDetailInterface } from \"interfaces/actions/auth\";\nimport ChangePasswordDialog from \"./changePassword\";\nimport { Link } from \"react-router-dom\";\nimport RouteEnum from \"constants/routesEnum\";\nimport Toast from \"components/toast\";\nimport { isEmpty } from \"helpers\";\n\nexport default function Header(props: any) {\n const history = useHistory();\n let authToken = localStorage.getItem(\"AuthToken\");\n const dispatch = useDispatch();\n const [isChangePasswordVisible, setChangePasswordVisible] = useState(false);\n const [isAuth, setAuth] = useState(false);\n const { Email, FullName, UserName } = useSelector(\n (state: any) => state.userReducer.loggedInUserDetail as UserDetailInterface\n );\n\n useEffect(() => {\n if (authToken) {\n loadData();\n } else {\n setAuth(false);\n }\n }, [authToken]);\n\n const loadData = async () => {\n var res: any = await dispatch(GetLoggedInUserDetails());\n if (isEmpty(res.UserName)) {\n handleLogout();\n return;\n }\n dispatch(GetCheckList());\n dispatch(GetSection());\n dispatch(GetTemplates());\n dispatch(GetComponents());\n dispatch(GetRecommendations());\n setAuth(true);\n };\n const handleCommand = (command) => {\n if (command === \"logout\") {\n handleLogout();\n } else if (command === \"changePassword\") {\n setChangePasswordVisible(true);\n }\n };\n\n const handleLogout = () => {\n dispatch(logout({}, history));\n };\n const updatePassword = () => {};\n\n return (\n <>\n <Toast />\n <div className=\"app-header\">\n <div className=\"app-header-logo\">\n <img src={logo} />\n <h2>\n <Link to={RouteEnum.base}>\n B&B Institutional Review Committee - Web Portal\n </Link>{\" \"}\n </h2>\n </div>\n {isAuth && (\n <div>\n <Dropdown\n onCommand={handleCommand}\n menu={\n <Dropdown.Menu>\n <Dropdown.Item command=\"changePassword\">\n Change Password\n </Dropdown.Item>\n <Dropdown.Item command=\"logout\"> Log out</Dropdown.Item>\n <Dropdown.Item divided>Info</Dropdown.Item>\n </Dropdown.Menu>\n }\n >\n <span className=\"el-dropdown-link drop-title\">\n Welcome {FullName}\n <i className=\"el-icon-caret-bottom el-icon--right\"></i>\n </span>\n </Dropdown>\n <ChangePasswordDialog\n isVisible={isChangePasswordVisible}\n setVisible={setChangePasswordVisible}\n />\n </div>\n )}\n </div>\n </>\n );\n}\n","import { post, get, api } from \"networkService\";\nimport types from \"store/types\";\n\nexport const GetTemplates = () => async (dispatch: Function) => {\n const res: any = await get(api.meta.templates, dispatch);\n dispatch({ type: types.GET_TEMPLATES, payload: res });\n};\n\nexport const GetCheckList = () => async (dispatch: Function) => {\n const res: any = await get(api.meta.checkList, dispatch);\n dispatch({ type: types.GET_CHECKLIST, payload: res });\n};\n\nexport const GetSection = () => async (dispatch: Function) => {\n const res: any = await get(api.meta.sections, dispatch);\n dispatch({ type: types.GET_SECTIONS, payload: res });\n};\nexport const GetComponents = () => async (dispatch: Function) => {\n const res: any = await get(api.meta.components, dispatch);\n dispatch({ type: types.GET_COMPONENTS, payload: res });\n};\nexport const GetRecommendations = () => async (dispatch: Function) => {\n const res: any = await get(api.meta.recommendations, dispatch);\n dispatch({ type: types.GET_RECOMMENDATIONS, payload: res });\n};\n//recommendations\n","import React from \"react\";\r\nimport { Menu, Layout as ELayout } from \"element-react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\n\r\nconst AdminSideBar = (props) => {\r\n const onOpen = () => {};\r\n const onClose = () => {};\r\n\r\n return (\r\n <div className=\"admin-side-bar\">\r\n <Menu\r\n defaultActive=\"2\"\r\n className=\"el-menu-vertical-demo\"\r\n onOpen={onOpen}\r\n onClose={onClose}\r\n >\r\n <Menu.SubMenu\r\n index=\"1\"\r\n title={\r\n <span>\r\n <i className=\"el-icon-caret-right\"></i>User Module\r\n </span>\r\n }\r\n >\r\n <Menu.Item index=\"1-1\">\r\n <Link to={RouteEnum.user}> User List</Link>\r\n </Menu.Item>\r\n </Menu.SubMenu>\r\n <Menu.Item index=\"2\">\r\n <i className=\"el-icon-menu\"></i>{\" \"}\r\n <Link to={RouteEnum.adminSubmission}> Submission</Link>\r\n </Menu.Item>\r\n </Menu>\r\n </div>\r\n );\r\n};\r\n\r\nexport default AdminSideBar;\r\n","import React from \"react\";\r\nimport { Menu, Layout as ELayout } from \"element-react\";\r\nimport AdminSideBar from \"./adminSideBar\";\r\n\r\nconst AdminLayout = (props) => {\r\n return (\r\n <ELayout.Row className=\"admin-layout\">\r\n <ELayout.Col span={4}>\r\n <AdminSideBar {...props} />\r\n </ELayout.Col>\r\n <ELayout.Col span={20}>\r\n <div className=\"admin-container\">{props.children}</div>\r\n </ELayout.Col>\r\n </ELayout.Row>\r\n );\r\n};\r\n\r\nexport default AdminLayout;\r\n","import React, { useEffect, useState } from \"react\";\nimport { Redirect, Route, useHistory } from \"react-router\";\n\nimport Header from \"./header\";\nimport Login from \"../../scenes/auth/login\";\nimport routes from \"constants/routesEnum\";\nimport { Menu, Layout as ELayout } from \"element-react\";\nimport RoleEnum from \"constants/roleEnum\";\nimport AdminLayout from \"./AdminLayout\";\n\nexport default function Layout(props: any) {\n let authToken = localStorage.getItem(\"AuthToken\");\n const [state, setState] = useState(authToken);\n let history = useHistory();\n let role = localStorage.getItem(\"Role\");\n // useEffect(() => {\n // }, [authToken]);\n if (!authToken || authToken === \"null\") {\n // history.push(routes.login);\n }\n return (\n <>\n <Header />\n {role === RoleEnum.Administrator ? (\n <AdminLayout {...props} />\n ) : (\n <div className=\"app-container\">{props.children}</div>\n )}\n </>\n );\n}\n","import React, { useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\n\nimport { Form, Input, Button, Select } from \"element-react\";\nimport { login } from \"store/actions/auth\";\nimport Routes from \"constants/routesEnum\";\n\nconst Login = () => {\n const [state, setState] = useState({\n username: \"\",\n password: \"\",\n // username: \"admin@admin.com\",\n // password: \"Admin@123\",\n role: \"\",\n });\n const rules = {\n username: [\n {\n required: true,\n message: \"Please input user name\",\n trigger: \"blur\",\n },\n ],\n password: [\n {\n required: true,\n message: \"Please input password\",\n trigger: \"blur\",\n },\n ],\n role: [\n {\n required: true,\n message: \"Please input user role\",\n trigger: \"blur\",\n },\n ],\n };\n const { roles } = useSelector((state: any) => state.commonReducer);\n var formRef: any = useRef();\n const dispatch = useDispatch();\n const history = useHistory();\n const onChange = (key: any, value: any) => {\n setState({ ...state, [key]: value });\n };\n const handleLoginClick = async (e: any) => {\n e.preventDefault();\n\n formRef.current.validate(async (valid) => {\n if (valid) {\n await dispatch(login(state, history));\n } else {\n return false;\n }\n });\n };\n return (\n <div className=\"container\">\n <div className=\"login-form\">\n <Form\n ref={formRef}\n rules={rules}\n className=\"demo-form-stacked\"\n model={state}\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <Form.Item label=\"Email\" prop=\"username\">\n <Input\n placeholder=\"Email\"\n value={state.username}\n onChange={(val: any) => onChange(\"username\", val)}\n ></Input>\n </Form.Item>\n <Form.Item label=\"Password\" prop=\"password\">\n <Input\n placeholder=\"Password\"\n type=\"password\"\n value={state.password}\n onChange={(val: any) => onChange(\"password\", val)}\n ></Input>\n </Form.Item>\n <Form.Item label=\"Log in as\" prop=\"role\">\n <Select\n value={state.role}\n placeholder=\"Role\"\n onChange={(val: any) => onChange(\"role\", val)}\n >\n {roles &&\n roles.map((role, index) => (\n <Select.Option\n key={index}\n label={role.Name}\n value={role.Name}\n ></Select.Option>\n ))}\n </Select>\n </Form.Item>\n <Form.Item>\n <Button\n type=\"primary\"\n onClick={handleLoginClick}\n nativeType=\"submit\"\n >\n Login\n </Button>\n </Form.Item>\n </Form>\n <div className=\"login-form__forgot\">\n <span className=\"forgot-link\">\n <Link to={Routes.resetPassword}>Forgot Password?</Link>\n </span>\n <span className=\"forgot-link\">\n <Link to={Routes.signup}>Sign up</Link>\n </span>\n </div>\n </div>\n </div>\n );\n};\nexport default Login;\n","var _linearGradient, _linearGradient2, _linearGradient3, _linearGradient4, _linearGradient5, _linearGradient6, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgDocument(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 512,\n viewBox: \"0 0 64 64\",\n width: 512,\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _linearGradient || (_linearGradient = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 34.5,\n x2: 34.5,\n y1: -31.987,\n y2: -29.421\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#f3f7ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.99,\n stopColor: \"#b5d1ff\"\n }))), _linearGradient2 || (_linearGradient2 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-2\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 10.396,\n x2: 10.396,\n y1: 30.449,\n y2: 119.699\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#048ac4\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#35489b\"\n }))), _linearGradient3 || (_linearGradient3 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-3\",\n x1: 33.5,\n x2: 33.5,\n xlinkHref: \"#linear-gradient\",\n y1: -5.429,\n y2: 153.977\n })), _linearGradient4 || (_linearGradient4 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-4\",\n x1: 50.538,\n x2: 50.538,\n xlinkHref: \"#linear-gradient\",\n y1: -23.429,\n y2: -3.999\n })), _linearGradient5 || (_linearGradient5 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-5\",\n x1: 27.396,\n x2: 27.396,\n xlinkHref: \"#linear-gradient-2\",\n y1: 32.518,\n y2: 84.952\n })), _linearGradient6 || (_linearGradient6 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-6\",\n x1: 9,\n x2: 9,\n xlinkHref: \"#linear-gradient-2\",\n y1: 16.321,\n y2: 43.66\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"Document\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m56 64h-43a1 1 0 0 1 -1-1v-62a1 1 0 0 1 1-1h32.662a1 1 0 0 1 .707.293l10.338 10.338a1 1 0 0 1 .293.707v51.662a1 1 0 0 1 -1 1z\",\n fill: \"url(#linear-gradient)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m7 32.946 4-1.767 2.792 4.285h-6.792z\",\n fill: \"url(#linear-gradient-2)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m55 64h-43a1 1 0 0 1 -1-1v-62a1 1 0 0 1 1-1h33.076l10.924 10.924v52.076a1 1 0 0 1 -1 1z\",\n fill: \"url(#linear-gradient-3)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m45.076 0v9.924a1 1 0 0 0 1 1h9.924l-4.9-5.9z\",\n fill: \"url(#linear-gradient-4)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m46.022 52.5h-37.252a1.769 1.769 0 0 1 -1.77-1.77v-16.016h39.022a1.771 1.771 0 0 1 1.77 1.77v14.246a1.77 1.77 0 0 1 -1.77 1.77z\",\n fill: \"url(#linear-gradient-5)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11 31.179h-2.232a1.767 1.767 0 0 0 -1.768 1.767 1.767 1.767 0 0 0 1.768 1.768h2.232z\",\n fill: \"url(#linear-gradient-6)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#fff\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m14.408 40.18a.868.868 0 0 1 .868-.868 19.487 19.487 0 0 1 3.937.164 3.24 3.24 0 0 1 2.115 2.183 6.323 6.323 0 0 1 .281 2.03 5.664 5.664 0 0 1 -.263 1.828 3.132 3.132 0 0 1 -2.139 2.2 20.9 20.9 0 0 1 -3.931.182.868.868 0 0 1 -.868-.868zm1.735 1.128v4.6c0 .774 1.023.491 1.295.542a4.764 4.764 0 0 0 1.048-.082 1.483 1.483 0 0 0 1.155-1.187 5.614 5.614 0 0 0 .175-1.573 5.138 5.138 0 0 0 -.175-1.529 1.665 1.665 0 0 0 -1.295-1.237 11.548 11.548 0 0 0 -1.661-.082.542.542 0 0 0 -.542.548z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m22.729 43.66a4.514 4.514 0 0 1 1.192-3.381 3.843 3.843 0 0 1 2.962-1.113 4.034 4.034 0 0 1 3.038 1.177 4.515 4.515 0 0 1 1.14 3.276 4.5 4.5 0 0 1 -1.131 3.255 4 4 0 0 1 -3.024 1.175 4.045 4.045 0 0 1 -3.047-1.169 4.437 4.437 0 0 1 -1.13-3.22zm1.787-.059a3.219 3.219 0 0 0 .673 2.212 2.318 2.318 0 0 0 3.414.006 3.284 3.284 0 0 0 .665-2.241 3.226 3.226 0 0 0 -.648-2.2 2.4 2.4 0 0 0 -3.448.009 3.241 3.241 0 0 0 -.656 2.213z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m38.718 45a.871.871 0 0 1 .518 1.217 3.255 3.255 0 0 1 -.93 1.149 4.046 4.046 0 0 1 -5.095-.486 4.477 4.477 0 0 1 -1.1-3.2 4.7 4.7 0 0 1 1.108-3.331 3.8 3.8 0 0 1 2.912-1.186 3.571 3.571 0 0 1 2.56.931 2.619 2.619 0 0 1 .422.518.868.868 0 0 1 -.538 1.3.856.856 0 0 1 -.941-.4 1.709 1.709 0 0 0 -.416-.484 1.821 1.821 0 0 0 -1.175-.387 1.956 1.956 0 0 0 -1.55.686 3.362 3.362 0 0 0 -.595 2.22 3.609 3.609 0 0 0 .586 2.321 1.9 1.9 0 0 0 1.524.691 1.735 1.735 0 0 0 1.189-.439 1.974 1.974 0 0 0 .472-.656.873.873 0 0 1 1.049-.464z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgDocument);\nexport default __webpack_public_path__ + \"static/media/document.0334939e.svg\";\nexport { ForwardRef as ReactComponent };","import React, { useState } from \"react\";\nimport { Form, Input, Button, Select, Checkbox } from \"element-react\";\n\nconst CheckList = (props) => {\n const { list, onChange, value } = props;\n\n const handleCheckBoxChange = (item, isChecked) => {\n let newState = [...value];\n var index = newState.findIndex((x) => x.Id === item.Id);\n if (isChecked) {\n newState.push(item);\n } else if (index > -1) {\n newState.splice(index);\n }\n onChange(newState);\n };\n const containsItems = (item) => {\n var len = value.filter((x) => x.Id === item.Id).length;\n return len > 0;\n };\n return (\n <div className=\"ctrl-check-list\">\n {list &&\n list.map((item, index) => (\n <div key={index}>\n <Checkbox\n key={index}\n label={item.Name}\n checked={containsItems(item)}\n onChange={(e) => handleCheckBoxChange(item, e)}\n ></Checkbox>\n </div>\n ))}\n </div>\n );\n};\n\nexport default CheckList;\n","var _linearGradient, _linearGradient2, _linearGradient3, _linearGradient4, _linearGradient5, _linearGradient6, _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPdf(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n height: 512,\n viewBox: \"0 0 64 64\",\n width: 512,\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _linearGradient || (_linearGradient = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 34.5,\n x2: 34.5,\n y1: -31.987,\n y2: -29.421\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#f3f7ff\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0.99,\n stopColor: \"#b5d1ff\"\n }))), _linearGradient2 || (_linearGradient2 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-2\",\n gradientUnits: \"userSpaceOnUse\",\n x1: 10.396,\n x2: 10.396,\n y1: 30.449,\n y2: 119.699\n }, /*#__PURE__*/React.createElement(\"stop\", {\n offset: 0,\n stopColor: \"#ff5252\"\n }), /*#__PURE__*/React.createElement(\"stop\", {\n offset: 1,\n stopColor: \"#d50000\"\n }))), _linearGradient3 || (_linearGradient3 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-3\",\n x1: 33.5,\n x2: 33.5,\n xlinkHref: \"#linear-gradient\",\n y1: -5.429,\n y2: 153.977\n })), _linearGradient4 || (_linearGradient4 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-4\",\n x1: 50.538,\n x2: 50.538,\n xlinkHref: \"#linear-gradient\",\n y1: -23.429,\n y2: -3.999\n })), _linearGradient5 || (_linearGradient5 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-5\",\n x1: 27.396,\n x2: 27.396,\n xlinkHref: \"#linear-gradient-2\",\n y1: 32.518,\n y2: 84.952\n })), _linearGradient6 || (_linearGradient6 = /*#__PURE__*/React.createElement(\"linearGradient\", {\n id: \"linear-gradient-6\",\n x1: 9,\n x2: 9,\n xlinkHref: \"#linear-gradient-2\",\n y1: 16.321,\n y2: 43.66\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n id: \"PDF\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m56 64h-43a1 1 0 0 1 -1-1v-62a1 1 0 0 1 1-1h32.662a1 1 0 0 1 .707.293l10.338 10.338a1 1 0 0 1 .293.707v51.662a1 1 0 0 1 -1 1z\",\n fill: \"url(#linear-gradient)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m7 32.946 4-1.767 2.792 4.285h-6.792z\",\n fill: \"url(#linear-gradient-2)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m55 64h-43a1 1 0 0 1 -1-1v-62a1 1 0 0 1 1-1h33.076l10.924 10.924v52.076a1 1 0 0 1 -1 1z\",\n fill: \"url(#linear-gradient-3)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m45.076 0v9.924a1 1 0 0 0 1 1h9.924l-4.9-5.9z\",\n fill: \"url(#linear-gradient-4)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m46.022 52.5h-37.252a1.769 1.769 0 0 1 -1.77-1.77v-16.016h39.022a1.771 1.771 0 0 1 1.77 1.77v14.246a1.77 1.77 0 0 1 -1.77 1.77z\",\n fill: \"url(#linear-gradient-5)\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m11 31.179h-2.232a1.767 1.767 0 0 0 -1.768 1.767 1.767 1.767 0 0 0 1.768 1.768h2.232z\",\n fill: \"url(#linear-gradient-6)\"\n }), /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#fff\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m15 47.035v-6.854a.868.868 0 0 1 .868-.869 28.119 28.119 0 0 1 3.977.129 2.416 2.416 0 0 1 1.735 2.514 2.482 2.482 0 0 1 -1.916 2.584 18.245 18.245 0 0 1 -2.651.123.279.279 0 0 0 -.279.279v2.094a.867.867 0 0 1 -.867.867.867.867 0 0 1 -.867-.867zm1.734-5.99v1.879a.279.279 0 0 0 .279.279 7.605 7.605 0 0 0 2.041-.135 1.172 1.172 0 0 0 -.234-2.244 16.962 16.962 0 0 0 -1.807-.059.279.279 0 0 0 -.278.28z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m23 40.181a.868.868 0 0 1 .868-.869 19.481 19.481 0 0 1 3.936.164 3.241 3.241 0 0 1 2.116 2.183 6.351 6.351 0 0 1 .281 2.03 5.635 5.635 0 0 1 -.264 1.828 3.132 3.132 0 0 1 -2.139 2.2 20.884 20.884 0 0 1 -3.93.182.868.868 0 0 1 -.868-.865zm1.734.864v5.131a.279.279 0 0 0 .279.279 10.917 10.917 0 0 0 2.065-.082 1.483 1.483 0 0 0 1.154-1.187 5.609 5.609 0 0 0 .176-1.573 5.133 5.133 0 0 0 -.176-1.529 1.664 1.664 0 0 0 -1.3-1.237 14.379 14.379 0 0 0 -1.924-.082.279.279 0 0 0 -.275.28z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m31.682 47.035v-6.854a.869.869 0 0 1 .869-.869h4.293a.727.727 0 0 1 .727.727.726.726 0 0 1 -.727.726h-3.144a.279.279 0 0 0 -.279.28v1.474a.279.279 0 0 0 .279.28h2.58a.727.727 0 0 1 .727.726.728.728 0 0 1 -.727.727h-2.58a.279.279 0 0 0 -.279.279v2.5a.868.868 0 0 1 -.868.867.867.867 0 0 1 -.871-.863z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPdf);\nexport default __webpack_public_path__ + \"static/media/pdf.d1a89179.svg\";\nexport { ForwardRef as ReactComponent };","import React from \"react\";\r\nimport { ReactComponent as Document } from \"assets/document.svg\";\r\nimport { ReactComponent as PDF } from \"assets/pdf.svg\";\r\n\r\nfunction getIconComponent(name) {\r\n switch (name) {\r\n case \"document\":\r\n return Document;\r\n case \"pdf\":\r\n return PDF;\r\n\r\n default:\r\n return null;\r\n }\r\n}\r\n\r\ninterface Icons {\r\n name: \"document\" | \"pdf\";\r\n size?: number | string;\r\n height?: number | string;\r\n color?: string;\r\n className?: string;\r\n styles?: object;\r\n}\r\n\r\nconst SvgIcons = ({ size, color, name, height = null }: Icons) => {\r\n let SvgIcon = getIconComponent(name);\r\n return <SvgIcon width={size} height={size || height} fill={color} />;\r\n};\r\n\r\nSvgIcons.defaultProps = {\r\n size: \"25px\",\r\n color: \"#3a3a3a\",\r\n};\r\n\r\nexport default SvgIcons;\r\n","export enum Constant {\r\n Uploads = \"Uploads\",\r\n}\r\nexport default Constant;\r\n","const checkFileExtension = (file) => {\r\n let isImage = file && file.toLowerCase().match(/.(jpg|jpeg|png)$/i) !== null;\r\n let isPdf = file && file.toLowerCase().match(/.(pdf)$/i) !== null;\r\n let isXls = file && file.toLowerCase().match(/.(xls|xlsx)$/i) !== null;\r\n let isDocs = file && file.toLowerCase().match(/.(doc|docx)$/i) !== null;\r\n let index = file && file.indexOf(\".\");\r\n let ext = file && file.substring(index + 1, file.length);\r\n\r\n return {\r\n isImage,\r\n isPdf,\r\n isDocs,\r\n isXls,\r\n ext,\r\n };\r\n};\r\n\r\nexport default checkFileExtension;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport \"./styles.scss\";\r\n\r\nimport { Dialog } from \"element-react\";\r\nimport { FiDownload } from \"react-icons/fi\";\r\nimport InnerImageZoom from \"react-inner-image-zoom\";\r\n// import \"react-inner-image-zoom/lib/InnerImageZoom/styles.min.css\";\r\nimport \"react-inner-image-zoom/lib/InnerImageZoom/styles.css\";\r\n\r\nfunction ImageViewer(props) {\r\n const { image, dowloadLinkUrl, title, show, hostedUrl, onClose } = props;\r\n\r\n let imageSrc = image ? `${hostedUrl}/${image.serverFileName || \"\"}` : \"\";\r\n\r\n return (\r\n <Dialog title={title} visible={show} onCancel={() => onClose()}>\r\n <Dialog.Body>\r\n <>\r\n {image && (\r\n <div className=\"image-modal__container\">\r\n <span\r\n onClick={(e) => {\r\n e.stopPropagation();\r\n window.open(dowloadLinkUrl);\r\n }}\r\n className=\"image-modal__download\"\r\n >\r\n <FiDownload />\r\n </span>\r\n <InnerImageZoom\r\n src={imageSrc}\r\n zoomSrc={imageSrc}\r\n zoomScale={1.5}\r\n />\r\n </div>\r\n )}\r\n </>\r\n </Dialog.Body>\r\n </Dialog>\r\n // <Modal\r\n // open={props.show}\r\n // title={props.title || \"\"}\r\n // onModalClose={() => props.onClose(false)}\r\n // hideFooter={true}\r\n // className=\"uploads-modal image-modal\"\r\n // // width=\"800px\"\r\n // >\r\n\r\n // </Modal>\r\n );\r\n}\r\n\r\nexport default ImageViewer;\r\n","import React, { useEffect, useState, useRef } from \"react\";\nimport { useSelector, useDispatch } from \"react-redux\";\nimport { CgAttachment, CgFile } from \"react-icons/cg\";\nimport SvgIcons from \"components/icons/svgIcons\";\nimport { FaTimes } from \"react-icons/fa\";\nimport classnames from \"classnames\";\nimport Constant from \"constants/index\";\nimport checkFileExtension from \"helpers/checkFileExtension\";\nimport { api } from \"networkService/api\";\nimport ImageViewer from \"components/imageViewer\";\nimport { isEmpty } from \"helpers\";\n\nconst AttachmentButton = (props) => {\n const fileRef: any = useRef();\n\n const {\n enableUpload,\n name,\n disabled,\n multiple,\n maxFiles,\n value,\n onChange,\n label,\n isPreview,\n } = props;\n const [preview, setPreview] = useState(false);\n\n const handleChange = (event) => {\n const { files } = event.target;\n const file = (files && files[0]) || null;\n\n onChange && onChange(name, file);\n };\n const openFileOption = () => {\n if (isPreview) return;\n fileRef.current.click();\n };\n const getDownloadLink = (file) => {\n const param = {\n serverFileName: file.serverFileName,\n name: file.name,\n FileType: file.FileType,\n };\n let url = `v1/${api.common.downloadFiles}/${\n file.serverFileName || file.ServerFileName\n }`;\n return url;\n };\n const getDiplayIcon = (file) => {\n const { isDocs, isImage, isPdf } = checkFileExtension(\n file.serverFileName || file.name\n );\n // if (isEmpty(file)) return \"noif ilelel\";\n\n let icon = isDocs ? (\n <SvgIcons name=\"document\" size=\"20\" />\n ) : isPdf ? (\n <SvgIcons name=\"pdf\" size=\"20\" />\n ) : isImage ? (\n isEmpty(file.serverFileName) && file ? (\n <img src={URL.createObjectURL(file)} width=\"20\" height=\"20\" />\n ) : (\n <img\n src={`/${Constant.Uploads}/${file.serverFileName}`}\n width=\"20\"\n height=\"20\"\n />\n )\n ) : (\n <CgFile />\n );\n return icon;\n };\n return (\n <>\n {!isPreview && (\n <input\n ref={fileRef}\n type=\"file\"\n style={{ display: \"none\" }}\n multiple={multiple}\n name={name}\n disabled={disabled}\n onChange={(event) => handleChange && handleChange(event)}\n />\n )}\n <div className=\"upload-container\">\n {label && <span className=\"upload-label\">{label}</span>}\n\n {value && (\n <div\n className=\"upload-item\"\n onClick={(e) => {\n const { isImage } = checkFileExtension(\n value.serverFileName ||\n value.ServerFileName ||\n value.name ||\n value.UserFileName\n );\n if (isImage)\n value &&\n !isEmpty(value.serverFileName || value.ServerFileName) &&\n setPreview(true);\n else {\n e.stopPropagation();\n window.open(getDownloadLink(value));\n }\n }}\n >\n {!isEmpty(value.name || value.UserFileName) && (\n <>\n <div className=\"upload-item-icon\">{getDiplayIcon(value)}</div>\n <div className=\"upload-item-name\">\n {value.name || value.UserFileName}\n {!isPreview && (\n <div className=\"btn-remove\">\n <FaTimes\n style={{ margin: \"0px\" }}\n size=\"12\"\n color=\"#fff\"\n onClick={(e) => {\n e.stopPropagation();\n fileRef.current.value = \"\";\n onChange && onChange(name, null);\n // setSelectedIndex(index);\n // setOpen(true);\n }}\n />\n </div>\n )}\n </div>\n </>\n )}\n </div>\n )}\n {!isPreview && (\n <div className=\"upload-button\" onClick={() => openFileOption()}>\n <div className=\"el-button\">\n <CgAttachment />\n <span className=\"upload-info\">{\"Click to Upload\"} </span>\n </div>\n </div>\n )}\n </div>\n\n {preview && (\n <ImageViewer\n dowloadLinkUrl={getDownloadLink(value)}\n hostedUrl={`/${Constant.Uploads}`}\n show={preview}\n title={value.name || value.serverFileName}\n image={value}\n onClose={setPreview}\n />\n )}\n </>\n );\n};\n\nAttachmentButton.defaultProps = { isPreview: false, enableUpload: true };\n\nexport default AttachmentButton;\n","export enum TemplateEnum {\r\n CopyrightStatements = \"copyrightStatements\",\r\n PrivacyStatements = \"privacyStatements\",\r\n ReviewGuideline = \"reviewGuideline\",\r\n}\r\nexport default TemplateEnum;\r\n","import React from \"react\";\r\nconst Wrapper = (props) => {\r\n const { label, children } = props;\r\n return (\r\n <div className=\"wrapper\">\r\n {label && <div className=\"wrapper-label\">{label}</div>}\r\n <div className=\"wrapper-control\">{children}</div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default Wrapper;\r\n","import React from \"react\";\r\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport ListStyle from \"@ckeditor/ckeditor5-list/src/liststyle\";\r\n\r\nconst Editor = (props) => {\r\n const { value, name } = props;\r\n const config = {\r\n // extraPlugins: [ListStyle],\r\n };\r\n return (\r\n <CKEditor\r\n config={config}\r\n editor={ClassicEditor}\r\n data={value}\r\n onChange={(event, editor) => {\r\n const data = editor.getData();\r\n props.onChange && props.onChange(name, data);\r\n }}\r\n />\r\n );\r\n};\r\nexport default Editor;\r\n","import { isEmpty } from \"helpers\";\nimport { post, put, get, deletion, api } from \"networkService\";\nimport types from \"store/types\";\n\nexport const GetArticles = (param) => async (dispatch: Function) => {\n const res: any = await post(\n `${api.articles.article}`,\n dispatch,\n param,\n false\n );\n\n if (res && res.Status) return res.Data;\n\n return [];\n};\nexport const CountArticle = (param) => async (dispatch: Function) => {\n const res: any = await post(api.articles.count, dispatch, param, false);\n if (!isEmpty(res))\n dispatch({ type: types.COUNT_ARTICLE, payload: res && res.Data });\n};\n\nexport const GetArticle = (id) => async (dispatch: Function) => {\n const res: any = await get(`${api.articles.article}/${id}`, dispatch);\n if (!isEmpty(res))\n dispatch({ type: types.GET_ARTICLE, payload: res && res.Data });\n return res;\n};\n\nexport const DeleteArticle = (id) => async (dispatch: Function) => {\n const res: any = await deletion(api.articles.article, dispatch, id);\n if (!isEmpty(res))\n dispatch({\n type: types.DELETE_ARTICLE,\n payload: { id, status: (res && res.Status) || false },\n });\n return res;\n};\n\nexport const clearArticle = () => async (dispatch: Function) => {\n dispatch({ type: types.GET_ARTICLE, payload: {} });\n};\n\nexport const SaveStart = (param) => async (dispatch: Function) => {\n const res: any = await post(api.articles.start, dispatch, param);\n if (!isEmpty(res))\n dispatch({ type: types.GET_ARTICLE, payload: res && res.Data });\n return res;\n};\n\nexport const SaveAuthors = (param) => async (dispatch: Function) => {\n const res: any = await post(\n api.articles.authors,\n dispatch,\n param,\n true,\n true\n );\n if (!isEmpty(res))\n dispatch({ type: types.GET_ARTICLE, payload: res && res.Data });\n return res;\n};\n\nexport const SaveAttachment = (param) => async (dispatch: Function) => {\n const res: any = await post(\n api.articles.attachments,\n dispatch,\n param,\n true,\n true\n );\n if (!isEmpty(res))\n dispatch({ type: types.GET_ARTICLE, payload: res && res.Data });\n return res;\n};\n\nexport const SaveMetaData = (param) => async (dispatch: Function) => {\n const res: any = await post(\n api.articles.metadata,\n dispatch,\n param,\n true,\n false\n );\n if (!isEmpty(res))\n dispatch({ type: types.GET_ARTICLE, payload: res && res.Data });\n return res;\n};\n\nexport const SaveConfrimation = (param) => async (dispatch: Function) => {\n const res: any = await post(\n api.articles.confirmation,\n dispatch,\n param,\n true,\n false\n );\n if (!isEmpty(res))\n dispatch({ type: types.GET_ARTICLE, payload: res && res.Data });\n return res;\n};\n\nexport const AssignArticleForEditor = (param) => async (dispatch: Function) => {\n const res: any = await post(\n api.articles.assignArticleForEditor,\n dispatch,\n param,\n true\n );\n return res;\n};\n\nexport const SaveReview = (param) => async (dispatch: Function) => {\n let val = isEmpty(param.ReviewId);\n const res: any = isEmpty(param.reviewId)\n ? await post(api.articles.review, dispatch, param, true)\n : await put(api.articles.review, dispatch, param, true);\n return res;\n};\n\nexport const GetReviewDetails = (id) => async (dispatch: Function) => {\n const res: any = await get(`${api.articles.reviewDetail}/${id}`, dispatch);\n if (!isEmpty(res)) {\n dispatch({ type: types.GET_REVIEW, payload: res && res.Data });\n return res.Data;\n }\n return null;\n};\n\nexport const GetReview = (id) => async (dispatch: Function) => {\n const res: any = await get(`${api.articles.review}/${id}`, dispatch);\n if (res && res.Status) return res.Data;\n return null;\n};\n\nexport const GetReviewByArticleId = (id) => async (dispatch: Function) => {\n const res: any = await get(`${api.articles.reviewByArticle}/${id}`, dispatch);\n if (res && res.Status) return res.Data;\n return null;\n};\n\nexport const AcknowledgeReview =\n (reviewId, status, recommendation = null) =>\n async (dispatch: Function) => {\n const res: any = await post(`${api.articles.acknowledgeReview}`, dispatch, {\n reviewId,\n status,\n recommendation,\n });\n\n return res;\n };\n\nexport const SubmitReview = (param) => async (dispatch: Function) => {\n let data = new FormData();\n for (var key in param) {\n if (key !== \"files\") {\n data.append(key, param[key]);\n console.log(key, param[key]);\n } else {\n for (var i = 0; i < param.files.length; i++) {\n var item = param.files[i];\n console.log(i, item);\n data.append(`Files`, item.Attachment || null);\n // data.append(`Files[${i}].FileFormat`, item.FileFormat);\n // data.append(`Files[${i}].FileType`, item.FileType);\n // data.append(`Files[${i}].ServerFileName`, item.ServerFileName);\n // data.append(`Files[${i}].Size`, item.Size);\n // data.append(`Files[${i}].UserFileName`, item.UserFileName);\n }\n }\n }\n\n const res: any = await post(\n `${api.articles.submitReview}`,\n dispatch,\n data,\n true,\n true\n );\n\n return res;\n};\nexport const userWithAssignedInfo = (param) => async (dipatch: Function) => {\n const res: any = await get(api.articles.assingedInfo, dipatch, param);\n if (res.Status) return res.Data;\n return [];\n};\n\nexport const UpdateArticleStatus = (param) => async (dispatch: Function) => {\n const res: any = await post(api.articles.updateStatus, dispatch, param);\n return res;\n};\n\nexport const RequestRevision = (param) => async (dispatch: Function) => {\n const res: any = await post(api.articles.requestRevision, dispatch, param);\n return res;\n};\n\nexport const GetRevision = (id) => async (dispatch: Function) => {\n const res: any = await get(`${api.articles.revision}/${id}`, dispatch);\n if (res && res.Status) return res.Data;\n return null;\n};\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Form, Input, Button, Select, Checkbox } from \"element-react\";\nimport { CheckList } from \"components/form\";\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\nimport { SaveStart } from \"store/actions/articles\";\nimport { isEmpty } from \"helpers\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\nimport TemplateEnum from \"constants/templateEnum\";\n\nconst Start = (props) => {\n var ref: any = useRef();\n const { onSave } = props;\n const [state, setState] = useState({\n ArticleId: 0,\n SectionId: 0,\n CheckList: [],\n });\n const [isLoading, setLoading] = useState(false);\n const [ckBody, setCkBody] = useState(\"\");\n const rules = {};\n const dispatch = useDispatch();\n\n const { checkList, templates, sections } = useSelector(\n (state: any) => state.metaReducer\n );\n const { article } = useSelector((st: any) => st.articleReducer);\n\n useEffect(() => {\n let commentsEditor = \"\";\n let obj = { ArticleId: 0, SectionId: 0, CheckList: [] };\n if (!isEmpty(article)) {\n commentsEditor = article.CommentsForEditor;\n obj = {\n ArticleId: article.Id,\n SectionId: article.SectionId,\n CheckList:\n (article.CheckList &&\n article.CheckList.map((x) => ({\n Id: x.CheckListId,\n Name: x.CheckListName,\n }))) ||\n [],\n };\n }\n setCkBody(commentsEditor);\n setState(obj);\n }, [article]);\n\n const onChange = (key: any, value: any) => {\n setState({ ...state, [key]: value });\n };\n\n const copyrightStatements = templates.find(\n (x) => x.TemplateKey === TemplateEnum.CopyrightStatements\n );\n\n const privacyStatements = templates.find(\n (x) => x.TemplateKey === TemplateEnum.PrivacyStatements\n );\n\n const handleNextClick = async () => {\n ref.current.validate(async (valid) => {\n if (valid) {\n setLoading(true);\n const param = {\n SectionId: state.SectionId,\n CheckList: state.CheckList,\n Comments: ckBody,\n ArticleId: state.ArticleId,\n Steps: 1,\n };\n\n var res: any = await dispatch(SaveStart(param));\n setLoading(false);\n if (res && res.Status) {\n onSave && onSave();\n }\n } else {\n return false;\n }\n });\n };\n\n return (\n <div className=\"user-form\">\n <Form\n ref={ref}\n rules={rules}\n className=\"demo-form-stacked\"\n model={state}\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <Form.Item\n label={copyrightStatements && copyrightStatements.TemplateTitle}\n prop=\"SectionId\"\n >\n <div>{copyrightStatements && copyrightStatements.TemplateText}</div>\n </Form.Item>\n <Form.Item label=\"Section\" prop=\"SectionId\">\n <Select\n value={state.SectionId}\n placeholder=\"Section\"\n onChange={(val: any) => onChange(\"SectionId\", val)}\n >\n {sections &&\n sections.map((role, index) => (\n <Select.Option\n key={index}\n label={role.Name}\n value={role.Id}\n ></Select.Option>\n ))}\n </Select>\n </Form.Item>\n <Form.Item label=\"CheckList\" prop=\"CheckList\">\n <CheckList\n list={checkList}\n value={state.CheckList}\n onChange={(val: any) => onChange(\"CheckList\", val)}\n />\n </Form.Item>\n <Form.Item label=\"Comments for the Editor\" prop=\"CommentsForEditor\">\n <CKEditor\n editor={ClassicEditor}\n data={ckBody}\n onChange={(event, editor) => {\n const data = editor.getData();\n setCkBody(data);\n }}\n />\n </Form.Item>\n <Form.Item\n label={privacyStatements && privacyStatements.TemplateTitle}\n prop=\"privacyStatements\"\n >\n <div>{privacyStatements && privacyStatements.TemplateText}</div>\n </Form.Item>\n\n <Form.Item>\n <Button\n type=\"primary\"\n onClick={handleNextClick}\n loading={isLoading}\n disabled={article.Status === ArticleStatusEnum.SUBMITTED}\n >\n Save and Continue\n </Button>\n </Form.Item>\n </Form>\n </div>\n );\n};\nexport default Start;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Dialog, Form, Input, Select, Button } from \"element-react\";\nimport { AttachmentButton } from \"components/form\";\nimport { useSelector } from \"react-redux\";\n\nconst initialState = {\n Component: null,\n Attachment: null,\n UserFileName: \"\",\n ServerFileName: \"\",\n FileFormat: \"\",\n FileType: \"\",\n Size: \"\",\n};\n\nconst UploadFile = (props) => {\n const { isVisible, onSave, onCancel, selectedFileData } = props;\n const [state, setState] = useState(initialState);\n const { components } = useSelector((state: any) => state.metaReducer);\n\n useEffect(() => {\n const data = selectedFileData.data;\n if (data) {\n setState({\n ...data,\n Component: components.find((x) => x.Id === data.ComponentId),\n Attachment: data.Attachment || {\n serverFileName: data.ServerFileName,\n name: data.UserFileName,\n },\n });\n } else {\n setState(initialState);\n }\n }, [selectedFileData]);\n\n const handleChange = (name, value) => {\n console.clear();\n console.log(state);\n console.log(name, value);\n setState({ ...state, [name]: value });\n };\n\n const handleSave = () => {\n let obj = {\n ...state,\n ComponentId: state.Component.Id,\n ComponentName: state.Component.Name,\n };\n onSave && onSave(selectedFileData.index, obj);\n setState(initialState);\n };\n return (\n <Dialog title=\"Shipping Address\" visible={isVisible} onCancel={onCancel}>\n <Dialog.Body>\n <Form model={state} labelPosition=\"top\">\n <Form.Item label=\"Article Component\">\n <Select\n value={state.Component}\n placeholder=\"Please select component\"\n onChange={(val) => handleChange(\"Component\", val)}\n >\n {components &&\n components.map((item, index) => (\n <Select.Option\n key={index}\n label={item.Name}\n value={item}\n ></Select.Option>\n ))}\n </Select>\n </Form.Item>\n <Form.Item label=\"Attachment\">\n <AttachmentButton\n value={state.Attachment}\n name=\"Attachment\"\n onChange={handleChange}\n />\n </Form.Item>\n <Form.Item>\n <Button type=\"primary\" onClick={() => handleSave()}>\n Save\n </Button>\n </Form.Item>\n </Form>\n </Dialog.Body>\n </Dialog>\n );\n};\nexport default UploadFile;\n","import React, { useEffect, useState } from \"react\";\nimport { Button } from \"element-react\";\nimport UploadFile from \"./uploadFile\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { isEmpty } from \"helpers\";\n\nimport { SaveAttachment } from \"store/actions/articles\";\nimport { FiFile } from \"react-icons/fi\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\n\nconst UploadSubmission = (props) => {\n const { onSave } = props;\n const [isVisible, setVisible] = useState(false);\n const [selectedFileData, setSelectedFileData] = useState({\n data: null,\n index: -1,\n });\n const dispatch = useDispatch();\n\n const [attachments, setAttachments] = useState([]);\n const { article } = useSelector((st: any) => st.articleReducer);\n\n useEffect(() => {\n if (!isEmpty(article)) {\n let attachments = article.ArticleAttachments || [];\n setAttachments([...attachments]);\n }\n }, [article]);\n\n const handleSaveFile = (index, obj) => {\n let newAttachments = [...attachments];\n if (index >= 0) newAttachments[index] = obj;\n else newAttachments.push(obj);\n\n setAttachments(newAttachments);\n setVisible(false);\n };\n\n const onSaveClicked = async () => {\n let data = new FormData();\n data.append(\"ArticleId\", article.Id);\n data.append(\"Steps\", \"3\");\n\n for (var i = 0; i < attachments.length; i++) {\n var item = attachments[i];\n data.append(`Attachments[${i}].Attachment`, item.Attachment || null);\n data.append(`Attachments[${i}].FileFormat`, item.FileFormat);\n data.append(`Attachments[${i}].FileType`, item.FileType);\n data.append(`Attachments[${i}].ServerFileName`, item.ServerFileName);\n data.append(`Attachments[${i}].Size`, item.Size);\n data.append(`Attachments[${i}].UserFileName`, item.UserFileName);\n data.append(`Attachments[${i}].ComponentId`, item.ComponentId);\n }\n var res: any = await dispatch(SaveAttachment(data));\n if (res && res.Status) onSave();\n // onSave && onSave();\n };\n\n const handleAttachmentEditClick = (index) => {\n setSelectedFileData({ index: index, data: { ...attachments[index] } });\n setVisible(true);\n };\n\n const handleAttachmentDeleteClick = (index) => {\n let newAttachments = [...attachments];\n newAttachments.splice(index, 1);\n setAttachments(newAttachments);\n };\n\n return (\n <div className=\"upload-steps__submissions\">\n <div className=\"upload-steps__submissions-header\">\n <div>Submission Files</div>\n <div className=\"upload-steps__submissions-header-action\">\n <div>\n <Button\n type=\"text\"\n disabled={article.Status === ArticleStatusEnum.SUBMITTED}\n onClick={() => {\n setSelectedFileData({ index: -1, data: null });\n setVisible(true);\n }}\n >\n Upload File\n </Button>\n </div>\n </div>\n </div>\n\n <div className=\"upload-steps__submissions-body\">\n {attachments.map((attachment, index) => (\n <div className=\"upload-steps__attachment\" key={index}>\n <div className=\"upload-steps__attachment-info\">\n <div className=\"upload-steps__attachment-info-title\">\n <FiFile />\n {attachment.UserFileName\n ? attachment.UserFileName\n : attachment.Attachment && attachment.Attachment.name}\n </div>\n <div className=\"upload-steps__attachment-info-subtitle\">\n Component: {attachment.ComponentName}\n </div>\n </div>\n <div className=\"upload-steps__attachment-action\">\n <Button\n type=\"text\"\n onClick={() => handleAttachmentEditClick(index)}\n >\n Edit\n </Button>\n <Button\n type=\"text\"\n onClick={() => handleAttachmentDeleteClick(index)}\n >\n Delete\n </Button>\n </div>\n </div>\n ))}\n </div>\n\n <UploadFile\n isVisible={isVisible}\n setVisible={setVisible}\n selectedFileData={selectedFileData}\n onCancel={() => {\n setVisible(false);\n setSelectedFileData({ index: -1, data: null });\n }}\n onSave={(index, obj) => handleSaveFile(index, obj)}\n />\n <div className=\"upload-steps__submissions-footer\">\n <Button\n type=\"primary\"\n onClick={onSaveClicked}\n disabled={\n (attachments && attachments.length === 0) ||\n article.Status === ArticleStatusEnum.SUBMITTED\n }\n >\n Save and Continue\n </Button>\n </div>\n </div>\n );\n};\nexport default UploadSubmission;\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { Form, Input, Button, Layout, Dialog } from \"element-react\";\nimport { AttachmentButton } from \"components/form\";\nimport { isEmpty } from \"helpers\";\n\nconst initialState = {\n FullName: \"\",\n Salutation: \"\",\n Designation: \"\",\n Institute: \"\",\n PostalAddress: \"\",\n MobileNo: \"\",\n Email: \"\",\n Photo_ServerFileName: \"\",\n Photo_UserFileName: \"\",\n Photo: null,\n DigitalSignature_ServerFileName: \"\",\n DigitalSignature_UserFileName: \"\",\n DigitalSignature: null,\n};\n\nconst EntryForm = (props) => {\n const { coAuthorList, coAuthorData, onCancel, onSave } = props;\n const formRef: any = useRef();\n const rules = {};\n const [state, setState] = useState(initialState);\n\n useEffect(() => {\n if (coAuthorData.index >= 0) {\n var obj = coAuthorList[coAuthorData.index];\n console.clear();\n console.log(obj);\n setState({ ...obj });\n } else {\n setState(initialState);\n }\n }, [coAuthorData]);\n\n const onChange = (name, val) => {\n setState({ ...state, [name]: val });\n };\n const handleSubmit = async (e: any) => {\n e.preventDefault();\n\n formRef.current.validate(async (valid) => {\n if (valid) {\n const { index } = coAuthorData;\n onSave && onSave(index, state);\n } else {\n return false;\n }\n });\n };\n const handleReset = (e: any) => {\n formRef.current.resetFields();\n setState({} as any);\n };\n return (\n <div>\n <Dialog\n title=\"Co-Authors\"\n visible={coAuthorData.isVisible}\n onCancel={() => onCancel()}\n >\n <Dialog.Body>\n <Form\n ref={formRef}\n rules={rules}\n className=\"demo-form-stacked\"\n model={state}\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <Layout.Row gutter=\"20\">\n <Layout.Col span=\"12\">\n <Form.Item label=\"Salutation\" prop=\"Salutation\">\n <Input\n value={state.Salutation}\n onChange={(val: any) => onChange(\"Salutation\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Designation\" prop=\"Designation\">\n <Input\n value={state.Designation}\n onChange={(val: any) => onChange(\"Designation\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Full Name\" prop=\"FullName\">\n <Input\n value={state.FullName}\n onChange={(val: any) => onChange(\"FullName\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Email\" prop=\"Email\">\n <Input\n value={state.Email}\n onChange={(val: any) => onChange(\"Email\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Institute\" prop=\"Institute\">\n <Input\n value={state.Institute}\n onChange={(val: any) => onChange(\"Institute\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n {\" \"}\n <Form.Item label=\"Address\" prop=\"PostalAddress\">\n <Input\n value={state.PostalAddress}\n onChange={(val: any) => onChange(\"PostalAddress\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Mobile\" prop=\"MobileNo\">\n <Input\n value={state.MobileNo}\n onChange={(val: any) => onChange(\"MobileNo\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\"></Layout.Col>\n </Layout.Row>\n <Layout.Row>\n <Layout.Col span=\"12\">\n <AttachmentButton\n label=\"Photo\"\n value={state.Photo}\n name=\"Photo\"\n onChange={onChange}\n />\n </Layout.Col>\n <Layout.Col span=\"12\">\n {\" \"}\n <AttachmentButton\n label=\"DigitalSignature\"\n value={state.DigitalSignature}\n name=\"DigitalSignature\"\n onChange={onChange}\n />\n </Layout.Col>\n </Layout.Row>\n <Form.Item>\n <Button type=\"primary\" onClick={handleSubmit} nativeType=\"submit\">\n Save\n </Button>\n <Button onClick={handleReset}>Reset</Button>\n </Form.Item>\n </Form>\n </Dialog.Body>\n </Dialog>\n </div>\n );\n};\n\nexport default EntryForm;\n","import React, { useState, useRef, useEffect } from \"react\";\r\nimport { Form, Input, Button, Layout, Table } from \"element-react\";\r\nimport { AttachmentButton } from \"components/form\";\r\nimport EntryForm from \"./entryForm\";\r\nimport { SaveAuthors } from \"store/actions/articles\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { isEmpty } from \"helpers\";\r\n\r\nconst CoAuthorList = (props) => {\r\n //setCoAuthorData\r\n const { CoAuthors, onEditClicked, onDelelteClicked } = props;\r\n const columns = [\r\n { label: \"Name\", prop: \"FullName\", width: 180 },\r\n { label: \"Salutation\", prop: \"Salutation\", width: 180 },\r\n { label: \"Designation\", prop: \"Designation\", width: 180 },\r\n { label: \"Institute\", prop: \"Institute\", width: 180 },\r\n { label: \"PostalAddress\", prop: \"PostalAddress\", width: 180 },\r\n { label: \"MobileNo\", prop: \"MobileNo\", width: 180 },\r\n { label: \"Email\", prop: \"Email\", width: 180 },\r\n {\r\n label: \"\",\r\n width: 160,\r\n fixed: \"right\",\r\n render: (row, column, index) => {\r\n return (\r\n <span>\r\n <Button\r\n type=\"text\"\r\n size=\"small\"\r\n onClick={() => onEditClicked(index, row)}\r\n >\r\n Edit\r\n </Button>\r\n <Button\r\n type=\"text\"\r\n size=\"small\"\r\n onClick={() => onDelelteClicked(index, row)}\r\n >\r\n Delete\r\n </Button>\r\n </span>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n return (\r\n CoAuthors &&\r\n CoAuthors.length > 0 && (\r\n <Table columns={columns} data={CoAuthors} fit={true} />\r\n )\r\n );\r\n};\r\nexport default CoAuthorList;\r\n","import React, { useState, useRef, useEffect } from \"react\";\nimport { Form, Input, Button, Layout, Table } from \"element-react\";\nimport { AttachmentButton } from \"components/form\";\nimport EntryForm from \"./entryForm\";\nimport { SaveAuthors } from \"store/actions/articles\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { isEmpty } from \"helpers\";\nimport CoAuthorList from \"./coAuthorList\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\n\nconst Authors = (props) => {\n const { onSave } = props;\n const formRef: any = useRef();\n const dispatch = useDispatch();\n const rules = {};\n\n const [isLoading, setLoading] = useState(false);\n\n const [coAuthorData, setCoAuthorData] = useState({\n index: -1,\n isVisible: false,\n });\n\n const [state, setState] = useState({\n ArticleId: 0,\n FullName: \"\",\n Salutation: \"\",\n Designation: \"\",\n Institute: \"\",\n PostalAddress: \"\",\n MobileNo: \"\",\n Email: \"\",\n Photo_ServerFileName: \"\",\n Photo_UserFileName: \"\",\n Photo: null,\n DigitalSignature_ServerFileName: \"\",\n DigitalSignature_UserFileName: \"\",\n DigitalSignature: null,\n Steps: 2,\n CoAuthors: [],\n });\n\n const { article } = useSelector((st: any) => st.articleReducer);\n\n useEffect(() => {\n if (!isEmpty(article)) {\n setState({\n ...state,\n ArticleId: article.Id,\n FullName: article.InvestigatorName,\n Salutation: article.InvestigatorSalutation,\n Designation: article.InvestigatorDesignation,\n Institute: article.InvestigatorInstitute,\n PostalAddress: article.InvestigatorPostalAddress,\n MobileNo: article.InvestigatorMobileNo,\n Email: article.InvestigatorEmail,\n Photo_ServerFileName: article.InvestigatorPhoto_ServerFileName,\n Photo_UserFileName: article.InvestigatorPhoto_UserFileName,\n Photo: {\n serverFileName: article.InvestigatorPhoto_ServerFileName,\n name: article.InvestigatorPhoto_UserFileName,\n },\n DigitalSignature_ServerFileName:\n article.InvestigatorDigitalSignature_ServerFileName,\n DigitalSignature_UserFileName:\n article.InvestigatorDigitalSignature_UserFileName,\n DigitalSignature: {\n serverFileName: article.InvestigatorDigitalSignature_ServerFileName,\n name: article.InvestigatorDigitalSignature_UserFileName,\n },\n CoAuthors:\n article.ArticleCoAuthors &&\n article.ArticleCoAuthors.map((x) => ({\n ...x,\n Photo: !isEmpty(x.Photo_ServerFileName) && {\n serverFileName: x.Photo_ServerFileName,\n name: x.Photo_UserFileName,\n },\n DigitalSignature: !isEmpty(x.DigitalSignature_ServerFileName) && {\n serverFileName: x.DigitalSignature_ServerFileName,\n name: x.DigitalSignature_UserFileName,\n },\n })),\n });\n }\n }, [article]);\n\n const onChange = (name, val) => {\n setState({ ...state, [name]: val });\n };\n const handleSubmit = async (e: any) => {\n e.preventDefault();\n\n formRef.current.validate(async (valid) => {\n if (valid) {\n //await dispatch(GetRoles());\n let data = new FormData();\n\n for (var k in state) {\n if (k !== \"CoAuthors\") {\n data.append(`${k}`, state[k]);\n }\n }\n state.CoAuthors &&\n state.CoAuthors.forEach((el, index) => {\n for (var k in el) {\n if (k !== \"CoAuthors\")\n data.append(`CoAuthors[${index}].${k}`, el[k]);\n }\n //formD\n });\n\n setLoading(true);\n var res: any = await dispatch(SaveAuthors(data));\n setLoading(false);\n if (res && res.Status) onSave();\n } else {\n return false;\n }\n });\n };\n const handleReset = (e: any) => {\n formRef.current.resetFields();\n setState({} as any);\n };\n\n const handleCoAuthorSave = (index, obj) => {\n let nextState = { ...state, CoAuthors: [...state.CoAuthors] };\n if (index >= 0) {\n nextState.CoAuthors[index] = { ...obj };\n } else {\n nextState.CoAuthors.push({ ...obj });\n }\n\n setState(nextState);\n setCoAuthorData({ index: -1, isVisible: false });\n // setVisible(false);\n };\n\n const handleCoAuthorEdit = (index, obj) => {\n console.clear();\n console.log(index, obj);\n setCoAuthorData({ index: index, isVisible: true });\n };\n const handleCoAuthorDelete = (index, obj) => {\n if (index >= 0) {\n let nextState = { ...state, CoAuthors: [...state.CoAuthors] };\n nextState.CoAuthors.splice(index, 1);\n setState(nextState);\n }\n };\n\n return (\n <div>\n <Form\n ref={formRef}\n rules={rules}\n className=\"demo-form-stacked\"\n model={state}\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <div className=\"author-steps__authors\">\n <Layout.Row gutter=\"20\">\n <Layout.Col span=\"6\">\n <Form.Item label=\"Salutation\" prop=\"Salutation\">\n <Input\n value={state.Salutation}\n onChange={(val: any) => onChange(\"Salutation\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"6\">\n <Form.Item label=\"Designation\" prop=\"Designation\">\n <Input\n value={state.Designation}\n onChange={(val: any) => onChange(\"Designation\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"6\">\n <Form.Item label=\"Full Name\" prop=\"FullName\">\n <Input\n value={state.FullName}\n onChange={(val: any) => onChange(\"FullName\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"6\">\n <Form.Item label=\"Email\" prop=\"Email\">\n <Input\n value={state.Email}\n onChange={(val: any) => onChange(\"Email\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"6\">\n {\" \"}\n <Form.Item label=\"Institute\" prop=\"Institute\">\n <Input\n value={state.Institute}\n onChange={(val: any) => onChange(\"Institute\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"6\">\n {\" \"}\n <Form.Item label=\"Address\" prop=\"PostalAddress\">\n <Input\n value={state.PostalAddress}\n onChange={(val: any) => onChange(\"PostalAddress\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"6\">\n <Form.Item label=\"Mobile\" prop=\"MobileNo\">\n <Input\n value={state.MobileNo}\n onChange={(val: any) => onChange(\"MobileNo\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"6\"></Layout.Col>\n </Layout.Row>\n <Layout.Row>\n <Layout.Col span=\"12\">\n <AttachmentButton\n label=\"Photo\"\n value={state.Photo}\n name=\"Photo\"\n onChange={onChange}\n />\n </Layout.Col>\n <Layout.Col span=\"12\">\n <AttachmentButton\n label=\"Digital Signature\"\n value={state.DigitalSignature}\n name=\"DigitalSignature\"\n onChange={onChange}\n />\n </Layout.Col>\n </Layout.Row>\n </div>\n <div className=\"author-steps__co-authors\">\n <div className=\"author-steps__cauthors\">\n <Button\n onClick={() => setCoAuthorData({ index: -1, isVisible: true })}\n >\n Add CoAuthors\n </Button>\n </div>\n\n <CoAuthorList\n CoAuthors={state.CoAuthors}\n onDelelteClicked={handleCoAuthorDelete}\n onEditClicked={handleCoAuthorEdit}\n />\n </div>\n\n <Form.Item>\n <Button\n type=\"primary\"\n onClick={handleSubmit}\n nativeType=\"submit\"\n loading={isLoading}\n disabled={article.Status === ArticleStatusEnum.SUBMITTED}\n >\n Save and Continue\n </Button>\n </Form.Item>\n </Form>\n\n <EntryForm\n coAuthorData={coAuthorData}\n coAuthorList={state.CoAuthors}\n onSave={handleCoAuthorSave}\n onCancel={() => setCoAuthorData({ index: -1, isVisible: false })}\n />\n </div>\n );\n};\n\nexport default Authors;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Form, Input, Button, Select, Checkbox } from \"element-react\";\nimport { CheckList, Editor } from \"components/form\";\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\nimport { SaveMetaData } from \"store/actions/articles\";\nimport { isEmpty } from \"helpers\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\n\nconst initialState = {\n prefix: \"\",\n introduction: \"\",\n methods: \"\",\n citedReference: \"\",\n};\n\nconst MetaData = (props) => {\n const { article } = useSelector((st: any) => st.articleReducer);\n const [state, setState] = useState(initialState);\n useEffect(() => {\n if (!isEmpty(article)) {\n setState({\n prefix: article.ProposalTitle,\n introduction: article.ProposalIntroduction || \"\",\n methods: article.PropsalMethods || \"\",\n citedReference: article.ProposalCitedReferences || \"\",\n });\n }\n }, [article]);\n const { onSave } = props;\n const dispatch = useDispatch();\n const [isLoading, setLoading] = useState(false);\n\n const onSaveClicked = async () => {\n var param = {\n ...state,\n articleId: article.Id,\n steps: 4,\n };\n setLoading(true);\n console.clear();\n console.log(param, article);\n var res: any = await dispatch(SaveMetaData(param));\n setLoading(false);\n if (res && res.Status) onSave();\n };\n const handleChange = (name, value) => {\n setState({ ...state, [name]: value });\n };\n return (\n <div className=\"user-form\">\n <Form className=\"demo-form-stacked\" labelPosition=\"top\" labelWidth=\"100\">\n <Form.Item label=\"Acknowledge the copyright statements\">\n <Input\n type=\"textarea\"\n value={state.prefix}\n onChange={(val: any) => handleChange(\"prefix\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Introduction\">\n <Editor name=\"introduction\" onChange={handleChange} />\n </Form.Item>\n <Form.Item label=\"Methods\">\n <Editor name=\"methods\" onChange={handleChange} />\n </Form.Item>\n <Form.Item label=\"Cited References\">\n <Editor name=\"citedReference\" onChange={handleChange} />\n </Form.Item>\n <Form.Item>\n <Button\n type=\"primary\"\n onClick={onSaveClicked}\n loading={isLoading}\n disabled={article.Status === ArticleStatusEnum.SUBMITTED}\n >\n Save and Continue\n </Button>\n </Form.Item>\n </Form>\n </div>\n );\n};\nexport default MetaData;\n","import React, { useState } from \"react\";\nimport { Button } from \"element-react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { SaveConfrimation } from \"store/actions/articles\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\n\nconst SubmitArticle = (props) => {\n const { onConfirmation, revisionId } = props;\n const { article } = useSelector((st: any) => st.articleReducer);\n const dispatch = useDispatch();\n const [isLoading, setLoading] = useState(false);\n const onSaveClicked = async () => {\n var param = {\n articleId: article.Id,\n revisionId: parseInt(revisionId),\n steps: 5,\n };\n\n setLoading(true);\n var res: any = await dispatch(SaveConfrimation(param));\n setLoading(false);\n if (res && res.Status) onConfirmation();\n };\n return (\n <div>\n <div className=\"upload-steps__info\">\n Your submission has been uploaded and is ready to be sent. You may go\n back to review and adjust any of the information you have entered before\n continuing. When you are ready, click \"Finish Submission\"\n {revisionId}\n </div>\n <div>\n <Button\n disabled={article.Status === ArticleStatusEnum.SUBMITTED}\n type=\"primary\"\n onClick={() => onSaveClicked()}\n loading={isLoading}\n >\n Finish Submission\n </Button>\n </div>\n </div>\n );\n};\n\nexport default SubmitArticle;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Form,\n Input,\n Button,\n Select,\n Tabs,\n Message,\n Breadcrumb,\n} from \"element-react\";\nimport Start from \"./start\";\nimport UploadSubmission from \"./uploadSubmission\";\nimport Authors from \"./authors\";\nimport MetaData from \"./metaData\";\nimport SubmitArticle from \"./submitArticle\";\nimport { useHistory } from \"react-router\";\nimport RouteEnum from \"constants/routesEnum\";\nimport { Link } from \"react-router-dom\";\nimport { GetArticle, clearArticle } from \"store/actions/articles\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { isEmpty } from \"helpers\";\n\nconst Submisson = (props) => {\n const [steps, setSteps] = useState(1);\n const [selectedTab, setSelectedTab] = useState(\"1\");\n const dispatch = useDispatch();\n const history = useHistory();\n const { articleId, revisionId } = props.match.params;\n const { article } = useSelector((st: any) => st.articleReducer);\n\n useEffect(() => {\n if (!isEmpty(article)) {\n var step = article.Steps;\n if (step <= 4) step++;\n setSteps(step);\n\n if (!isEmpty(revisionId)) step = 3;\n setSelectedTab(`${step}`);\n } else {\n setSteps(1);\n setSelectedTab(`1`);\n }\n }, [article]);\n\n useEffect(() => {\n if (articleId) {\n fetchArticle(articleId);\n } else {\n dispatch(clearArticle());\n }\n }, [articleId]);\n\n const fetchArticle = async (articleId) => {\n await dispatch(GetArticle(articleId));\n };\n\n const handleOnSaveStep1 = () => {\n updateStep(2);\n setSelectedTab(\"2\");\n };\n\n const handleOnSaveStep2 = () => {\n updateStep(3);\n setSelectedTab(\"3\");\n };\n const handleOnSaveStep3 = () => {\n updateStep(4);\n setSelectedTab(\"4\");\n };\n const handleOnSaveStep4 = () => {\n updateStep(5);\n setSelectedTab(\"5\");\n };\n const handleConfirmation = () => {\n Message({\n showClose: true,\n message: \"Congrats, submission completed.\",\n type: \"success\",\n });\n history.push(`${RouteEnum.submitter}`);\n };\n const updateStep = (newStep: number) => {\n if (newStep > steps) {\n setSteps(newStep);\n }\n };\n\n const isDisabled = (tab) => {\n return steps < tab;\n };\n\n const handleTabClicked = (e) => {\n const { name } = e.props;\n setSelectedTab(name);\n };\n\n const tabs = [\n {\n label: \"1.start\",\n name: \"1\",\n component: <Start onSave={() => handleOnSaveStep1()} />,\n },\n {\n label: \"2. Authors and CoAuthors\",\n name: \"2\",\n component: <Authors onSave={() => handleOnSaveStep2()} />,\n },\n {\n label: \"3. Upload Submission\",\n name: \"3\",\n component: <UploadSubmission onSave={() => handleOnSaveStep3()} />,\n },\n {\n label: \"4. Enter Metadata\",\n name: \"4\",\n component: <MetaData onSave={() => handleOnSaveStep4()} />,\n },\n {\n label: \"5.Confirmation\",\n name: \"5\",\n component: (\n <SubmitArticle\n onConfirmation={() => handleConfirmation()}\n revisionId={revisionId}\n />\n ),\n },\n ];\n\n return (\n <>\n <Breadcrumb separator=\"/\">\n <Breadcrumb.Item>\n <Link to={RouteEnum.submitter}>Home</Link>\n </Breadcrumb.Item>\n {!isEmpty(revisionId) && (\n <Breadcrumb.Item>\n <Link to={`${RouteEnum.revisionDetail}/${revisionId}`}>\n Revision Detail\n </Link>\n </Breadcrumb.Item>\n )}\n <Breadcrumb.Item>Submission</Breadcrumb.Item>\n </Breadcrumb>\n\n <div className=\"submission\">\n <Tabs type=\"card\" value={selectedTab} onTabClick={handleTabClicked}>\n {tabs.map((item, index) => (\n <Tabs.Pane\n key={index}\n label={item.label}\n name={item.name}\n disabled={isDisabled(index + 1)}\n >\n {item.component}\n </Tabs.Pane>\n ))}\n </Tabs>\n </div>\n </>\n );\n};\nexport default Submisson;\n","import classNames from \"classnames\";\r\nimport React, { Children } from \"react\";\r\n\r\nconst Loader = ({ isLoading, children }) => {\r\n return (\r\n <div className={classNames({ \"loader-container\": isLoading })}>\r\n {isLoading && (\r\n <div className=\"loader-loading\">\r\n <div className=\"loader-loading__symbol\">\r\n <div className=\"spinner\"></div>\r\n </div>\r\n </div>\r\n )}\r\n {children}\r\n </div>\r\n );\r\n};\r\n\r\nexport default Loader;\r\n","import React, { useEffect, useState } from \"react\";\nimport { Button } from \"element-react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { isEmpty } from \"helpers\";\n\nimport { SaveAttachment } from \"store/actions/articles\";\nimport { FiFile } from \"react-icons/fi\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\nimport { AttachmentButton } from \"components/form\";\nconst Attachments = (props) => {\n const { onSave, files, title } = props;\n\n const dispatch = useDispatch();\n\n return (\n <div className=\"attachment__container\">\n <div className=\"attachment__header\">\n <div>{title}</div>\n <div className=\"attachment__header-action\"></div>\n </div>\n\n <div className=\"attachment__body\">\n {files &&\n files.map((file, index) => (\n <div className=\"attachment__files\" key={index}>\n <div className=\"attachment__files-info\">\n <div className=\"attachment__files-info-title\">\n <AttachmentButton value={file} isPreview={true} />\n </div>\n <div className=\"attachment__files-info-subtitle\">\n Component: {file.ComponentName}\n </div>\n </div>\n </div>\n ))}\n </div>\n </div>\n );\n};\nexport default Attachments;\n","import { Breadcrumb, Button, Dialog } from \"element-react\";\r\nimport React, { useEffect, useState } from \"react\";\r\nimport UploadRevisionFiles from \"./uploadRevisionFiles\";\r\nimport SubmissionForm from \"../../common/articleSubmissionForm\";\r\nimport { createMarkup, isEmpty } from \"helpers\";\r\nimport { GetRevision } from \"store/actions/articles\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport Loader from \"components/loader.tsx\";\r\nimport { Wrapper } from \"components/form\";\r\nimport Attachments from \"scenes/common/review/attachments\";\r\nimport { useHistory } from \"react-router\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport { Link } from \"react-router-dom\";\r\nconst Revision = (props) => {\r\n const [state, setState] = useState({\r\n show: false,\r\n isloading: false,\r\n revision: null,\r\n });\r\n\r\n const { revisionId } = props.match.params;\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n useEffect(() => {\r\n if (!isEmpty(revisionId)) {\r\n fetchRevision(revisionId);\r\n }\r\n }, [revisionId]);\r\n\r\n const fetchRevision = async (id) => {\r\n var res = await dispatch(GetRevision(id));\r\n setState({ ...state, revision: res });\r\n };\r\n const { revision, isloading } = state;\r\n return (\r\n <Loader isLoading={isloading}>\r\n <Breadcrumb separator=\"/\">\r\n <Breadcrumb.Item>\r\n <Link to={RouteEnum.submitter}>Home</Link>\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item>Revision Detail</Breadcrumb.Item>\r\n </Breadcrumb>\r\n {isEmpty(revision) ? null : (\r\n <div className=\"revision\">\r\n <div className=\"revison-content\">\r\n <div>\r\n <Wrapper label=\"Comments\">\r\n <div\r\n className=\"ck-editor-content\"\r\n dangerouslySetInnerHTML={createMarkup(revision.Comments)}\r\n ></div>\r\n </Wrapper>\r\n <Wrapper>\r\n <Attachments\r\n files={revision.Attachments}\r\n title=\"Review Files\"\r\n />\r\n </Wrapper>\r\n <Wrapper>\r\n <Button\r\n type=\"primary\"\r\n onClick={() => {\r\n history.push(\r\n `${RouteEnum.revision}/${revisionId}/${revision.ArticleId}`\r\n );\r\n }}\r\n >\r\n Revise\r\n </Button>\r\n </Wrapper>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </Loader>\r\n );\r\n};\r\n\r\nexport default Revision;\r\n","import { Badge, Button, Progress } from \"element-react\";\r\nimport { isEmpty, renderStatus } from \"helpers\";\r\nimport { UserDetailInterface } from \"interfaces/actions/auth\";\r\nimport React from \"react\";\r\nimport { MdOutlineChat } from \"react-icons/md\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst ArticleCard = (props) => {\r\n const { article, actions, index } = props;\r\n const { RoleName } = useSelector(\r\n (state: any) => state.userReducer.loggedInUserDetail as UserDetailInterface\r\n );\r\n\r\n const completion = (article && ((article.Steps || 0) / 5) * 100) || 0;\r\n return (\r\n <div className=\"article-card\">\r\n <div className=\"article-card__details\">\r\n <div className=\"article-card__details-col-1\">\r\n <div>\r\n {article.InvestigatorName && (\r\n <div className=\"article-card__author\">\r\n <span>\r\n {article.InvestigatorSalutation}\r\n {\".\"}\r\n {article.InvestigatorName}\r\n </span>\r\n </div>\r\n )}\r\n <div className=\"article-card__title\">{article.ProposalTitle}</div>\r\n\r\n <div className=\"article-card__info\">\r\n <div className=\"article-card__info-detail\">\r\n <span>{article.SectionName}</span>\r\n </div>\r\n\r\n {article.SubmittedOn && (\r\n <div className=\"article-card__info-detail\">\r\n <span>Submitted by Admin on</span>\r\n\r\n <span>{article.DateInString}</span>\r\n </div>\r\n )}\r\n <div className=\"article-card__info-block\">\r\n <span>Submission Number</span>\r\n <span>{article.SubmissionNumber}</span>\r\n </div>\r\n </div>\r\n <div className=\"article-card__status\">\r\n <div className=\"article-card__status-progress\">\r\n <Progress\r\n type=\"circle\"\r\n strokeWidth={12}\r\n percentage={completion}\r\n />\r\n </div>\r\n\r\n {renderStatus(\r\n RoleName,\r\n article.Status,\r\n article.ReviewRecommendation\r\n )}\r\n </div>\r\n\r\n <div className=\"article-card__progress\"></div>\r\n\r\n {/* <div className=\"article-card__activity\">\r\n <div className=\"article-card__info\">\r\n <div className=\"article-card__info-detail\">\r\n Accepted by Admin on\r\n <span>2022-02-02</span>\r\n </div>\r\n </div>\r\n <div className=\"article-card__info-notes\">Notes...............</div>\r\n </div>\r\n */}\r\n </div>\r\n </div>\r\n <div className=\"article-card__details-col-2\">\r\n {article && !isEmpty(article.ReviewResponsedOnString) && (\r\n <div className=\"info\">\r\n <span className=\"info-date\">\r\n {article.ReviewResponsedOnString}\r\n </span>\r\n <span className=\"info-label\">Responsed On</span>\r\n </div>\r\n )}\r\n {article && !isEmpty(article.ReviewResponseDueDate) && (\r\n <div className=\"info\">\r\n <span className=\"info-date\">\r\n {article.ReviewResponseDueDateString}\r\n </span>\r\n <span className=\"info-label\">Response Due Date</span>\r\n </div>\r\n )}\r\n {article && !isEmpty(article.ReviewDueDateString) && (\r\n <div className=\"info\">\r\n <span className=\"info-date\">{article.ReviewDueDateString}</span>\r\n <span className=\"info-label\">Review Due Date</span>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"article-card__action\">\r\n <div className=\"article-card__action-progress\"></div>\r\n <div className=\"article-card__action-group\">\r\n <span className=\"comment\">\r\n <Badge value={3}>\r\n <MdOutlineChat />\r\n </Badge>\r\n </span>\r\n\r\n <Button size=\"mini\">Activity Log</Button>\r\n {actions && actions(article, index)}\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ArticleCard;\r\n","import React from \"react\";\r\nimport { Table, Pagination, Progress, Button, Badge } from \"element-react\";\r\nimport ArticleCard from \"./articleCard\";\r\ninterface TableProps {\r\n width?: any;\r\n data: any[];\r\n totalData: number;\r\n PageIndex: number;\r\n pageSize: number;\r\n actions: Function;\r\n handlePageSizeChanged: (size?: number) => void;\r\n handlePageChanged: (currentPage?: number) => void;\r\n}\r\n\r\nconst CardView = (props: TableProps) => {\r\n const {\r\n data,\r\n totalData,\r\n pageSize,\r\n PageIndex,\r\n handlePageSizeChanged,\r\n handlePageChanged,\r\n actions,\r\n } = props;\r\n\r\n return (\r\n <>\r\n {data &&\r\n data.map((x, index) => (\r\n <ArticleCard\r\n key={index}\r\n index={index}\r\n article={x}\r\n actions={actions}\r\n />\r\n ))}\r\n\r\n {totalData === 0 && <div className=\"no-table-data\">No Data</div>}\r\n {totalData > 0 && (\r\n <Pagination\r\n layout=\"total, sizes, prev, pager, next\"\r\n total={totalData}\r\n pageSizes={[10, 20, 50, 100]}\r\n pageSize={pageSize}\r\n currentPage={PageIndex}\r\n onSizeChange={handlePageSizeChanged}\r\n onCurrentChange={handlePageChanged}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\nCardView.defaultProps = {\r\n width: \"100%\",\r\n};\r\n\r\nexport default CardView;\r\n","import React from \"react\";\r\nimport { Form, Input, Button, Select, Dialog } from \"element-react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\n\r\nconst SearchFilter = (props) => {\r\n const { state, setState, onSearchClicked } = props;\r\n\r\n const onChangeSearch = (name, val) => {\r\n setState({ ...state, [name]: val });\r\n };\r\n return (\r\n <div className=\"submission-search\">\r\n <Form inline={true}>\r\n <Form.Item>\r\n <Input\r\n style={{ width: \"250px\" }}\r\n value={state.proposalTitle}\r\n placeholder=\"Article Ttile\"\r\n onChange={(val: any) => onChangeSearch(\"proposalTitle\", val)}\r\n ></Input>\r\n </Form.Item>\r\n\r\n <Form.Item>\r\n <Button type=\"primary\" onClick={() => onSearchClicked()}>\r\n Search\r\n </Button>\r\n </Form.Item>\r\n </Form>\r\n </div>\r\n );\r\n};\r\n\r\nexport default SearchFilter;\r\n","import TableView from \"components/tableView\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport React, {\r\n useEffect,\r\n useState,\r\n forwardRef,\r\n useImperativeHandle,\r\n} from \"react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { useHistory } from \"react-router\";\r\nimport { CountArticle, GetArticles } from \"store/actions/articles\";\r\nimport CardView from \"./cardView\";\r\nimport SearchFilter from \"./searchFilter\";\r\n\r\nconst Articles = ({ selectedTab, getStatus, actions }, ref) => {\r\n if (ref == null) return;\r\n const [state, setState] = useState({\r\n status: 0,\r\n PageIndex: 1,\r\n pageSize: 20,\r\n propsalTitle: \"\",\r\n });\r\n useEffect(() => {\r\n var status = getStatus();\r\n fetchData({ ...state, status: status });\r\n }, [selectedTab]);\r\n\r\n useImperativeHandle(ref, () => ({\r\n async loadData() {\r\n var status = getStatus();\r\n\r\n await fetchData({ ...state, status: status });\r\n },\r\n }));\r\n\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const [list, setList] = useState([]);\r\n\r\n const fetchData = async (param) => {\r\n var ls: any = [];\r\n countArticles(param);\r\n ls = await dispatch(GetArticles(param));\r\n setList(ls);\r\n };\r\n const countArticles = async (param) => {\r\n dispatch(CountArticle(param));\r\n };\r\n\r\n const handleSearchClicked = () => {\r\n var status = getStatus();\r\n let newState = { ...state, pageIndex: 1, pageSize: 20, status };\r\n setState(newState);\r\n fetchData(newState);\r\n };\r\n const handlePageSizeChanged = (size) => {\r\n let newState = { ...state, pageSize: size, status: getStatus() };\r\n setState(newState);\r\n fetchData(newState);\r\n };\r\n const handlePageChanged = (page) => {\r\n let newState = { ...state, pageIndex: page, status: getStatus() };\r\n setState(newState);\r\n fetchData(newState);\r\n };\r\n\r\n let totalData = 0;\r\n if (list && list.length > 0) {\r\n totalData = list[0].TotalData;\r\n }\r\n return (\r\n <div className=\"submitter\">\r\n <SearchFilter\r\n state={state}\r\n setState={setState}\r\n onSearchClicked={handleSearchClicked}\r\n />\r\n <CardView\r\n actions={actions}\r\n data={list}\r\n totalData={totalData}\r\n pageSize={state.pageSize}\r\n PageIndex={state.PageIndex}\r\n handlePageSizeChanged={handlePageSizeChanged}\r\n handlePageChanged={handlePageChanged}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default forwardRef(Articles);\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\nimport { Button } from \"element-react\";\r\n\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport SplitButton from \"components/popup/splitButton\";\r\nimport { FaPlus, FaEdit, FaTrash, FaList } from \"react-icons/fa\";\r\nimport { MdRefresh } from \"react-icons/md\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\n\r\nconst Actions = ({\r\n row,\r\n handleEditClick,\r\n handleDelete,\r\n handleRevisionClick,\r\n}) => {\r\n const history = useHistory();\r\n const getActions = () => {\r\n let actions = [];\r\n\r\n if (row.Status === ArticleStatusEnum.NEW) {\r\n actions.push(\r\n <Button size=\"mini\" onClick={() => handleEditClick(row)}>\r\n <FaEdit />\r\n Edit\r\n </Button>\r\n );\r\n }\r\n\r\n if (row.Status === ArticleStatusEnum.REVISION && row) {\r\n actions.push(\r\n <Button size=\"mini\" onClick={() => handleRevisionClick(row)}>\r\n <MdRefresh />\r\n Revise\r\n </Button>\r\n );\r\n }\r\n if (row.Status === ArticleStatusEnum.NEW) {\r\n actions.push(\r\n <Button size=\"mini\" onClick={() => handleDelete(row)}>\r\n <FaTrash />\r\n Delete\r\n </Button>\r\n );\r\n }\r\n\r\n let div = (\r\n <div className=\"table-actions\">\r\n <ul>{actions}</ul>\r\n </div>\r\n );\r\n return actions.length > 0 ? div : null;\r\n };\r\n\r\n return (\r\n <>\r\n <Button\r\n size=\"mini\"\r\n onClick={() => history.push(`${RouteEnum.viewArticle}/${row.Id}`)}\r\n >\r\n <FaList />\r\n View\r\n </Button>\r\n\r\n {getActions()}\r\n </>\r\n );\r\n};\r\n\r\nexport default Actions;\r\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\n\nimport {\n Form,\n Input,\n Button,\n Select,\n Table,\n Pagination,\n Dialog,\n Message,\n MessageBox,\n Breadcrumb,\n Progress,\n Dropdown,\n} from \"element-react\";\nimport Routes from \"routes\";\nimport { GetArticles, DeleteArticle } from \"store/actions/articles\";\nimport RouteEnum from \"constants/routesEnum\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\nimport TableView from \"components/tableView\";\nimport SplitButton from \"components/popup/splitButton\";\nimport Articles from \"scenes/common/articles\";\nimport Actions from \"./actions\";\n\nconst Submissions = (props) => {\n const { selectedTab } = props;\n const articlesRef: any = useRef(null);\n const dispatch = useDispatch();\n const history = useHistory();\n\n const getStatus = () => {\n var status = \"0\";\n if (selectedTab == \"NEW\") status = `${ArticleStatusEnum.NEW}`;\n else if (selectedTab == \"SUBMITTED\") {\n status = status = [\n ArticleStatusEnum.SUBMITTED,\n ArticleStatusEnum.ASSIGNEDEDITOR,\n ArticleStatusEnum.ASSIGNEDREVIEWER,\n ArticleStatusEnum.REVIEWING,\n ArticleStatusEnum.REVIEWED,\n ArticleStatusEnum.RESUBMITTED,\n ].toString();\n } else if (selectedTab == \"REVERTED\")\n status = `${ArticleStatusEnum.REVISION}`;\n else if (selectedTab == \"REJECTED\")\n status = `${ArticleStatusEnum.REJECTED}`;\n else if (selectedTab == \"APPROVED\")\n status = `${ArticleStatusEnum.APPROVED}`;\n return status;\n };\n\n const confirmDelete = (obj) => {\n MessageBox.confirm(\"This will permanently delete. Continue?\", \"Warning\", {\n confirmButtonText: \"OK\",\n cancelButtonText: \"Cancel\",\n type: \"warning\",\n })\n .then(async () => {\n await dispatch(DeleteArticle(obj.Id));\n articlesRef.current.loadData();\n })\n .catch(() => {});\n };\n\n const renderAction = (row, index) => {\n return (\n <Actions\n row={row}\n handleEditClick={(row) =>\n history.push(`${RouteEnum.submission}/${row.Id}`)\n }\n handleDelete={(row) => confirmDelete(row)}\n handleRevisionClick={(row) =>\n history.push(`${RouteEnum.revisionDetail}/${row.RevisionId}`)\n }\n />\n );\n };\n return (\n <div className=\"submitter\">\n <Articles\n selectedTab={selectedTab}\n actions={renderAction}\n getStatus={getStatus}\n ref={articlesRef}\n />\n </div>\n );\n};\n\nexport default Submissions;\n","import classNames from \"classnames\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst TabTitle = ({ item, selectedTab, count }) => {\r\n const { articleCounts } = useSelector((state: any) => state.articleReducer);\r\n console.clear();\r\n console.log(articleCounts, selectedTab);\r\n const getValue = (name) => {\r\n var res = articleCounts.find((x) => x.Type === name);\r\n\r\n return (res && res.Total) || 0;\r\n };\r\n return (\r\n <div>\r\n <span className=\"tab-title\">{item.label}</span>\r\n <span\r\n className={classNames(\"tab-count\", {\r\n \"tab-count-active\": selectedTab === item.name,\r\n })}\r\n >\r\n {getValue(item.name)}\r\n </span>\r\n </div>\r\n );\r\n};\r\nexport default TabTitle;\r\n","import Submisson from \"scenes/submitter/submission\";\nimport Revision from \"scenes/submitter/revision\";\nimport Submitter from \"scenes/submitter\";\nimport RoleEnum from \"constants/roleEnum\";\nimport RouteEnum from \"constants/routesEnum\";\n\nconst SubmitterRoutes = [\n {\n exact: true,\n component: Submitter,\n role: RoleEnum.Submitter,\n title: \"Dashboard\",\n path: RouteEnum.submitter,\n },\n {\n exact: true,\n component: Submisson,\n role: RoleEnum.Submitter,\n title: \"Submission\",\n path: RouteEnum.submission,\n },\n {\n exact: true,\n component: Submisson,\n role: RoleEnum.Submitter,\n title: \"Submission\",\n path: `${RouteEnum.submission}/:articleId`,\n },\n {\n exact: true,\n component: Submisson,\n role: RoleEnum.Submitter,\n title: \"Revision\",\n path: `${RouteEnum.revision}/:revisionId/:articleId`,\n },\n {\n exact: true,\n component: Revision,\n role: RoleEnum.Submitter,\n title: \"Submission\",\n path: `${RouteEnum.revisionDetail}/:revisionId`,\n },\n];\n\nexport default SubmitterRoutes;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\n\nimport {\n Form,\n Input,\n Button,\n Select,\n Table,\n Pagination,\n Dialog,\n Message,\n MessageBox,\n Breadcrumb,\n Tabs,\n Badge,\n} from \"element-react\";\nimport Routes from \"routes\";\nimport { AddUserInterface } from \"interfaces/user\";\nimport { GetRoles } from \"store/actions/common\";\nimport { GetUserList, DeleteUser, ChangeUserStatus } from \"store/actions/user\";\nimport RouteEnum from \"constants/routesEnum\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\nimport SubmissionList from \"./component/submissionList\";\nimport classNames from \"classnames\";\nimport TabTitle from \"scenes/common/tabTitle\";\nconst Submitter = () => {\n const [selectedTab, setSelectedTab] = useState(\"NEW\");\n\n const dispatch = useDispatch();\n const history = useHistory();\n\n const tabs = [\n {\n label: \"New Submission\",\n name: \"NEW\",\n },\n {\n label: \"Under Review\",\n name: \"SUBMITTED\",\n },\n {\n label: \"Need Actions\",\n name: \"REVERTED\",\n },\n {\n label: \"Rejected\",\n name: \"REJECTED\",\n },\n {\n label: \"Approved\",\n name: \"APPROVED\",\n },\n ];\n const handleTabClicked = (e) => {\n const { name } = e.props;\n setSelectedTab(name);\n };\n\n return (\n <div>\n <div className=\"header\">\n <Breadcrumb separator=\"/\">\n <Breadcrumb.Item>\n <Link to={RouteEnum.submitter}>Home</Link>\n </Breadcrumb.Item>\n </Breadcrumb>\n <div>\n <Link\n to={RouteEnum.submission}\n className=\"el-button el-button--primary\"\n >\n New Submission\n </Link>\n </div>\n </div>\n\n <div className=\"submission\">\n <Tabs type=\"card\" value={selectedTab} onTabClick={handleTabClicked}>\n {tabs.map((item, index) => (\n <Tabs.Pane\n key={index}\n label={\n <TabTitle item={item} selectedTab={selectedTab} count={24000} />\n }\n name={item.name}\n ></Tabs.Pane>\n ))}\n </Tabs>\n\n {<SubmissionList selectedTab={selectedTab} />}\n </div>\n </div>\n );\n};\n\nexport default Submitter;\n","import { Form } from \"element-react\";\r\nimport { isEmpty } from \"helpers\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nconst Start = (props) => {\r\n const { checkList, templates, sections } = useSelector(\r\n (state: any) => state.metaReducer\r\n );\r\n\r\n const { article } = useSelector((st: any) => st.articleReducer);\r\n\r\n const copyrightStatements = templates.find(\r\n (x) => x.TemplateKey === \"copyrightStatements\"\r\n );\r\n\r\n const privacyStatements = templates.find(\r\n (x) => x.TemplateKey === \"privacyStatements\"\r\n );\r\n if (isEmpty(article)) return null;\r\n return (\r\n <div className=\"viewArticle__start\">\r\n <Form className=\"demo-form-stacked\" labelPosition=\"top\" labelWidth=\"100\">\r\n <Form.Item\r\n label={copyrightStatements && copyrightStatements.TemplateTitle}\r\n >\r\n <div>{copyrightStatements && copyrightStatements.TemplateText}</div>\r\n </Form.Item>\r\n <Form.Item label=\"Section\">{article && article.SectionName}</Form.Item>\r\n <Form.Item label=\"CheckList\">\r\n <ul>\r\n {article.CheckList.map((x, index) => (\r\n <li key={index}>{x.CheckListName}</li>\r\n ))}\r\n </ul>\r\n </Form.Item>\r\n <Form.Item label=\"Comments for the Editor\">\r\n <div\r\n className=\"ck-editor-content\"\r\n dangerouslySetInnerHTML={{ __html: article.CommentsForEditor }}\r\n ></div>\r\n </Form.Item>\r\n <Form.Item label={privacyStatements && privacyStatements.TemplateTitle}>\r\n <div className=\"ck-editor-content\">\r\n {privacyStatements && privacyStatements.TemplateText}\r\n </div>\r\n </Form.Item>\r\n </Form>\r\n </div>\r\n );\r\n};\r\nexport default Start;\r\n","import Constant from \"constants/index\";\r\nimport { Form } from \"element-react\";\r\nimport { isEmpty } from \"helpers\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst Author = (props) => {\r\n const { checkList, templates, sections } = useSelector(\r\n (state: any) => state.metaReducer\r\n );\r\n\r\n const { article } = useSelector((st: any) => st.articleReducer);\r\n\r\n const copyrightStatements = templates.find(\r\n (x) => x.TemplateKey === \"copyrightStatements\"\r\n );\r\n\r\n const privacyStatements = templates.find(\r\n (x) => x.TemplateKey === \"privacyStatements\"\r\n );\r\n if (isEmpty(article)) return null;\r\n return (\r\n <div className=\"viewArticle__author\">\r\n <h1>Author</h1>\r\n <div className=\"viewArticle__author-detail\">\r\n <div className=\"viewArticle__author-detail-image\">\r\n <img\r\n src={`/${Constant.Uploads}/${article.InvestigatorPhoto_ServerFileName}`}\r\n />\r\n </div>\r\n <div className=\"viewArticle__author-detail-info\">\r\n <div className=\"info-block\">\r\n <label>Name</label>\r\n <div className=\"viewArticle__author-detail-dataName\">\r\n {`${article.InvestigatorSalutation} ${article.InvestigatorName}`}\r\n </div>\r\n </div>\r\n {article.InvestigatorDesignation && (\r\n <div className=\"info-block\">\r\n <label>Designation</label>\r\n <div className=\"viewArticle__author-detail-dataDesignation\">{article.InvestigatorDesignation}</div>\r\n </div>\r\n )}\r\n {article.InvestigatorEmai && (\r\n <div className=\"info-block\">\r\n <label>Email</label>\r\n <div className=\"viewArticle__author-detail-dataEmail\">{article.InvestigatorEmail}</div>\r\n </div>\r\n )}\r\n {article.InvestigatorInstitute && (\r\n <div className=\"info-block\">\r\n <label>Institue</label>\r\n <div className=\"viewArticle__author-detail-dataInstitue\">{article.InvestigatorInstitute}</div>\r\n </div>\r\n )}\r\n {article.InvestigatorPostalAddress && (\r\n <div className=\"info-block\">\r\n <label>Address</label>\r\n <div className=\"viewArticle__author-detail-dataAddress\">{article.InvestigatorPostalAddress}</div>\r\n </div>\r\n )}\r\n {article.InvestigatorMobileNo && (\r\n <div className=\"info-block\">\r\n <label>Mobile No.</label>\r\n <div className=\"viewArticle__author-detail-dataMobile\">{article.InvestigatorMobileNo}</div>\r\n </div>\r\n )}\r\n {article.InvestigatorDigitalSignature_ServerFileName && (\r\n <div className=\"info-block\">\r\n <label>Signature</label>\r\n <div>\r\n <img\r\n className=\"digital-signature\"\r\n src={`/${Constant.Uploads}/${article.InvestigatorDigitalSignature_ServerFileName}`}\r\n />\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n <div className=\"viewArticle__coauthor\">\r\n <CoAuthor ArticleCoAuthors={article.ArticleCoAuthors} />\r\n </div>\r\n </div>\r\n );\r\n};\r\n//ArticleCoAuthors\r\nconst CoAuthor = ({ ArticleCoAuthors }) => {\r\n return (\r\n <>\r\n <h4>Co-authors</h4>\r\n <table> \r\n <tr className=\"co-auth\">\r\n <th>Name</th>\r\n <th>Designation</th>\r\n <th>Email</th>\r\n <th>Institue</th>\r\n <th>Address</th>\r\n <th>Mobile</th>\r\n <th>Signature</th>\r\n </tr>\r\n {ArticleCoAuthors &&\r\n ArticleCoAuthors.map((x, index) => (\r\n <tr key={index}>\r\n <td>\r\n <div className=\"td-author-info\">\r\n {x.Photo_ServerFileName && (\r\n <img\r\n src={`${Constant.Uploads}/${x.Photo_ServerFileName}`}\r\n width=\"40\"\r\n height=\"40\"\r\n />\r\n )}\r\n {`${x.Salutation} ${x.FullName}`}\r\n </div>\r\n </td>\r\n <td>{x.Designation}</td>\r\n <td>{x.Email}</td>\r\n <td>{x.Institute}</td>\r\n <td>{x.PostalAddress}</td>\r\n <td>{x.MobileNo}</td>\r\n <td>\r\n <img\r\n src={`${Constant.Uploads}/${x.DigitalSignature_ServerFileName}`}\r\n width=\"40\"\r\n height=\"40\"\r\n />\r\n </td>\r\n </tr>\r\n ))}\r\n </table>\r\n </> \r\n );\r\n};\r\n\r\nexport default Author;\r\n","import { AttachmentButton } from \"components/form\";\r\nimport { isEmpty } from \"helpers\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\n\r\nconst Attachments = (props) => {\r\n const { article } = useSelector((st: any) => st.articleReducer);\r\n if (isEmpty(article)) return null;\r\n return (\r\n <div className=\"viewArticle__attachment\">\r\n <h1>Attachments</h1>\r\n <div>\r\n {article.ArticleAttachments.map((x, index) => (\r\n <div key={index}>\r\n <label>{x.ComponentName}</label>\r\n <AttachmentButton\r\n isPreview\r\n value={{\r\n serverFileName: x.ServerFileName,\r\n name: x.UserFileName,\r\n }}\r\n name=\"Photo\"\r\n />\r\n </div>\r\n ))}\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default Attachments;\r\n","import { Form } from \"element-react\";\r\nimport { isEmpty } from \"helpers\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nconst MetaInfo = (props) => {\r\n const { checkList, templates, sections } = useSelector(\r\n (state: any) => state.metaReducer\r\n );\r\n\r\n const { article } = useSelector((st: any) => st.articleReducer);\r\n\r\n const copyrightStatements = templates.find(\r\n (x) => x.TemplateKey === \"copyrightStatements\"\r\n );\r\n\r\n const privacyStatements = templates.find(\r\n (x) => x.TemplateKey === \"privacyStatements\"\r\n );\r\n if (isEmpty(article)) return null;\r\n return (\r\n <div className=\"viewArticle__meta\">\r\n <Form className=\"demo-form-stacked\" labelPosition=\"top\" labelWidth=\"100\">\r\n <Form.Item label=\"Title\">\r\n <div\r\n className=\"ck-editor-content\"\r\n dangerouslySetInnerHTML={{ __html: article.ProposalTitle }}\r\n />\r\n </Form.Item>\r\n <Form.Item label=\"Introduction\">\r\n <div\r\n dangerouslySetInnerHTML={{ __html: article.ProposalIntroduction }}\r\n />\r\n </Form.Item>\r\n <Form.Item label=\"Methods\">\r\n <div\r\n className=\"ck-editor-content\"\r\n dangerouslySetInnerHTML={{ __html: article.PropsalMethods }}\r\n />\r\n </Form.Item>\r\n <Form.Item label=\"Cited References\">\r\n <div\r\n className=\"ck-editor-content\"\r\n dangerouslySetInnerHTML={{\r\n __html: article.ProposalCitedReferences,\r\n }}\r\n />\r\n </Form.Item>\r\n </Form>\r\n </div>\r\n );\r\n};\r\nexport default MetaInfo;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\n\r\nimport {\r\n Form,\r\n Input,\r\n Button,\r\n Select,\r\n Table,\r\n Pagination,\r\n Dialog,\r\n Message,\r\n MessageBox,\r\n Breadcrumb,\r\n Tabs,\r\n} from \"element-react\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport Start from \"./components/start\";\r\nimport Authors from \"./components/author\";\r\nimport Attachments from \"./components/attachment\";\r\nimport MetaInfo from \"./components/metaInfo\";\r\nimport { GetArticle, clearArticle } from \"store/actions/articles\";\r\nimport { UserDetailInterface } from \"interfaces/actions/auth\";\r\nimport RoleEnum from \"constants/roleEnum\";\r\n\r\nconst ViewArticle = (props) => {\r\n const { articleId } = props.match.params;\r\n\r\n const dispatch = useDispatch();\r\n const { RoleName } = useSelector(\r\n (state: any) => state.userReducer.loggedInUserDetail as UserDetailInterface\r\n );\r\n\r\n useEffect(() => {\r\n if (articleId) {\r\n fetchArticle(articleId);\r\n } else {\r\n dispatch(clearArticle());\r\n }\r\n }, [articleId]);\r\n\r\n const fetchArticle = async (articleId) => {\r\n await dispatch(GetArticle(articleId));\r\n };\r\n let homeLink = RouteEnum.submitter;\r\n if (RoleName === RoleEnum.Administrator) homeLink = RouteEnum.adminSubmission;\r\n\r\n return (\r\n <div>\r\n <Breadcrumb separator=\"/\">\r\n <Breadcrumb.Item>\r\n <Link to={homeLink}>Home</Link>\r\n </Breadcrumb.Item>\r\n <Breadcrumb.Item>View</Breadcrumb.Item>\r\n </Breadcrumb>\r\n\r\n <div className=\"viewArticle\">\r\n <Start />\r\n <MetaInfo />\r\n <Authors />\r\n <Attachments />\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default ViewArticle;\r\n","import { post, get, api } from \"networkService\";\nimport types from \"store/types\";\n\nexport const GetRoles = () => async (dispatch: Function) => {\n const res: any = await get(api.common.roles, dispatch);\n dispatch({ type: types.GET_ROLES, payload: res.Data });\n};\n\nexport const verifyUserEmailAddress =\n ({ param }) =>\n async (dispatch: Function) => {\n const res: any = await get(\n api.users.verifyEmail,\n dispatch,\n {\n param,\n },\n true\n );\n if (res) {\n return res.Status;\n }\n return false;\n };\n\nexport const GetEmailTemplate =\n (templateType) => async (dispatch: Function) => {\n const res: any = await get(\n `${api.common.emailTemplate}/${templateType}`,\n dispatch\n );\n if (res && res.Status) return res.Data;\n return null;\n };\n","import React, { useEffect } from \"react\";\nimport queryString from \"query-string\";\nimport { verifyUserEmailAddress } from \"store/actions/common\";\nimport { useDispatch } from \"react-redux\";\nimport { useHistory } from \"react-router\";\nimport RoutesEnum from \"constants/routesEnum\";\n\nconst VerifyEmailAddress = (props) => {\n const dispatch = useDispatch();\n const history = useHistory();\n\n useEffect(() => {\n verify();\n }, []);\n const verify = async () => {\n const params = queryString.parse(props.location.search);\n var res = await dispatch(verifyUserEmailAddress({ param: params.param }));\n if (res) history.push(RoutesEnum.login);\n };\n return (\n <div>\n Your email address will be verified and after success redirects to login\n page.\n </div>\n );\n};\n\nexport default VerifyEmailAddress;\n","import React, { useRef, useState } from \"react\";\nimport queryString from \"query-string\";\nimport {\n Form,\n Input,\n Button,\n Select,\n Dialog,\n Message,\n Layout,\n} from \"element-react\";\nimport { resetPassword } from \"store/actions/user\";\nimport { useDispatch } from \"react-redux\";\nimport { useHistory } from \"react-router\";\nimport RoutesEnum from \"constants/routesEnum\";\n\nconst ForgotPassword = (props) => {\n const { user } = props;\n const ref: any = useRef();\n const dispatch = useDispatch();\n const history = useHistory();\n const params = queryString.parse(props.location.search);\n\n const [state, setState] = useState({\n Email: \"\",\n Password: \"\",\n ConfirmPassword: \"\",\n isLoading: false,\n Code: params.code,\n });\n\n const rules = {\n Email: [\n {\n required: true,\n message: \"Email is required\",\n trigger: \"blur\",\n },\n {\n type: \"email\",\n message: \"Please input correct email address\",\n trigger: \"blur,change\",\n },\n ],\n Password: [\n { required: true, message: \"Please input the password\", trigger: \"blur\" },\n {\n validator: (rule, value, callback) => {\n if (value === \"\") {\n callback(new Error(\"Please input the password\"));\n } else {\n if (state.Password !== \"\") {\n ref.current.validateField(\"ConfirmPassword\");\n }\n callback();\n }\n },\n },\n ],\n ConfirmPassword: [\n {\n required: true,\n message: \"Please input the password again\",\n trigger: \"blur\",\n },\n {\n validator: (rule, value, callback) => {\n if (value === \"\") {\n callback(new Error(\"Please input the password again\"));\n } else if (value !== state.Password) {\n callback(new Error(\"Two inputs don't match!\"));\n } else {\n callback();\n }\n },\n },\n ],\n };\n const onChange = (name, val) => setState({ ...state, [name]: val });\n\n const handleSubmit = () => {\n ref.current.validate(async (valid) => {\n if (valid) {\n setState({ ...state, isLoading: true });\n const { Email, Code, Password, ConfirmPassword } = state;\n\n var res: any = await dispatch(\n resetPassword({ Email, Code, Password, ConfirmPassword })\n );\n setState({ ...state, isLoading: false });\n\n if (res) history.push(RoutesEnum.login);\n } else {\n return false;\n }\n });\n };\n\n return (\n <div className=\"container\">\n <div className=\"sign-up-form\">\n <Form\n ref={ref}\n rules={rules}\n className=\"demo-form-stacked\"\n model={state}\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <Layout.Row gutter=\"20\">\n <Form.Item label=\"Email\" prop=\"Email\">\n <Input\n value={state.Email}\n onChange={(val: any) => onChange(\"Email\", val)}\n ></Input>\n </Form.Item>\n <Form.Item label=\"Password\" prop=\"Password\">\n <Input\n type=\"password\"\n value={state.Password}\n onChange={(val: any) => onChange(\"Password\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Confirm Password\" prop=\"ConfirmPassword\">\n <Input\n type=\"password\"\n value={state.ConfirmPassword}\n onChange={(val: any) => onChange(\"ConfirmPassword\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item>\n <Button\n type=\"primary\"\n onClick={handleSubmit}\n loading={state.isLoading}\n >\n Submit\n </Button>\n </Form.Item>\n </Layout.Row>\n </Form>\n </div>\n </div>\n );\n};\nexport default ForgotPassword;\n","import React, { useRef, useState } from \"react\";\nimport { Button, Form, Input } from \"element-react\";\nimport { Link } from \"react-router-dom\";\nimport RoutesEnum from \"constants/routesEnum\";\nimport { forgotPassword } from \"store/actions/user\";\nimport { useDispatch } from \"react-redux\";\n\nconst PasswordReset = (props) => {\n const ref: any = useRef();\n const dispatch = useDispatch();\n\n const [state, setState] = useState({\n email: \"\",\n isLoading: false,\n isSuccessSubmitting: false,\n });\n\n const rules = {\n email: [\n {\n required: true,\n message: \"Email is required\",\n trigger: \"blur\",\n },\n {\n type: \"email\",\n message: \"Please input correct email address\",\n trigger: \"blur,change\",\n },\n ],\n };\n\n const handleSubmit = async () => {\n ref.current.validate(async (valid) => {\n if (valid) {\n setState({ ...state, isSuccessSubmitting: true, isLoading: true });\n let res = await dispatch(forgotPassword({ email: state.email }));\n let nextState = { ...state };\n nextState.isLoading = false;\n if (res) {\n nextState.isSuccessSubmitting = true;\n }\n setState(nextState);\n }\n });\n };\n\n //const han\n return (\n <div className=\"pr-container\">\n {!state.isSuccessSubmitting ? (\n <div className=\"reset-form\">\n <Form ref={ref} rules={rules} model={state}>\n <Form.Item\n label=\"Enter your user account's verified email address and we will send you a password reset link.\"\n prop=\"email\"\n >\n <Input\n placeholder=\"Enter your email address\"\n value={state.email}\n onChange={(val: any) => setState({ ...state, email: val })}\n ></Input>\n </Form.Item>\n <div className=\"irc-form-footer\">\n <Button\n type=\"primary\"\n onClick={handleSubmit}\n loading={state.isLoading}\n >\n Submit\n </Button>\n </div>\n </Form>\n </div>\n ) : (\n <div className=\"reset-success\">\n <h2>Reset Password</h2>\n <div className=\"reset-success__message\">\n Check your email for a link to reset your password. If it doesn’t\n appear within a few minutes, check your spam folder.\n </div>\n <Link to={RoutesEnum.login} className=\"el-button el-button--primary\">\n Return to sign in\n </Link>\n </div>\n )}\n </div>\n );\n};\n\nexport default PasswordReset;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\n\nimport { Form, Input, Button, Select, Layout, Switch } from \"element-react\";\nimport { SaveUser, signUp } from \"store/actions/user\";\nimport routes from \"constants/routesEnum\";\nimport ReCAPTCHA from \"react-google-recaptcha\";\n\nconst initialState = {\n Roles: [],\n Email: \"\",\n FullName: \"\",\n MobileNumber: \"\",\n Country: \"\",\n Affiliation: \"\",\n Password: \"\",\n ConfirmPassword: \"\",\n Captcha: \"\",\n};\nconst SignUp = (props) => {\n const [state, setState] = useState(initialState);\n const [isLoading, setLoading] = useState(false);\n const { roles } = useSelector((state: any) => state.commonReducer);\n var formRef: any = useRef();\n const recaptchaRef: any = useRef();\n\n const rules = {\n FullName: [\n {\n required: true,\n message: \"Full name is required\",\n trigger: \"blur\",\n },\n ],\n Email: [\n {\n required: true,\n message: \"Email is required\",\n trigger: \"blur\",\n },\n {\n type: \"email\",\n message: \"Please input correct email address\",\n trigger: \"blur,change\",\n },\n ],\n Password: [\n { required: true, message: \"Please input the password\", trigger: \"blur\" },\n {\n validator: (rule, value, callback) => {\n if (value === \"\") {\n callback(new Error(\"Please input the password\"));\n } else {\n if (state.Password !== \"\") {\n formRef.current.validateField(\"ConfirmPassword\");\n }\n callback();\n }\n },\n },\n ],\n ConfirmPassword: [\n {\n required: true,\n message: \"Please input the password again\",\n trigger: \"blur\",\n },\n {\n validator: (rule, value, callback) => {\n if (value === \"\") {\n callback(new Error(\"Please input the password again\"));\n } else if (value !== state.Password) {\n callback(new Error(\"Two inputs don't match!\"));\n } else {\n callback();\n }\n },\n },\n ],\n };\n\n const dispatch = useDispatch();\n const history = useHistory();\n\n const onChange = (key: any, value: any) => {\n if (key === \"IsInactive\") {\n value = !value;\n }\n console.clear();\n console.log(key, value);\n setState({ ...state, [key]: value });\n };\n\n const handleSubmit = async (e: any) => {\n e.preventDefault();\n\n formRef.current.validate(async (valid) => {\n if (valid) {\n setLoading(true);\n const param = { ...state, UserName: state.Email };\n var res: any = await dispatch(signUp(param));\n setLoading(false);\n if (res) history.push(routes.login);\n } else {\n return false;\n }\n });\n };\n const handleReset = (e: any) => {\n formRef.current.resetFields();\n setState(initialState);\n };\n\n return (\n <div className=\"container\">\n <div className=\"sign-up-form\">\n <Form\n ref={formRef}\n rules={rules}\n className=\"demo-form-stacked\"\n model={state}\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <Layout.Row gutter=\"20\">\n <Form.Item label=\"Full Name\" prop=\"FullName\">\n <Input\n value={state.FullName}\n onChange={(val: any) => onChange(\"FullName\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Email\" prop=\"Email\">\n <Input\n value={state.Email}\n onChange={(val: any) => onChange(\"Email\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Mobile\" prop=\"MobileNumber\">\n <Input\n value={state.MobileNumber}\n onChange={(val: any) => onChange(\"MobileNumber\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Country\" prop=\"Country\">\n <Input\n value={state.Country}\n onChange={(val: any) => onChange(\"Country\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Affiliation\" prop=\"Affiliation\">\n <Input\n value={state.Affiliation}\n onChange={(val: any) => onChange(\"Affiliation\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Password\" prop=\"Password\">\n <Input\n type=\"password\"\n value={state.Password}\n onChange={(val: any) => onChange(\"Password\", val)}\n ></Input>\n </Form.Item>\n\n <Form.Item label=\"Confirm Password\" prop=\"ConfirmPassword\">\n <Input\n type=\"password\"\n value={state.ConfirmPassword}\n onChange={(val: any) => onChange(\"ConfirmPassword\", val)}\n ></Input>\n </Form.Item>\n <Form.Item>\n <ReCAPTCHA\n ref={recaptchaRef}\n sitekey=\"6LdEjqkeAAAAAAfuSmszHsZMq2N36JRQO9cLVoe8\"\n onChange={(val) => onChange(\"Captcha\", val)}\n />\n </Form.Item>\n\n <Form.Item>\n <Button\n type=\"primary\"\n onClick={handleSubmit}\n nativeType=\"submit\"\n loading={isLoading}\n >\n Sign up\n </Button>\n <Button onClick={handleReset}>Reset</Button>\n </Form.Item>\n </Layout.Row>\n </Form>\n </div>\n </div>\n );\n};\nexport default SignUp;\n","import ViewArticle from \"scenes/viewArticle\";\nimport VerifyEmailAddress from \"scenes/Administrator/user/verifyEmailAddress\";\nimport ForgotPassword from \"scenes/Administrator/user/forgotPassword\";\nimport PasswordReset from \"scenes/Administrator/user/sendPasswordResetLink\";\nimport SignUp from \"scenes/Administrator/user/signUp\";\nimport RoleEnum from \"constants/roleEnum\";\nimport RouteEnum from \"constants/routesEnum\";\n\nconst PublicRoutes = [\n {\n exact: true,\n component: ForgotPassword,\n role: RoleEnum.Public,\n title: \"Reset Password\",\n path: RouteEnum.forgotPassword,\n },\n {\n exact: true,\n component: PasswordReset,\n role: RoleEnum.Public,\n title: \"Reset Password\",\n path: RouteEnum.resetPassword,\n },\n {\n exact: true,\n component: SignUp,\n role: RoleEnum.Public,\n title: \"Sign up\",\n path: RouteEnum.signup,\n },\n {\n exact: true,\n component: VerifyEmailAddress,\n role: RoleEnum.Public,\n title: \"Verify Email\",\n path: RouteEnum.verifyEmailAddress,\n },\n {\n exact: true,\n component: ViewArticle,\n role: RoleEnum.Public,\n title: \"View Article\",\n path: `${RouteEnum.viewArticle}/:articleId`,\n },\n];\n\nexport default PublicRoutes;\n","import React from \"react\";\nimport { Form, Input, Button, Select, Dialog } from \"element-react\";\nconst Search = (props) => {\n const { state, setState, onSearchClicked, onAddUserClicked } = props;\n\n const onChangeSearch = (name, val) => {\n setState({ ...state, [name]: val });\n };\n return (\n <div className=\"user-search\">\n <Form inline={true}>\n <Form.Item>\n <Input\n style={{ width: \"300px\" }}\n value={state.userName}\n placeholder=\"User name\"\n onChange={(val: any) => onChangeSearch(\"userName\", val)}\n ></Input>\n </Form.Item>\n <Form.Item>\n <Select\n value={state.isActive}\n placeholder=\"IsActive\"\n onChange={(val: any) => onChangeSearch(\"IsActive\", val)}\n >\n <Select.Option label=\"Active\" value=\"true\"></Select.Option>\n <Select.Option label=\"Inactive\" value=\"false\"></Select.Option>\n </Select>\n </Form.Item>\n <Form.Item>\n <Button type=\"primary\" onClick={() => onSearchClicked()}>\n Search\n </Button>\n </Form.Item>\n </Form>\n <div>\n <Button onClick={() => onAddUserClicked({})}>Add User</Button>\n </div>\n </div>\n );\n};\n\nexport default Search;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\n\nimport { Form, Input, Button, Select, Layout, Switch } from \"element-react\";\nimport Routes from \"routes\";\nimport { AddUserInterface } from \"interfaces/user\";\nimport { GetRoles } from \"store/actions/common\";\nimport { SaveUser } from \"store/actions/user\";\n\nconst AddUser = (props) => {\n const { state, setState, onSaveSuccess } = props;\n const [isLoading, setLoading] = useState(false);\n const { roles } = useSelector((state: any) => state.commonReducer);\n const rules = {\n FullName: [\n {\n required: true,\n message: \"Full name is required\",\n trigger: \"blur\",\n },\n ],\n Email: [\n {\n required: true,\n message: \"Email is required\",\n trigger: \"blur\",\n },\n {\n type: \"email\",\n message: \"Please input correct email address\",\n trigger: \"blur,change\",\n },\n ],\n RoleId: [\n {\n required: true,\n message: \"Role is required\",\n trigger: \"blur\",\n },\n ],\n };\n var formRef: any = useRef();\n const dispatch = useDispatch();\n const history = useHistory();\n\n useEffect(() => {\n fetchRoles();\n }, []);\n\n const fetchRoles = async () => {\n await dispatch(GetRoles());\n };\n\n const onChange = (key: any, value: any) => {\n if (key === \"IsInactive\") {\n value = !value;\n }\n setState({ ...state, [key]: value });\n };\n\n const handleSubmit = async (e: any) => {\n e.preventDefault();\n\n formRef.current.validate(async (valid) => {\n if (valid) {\n setLoading(true);\n const param = { ...state, UserName: state.Email };\n var res: any = await dispatch(SaveUser(param));\n setLoading(false);\n if (res) {\n onSaveSuccess();\n }\n } else {\n return false;\n }\n });\n };\n const handleReset = (e: any) => {\n formRef.current.resetFields();\n setState({} as AddUserInterface);\n };\n\n return (\n <div className=\"container\">\n <div className=\"user-form\">\n <Form\n ref={formRef}\n rules={rules}\n className=\"demo-form-stacked\"\n model={state}\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <Layout.Row gutter=\"20\">\n <Layout.Col span=\"12\">\n <Form.Item label=\"Full Name\" prop=\"FullName\">\n <Input\n value={state.FullName}\n onChange={(val: any) => onChange(\"FullName\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Email\" prop=\"Email\">\n <Input\n value={state.Email}\n onChange={(val: any) => onChange(\"Email\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Mobile\" prop=\"MobileNumber\">\n <Input\n value={state.MobileNumber}\n onChange={(val: any) => onChange(\"MobileNumber\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Country\" prop=\"Country\">\n <Input\n value={state.Country}\n onChange={(val: any) => onChange(\"Country\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Affiliation\" prop=\"Affiliation\">\n <Input\n value={state.Affiliation}\n onChange={(val: any) => onChange(\"Affiliation\", val)}\n ></Input>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Role\" prop=\"Roles\">\n <Select\n multiple={true}\n value={state.Roles}\n placeholder=\"Role\"\n onChange={(val: any) => onChange(\"Roles\", val)}\n >\n {roles &&\n roles.map((role, index) => (\n <Select.Option\n key={index}\n label={role.Name}\n value={role.Name}\n ></Select.Option>\n ))}\n </Select>\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n <Form.Item label=\"Is Active\">\n <Switch\n onText=\"\"\n offText=\"\"\n value={!state.IsInactive}\n onChange={(val: any) => onChange(\"IsInactive\", val)}\n />\n </Form.Item>\n </Layout.Col>\n <Layout.Col span=\"12\">\n {!state.Id && (\n <Form.Item label=\"Password\">\n <Input\n type=\"password\"\n value={state.Password}\n onChange={(val: any) => onChange(\"Password\", val)}\n ></Input>\n </Form.Item>\n )}\n </Layout.Col>\n </Layout.Row>\n <Layout.Row>\n <Layout.Col span=\"12\">\n <Form.Item>\n <Button\n type=\"primary\"\n onClick={handleSubmit}\n nativeType=\"submit\"\n loading={isLoading}\n >\n Save\n </Button>\n <Button onClick={handleReset}>Reset</Button>\n </Form.Item>\n </Layout.Col>\n </Layout.Row>\n </Form>\n </div>\n </div>\n );\n};\nexport default AddUser;\n","import React, { useRef, useState } from \"react\";\nimport { Form, Input, Button, Select, Dialog, Message } from \"element-react\";\nimport { changePasswordByUser } from \"store/actions/user\";\nimport { useDispatch } from \"react-redux\";\n\nconst ChangeUserPassword = (props) => {\n const { user } = props;\n const ref: any = useRef();\n const dispatch = useDispatch();\n\n const [state, setState] = useState({\n newPassword: \"\",\n isVisible: false,\n isLoading: false,\n });\n\n const rules = {\n newPassword: [\n {\n required: true,\n message: \"New password is required\",\n trigger: \"blur\",\n },\n ],\n };\n\n const handleChangePassword = async () => {\n ref.current.validate(async (valid) => {\n if (valid) {\n var res: any = await dispatch(\n changePasswordByUser({\n userName: user.UserName,\n newPassword: state.newPassword,\n })\n );\n if (res && res.Status) reset();\n }\n });\n };\n\n const reset = () => {\n ref.current.resetFields();\n setState({ newPassword: \"\", isLoading: false, isVisible: false });\n };\n return (\n <>\n <Button\n type=\"text\"\n size=\"small\"\n onClick={() => setState({ ...state, isVisible: true })}\n >\n Reset Password\n </Button>\n <Dialog\n title=\"Change Password\"\n visible={state.isVisible}\n onCancel={() => reset()}\n style={{ width: \"350px\" }}\n >\n <Dialog.Body>\n <Form ref={ref} rules={rules}>\n <Form.Item>\n <Input\n name=\"newPassword\"\n type=\"password\"\n style={{ width: \"270px\" }}\n value={state.newPassword}\n placeholder=\"New Pasword\"\n onChange={(val: any) =>\n setState({ ...state, newPassword: val })\n }\n ></Input>\n </Form.Item>\n <Form.Item>\n <Button\n onClick={() => handleChangePassword()}\n loading={state.isLoading}\n >\n Change Password\n </Button>\n </Form.Item>\n </Form>\n </Dialog.Body>\n </Dialog>\n </>\n );\n};\n\nexport default ChangeUserPassword;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\n\nimport {\n Form,\n Input,\n Button,\n Select,\n Table,\n Pagination,\n Dialog,\n Message,\n MessageBox,\n} from \"element-react\";\nimport Routes from \"routes\";\nimport { AddUserInterface } from \"interfaces/user\";\nimport { GetRoles } from \"store/actions/common\";\nimport { GetUserList, DeleteUser, ChangeUserStatus } from \"store/actions/user\";\nimport Search from \"./search\";\nimport AddUser from \"./addUser\";\nimport ChangeUserPassword from \"./changeUserPassword\";\n\nconst Index = () => {\n const [isVisible, setVisible] = useState(false);\n const [data, setData] = useState({\n Roles: [],\n });\n const [state, setState] = useState({\n userName: \"\",\n pageIndex: 1,\n pageSize: 20,\n isActive: \"true\",\n });\n useEffect(() => {\n fetchUserList(state);\n }, []);\n const dispatch = useDispatch();\n const history = useHistory();\n const { userList } = useSelector((state: any) => state.userReducer);\n useEffect(() => {}, [userList]);\n\n const fetchUserList = async (param) => {\n await dispatch(GetUserList(param));\n };\n\n const handleSearchClicked = () => {\n let newState = { ...state, pageIndex: 1, pageSize: 20 };\n setState(newState);\n fetchUserList(newState);\n };\n const handlePageSizeChanged = (size) => {\n let newState = { ...state, pageSize: size };\n setState(newState);\n fetchUserList(newState);\n };\n const handlePageChanged = (page) => {\n let newState = { ...state, pageIndex: page };\n setState(newState);\n fetchUserList(newState);\n };\n const handleAddUser = (user) => {\n setData(user);\n setVisible(true);\n };\n const handleSaveSucees = () => {\n setVisible(false);\n fetchUserList(state);\n };\n const columns = [\n {\n label: \"User Name\",\n prop: \"UserName\",\n width: 120,\n },\n\n {\n label: \"Name\",\n prop: \"FullName\",\n },\n {\n label: \"Mobile\",\n prop: \"MobileNumber\",\n width: 120,\n },\n {\n label: \"Email\",\n prop: \"Email\",\n width: 300,\n },\n {\n label: \"Role\",\n prop: \"RoleName\",\n width: 120,\n },\n\n {\n label: \"\",\n width: 150,\n fixed: \"right\",\n render: (row, column, index) => {\n return <ChangeUserPassword user={row} key={index} />;\n },\n },\n {\n label: \"\",\n width: 100,\n fixed: \"right\",\n render: (row, column, index) => {\n return (\n <span>\n <Button\n type=\"text\"\n size=\"small\"\n onClick={() => changeUserStatus(row)}\n >\n {row.IsInactive ? \"Enable\" : \"Disable\"}\n </Button>\n </span>\n );\n },\n },\n {\n label: \"\",\n width: 160,\n fixed: \"right\",\n render: (row, column, index) => {\n return (\n <span>\n <Button type=\"text\" size=\"small\" onClick={() => handleAddUser(row)}>\n Edit\n </Button>\n <Button type=\"text\" size=\"small\" onClick={() => confirmDelete(row)}>\n Delete\n </Button>\n </span>\n );\n },\n },\n ];\n\n const confirmDelete = (user) => {\n MessageBox.confirm(\n \"This will permanently delete the user. Continue?\",\n \"Warning\",\n {\n confirmButtonText: \"OK\",\n cancelButtonText: \"Cancel\",\n type: \"warning\",\n }\n )\n .then(async () => {\n await dispatch(DeleteUser(user.Id));\n fetchUserList(state);\n })\n .catch(() => {});\n };\n const changeUserStatus = async (user) => {\n await dispatch(\n ChangeUserStatus({ userId: user.Id, isInactive: !user.IsInactive })\n );\n fetchUserList(state);\n };\n\n let totalData = 0;\n if (userList && userList.length > 0) {\n totalData = userList[0].TotalData;\n }\n\n return (\n <div className=\"user\">\n <Search\n state={state}\n setState={setState}\n onSearchClicked={handleSearchClicked}\n onAddUserClicked={handleAddUser}\n />\n <Table\n style={{ width: \"100%\" }}\n columns={columns}\n data={userList}\n border={true}\n />\n\n <Pagination\n layout=\"total, sizes, prev, pager, next\"\n total={totalData}\n pageSizes={[10, 20, 50, 100]}\n pageSize={state.pageSize}\n currentPage={state.pageIndex}\n onSizeChange={handlePageSizeChanged}\n onCurrentChange={handlePageChanged}\n />\n\n <UserDialog\n state={data}\n setState={setData}\n isVisible={isVisible}\n setVisible={setVisible}\n onSaveSuccess={handleSaveSucees}\n />\n </div>\n );\n};\n\nconst UserDialog = (props) => {\n const { isVisible, setVisible } = props;\n return (\n <Dialog\n title=\"Add User\"\n visible={isVisible}\n onCancel={() => setVisible(false)}\n >\n <Dialog.Body>\n <AddUser {...props} />\n </Dialog.Body>\n </Dialog>\n );\n};\nexport default Index;\n","import React from \"react\";\r\nimport { Table, Pagination } from \"element-react\";\r\ninterface TableProps {\r\n showNoData: boolean;\r\n width?: any;\r\n columns: any[];\r\n data: any[];\r\n totalData?: number;\r\n PageIndex?: number;\r\n pageSize?: number;\r\n handlePageSizeChanged?: (size?: number) => void;\r\n handlePageChanged?: (currentPage?: number) => void;\r\n}\r\n\r\nconst TableView = (props: TableProps) => {\r\n const {\r\n columns,\r\n showNoData,\r\n data,\r\n totalData,\r\n pageSize,\r\n PageIndex,\r\n handlePageSizeChanged,\r\n handlePageChanged,\r\n } = props;\r\n\r\n return (\r\n <>\r\n <Table\r\n style={{ width: \"100%\" }}\r\n columns={columns}\r\n data={data}\r\n border={true}\r\n />\r\n {totalData && totalData === 0 && (\r\n <div className=\"no-table-data\">No Data</div>\r\n )}\r\n {totalData && totalData > 0 && (\r\n <Pagination\r\n layout=\"total, sizes, prev, pager, next\"\r\n total={totalData}\r\n pageSizes={[10, 20, 50, 100]}\r\n pageSize={pageSize}\r\n currentPage={PageIndex}\r\n onSizeChange={handlePageSizeChanged}\r\n onCurrentChange={handlePageChanged}\r\n />\r\n )}\r\n </>\r\n );\r\n};\r\nTableView.defaultProps = {\r\n width: \"100%\",\r\n showNoData: true,\r\n};\r\nexport default TableView;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Dialog, Button, Input, Radio, Message } from \"element-react\";\r\nimport { FaPlus, FaMinus, FaUserPlus } from \"react-icons/fa\";\r\nimport TableView from \"components/tableView\";\r\nimport {\r\n AssignArticleForEditor,\r\n userWithAssignedInfo,\r\n} from \"store/actions/articles\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport RoleEnum from \"constants/roleEnum\";\r\n\r\nconst AssignUser = (assignProps) => {\r\n const { row, dispatch } = assignProps;\r\n\r\n const [state, setState] = useState({ editorName: \"\" });\r\n const [isVisible, setVisible] = useState(false);\r\n const onAssingClick = () => {\r\n setVisible(true);\r\n };\r\n\r\n const handleCancel = () => {\r\n setVisible(false);\r\n };\r\n\r\n return (\r\n <>\r\n <Button size=\"mini\" onClick={() => onAssingClick()}>\r\n <FaUserPlus />\r\n Assign\r\n </Button>\r\n {isVisible && (\r\n <Dialog\r\n closeOnClickModal={false}\r\n title=\"Assign Editor\"\r\n visible={isVisible}\r\n onCancel={handleCancel}\r\n style={{ width: \"800px\" }}\r\n >\r\n <Dialog.Body>\r\n <div>\r\n <Editors {...assignProps} onSave={handleCancel} />\r\n </div>\r\n </Dialog.Body>\r\n </Dialog>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst Editors = (props) => {\r\n const { row, dispatch, articlesRef, onSave } = props;\r\n const [loading, setLoading] = useState(false);\r\n const [state, setState] = useState({\r\n editorName: \"\",\r\n selectedIndex: -1,\r\n remarks: \"\",\r\n });\r\n\r\n useEffect(() => {\r\n fetchData(\"\");\r\n }, []);\r\n const [tableData, setTableData] = useState([]);\r\n\r\n const fetchData = async (fullname) => {\r\n var res: any = await dispatch(\r\n userWithAssignedInfo({\r\n articleId: row.Id,\r\n fullname: fullname,\r\n role: RoleEnum.Editor,\r\n })\r\n );\r\n var index = res.findIndex((x) => x.IsAssigned);\r\n setState({ ...state, selectedIndex: index });\r\n setTableData(res);\r\n };\r\n\r\n const onChangeSearch = (name, val) => {\r\n setState({ ...state, [name]: val, selectedIndex: -1 });\r\n fetchData(val);\r\n };\r\n\r\n const columns = [\r\n {\r\n label: \"Editor\",\r\n prop: \"FullName\",\r\n render: (row, column, index) => (\r\n <div onClick={() => setState({ ...state, selectedIndex: index })}>\r\n {row.FullName}\r\n </div>\r\n ),\r\n },\r\n {\r\n label: \"Done\",\r\n prop: \"Done\",\r\n width: 120,\r\n render: (row, column, index) => (\r\n <div onClick={() => setState({ ...state, selectedIndex: index })}>\r\n {row.Done}\r\n </div>\r\n ),\r\n },\r\n {\r\n label: \"Active\",\r\n prop: \"Active\",\r\n width: 120,\r\n render: (row, column, index) => (\r\n <div onClick={() => setState({ ...state, selectedIndex: index })}>\r\n {row.Active}\r\n </div>\r\n ),\r\n },\r\n {\r\n label: \"\",\r\n prop: \"\",\r\n width: 60,\r\n render: (row, column, index) => {\r\n return (\r\n <div onClick={() => setState({ ...state, selectedIndex: index })}>\r\n <Radio value=\"\" checked={state.selectedIndex === index} />\r\n </div>\r\n );\r\n },\r\n },\r\n ];\r\n\r\n const onSaveClicked = async () => {\r\n if (state.selectedIndex === -1) {\r\n Message({\r\n message: \"At least one editor is required.\",\r\n type: \"warning\",\r\n });\r\n return;\r\n }\r\n var remarks = state.remarks;\r\n var assignTo = tableData[state.selectedIndex].Id;\r\n const articleId = props && props.row.Id;\r\n const assignedAs = RoleEnum.Editor;\r\n setLoading(true);\r\n const res = await dispatch(\r\n AssignArticleForEditor({ articleId, assignTo, assignedAs, remarks })\r\n );\r\n setLoading(false);\r\n onSave();\r\n articlesRef && articlesRef.current.loadData();\r\n };\r\n return (\r\n <div>\r\n <div className=\"margin-bottom-10\">\r\n <Input\r\n value={state.editorName}\r\n placeholder=\"Search Editor\"\r\n onChange={(val: any) => onChangeSearch(\"editorName\", val)}\r\n ></Input>\r\n </div>\r\n <div className=\"margin-bottom-10\">\r\n <TableView showNoData={false} columns={columns} data={tableData} />\r\n </div>\r\n <div className=\"margin-bottom-10\">\r\n <Input\r\n type=\"textarea\"\r\n value={state.remarks}\r\n onChange={(val: any) => setState({ ...state, remarks: val })}\r\n ></Input>\r\n </div>\r\n <div className=\"flex-end\">\r\n <Button type=\"primary\" onClick={onSaveClicked} loading={loading}>\r\n Save\r\n </Button>\r\n </div>\r\n </div>\r\n );\r\n};\r\nexport default AssignUser;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\nimport { Button } from \"element-react\";\r\n\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport SplitButton from \"components/popup/splitButton\";\r\nimport { FaList, FaPlus } from \"react-icons/fa\";\r\nimport AssignUser from \"./assignUser\";\r\nimport { useDispatch } from \"react-redux\";\r\n\r\nconst Actions = (props) => {\r\n const { row, selectedTab, articlesRef } = props;\r\n const history = useHistory();\r\n const dispatch = useDispatch();\r\n\r\n const getActions = () => {\r\n var actions = [];\r\n\r\n actions.push(<AssignUser {...props} dispatch={dispatch} />);\r\n return actions;\r\n };\r\n\r\n return (\r\n <>\r\n <Button\r\n size=\"mini\"\r\n onClick={() => history.push(`${RouteEnum.viewArticle}/${row.Id}`)}\r\n >\r\n <FaList />\r\n View\r\n </Button>\r\n {getActions()}\r\n </>\r\n );\r\n};\r\n\r\nexport default Actions;\r\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\n\nimport {\n Form,\n Input,\n Button,\n Select,\n Table,\n Pagination,\n Dialog,\n Message,\n MessageBox,\n Breadcrumb,\n Progress,\n Dropdown,\n} from \"element-react\";\nimport Routes from \"routes\";\nimport { GetArticles, DeleteArticle } from \"store/actions/articles\";\nimport RouteEnum from \"constants/routesEnum\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\nimport TableView from \"components/tableView\";\nimport SplitButton from \"components/popup/splitButton\";\nimport Articles from \"scenes/common/articles\";\nimport Actions from \"./actions\";\n\nconst Submissions = (props) => {\n const { selectedTab } = props;\n const articlesRef: any = useRef(null);\n const dispatch = useDispatch();\n const history = useHistory();\n\n const getStatus = () => {\n var status = \"0\";\n\n if (selectedTab == \"NEW\") status = `${ArticleStatusEnum.SUBMITTED}`;\n else if (selectedTab == \"ONGOINGREVIEW\") {\n status = [\n ArticleStatusEnum.REVISION,\n ArticleStatusEnum.REJECTED,\n ArticleStatusEnum.APPROVED,\n ArticleStatusEnum.ASSIGNEDEDITOR,\n ArticleStatusEnum.ASSIGNEDREVIEWER,\n ArticleStatusEnum.REVIEWED,\n ArticleStatusEnum.REVIEWING,\n ].toString();\n }\n return status;\n };\n\n const renderAction = (row, index) => {\n return (\n <Actions row={row} selectedTab={selectedTab} articlesRef={articlesRef} />\n );\n };\n return (\n <div className=\"submitter\">\n <Articles\n selectedTab={selectedTab}\n actions={renderAction}\n getStatus={getStatus}\n ref={articlesRef}\n />\n </div>\n );\n};\n\nexport default Submissions;\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\n\r\nimport {\r\n Form,\r\n Input,\r\n Button,\r\n Select,\r\n Table,\r\n Pagination,\r\n Dialog,\r\n Message,\r\n MessageBox,\r\n Breadcrumb,\r\n Tabs,\r\n Badge,\r\n} from \"element-react\";\r\nimport Routes from \"routes\";\r\nimport { AddUserInterface } from \"interfaces/user\";\r\nimport { GetRoles } from \"store/actions/common\";\r\nimport { GetUserList, DeleteUser, ChangeUserStatus } from \"store/actions/user\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport SubmissionList from \"./components/submissionList\";\r\nimport TabTitle from \"scenes/common/tabTitle\";\r\n\r\nconst AdminLandingPage = () => {\r\n const [selectedTab, setSelectedTab] = useState(\"NEW\");\r\n const tabs = [\r\n {\r\n label: \"New Submission\",\r\n name: \"NEW\",\r\n },\r\n {\r\n label: \"On Going Review\",\r\n name: \"ONGOINGREVIEW\",\r\n },\r\n ];\r\n\r\n const handleTabClicked = (e) => {\r\n const { name } = e.props;\r\n setSelectedTab(name);\r\n };\r\n\r\n return (\r\n <div>\r\n <Breadcrumb separator=\"/\">\r\n <Breadcrumb.Item>\r\n <Link to={RouteEnum.adminSubmission}>Home</Link>\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n\r\n <div className=\"submission\">\r\n <Tabs type=\"card\" value={selectedTab} onTabClick={handleTabClicked}>\r\n {tabs.map((item, index) => (\r\n <Tabs.Pane\r\n key={index}\r\n label={\r\n <TabTitle item={item} selectedTab={selectedTab} count={24} />\r\n }\r\n name={item.name}\r\n ></Tabs.Pane>\r\n ))}\r\n </Tabs>\r\n\r\n {<SubmissionList selectedTab={selectedTab} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default AdminLandingPage;\r\n","import RoleEnum from \"constants/roleEnum\";\nimport RouteEnum from \"constants/routesEnum\";\nimport User from \"scenes/Administrator/user\";\nimport AdminLandingPage from \"scenes/Administrator\";\n\nconst AdminRoutes = [\n {\n exact: true,\n component: User,\n role: RoleEnum.Administrator,\n title: \"User\",\n path: RouteEnum.user,\n },\n {\n exact: true,\n component: AdminLandingPage,\n role: RoleEnum.Administrator,\n title: \"Submissions\",\n path: RouteEnum.adminSubmission,\n },\n];\n\nexport default AdminRoutes;\n","import React, { useState } from \"react\";\r\nimport { Dialog, Button, Input, Form } from \"element-react\";\r\nimport {\r\n FaPlus,\r\n FaMinus,\r\n FaUserPlus,\r\n FaCheck,\r\n FaUndo,\r\n FaBan,\r\n} from \"react-icons/fa\";\r\nimport TableView from \"components/tableView\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\n\r\nconst ActionConfirmation = ({ row, status, title, handleSave }) => {\r\n const [state, setState] = useState({ remarks: \"\" });\r\n const { messages } = useSelector((state: any) => state.validateReducer);\r\n const [isVisible, setVisible] = useState(false);\r\n\r\n const onClick = () => {\r\n setVisible(true);\r\n };\r\n\r\n const closeModal = () => {\r\n setState({ remarks: \"\" });\r\n setVisible(false);\r\n };\r\n\r\n const getTitleFor = () => {\r\n return `Are you sure, you want to ${title.toLowerCase()} this article?`;\r\n };\r\n const getIcon = () => {\r\n if (status === ArticleStatusEnum.APPROVED) return <FaCheck />;\r\n if (status === ArticleStatusEnum.REVISION) return <FaUndo />;\r\n if (status === ArticleStatusEnum.REJECTED) return <FaBan />;\r\n };\r\n\r\n const onSave = async (e) => {\r\n var param = { status, articleId: row.Id, remarks: state.remarks };\r\n await handleSave(param);\r\n closeModal();\r\n };\r\n return (\r\n <>\r\n <Button size=\"mini\" onClick={() => onClick()}>\r\n {getIcon()}\r\n {title}\r\n </Button>\r\n {isVisible && (\r\n <Dialog\r\n title={getTitleFor()}\r\n visible={isVisible}\r\n onCancel={closeModal}\r\n style={{ width: \"500px\" }}\r\n >\r\n <Dialog.Body>\r\n <Form>\r\n <Form.Item label=\"Remarks\">\r\n <Input\r\n type=\"textarea\"\r\n placeholder=\"Remarks\"\r\n value={state.remarks}\r\n onChange={(val: any) => setState({ ...state, remarks: val })}\r\n ></Input>\r\n </Form.Item>\r\n <div className=\"flex-end\">\r\n <Button type=\"primary\" onClick={onSave}>\r\n Save\r\n </Button>\r\n </div>\r\n </Form>\r\n </Dialog.Body>\r\n </Dialog>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nexport default ActionConfirmation;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport {\r\n Dialog,\r\n Button,\r\n Input,\r\n Radio,\r\n Message,\r\n DatePicker,\r\n} from \"element-react\";\r\nimport { FaPlus, FaMinus, FaUserPlus } from \"react-icons/fa\";\r\nimport TableView from \"components/tableView\";\r\nimport { userWithAssignedInfo } from \"store/actions/articles\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport RoleEnum from \"constants/roleEnum\";\r\nimport { isEmpty } from \"helpers\";\r\n\r\nconst AssignUserButton = (props) => {\r\n const { title, onAssignClick } = props;\r\n\r\n return (\r\n <Button size=\"mini\" onClick={onAssignClick}>\r\n <FaUserPlus />\r\n {isEmpty(title) ? \"Assign\" : title}\r\n </Button>\r\n );\r\n};\r\n\r\nexport default AssignUserButton;\r\n","import React, { useEffect } from \"react\";\r\n\r\nconst useOutsideClick = (ref, setDrop, parentRef) => {\r\n function handleClickOutside(event) {\r\n if (parentRef) {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n if (!parentRef.current.contains(event.target)) {\r\n setDrop && setDrop();\r\n }\r\n }\r\n } else {\r\n if (ref.current && !ref.current.contains(event.target)) {\r\n setDrop && setDrop();\r\n }\r\n }\r\n }\r\n\r\n useEffect(() => {\r\n // Bind the event listener\r\n document.addEventListener(\"mousedown\", handleClickOutside);\r\n return () => {\r\n // Unbind the event listener on clean up\r\n document.removeEventListener(\"mousedown\", handleClickOutside);\r\n };\r\n });\r\n};\r\n\r\nexport default useOutsideClick;\r\n","import React, { useState, useEffect, useRef } from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport useOutsideClick from \"hooks/useOutsideClick\";\r\nimport configureStore from \"store/configureStore\";\r\nimport { Provider } from \"react-redux\";\r\nimport \"./style.scss\";\r\nconst store = configureStore({});\r\n\r\nconst Popover = (props: any) => {\r\n const { open, containerClassName } = props;\r\n var popupRef = useRef(null);\r\n const [target, setTarget] = useState(document.createElement(\"div\"));\r\n const [state, setState] = useState({\r\n left: -1,\r\n top: -1,\r\n visibility: \"hidden\",\r\n });\r\n\r\n useOutsideClick(popupRef, props.handleOutsideClick, props.parentRef);\r\n useEffect(() => {\r\n document.body.appendChild(target);\r\n document.addEventListener(\"scroll\", handleSCroll);\r\n return () => {\r\n ReactDOM.unmountComponentAtNode(target);\r\n document.body.removeChild(target);\r\n document.removeEventListener(\"scroll\", handleSCroll);\r\n };\r\n }, []);\r\n\r\n useEffect(() => {\r\n props.children && render();\r\n }, [props.children]);\r\n\r\n useEffect(() => {\r\n render();\r\n }, [state]);\r\n\r\n const handleSCroll = () => {\r\n open && props.handleOutsideClick && props.handleOutsideClick(false);\r\n };\r\n\r\n const setPosition = () => {\r\n if (popupRef && popupRef.current) {\r\n const { parentRef } = props;\r\n\r\n const { width: popupWidth, height: popupHeight } =\r\n popupRef.current.getBoundingClientRect();\r\n\r\n const { x, y, width, height } =\r\n parentRef && parentRef.current.getBoundingClientRect();\r\n let newTop = y + height;\r\n let newLeft = x;\r\n\r\n if (newTop + popupHeight > window.innerHeight) {\r\n newTop = y - popupHeight;\r\n }\r\n if (newTop < 0) {\r\n newTop = 10;\r\n }\r\n if (newLeft + popupWidth > window.innerWidth) {\r\n var rightMargin = window.innerWidth - (x + width);\r\n newLeft = window.innerWidth - popupWidth - rightMargin; // - width;\r\n }\r\n\r\n let newState = {\r\n top: newTop,\r\n left: newLeft,\r\n visibility: \"visible\",\r\n };\r\n\r\n if (!isEqual(newState)) setState(newState);\r\n }\r\n };\r\n const isEqual = (newState) => {\r\n if (state.top !== newState.top) return false;\r\n if (state.left !== newState.left) return false;\r\n if (state.visibility !== newState.visibility) return false;\r\n return true;\r\n };\r\n const render = () => {\r\n const style: any = { ...state };\r\n const { parentRef } = props;\r\n\r\n ReactDOM.render(\r\n <Provider store={store}>\r\n <div className={props.containerClassName} style={style} ref={popupRef}>\r\n {props.children}\r\n </div>\r\n </Provider>,\r\n target,\r\n () => {\r\n setPosition();\r\n }\r\n );\r\n };\r\n\r\n return <noscript />;\r\n};\r\nPopover.defaultProps = {\r\n containerClassName: \"irc-popup\",\r\n // height: 360,\r\n // width: 300,\r\n};\r\nexport default Popover;\r\n","export enum EmailTemplateEnum {\r\n SignUpTemplate = 1,\r\n ResetPasswordLink = 2,\r\n SendResetPasReReRwordLinkInMail = 3,\r\n AssingReviewArticle = 4,\r\n}\r\nexport default EmailTemplateEnum;\r\n","export enum ReviewRecommendationEnum {\r\n AcceptSubmission = 1,\r\n RevisionRequired = 2,\r\n DeclineSubmission = 3,\r\n SeeComments = 4,\r\n}\r\nexport default ReviewRecommendationEnum;\r\n","import moment from \"moment\";\r\nexport const dateFormat = (date: Date) => {\r\n return moment(date).format(\"YYYY-MM-DD\");\r\n};\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport {\r\n Dialog,\r\n Button,\r\n Input,\r\n Radio,\r\n Message,\r\n DatePicker,\r\n Form,\r\n} from \"element-react\";\r\nimport { FaPlus, FaMinus, FaUserPlus } from \"react-icons/fa\";\r\nimport TableView from \"components/tableView\";\r\nimport {\r\n SaveReview,\r\n GetReviewDetails,\r\n userWithAssignedInfo,\r\n} from \"store/actions/articles\";\r\nimport { GetEmailTemplate } from \"store/actions/common\";\r\n\r\nimport { useDispatch } from \"react-redux\";\r\nimport RoleEnum from \"constants/roleEnum\";\r\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\r\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\r\nimport Popover from \"components/popup/_popover\";\r\nimport EmailTemplateEnum from \"constants/emailTemplateEnum\";\r\nimport { isEmpty } from \"helpers\";\r\nimport types from \"store/types\";\r\nimport { dateFormat } from \"helpers/dateHelper\";\r\nimport Loader from \"components/loader.tsx\";\r\n\r\nconst AssignUserDialog = (props) => {\r\n const [state, setState] = useState({ name: \"\", isLoading: false });\r\n const { row, isVisible, setVisible, articlesRef } = props;\r\n useEffect(() => {}, [row.ReviewId]);\r\n const handleCancel = () => {\r\n setVisible(false);\r\n };\r\n const onSuccess = () => {\r\n setVisible(false);\r\n };\r\n\r\n return (\r\n <>\r\n {isVisible && (\r\n <Dialog\r\n closeOnClickModal={false}\r\n title=\"Assign Reviewer\"\r\n visible={isVisible}\r\n onCancel={handleCancel}\r\n style={{ width: \"800px\" }}\r\n >\r\n <Dialog.Body>\r\n <AssignReviewer {...props} onSuccess={onSuccess} />\r\n </Dialog.Body>\r\n </Dialog>\r\n )}\r\n </>\r\n );\r\n};\r\n\r\nconst AssignReviewer = (props) => {\r\n const [emailText, setEmailText] = useState(\"\");\r\n const [selectedReviewer, setSelectedReviewer] = useState(null);\r\n var formRef: any = useRef();\r\n const dispatch = useDispatch();\r\n\r\n const [state, setState] = useState({\r\n reveiwer: \"\",\r\n loading: false,\r\n responseDueDate: null,\r\n reviewDueDate: null,\r\n emailText: \"\",\r\n isLoading: false,\r\n });\r\n\r\n useEffect(() => {\r\n const reviewId = props.row && props.row.ReviewId;\r\n if (reviewId) loadReview(reviewId);\r\n }, [props.row]);\r\n\r\n useEffect(() => {\r\n loadEmailTemplate();\r\n }, []);\r\n\r\n const getRules = (message) => [\r\n {\r\n required: true,\r\n message: message,\r\n trigger: \"blur\",\r\n },\r\n ];\r\n const rules = {\r\n responseDueDate: getRules(\"Response due date is required\"),\r\n reviewDueDate: getRules(\"Review due date is required\"),\r\n reveiwer: getRules(\"Reviewer is required\"),\r\n emailText: getRules(\"Email text is required.\"),\r\n };\r\n\r\n const submit = async () => {\r\n formRef.current.validate(async (valid) => {\r\n console.clear();\r\n console.log(valid);\r\n if (valid) {\r\n setState({ ...state, loading: true });\r\n\r\n const res = await dispatch(\r\n SaveReview({\r\n reviewId: props && props.row.ReviewId,\r\n articleId: props && props.row.Id,\r\n assignTo: state.reveiwer,\r\n assignedAs: RoleEnum.Reviewer,\r\n reviewDueDate: state.reviewDueDate,\r\n responseDueDate: state.responseDueDate,\r\n emailText: state.emailText,\r\n })\r\n );\r\n props.onSuccess && props.onSuccess();\r\n\r\n setState({ ...state, loading: false });\r\n }\r\n });\r\n };\r\n\r\n const onChangeDate = (name, date) => {\r\n setState({ ...state, [name]: dateFormat(date) });\r\n };\r\n\r\n const loadEmailTemplate = async () => {\r\n var res: any = await dispatch(\r\n GetEmailTemplate(EmailTemplateEnum.AssingReviewArticle)\r\n );\r\n setEmailText(res.BodyText);\r\n };\r\n\r\n const loadReview = async (reviewId) => {\r\n setState({ ...state, isLoading: true });\r\n const res: any = await dispatch(GetReviewDetails(reviewId));\r\n\r\n if (res) {\r\n setSelectedReviewer({ FullName: res.ReviewerName, Id: res.ReviewerId });\r\n if (!isEmpty(res.EmailText)) setEmailText(res.EmailText);\r\n\r\n setState({\r\n ...state,\r\n reveiwer: res.ReviewerId,\r\n reviewDueDate: new Date(res.ReviewDueDate),\r\n responseDueDate: new Date(res.ResponsDueDate),\r\n isLoading: false,\r\n });\r\n } else setState({ ...state, isLoading: false });\r\n };\r\n return (\r\n <Loader isLoading={state.isLoading}>\r\n <Form\r\n ref={formRef}\r\n rules={rules}\r\n model={state}\r\n className=\"demo-form-stacked\"\r\n labelPosition=\"top\"\r\n labelWidth=\"100\"\r\n >\r\n <Form.Item label=\"Reviewer\" prop=\"reveiwer\">\r\n <Reviewers\r\n {...props}\r\n handleReveiwerSelected={(val) => {\r\n setState({ ...state, reveiwer: val.Id });\r\n setSelectedReviewer(val);\r\n }}\r\n setSelectedReviewer={setSelectedReviewer}\r\n selectedReviewer={selectedReviewer}\r\n />\r\n </Form.Item>\r\n\r\n <Form.Item label=\"Email to be sent to reviewer\" prop=\"emailText\">\r\n <CKEditor\r\n editor={ClassicEditor}\r\n data={emailText}\r\n onChange={(event, editor) => {\r\n const data = editor.getData();\r\n setEmailText(data);\r\n setState({ ...state, emailText: data });\r\n }}\r\n />\r\n </Form.Item>\r\n <div className=\"flex\">\r\n <Form.Item\r\n className=\"margin-right-10\"\r\n label=\"Response Due Date\"\r\n prop=\"responseDueDate\"\r\n >\r\n <DatePicker\r\n value={state.responseDueDate && new Date(state.responseDueDate)}\r\n placeholder=\"Response Due Date\"\r\n onChange={(date) => onChangeDate(\"responseDueDate\", date)}\r\n disabledDate={(time) => time.getTime() < Date.now() - 8.64e7}\r\n />\r\n </Form.Item>\r\n <Form.Item label=\"Review Due Date\" prop=\"reviewDueDate\">\r\n <DatePicker\r\n value={state.reviewDueDate && new Date(state.reviewDueDate)}\r\n placeholder=\"Review Due Date\"\r\n onChange={(date) => onChangeDate(\"reviewDueDate\", date)}\r\n disabledDate={(time) => time.getTime() < Date.now() - 8.64e7}\r\n />\r\n </Form.Item>\r\n </div>\r\n\r\n <div className=\"flex-end\">\r\n <Button type=\"primary\" onClick={submit} loading={state.loading}>\r\n Save\r\n </Button>\r\n </div>\r\n </Form>\r\n </Loader>\r\n );\r\n};\r\nconst Reviewers = (props) => {\r\n const { row, handleReveiwerSelected, selectedReviewer } = props;\r\n const popRef: any = useRef();\r\n const [open, setOpen] = useState(false);\r\n\r\n const [selectedIndex, setSelectedIndex] = useState(-1);\r\n\r\n const dispatch = useDispatch();\r\n\r\n const onReviewerSelected = (index, val) => {\r\n handleReveiwerSelected(val);\r\n setSelectedIndex(index);\r\n setOpen(false);\r\n };\r\n return (\r\n <div ref={popRef}>\r\n <div className=\"assign-selector\" onClick={() => setOpen(!open)}>\r\n {selectedReviewer && (\r\n <span className=\"assign-selector-name\">\r\n {selectedReviewer.FullName}\r\n </span>\r\n )}{\" \"}\r\n <span className=\"assign-selector-info\">\r\n {\" \"}\r\n {selectedReviewer ? \"Change Reviewer\" : \"Select Reviewer\"}\r\n </span>\r\n </div>\r\n\r\n {open ? (\r\n <ReviewerPopup\r\n popRef={popRef}\r\n setOpen={setOpen}\r\n open={open}\r\n dispatch={dispatch}\r\n row={row}\r\n selectedIndex={selectedIndex}\r\n handleSelected={onReviewerSelected}\r\n />\r\n ) : null}\r\n </div>\r\n );\r\n};\r\n\r\nconst ReviewerPopup = (props) => {\r\n const {\r\n popRef,\r\n setOpen,\r\n open,\r\n dispatch,\r\n row,\r\n handleSelected,\r\n selectedIndex,\r\n } = props;\r\n const [state, setState] = useState({ name: \"\" });\r\n\r\n const [tableData, setTableData] = useState([]);\r\n\r\n useEffect(() => {\r\n fetchData(\"\");\r\n }, []);\r\n\r\n const fetchData = async (fullname) => {\r\n var res: any = await dispatch(\r\n userWithAssignedInfo({\r\n articleId: row.Id,\r\n fullname: fullname,\r\n role: RoleEnum.Reviewer,\r\n })\r\n );\r\n //var index = res.findIndex((x) => x.IsAssigned);\r\n //setSelectedIndex(index);\r\n setTableData(res);\r\n };\r\n const onSelected = (index) => {\r\n const selectedData = tableData[index];\r\n handleSelected && handleSelected(index, selectedData);\r\n };\r\n const columns = [\r\n {\r\n label: \"Reviewer\",\r\n prop: \"FullName\",\r\n render: (row, column, index) => (\r\n <div onClick={() => onSelected(index)}>{row.FullName}</div>\r\n ),\r\n },\r\n {\r\n label: \"Done\",\r\n prop: \"Done\",\r\n width: 120,\r\n render: (row, column, index) => (\r\n <div onClick={() => onSelected(index)}>{row.Done}</div>\r\n ),\r\n },\r\n {\r\n label: \"Active\",\r\n prop: \"Active\",\r\n width: 120,\r\n render: (row, column, index) => (\r\n <div onClick={() => onSelected(index)}>{row.Active}</div>\r\n ),\r\n },\r\n {\r\n label: \"\",\r\n prop: \"\",\r\n width: 60,\r\n render: (row, column, index) => {\r\n return (\r\n <div onClick={() => onSelected(index)}>\r\n <Radio value=\"\" checked={selectedIndex === index} />\r\n </div>\r\n );\r\n },\r\n },\r\n ];\r\n const onChangeName = (val) => {\r\n setState({ ...state, name: val });\r\n fetchData(val);\r\n };\r\n return (\r\n <Popover\r\n parentRef={popRef}\r\n open={open}\r\n handleOutsideClick={() => setOpen(!open)}\r\n >\r\n <div className=\"assign-popup\">\r\n <div className=\"margin-bottom-10\">\r\n <Input\r\n value={state.name}\r\n placeholder=\"Search Reviewer\"\r\n onChange={(val: any) => onChangeName(val)}\r\n ></Input>\r\n </div>\r\n <div className=\"margin-bottom-10\">\r\n <TableView showNoData={false} columns={columns} data={tableData} />\r\n </div>\r\n </div>\r\n </Popover>\r\n );\r\n};\r\nexport default AssignUserDialog;\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Button, Dialog } from \"element-react\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { GetReviewByArticleId, RequestRevision } from \"store/actions/articles\";\r\nimport Loader from \"components/loader.tsx\";\r\nimport { Wrapper } from \"components/form\";\r\nimport Attachments from \"scenes/common/review/attachments\";\r\nimport { Editor } from \"components/form\";\r\nimport { createMarkup } from \"helpers\";\r\n\r\nconst ReviewDetail = (props) => {\r\n const { row, title, dispatch, loadData } = props;\r\n\r\n const [state, setState] = useState({\r\n isVisible: false,\r\n isLoading: false,\r\n review: null,\r\n });\r\n const [commentsForAuthor, setCommentsForAuthor] = useState(\"\");\r\n\r\n useEffect(() => {\r\n row && state.isVisible && loadReview(row.Id);\r\n }, [state.isVisible]);\r\n\r\n const loadReview = async (articleId) => {\r\n setState({ ...state, isLoading: true });\r\n var res = await dispatch(GetReviewByArticleId(articleId));\r\n setState({ ...state, isLoading: false, review: res });\r\n };\r\n const onClick = () => {\r\n setState({ ...state, isVisible: true });\r\n };\r\n const closeModal = () => {\r\n setState({ ...state, isVisible: false });\r\n };\r\n const onClickRequestRevison = async () => {\r\n const param = { ArticleId: row.Id, Comments: commentsForAuthor };\r\n setState({ ...state, isLoading: true });\r\n const res = await dispatch(RequestRevision(param));\r\n\r\n if (res && res.Status) {\r\n setState({ ...state, isVisible: false, isLoading: false });\r\n loadData();\r\n } else {\r\n setState({ ...state, isLoading: false });\r\n }\r\n };\r\n\r\n const { review } = state;\r\n return (\r\n <>\r\n <Button size=\"mini\" onClick={() => onClick()}>\r\n {title}\r\n </Button>\r\n {state.isVisible && (\r\n <Dialog\r\n title=\"Request Rivision\"\r\n visible={state.isVisible}\r\n onCancel={closeModal}\r\n style={{ width: \"900px\" }}\r\n >\r\n <Dialog.Body>\r\n <Loader isLoading={state.isLoading}>\r\n {review && (\r\n <div>\r\n <Wrapper label=\"Article\">{review.Title}</Wrapper>\r\n <Wrapper label=\"Author\">{review.Author}</Wrapper>\r\n\r\n {review.Reviews.map((x, index) => (\r\n <div key={index} className=\"reviewdetail__reviewers\">\r\n <div className=\"reviewdetail__reviewers-title\">\r\n <div className=\"reviewdetail__reviewers-title-section\">\r\n <span>Reviewed By</span>\r\n <span>{x.ReviewerName}</span>\r\n </div>\r\n </div>\r\n <div className=\"reviewdetail__reviewers-body\">\r\n <Wrapper label=\"Comment for Editor\">\r\n <div\r\n className=\"ck-editor-content\"\r\n dangerouslySetInnerHTML={createMarkup(\r\n x.CommentsForEditor\r\n )}\r\n />\r\n </Wrapper>\r\n <Wrapper label=\"Comment for Editor and Author\">\r\n <div\r\n className=\"ck-editor-content\"\r\n dangerouslySetInnerHTML={createMarkup(\r\n x.CommentsForEditorAndAuthor\r\n )}\r\n />\r\n </Wrapper>\r\n\r\n <Wrapper>\r\n <Attachments\r\n files={x.ReviewFiles}\r\n title=\"Review Files\"\r\n />\r\n </Wrapper>\r\n </div>\r\n </div>\r\n ))}\r\n <Wrapper label=\"Comments For Author\">\r\n <Editor\r\n name=\"author\"\r\n value={commentsForAuthor}\r\n onChange={(name, val) => {\r\n setCommentsForAuthor(val);\r\n }}\r\n />\r\n </Wrapper>\r\n <Wrapper>\r\n <Button\r\n type=\"primary\"\r\n onClick={onClickRequestRevison}\r\n loading={state.isLoading}\r\n >\r\n Request Rivision\r\n </Button>\r\n </Wrapper>\r\n </div>\r\n )}\r\n </Loader>\r\n </Dialog.Body>\r\n </Dialog>\r\n )}\r\n </>\r\n );\r\n};\r\nexport default ReviewDetail;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\nimport { Button } from \"element-react\";\r\n\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport SplitButton from \"components/popup/splitButton\";\r\nimport { FaList, FaPlus } from \"react-icons/fa\";\r\nimport AssignUser from \"./assignUserDialog\";\r\nimport ActionConfirmation from \"./actionConfirmation\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport AssignUserButton from \"./assignUserButton\";\r\nimport AssignUserDialog from \"./assignUserDialog\";\r\nimport { UpdateArticleStatus } from \"store/actions/articles\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport RequestRivision from \"./reviewDetail\";\r\n\r\nconst Actions = (props) => {\r\n const { row, selectedTab, articlesRef, loadData } = props;\r\n const [isVisible, setVisible] = useState(false);\r\n // const dispatch = useDispatch();\r\n\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n const onAssignClick = () => {\r\n setVisible(true);\r\n };\r\n const updateArticleStatus = async (param) => {\r\n await dispatch(UpdateArticleStatus(param));\r\n articlesRef.current.loadData();\r\n };\r\n const getActions = () => {\r\n var actions = [];\r\n\r\n actions.push(\r\n <ActionConfirmation\r\n row={row}\r\n handleSave={updateArticleStatus}\r\n status={ArticleStatusEnum.APPROVED}\r\n title=\"Accept\"\r\n />\r\n );\r\n if (selectedTab === \"NEW\" || selectedTab === \"NEEDACTIONS\")\r\n actions.push(\r\n <RequestRivision\r\n row={row}\r\n handleSave={updateArticleStatus}\r\n status={ArticleStatusEnum.REVISION}\r\n title=\"Request Revisions\"\r\n dispatch={dispatch}\r\n loadData={() => articlesRef.current.loadData()}\r\n />\r\n );\r\n actions.push(\r\n <ActionConfirmation\r\n row={row}\r\n handleSave={updateArticleStatus}\r\n status={ArticleStatusEnum.REJECTED}\r\n title=\"Reject\"\r\n />\r\n );\r\n\r\n actions.push(\r\n <AssignUserButton title=\"Send to Review\" onAssignClick={onAssignClick} />\r\n );\r\n return actions;\r\n };\r\n\r\n return (\r\n <>\r\n <Button\r\n size=\"mini\"\r\n onClick={() => history.push(`${RouteEnum.viewArticle}/${row.Id}`)}\r\n >\r\n <FaList />\r\n View\r\n </Button>\r\n {getActions()}\r\n <AssignUserDialog\r\n row={row}\r\n isVisible={isVisible}\r\n setVisible={setVisible}\r\n articlesRef={articlesRef}\r\n />\r\n </>\r\n );\r\n};\r\n\r\nexport default Actions;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\n\r\nimport {\r\n Form,\r\n Input,\r\n Button,\r\n Select,\r\n Table,\r\n Pagination,\r\n Dialog,\r\n Message,\r\n MessageBox,\r\n Breadcrumb,\r\n Progress,\r\n Dropdown,\r\n} from \"element-react\";\r\nimport Routes from \"routes\";\r\nimport { GetArticles, DeleteArticle } from \"store/actions/articles\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport TableView from \"components/tableView\";\r\nimport SplitButton from \"components/popup/splitButton\";\r\nimport Articles from \"scenes/common/articles\";\r\nimport Actions from \"./actions\";\r\n\r\nconst Submissions = (props) => {\r\n const { selectedTab } = props;\r\n const articlesRef: any = useRef(null);\r\n\r\n const getStatus = () => {\r\n var status = \"0\";\r\n\r\n if (selectedTab == \"NEW\") status = `${ArticleStatusEnum.ASSIGNEDEDITOR}`;\r\n else if (selectedTab == \"UNDERREVIEW\") {\r\n status = [\r\n ArticleStatusEnum.ASSIGNEDREVIEWER,\r\n ArticleStatusEnum.REVIEWING,\r\n ].toString();\r\n } else if (selectedTab == \"NEEDACTIONS\")\r\n status = [\r\n ArticleStatusEnum.REVIEWED,\r\n ArticleStatusEnum.RESUBMITTED,\r\n ].toString();\r\n else if (selectedTab == \"APPROVED\")\r\n status = [ArticleStatusEnum.APPROVED].toString();\r\n else if (selectedTab == \"REVERTED\")\r\n status = [ArticleStatusEnum.REVISION].toString();\r\n else if (selectedTab == \"REJECTED\")\r\n status = [ArticleStatusEnum.REJECTED].toString();\r\n\r\n return status;\r\n };\r\n\r\n const renderAction = (row, index) => {\r\n return (\r\n <Actions row={row} selectedTab={selectedTab} articlesRef={articlesRef} />\r\n );\r\n };\r\n return (\r\n <>\r\n <div className=\"submitter\">\r\n <Articles\r\n selectedTab={selectedTab}\r\n actions={renderAction}\r\n getStatus={getStatus}\r\n ref={articlesRef}\r\n />\r\n </div>\r\n </>\r\n );\r\n};\r\n\r\nexport default Submissions;\r\n","import EditorLanding from \"scenes/editor\";\nimport Submitter from \"scenes/submitter\";\nimport RoleEnum from \"constants/roleEnum\";\nimport RouteEnum from \"constants/routesEnum\";\n\nconst EditorRoutes = [\n {\n exact: true,\n component: EditorLanding,\n role: RoleEnum.Editor,\n title: \"Dashboard\",\n path: RouteEnum.editor,\n },\n];\n\nexport default EditorRoutes;\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\n\r\nimport {\r\n Form,\r\n Input,\r\n Button,\r\n Select,\r\n Table,\r\n Pagination,\r\n Dialog,\r\n Message,\r\n MessageBox,\r\n Breadcrumb,\r\n Tabs,\r\n Badge,\r\n} from \"element-react\";\r\nimport Routes from \"routes\";\r\nimport { AddUserInterface } from \"interfaces/user\";\r\nimport { GetRoles } from \"store/actions/common\";\r\nimport { GetUserList, DeleteUser, ChangeUserStatus } from \"store/actions/user\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport SubmissionList from \"./components/submissionList\";\r\nimport TabTitle from \"scenes/common/tabTitle\";\r\n\r\nconst EditorLandingPage = () => {\r\n const [selectedTab, setSelectedTab] = useState(\"NEW\");\r\n\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const tabs = [\r\n {\r\n label: \"New Submissions\",\r\n name: \"NEW\",\r\n },\r\n {\r\n label: \"Under Review\",\r\n name: \"UNDERREVIEW\",\r\n },\r\n {\r\n label: \"Need Actions\",\r\n name: \"NEEDACTIONS\",\r\n },\r\n {\r\n label: \"Approved\",\r\n name: \"APPROVED\",\r\n },\r\n {\r\n label: \"Reverted\",\r\n name: \"REVERTED\",\r\n },\r\n {\r\n label: \"Rejected\",\r\n name: \"REJECTED\",\r\n },\r\n ];\r\n\r\n const handleTabClicked = (e) => {\r\n const { name } = e.props;\r\n setSelectedTab(name);\r\n };\r\n\r\n return (\r\n <div>\r\n <Breadcrumb separator=\"/\">\r\n <Breadcrumb.Item>\r\n <Link to={RouteEnum.adminSubmission}>Home</Link>\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n\r\n <div className=\"submission\">\r\n <Tabs type=\"card\" value={selectedTab} onTabClick={handleTabClicked}>\r\n {tabs.map((item, index) => (\r\n <Tabs.Pane\r\n key={index}\r\n label={\r\n <TabTitle item={item} selectedTab={selectedTab} count={24} />\r\n }\r\n name={item.name}\r\n ></Tabs.Pane>\r\n ))}\r\n </Tabs>\r\n\r\n {<SubmissionList selectedTab={selectedTab} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default EditorLandingPage;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\nimport { Button } from \"element-react\";\r\n\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport { FaList, FaPlus } from \"react-icons/fa\";\r\nimport { MdPreview } from \"react-icons/md\";\r\nimport AssignUser from \"./assignUser\";\r\nimport ReviewDialog from \"./reviewDialog\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport { useDispatch } from \"react-redux\";\r\nimport { isEmpty } from \"helpers\";\r\n\r\nconst Actions = (props) => {\r\n const { row, selectedTab, handleReviewClick } = props;\r\n const history = useHistory();\r\n const onAssignClick = () => {};\r\n const dispatch = useDispatch();\r\n\r\n const getActions = () => {\r\n var actions = [];\r\n\r\n !isEmpty(row.ReviewId) &&\r\n actions.push(\r\n <Button size=\"mini\" onClick={() => handleReviewClick(row.ReviewId)}>\r\n <MdPreview />\r\n Review\r\n </Button>\r\n );\r\n\r\n return actions;\r\n };\r\n\r\n return (\r\n <>\r\n <Button\r\n size=\"mini\"\r\n onClick={() => history.push(`${RouteEnum.viewArticle}/${row.Id}`)}\r\n >\r\n <FaList />\r\n View\r\n </Button>\r\n {getActions()}\r\n </>\r\n );\r\n};\r\n\r\nexport default Actions;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\n\r\nimport {\r\n Form,\r\n Input,\r\n Button,\r\n Select,\r\n Table,\r\n Pagination,\r\n Dialog,\r\n Message,\r\n MessageBox,\r\n Breadcrumb,\r\n Progress,\r\n Dropdown,\r\n} from \"element-react\";\r\nimport Routes from \"routes\";\r\nimport { GetArticles, DeleteArticle } from \"store/actions/articles\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport TableView from \"components/tableView\";\r\nimport SplitButton from \"components/popup/splitButton\";\r\nimport Articles from \"scenes/common/articles\";\r\nimport Actions from \"./actions\";\r\nconst Submissions = (props) => {\r\n const { selectedTab } = props;\r\n const articlesRef: any = useRef(null);\r\n const dispatch = useDispatch();\r\n const history = useHistory();\r\n\r\n const getStatus = () => {\r\n var status = \"0\";\r\n\r\n if (selectedTab == \"NEW\")\r\n status = [ArticleStatusEnum.ASSIGNEDREVIEWER].toString();\r\n else if (selectedTab == \"ONGOING\")\r\n status = [ArticleStatusEnum.REVIEWING].toString();\r\n else if (selectedTab == \"COMPLETED\")\r\n status = [ArticleStatusEnum.REVIEWED].toString();\r\n\r\n return status;\r\n };\r\n\r\n const renderAction = (row, index) => {\r\n return (\r\n <Actions\r\n row={row}\r\n selectedTab={selectedTab}\r\n handleReviewClick={(id) => history.push(`${RouteEnum.review}/${id}`)}\r\n />\r\n );\r\n };\r\n return (\r\n <div className=\"submitter\">\r\n <Articles\r\n selectedTab={selectedTab}\r\n actions={renderAction}\r\n getStatus={getStatus}\r\n ref={articlesRef}\r\n />\r\n </div>\r\n );\r\n};\r\n\r\nexport default Submissions;\r\n","import React, { useEffect, useRef, useState } from \"react\";\r\nimport { useDispatch, useSelector } from \"react-redux\";\r\nimport { Link, NavLink, useHistory } from \"react-router-dom\";\r\n\r\nimport {\r\n Form,\r\n Input,\r\n Button,\r\n Select,\r\n Table,\r\n Pagination,\r\n Dialog,\r\n Message,\r\n MessageBox,\r\n Breadcrumb,\r\n Tabs,\r\n Badge,\r\n} from \"element-react\";\r\nimport Routes from \"routes\";\r\nimport { AddUserInterface } from \"interfaces/user\";\r\nimport { GetRoles } from \"store/actions/common\";\r\nimport { GetUserList, DeleteUser, ChangeUserStatus } from \"store/actions/user\";\r\nimport RouteEnum from \"constants/routesEnum\";\r\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\r\nimport SubmissionList from \"./components/submissionList\";\r\nimport TabTitle from \"scenes/common/tabTitle\";\r\n\r\nconst AdminLandingPage = () => {\r\n const [selectedTab, setSelectedTab] = useState(\"NEW\");\r\n\r\n const tabs = [\r\n {\r\n label: \"New Assignment\",\r\n name: \"NEW\",\r\n },\r\n {\r\n label: \"Ongoing Reviews\",\r\n name: \"ONGOING\",\r\n },\r\n {\r\n label: \"Completed\",\r\n name: \"COMPLETED\",\r\n },\r\n ];\r\n\r\n const handleTabClicked = (e) => {\r\n const { name } = e.props;\r\n setSelectedTab(name);\r\n };\r\n\r\n return (\r\n <div>\r\n <Breadcrumb separator=\"/\">\r\n <Breadcrumb.Item>\r\n <Link to={RouteEnum.adminSubmission}>Home</Link>\r\n </Breadcrumb.Item>\r\n </Breadcrumb>\r\n\r\n <div className=\"submission\">\r\n <Tabs type=\"card\" value={selectedTab} onTabClick={handleTabClicked}>\r\n {tabs.map((item, index) => (\r\n <Tabs.Pane\r\n key={index}\r\n label={\r\n <TabTitle item={item} selectedTab={selectedTab} count={24} />\r\n }\r\n name={item.name}\r\n ></Tabs.Pane>\r\n ))}\r\n </Tabs>\r\n\r\n {<SubmissionList selectedTab={selectedTab} />}\r\n </div>\r\n </div>\r\n );\r\n};\r\n\r\nexport default AdminLandingPage;\r\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Form, Input, Button, Select, Checkbox } from \"element-react\";\nimport { CheckList, Wrapper } from \"components/form\";\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\nimport { AcknowledgeReview } from \"store/actions/articles\";\nimport { isEmpty } from \"helpers\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\nimport Attachments from \"./attachments\";\nimport { dateFormat } from \"helpers/dateHelper\";\nimport { useHistory } from \"react-router\";\nimport RouteEnum from \"constants/routesEnum\";\nimport Loader from \"components/loader.tsx\";\nimport ReviewRecommendationEnum from \"constants/reviewRecommendation\";\n\nconst Start = (props) => {\n var ref: any = useRef();\n const { onSave } = props;\n const history = useHistory();\n const [state, setState] = useState({\n ArticleId: 0,\n SectionId: 0,\n CheckList: [],\n });\n const [isLoading, setLoading] = useState(false);\n const [ckBody, setCkBody] = useState(\"\");\n const rules = {};\n const dispatch = useDispatch();\n\n const { checkList, templates, sections } = useSelector(\n (state: any) => state.metaReducer\n );\n\n const { review } = useSelector((st: any) => st.articleReducer);\n\n const acceptAndContinue = async () => {\n //AcknowledgeReview\n setLoading(true);\n const res: any = await dispatch(\n AcknowledgeReview(review.ReviewId, ArticleStatusEnum.REVIEWING)\n );\n setLoading(false);\n if (res.Status) {\n onSave && onSave();\n }\n };\n const decline = async () => {\n //AcknowledgeReview\n setLoading(true);\n const res: any = await dispatch(\n AcknowledgeReview(\n review.ReviewId,\n ArticleStatusEnum.REVIEWED,\n ReviewRecommendationEnum.DeclineSubmission\n )\n );\n setLoading(false);\n if (res.Status) history.push(RouteEnum.base);\n };\n\n if (isEmpty(review)) return null;\n\n return (\n <Loader isLoading={isLoading}>\n <div className=\"review\">\n <Wrapper label=\"Request for Review\">\n You have been selected as a potentential reviewer of the following\n submission.\n </Wrapper>\n <Wrapper label=\"ArticleTitle\">{review.ArticleTitle}</Wrapper>\n <Wrapper label=\"Abstract\">\n <p>\n The study examines the process of intstitutionalization as it has\n occured for the scholarly Publishing Servive Program(SPSP), an\n evolution of the library activities at the University of Anywhere.\n As an innovation which challenges many of the conventions of\n library-based publishing, it is necessary to apporach the evaluation\n of SPSP with a concern for appropriate methods and a consideration\n of issues of legitimacy in the analysis then provides a basis for\n recasting evaluation as a political process where innovative\n programs struggle to maintain those exemplars which make them\n different whilw acheiving thw legitimacy which make them possible.\n </p>\n </Wrapper>\n\n <Wrapper>\n <Attachments\n files={review.SubmissoinFiles}\n title=\"Submission Files\"\n />\n </Wrapper>\n <Wrapper label=\"Review Schedule\">\n <div className=\"review-reviewDate\">\n <div className=\"review-reviewDate-info\">\n <span className=\"value\">{dateFormat(review.CreatedOn)}</span>\n <span className=\"label\">Editor's Request</span>\n </div>\n <div className=\"review-reviewDate-info\">\n <span className=\"value\">{dateFormat(review.ResponsDueDate)}</span>\n <span className=\"label\">Response Due Date</span>\n </div>\n <div className=\"review-reviewDate-info\">\n <span className=\"value\">{dateFormat(review.ReviewDueDate)}</span>\n <span className=\"label\">Review Due Date</span>\n </div>\n </div>\n </Wrapper>\n\n <Wrapper>\n <Button\n type=\"primary\"\n onClick={acceptAndContinue}\n loading={isLoading}\n disabled={review.IsAccepted}\n >\n Accept Review and Continue\n </Button>\n <Button\n type=\"danger\"\n loading={isLoading}\n onClick={decline}\n disabled={review.IsAccepted}\n >\n Decline Review Request\n </Button>\n </Wrapper>\n </div>\n </Loader>\n );\n};\nexport default Start;\n","import TemplateEnum from \"constants/templateEnum\";\r\nimport { Button } from \"element-react\";\r\nimport React from \"react\";\r\nimport { useSelector } from \"react-redux\";\r\nimport { createMarkup } from \"helpers\";\r\nconst Guidelines = (props) => {\r\n const { onSave } = props;\r\n const { templates } = useSelector((state: any) => state.metaReducer);\r\n\r\n const ReviewGuideline = templates.find(\r\n (x) => x.TemplateKey === TemplateEnum.ReviewGuideline\r\n );\r\n console.clear();\r\n console.log(ReviewGuideline);\r\n const handleNextClick = async () => {\r\n onSave && onSave();\r\n };\r\n return (\r\n <>\r\n {ReviewGuideline && (\r\n <div\r\n className=\"template\"\r\n dangerouslySetInnerHTML={createMarkup(ReviewGuideline.TemplateText)}\r\n ></div>\r\n )}\r\n <Button type=\"primary\" onClick={handleNextClick}>\r\n Continue\r\n </Button>\r\n </>\r\n );\r\n};\r\nexport default Guidelines;\r\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { Dialog, Form, Input, Select, Button } from \"element-react\";\nimport { AttachmentButton } from \"components/form\";\nimport { useSelector } from \"react-redux\";\n\nconst initialState = {\n Attachment: null,\n};\n\nconst UploadFile = (props) => {\n const { isVisible, onSave, onCancel, selectedFileData } = props;\n const [state, setState] = useState(initialState);\n const { components } = useSelector((state: any) => state.metaReducer);\n\n useEffect(() => {\n const data = selectedFileData.data;\n if (data) {\n setState({\n ...data,\n Attachment: data.Attachment || {\n serverFileName: data.ServerFileName,\n name: data.UserFileName,\n },\n });\n } else {\n setState(initialState);\n }\n }, [selectedFileData]);\n\n const handleChange = (name, value) => {\n setState({ ...state, [name]: value });\n };\n\n const handleSave = () => {\n let obj = {\n ...state,\n };\n onSave && onSave(selectedFileData.index, obj);\n setState(initialState);\n };\n return (\n <Dialog title=\"Shipping Address\" visible={isVisible} onCancel={onCancel}>\n <Dialog.Body>\n <Form model={state} labelPosition=\"top\">\n <Form.Item label=\"Attachment\">\n <AttachmentButton\n value={state.Attachment}\n name=\"Attachment\"\n onChange={handleChange}\n />\n </Form.Item>\n <Form.Item>\n <Button type=\"primary\" onClick={() => handleSave()}>\n Save\n </Button>\n </Form.Item>\n </Form>\n </Dialog.Body>\n </Dialog>\n );\n};\nexport default UploadFile;\n","import React, { useEffect, useState } from \"react\";\nimport { Button } from \"element-react\";\nimport UploadFile from \"./uploadFile\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { isEmpty } from \"helpers\";\n\nimport { SaveAttachment } from \"store/actions/articles\";\nimport { FiFile } from \"react-icons/fi\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\n\nconst UploadReviewFiles = (props) => {\n const { onSave, attachments, setAttachments } = props;\n const [isVisible, setVisible] = useState(false);\n const [selectedFileData, setSelectedFileData] = useState({\n data: null,\n index: -1,\n });\n const dispatch = useDispatch();\n\n const { article } = useSelector((st: any) => st.articleReducer);\n\n useEffect(() => {\n if (!isEmpty(article)) {\n let attachments = article.ArticleAttachments || [];\n setAttachments([...attachments]);\n }\n }, [article]);\n\n const handleSaveFile = (index, obj) => {\n let newAttachments = [...attachments];\n if (index >= 0) newAttachments[index] = obj;\n else newAttachments.push(obj);\n\n setAttachments(newAttachments);\n setVisible(false);\n };\n\n const handleAttachmentEditClick = (index) => {\n setSelectedFileData({ index: index, data: { ...attachments[index] } });\n setVisible(true);\n };\n\n const handleAttachmentDeleteClick = (index) => {\n let newAttachments = [...attachments];\n newAttachments.splice(index, 1);\n setAttachments(newAttachments);\n };\n\n return (\n <div className=\"upload-steps__submissions\">\n <div className=\"upload-steps__submissions-header\">\n <div>Reviewer Files</div>\n <div className=\"upload-steps__submissions-header-action\">\n <div>\n <Button\n type=\"text\"\n disabled={article.Status === ArticleStatusEnum.SUBMITTED}\n onClick={() => {\n setSelectedFileData({ index: -1, data: null });\n setVisible(true);\n }}\n >\n Upload File\n </Button>\n </div>\n </div>\n </div>\n\n <div className=\"upload-steps__submissions-body\">\n {attachments.length === 0 && (\n <div style={{ padding: \"10px\", textAlign: \"center\" }}>\n No files choosen\n </div>\n )}\n {attachments.map((attachment, index) => (\n <div className=\"upload-steps__attachment\" key={index}>\n <div className=\"upload-steps__attachment-info\">\n <div className=\"upload-steps__attachment-info-title\">\n <FiFile />\n {attachment.UserFileName\n ? attachment.UserFileName\n : attachment.Attachment && attachment.Attachment.name}\n </div>\n {/* <div className=\"upload-steps__attachment-info-subtitle\">\n Component: {attachment.ComponentName}\n </div> */}\n </div>\n <div className=\"upload-steps__attachment-action\">\n <Button\n type=\"text\"\n onClick={() => handleAttachmentEditClick(index)}\n >\n Edit\n </Button>\n <Button\n type=\"text\"\n onClick={() => handleAttachmentDeleteClick(index)}\n >\n Delete\n </Button>\n </div>\n </div>\n ))}\n </div>\n\n <UploadFile\n isVisible={isVisible}\n setVisible={setVisible}\n selectedFileData={selectedFileData}\n onCancel={() => {\n setVisible(false);\n setSelectedFileData({ index: -1, data: null });\n }}\n onSave={(index, obj) => handleSaveFile(index, obj)}\n />\n <div className=\"upload-steps__submissions-footer\"></div>\n </div>\n );\n};\nexport default UploadReviewFiles;\n","import React, { useEffect, useRef, useState } from \"react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { Form, Input, Button, Select, Checkbox } from \"element-react\";\nimport { CheckList } from \"components/form\";\nimport { CKEditor } from \"@ckeditor/ckeditor5-react\";\nimport ClassicEditor from \"@ckeditor/ckeditor5-build-classic\";\nimport { SubmitReview } from \"store/actions/articles\";\nimport { isEmpty } from \"helpers\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\nimport Attachments from \"./attachments\";\nimport UploadReviewFiles from \"./uploadReviewFiles\";\nimport Loader from \"components/loader.tsx\";\n\nconst DownloadReview = (props) => {\n const { review } = useSelector((st: any) => st.articleReducer);\n const { onSave } = props;\n const dispatch = useDispatch();\n const { recommendations } = useSelector((state: any) => state.metaReducer);\n const [isLoading, setLoading] = useState(false);\n const [commentsForEditor, setCommentsForEditor] = useState(\"\");\n const [commentsForEditorAndAuthor, setCommentsForEditorAndAuthor] =\n useState(\"\");\n const [attachments, setAttachments] = useState([]);\n\n useEffect(() => {\n if (!isEmpty(review)) {\n setCommentsForEditor(review.CommentsForEditor || \"\");\n setCommentsForEditorAndAuthor(review.CommentsForEditorAndAuthor || \"\");\n setState({ RecommendationId: review.RecommendationId });\n setAttachments(review.ReviewFiles || []);\n }\n }, [review]);\n\n const [state, setState] = useState({ RecommendationId: \"\" });\n const onChange = (name, val) => {\n setState({ ...state, [name]: val });\n };\n const onSaveClicked = async () => {\n var param = {\n reviewId: review.ReviewId,\n commentsForEditor,\n commentsForEditorAndAuthor,\n recommendationId: state.RecommendationId,\n files: attachments,\n };\n setLoading(true);\n var res: any = await dispatch(SubmitReview(param));\n setLoading(false);\n if (res && res.Status) onSave();\n };\n return (\n <Loader isLoading={isLoading}>\n <div className=\"user-form\">\n <Form\n className=\"demo-form-stacked\"\n labelPosition=\"top\"\n labelWidth=\"100\"\n >\n <div className=\"margin-bottom-10\">\n <Attachments\n files={review.SubmissoinFiles}\n title=\"Submission Files\"\n />\n </div>\n <Form.Item label=\"Comments for Author and editor\">\n <CKEditor\n editor={ClassicEditor}\n data={commentsForEditorAndAuthor}\n onChange={(event, editor) => {\n const data = editor.getData();\n console.clear();\n console.log(data);\n setCommentsForEditorAndAuthor(data);\n }}\n />\n </Form.Item>\n <Form.Item label=\"Comment for Editor only\">\n <CKEditor\n editor={ClassicEditor}\n data={commentsForEditor}\n onChange={(event, editor) => {\n const data = editor.getData();\n setCommentsForEditor(data);\n }}\n />\n </Form.Item>\n <Form.Item label=\"Recommendation\">\n <Select\n value={state.RecommendationId}\n placeholder=\"Recommendation\"\n onChange={(val: any) => onChange(\"RecommendationId\", val)}\n >\n {recommendations &&\n recommendations.map((role, index) => (\n <Select.Option\n key={index}\n label={role.Name}\n value={role.Id}\n ></Select.Option>\n ))}\n </Select>\n </Form.Item>\n\n <UploadReviewFiles\n attachments={attachments}\n setAttachments={setAttachments}\n />\n\n <Form.Item>\n <Button type=\"primary\" onClick={onSaveClicked} loading={isLoading}>\n Save and Continue\n </Button>\n </Form.Item>\n </Form>\n </div>\n </Loader>\n );\n};\nexport default DownloadReview;\n","import React, { useState } from \"react\";\nimport { Button } from \"element-react\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { SaveConfrimation } from \"store/actions/articles\";\nimport ArticleStatusEnum from \"constants/articleStatusEnum\";\n\nconst SubmitArticle = (props) => {\n const { onConfirmation } = props;\n const { article } = useSelector((st: any) => st.articleReducer);\n const dispatch = useDispatch();\n const [isLoading, setLoading] = useState(false);\n const onSaveClicked = async () => {\n var param = {\n articleId: article.Id,\n steps: 5,\n };\n\n setLoading(true);\n var res: any = await dispatch(SaveConfrimation(param));\n setLoading(false);\n if (res && res.Status) onConfirmation();\n };\n return (\n <div>\n <div className=\"upload-steps__info\">\n Your submission has been uploaded and is ready to be sent. You may go\n back to review and adjust any of the information you have entered before\n continuing. When you are ready, click \"Finish Submission\"\n </div>\n <div>\n <Button\n disabled={article.Status === ArticleStatusEnum.SUBMITTED}\n type=\"primary\"\n onClick={() => onSaveClicked()}\n loading={isLoading}\n >\n Finish Submission\n </Button>\n </div>\n </div>\n );\n};\n\nexport default SubmitArticle;\n","import React, { useEffect, useState } from \"react\";\nimport {\n Form,\n Input,\n Button,\n Select,\n Tabs,\n Message,\n Breadcrumb,\n} from \"element-react\";\nimport Start from \"./request\";\nimport Guidelines from \"./guidelines\";\nimport UploadSubmission from \"./attachments\";\nimport DownloadReview from \"./downloadReview\";\nimport SubmitArticle from \"./submitArticle\";\nimport { useHistory } from \"react-router\";\nimport RouteEnum from \"constants/routesEnum\";\nimport { Link } from \"react-router-dom\";\nimport { GetReviewDetails, clearArticle } from \"store/actions/articles\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport { isEmpty } from \"helpers\";\nimport Loader from \"components/loader.tsx\";\nconst Review = (props) => {\n const [steps, setSteps] = useState(1);\n const [isLoading, setLoading] = useState(true);\n const [selectedTab, setSelectedTab] = useState(\"1\");\n const dispatch = useDispatch();\n const history = useHistory();\n const { reviewId } = props.match.params;\n const { review } = useSelector((st: any) => st.articleReducer);\n\n useEffect(() => {\n if (review) {\n let steps = 1;\n let tab = \"1\";\n if (review.IsCompleted) {\n steps = 4;\n tab = \"4\";\n } else if (review.IsAccepted) {\n steps = 3;\n tab = \"2\";\n }\n setSteps(steps);\n setSelectedTab(tab);\n }\n }, [review]);\n\n useEffect(() => {\n if (reviewId) {\n fetchReview(reviewId);\n } else {\n dispatch(clearArticle());\n }\n }, [reviewId]);\n\n const fetchReview = async (reviewId) => {\n setLoading(true);\n var revResult = await dispatch(GetReviewDetails(reviewId));\n setLoading(false);\n if (revResult == null) {\n history.push(RouteEnum.base);\n return;\n }\n };\n\n const handleOnSaveStep1 = () => {\n updateStep(2);\n setSelectedTab(\"2\");\n };\n\n const handleOnSaveStep2 = () => {\n updateStep(3);\n setSelectedTab(\"3\");\n };\n const handleOnSaveStep3 = () => {\n updateStep(4);\n setSelectedTab(\"4\");\n };\n const handleOnSaveStep4 = () => {\n updateStep(5);\n setSelectedTab(\"5\");\n };\n const handleConfirmation = () => {\n Message({\n showClose: true,\n message: \"Congrats, revision completed.\",\n type: \"success\",\n });\n history.push(`${RouteEnum.submitter}`);\n };\n const updateStep = (newStep: number) => {\n if (newStep > steps) {\n setSteps(newStep);\n }\n };\n\n const isDisabled = (tab) => {\n return steps < tab;\n };\n\n const handleTabClicked = (e) => {\n const { name } = e.props;\n setSelectedTab(name);\n };\n\n const tabs = [\n {\n label: \"1.Requst\",\n name: \"1\",\n component: <Start onSave={() => handleOnSaveStep1()} />,\n },\n {\n label: \"2. Guidelines\",\n name: \"2\",\n component: <Guidelines onSave={() => handleOnSaveStep2()} />,\n },\n {\n label: \"3. Download & Review\",\n name: \"3\",\n component: <DownloadReview onSave={() => handleOnSaveStep3()} />,\n },\n {\n label: \"4.Confirmation\",\n name: \"4\",\n component: <SubmitArticle onConfirmation={() => handleConfirmation()} />,\n },\n ];\n\n return (\n <>\n <Breadcrumb separator=\"/\">\n <Breadcrumb.Item>\n <Link to={RouteEnum.reviewer}>Home</Link>\n </Breadcrumb.Item>\n <Breadcrumb.Item>Review</Breadcrumb.Item>\n </Breadcrumb>\n\n <div className=\"submission\">\n <Loader isLoading={isLoading}>\n <Tabs type=\"card\" value={selectedTab} onTabClick={handleTabClicked}>\n {tabs.map((item, index) => (\n <Tabs.Pane\n key={index}\n label={item.label}\n name={item.name}\n disabled={isDisabled(index + 1)}\n >\n {item.component}\n </Tabs.Pane>\n ))}\n </Tabs>\n </Loader>\n </div>\n </>\n );\n};\nexport default Review;\n","import ReviewerLanding from \"scenes/reviewer\";\nimport Submitter from \"scenes/submitter\";\nimport RoleEnum from \"constants/roleEnum\";\nimport RouteEnum from \"constants/routesEnum\";\nimport Review from \"scenes/common/review\";\nconst ReviewerRoutes = [\n {\n exact: true,\n component: ReviewerLanding,\n role: RoleEnum.Reviewer,\n title: \"Dashboard\",\n path: RouteEnum.reviewer,\n },\n {\n exact: true,\n component: Review,\n role: RoleEnum.Reviewer,\n title: \"Review\",\n path: `${RouteEnum.review}/:reviewId`,\n },\n];\n\nexport default ReviewerRoutes;\n","import SubmitterRoutes from \"./submitterRoutes\";\nimport PublicRoutes from \"./publicRoutes\";\nimport AdminRoutes from \"./adminRoutes\";\nimport EditorRoutes from \"./editorRoutes\";\nimport ReviewerRoutes from \"./reviewerRoutes\";\n\nconst routes = [\n ...PublicRoutes,\n ...SubmitterRoutes,\n ...AdminRoutes,\n ...EditorRoutes,\n ...ReviewerRoutes,\n];\nexport default routes;\n","import React from \"react\";\nconst NotFound = (props) => {\n return <div>Not Found</div>;\n};\nexport default NotFound;\n","import RoleEnum from \"constants/roleEnum\";\nimport { UserDetailInterface } from \"interfaces/actions/auth\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, Route } from \"react-router\";\n\nconst PrivateRoute = ({ component: Component, ...rest }) => {\n let isAuth = localStorage.getItem(\"AuthToken\");\n let role = localStorage.getItem(\"Role\");\n\n return (\n <Route\n {...rest}\n render={(props) => {\n if (rest.role === RoleEnum.Public) return <Component {...props} />;\n if (isAuth && rest.role === role) return <Component {...props} />;\n return <Redirect to=\"/login\" />;\n }}\n />\n );\n};\nexport default PrivateRoute;\n","import RoleEnum from \"constants/roleEnum\";\nimport RouteEnum from \"constants/routesEnum\";\nimport { UserDetailInterface } from \"interfaces/actions/auth\";\nimport React from \"react\";\nimport { useSelector } from \"react-redux\";\nimport { Redirect, Route } from \"react-router\";\n\nconst BaseRoute = ({ component: Component, ...rest }) => {\n let role = localStorage.getItem(\"Role\");\n\n return (\n <Route\n {...rest}\n render={(props) => {\n if (role === RoleEnum.Submitter)\n return <Redirect to={RouteEnum.submitter} />;\n if (role === RoleEnum.Administrator)\n return <Redirect to={RouteEnum.adminSubmission} />;\n if (role === RoleEnum.Editor) return <Redirect to={RouteEnum.editor} />;\n if (role === RoleEnum.Reviewer)\n return <Redirect to={RouteEnum.reviewer} />;\n return <Redirect to=\"/login\" />;\n }}\n />\n );\n};\nexport default BaseRoute;\n","import React, { useEffect } from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport Layout from \"../layout\";\n\nimport Login from \"scenes/auth/login\";\n\nimport routes from \"routes\";\n\nimport NotFound from \"scenes/notFound\";\n\nimport submission from \"scenes/submitter/submission\";\nimport Submitter from \"scenes/submitter\";\nimport User from \"scenes/Administrator/user\";\n\nimport { UserDetailInterface } from \"interfaces/actions/auth\";\nimport { useDispatch, useSelector } from \"react-redux\";\nimport PrivateRoute from \"./privateRoute\";\nimport BaseRoute from \"./baseRoute\";\nimport { GetRoles } from \"store/actions/common\";\n\nconst Links = (props: any) => {\n const dispatch = useDispatch();\n\n useEffect(() => {\n dispatch(GetRoles());\n }, []);\n return (\n <>\n <Layout>\n <Switch>\n {routes.map((route, index) => {\n return <PrivateRoute key={index} {...route} />;\n })}\n <Route exact path=\"/login\" component={Login} />\n <BaseRoute exact path=\"/\" component={NotFound} />\n <Route path=\"*\" component={NotFound} />\n </Switch>\n </Layout>\n </>\n );\n};\nexport default Links;\n","import * as React from \"react\";\nimport \"scss/index.scss\";\nimport \"element-theme-default\";\nimport { Provider } from \"react-redux\";\nimport configureStore from \"store/configureStore\";\nimport Links from \"navigation/links\";\nimport Toast from \"components/toast\";\nimport { i18n } from \"element-react\";\nimport locale from \"element-react/src/locale/lang/en\";\n\nconst store = configureStore({});\ni18n.use(locale);\n\nexport default () => (\n <Provider store={store}>\n <div className=\"app\">\n <Toast />\n <Links />\n </div>\n </Provider>\n);\n","import * as React from \"react\";\nimport * as ReactDOM from \"react-dom\";\nimport { BrowserRouter } from \"react-router-dom\";\nimport App from \"./App\";\n// import reportWebVitals from \"./reportWebVitals\";\nconst baseUrl = document\n .getElementsByTagName(\"base\")[0]\n .getAttribute(\"href\") as string;\n\nReactDOM.render(\n <BrowserRouter basename={baseUrl}>\n <App />\n </BrowserRouter>,\n document.getElementById(\"root\")\n);\n"],"sourceRoot":""}
Save