{"version":3,"sources":["App/Environments/environments.js","App/Routes/ScrollToTopRoute.js","App/Assets/Images/SBLCentral-Logo-Resize.jpg","App/Assets/Images/questionmark-icon.png","App/Containers/Login/login.js","App/Containers/Login/loginContext.js","App/Containers/Login/loginRoot.js","App/Components/Header/header.js","App/Components/Footer/footer.js","App/Components/FilterBar/filterBar.js","App/Assets/Images/Paper-standard-image.png","App/Components/SearchResultsList/searchResultsList.js","App/Containers/SearchContainer/searchContainer.js","App/Helpers/bookStatusHelper.js","App/Containers/SearchResultsPage/searchResultsPageContainer.js","App/Containers/SearchResultsLandingPage/searchResultsLandingPage.js","App/Components/AdminSearchResultsPageComponent/adminSearchResultsPageComponent.js","App/Components/Admin/admin-base.js","App/Containers/AdminSearchResultsLandingPage/adminSearchResultsLandingPage.js","App/Containers/BookDetailsContainer/bookDetailsContainer.js","App/Containers/AdminBookDetailsContainer/adminBookDetailsContainer.js","App/Helpers/busyIndicator.js","App/Helpers/defaultConfigHelper.js","App/Components/Expertise/expertiseModalContent.js","App/Containers/BookNotifications/bookNotifcations.js","App/Containers/BookNotifications/bookNotificationsLandingPage.js","App/Components/AdminButton/adminButton.js","App/Containers/BookNotifications/notificationTest.js","App/Components/Core/dataCallerBaseComponent.js","App/Assets/Images/book_with_image.png","App/Containers/JournalNotifications/journalNotifications.js","App/Containers/JournalNotifications/journalNotificationsLandingPage.js","App/Containers/JournalNotifications/journalNotificationTest.js","App/Components/SessionClosed/sessionClosedDialog.js","App/Components/Home/home.js","App/Components/About/about.js","App/Assets/Images/rbl_logo.jpg","App/Components/Volunteer/volunteer.js","App/Components/Help/help.js","App/Components/Contact/contact.js","App/Components/SearchResultsPageComponent/searchResultsPageComponent.js","App/Components/SearchResultConferencePaper/searchResultConferencePaper.js","App/Components/SearchResultBook/searchResultBook.js","App/Assets/Images/SBLC-Sponsors/BakerAcademicLogo.png","App/Assets/Images/SBLC-Sponsors/BP-logo_and_big_website_black.jpg","App/Assets/Images/SBLC-Sponsors/Logo_brill_blauw_groot.png","App/Assets/Images/SBLC-Sponsors/Atla-Logo-Tagline-TEAL-RGB.jpg","App/Assets/Images/SBLC-Sponsors/Mohr-Siebeck-Logo-trasp_2017.png","App/Assets/Images/SBLC-Sponsors/PSUP_black.lg.png","App/Assets/Images/SBLC-Sponsors/rz_dg-degruyter.jpg","App/Assets/Images/SBLC-Sponsors/WJK_Logo_for_SBL.png","App/Assets/Images/SBLC-Sponsors/WS_Logo_SBL_Central.jpg","App/Components/Sponsors/sponsors.js","App/Assets/Images/SBLC-Sponsors/Bloomsbury-Publishing2.png","App/Components/SearchComponent/searchComponent.js","App/Components/BookDetails/bookDetails.js","App/Components/SponsorsCarousel/sponsorsCarousel.js","App/Components/ConferencePaperDetails/conferencePaperDetails.js","App/Components/VolunteerConfirmation/volunteerConfirmation.js","App/Components/Admin/admin.js","App/Components/AdminFooter/adminFooter.js","App/Helpers/messageFlashHelper.js","App/Assets/Images/SBLCentral-AdminLogo-top.png","App/Components/AdminHeader/adminHeader.js","App/Components/Reports/reports.js","App/Components/SystemMaintenance/systemMaintenance.js","App/Components/AdminSearchComponent/adminSearchComponent.js","App/Components/AdminFilterBar/adminFilterBar.js","App/Components/BusyIndicator/busyIndicator.js","App/Components/AdminUsers/adminUsers.js","App/Components/BookEditor/bookEditor.js","App/Components/TextField/textField.js","App/Components/InputField/inputField.js","App/Components/ListField/listField.js","App/Components/SelectField/selectField.js","App/Components/BookFormats/bookFormats.js","App/Components/BookFormats/bookFormatModal.js","App/Components/BookStatus/bookStatusHistoryModal.js","App/Components/BookStatus/bookStatusModal.js","App/Components/BookStatus/bookStatus.js","App/Components/Contributors/contributors.js","App/Components/Contributors/contributorModal.js","App/Components/Expertise/expertiseComponent.js","App/Components/Expertise/expertiseModal.js","App/Components/CollectedWorksEssaysModal/collectedWorksEssaysModalContent.js","App/Components/CollectedWorksEssaysModal/collectedWorksEssaysModal.js","App/Components/CollectedWorksEssays/collectedWorksEssays.js","App/Components/BookStatusFilter/bookStatusFilter.js","App/Components/AdminQuickFilters/adminQuickFilters.js","App/Components/BookReviews/bookReviews.js","App/Components/BookReviews/bookReviewModal.js","App/Components/AccountManagement/accountManagement.js","App/Components/AccountManagement/accountDetail.js","App/Components/Imprints/imprints.js","App/Components/Imprints/imprintModal.js","App/Components/MeetingImageUpload/meetingImageUpload.js","App/Components/Metadata/metadataManagement.js","App/Components/Metadata/uploadMeta.js","App/Components/SelectField/accountSelect.js","App/Components/RBLExport/rblExportHistoryModal.js","App/Components/RBLExport/rblExport.js","App/Components/AccountingExport/accountingExportHistoryModal.js","App/Components/AccountingExport/accountingExport.js","App/Assets/Images/rbl_sblpress_logo.jpg","App/Components/RBL/RBL.js","App/Components/Publishers/publishers.js","App/Components/Journals/journalsMenu.js","App/Components/Journals/journals.js","App/Components/Journals/journalDetail.js","App/Components/JournalIssues/journalIssues.js","App/Components/JournalIssues/journalIssuesDetail.js","App/Components/JournalArticles/journalArticles.js","App/Components/JournalArticles/journalArticleModal.js","App/Components/JournalArticleAuthors/journalArticleAuthors.js","App/Components/JournalArticleAuthors/journalArticleAuthorModal.js","App/Components/RoundCheckbox/roundCheckbox.js","App/Helpers/CustomDateInput.js","App/Components/Reports/BaseSummaryReport.js","App/Components/Reports/ImportSummaryReport/ImportSummaryReport.js","App/Components/NotificationsSnapshot/NotificationsSnapshot.js","App/Components/SubjectSelectionsSnapshot/SubjectSelectionsSnapshot.js","App/Components/JournalSelectionsSnapshot/JournalSelectionsSnapshot.js","App/Components/User/userMenu.js","App/Components/User/user.js","App/Components/User/userDetail.js","App/Routes/routes.js","App/Components/SessionTimeout/sessionTimeoutDialog.js","App.js","registerServiceWorker.js","App/Redux/Middleware/logger.js","App/Redux/Middleware/index.js","App/Redux/Reducers/filterReducer.js","App/Redux/Reducers/index.js","App/Redux/store.js","index.js"],"names":["environment","ScrollToTopRoute","prevProps","this","props","path","location","pathname","window","scrollTo","Component","component","rest","render","withRouter","baseUrl","loginUrl","sessionTimeoutInSeconds","Login","updateEmail","e","setState","emailAddress","target","value","updatePassword","password","onRequestClose","postCredentials","event","a","preventDefault","loggedInUser","state","axios","post","email","then","response","data","success","prevState","errorText","message","isAuthenticated","isAdminUser","firstName","lastName","sblId","config","headers","token","EmailAddress","info","console","debug","reload","error","sessionStorage","setItem","JSON","stringify","payload","localStorage","removeItem","catch","alert","isOpen","handleClose","className","appElement","document","getElementById","style","overlay","backgroundColor","id","to","onClick","onSubmit","type","name","maxLength","required","onChange","handleShow","dangerouslySetInnerHTML","__html","rel","href","React","ModalContext","createContext","showModal","hideModal","ModalContextStacked","ModalProvider","modal1","showModalStacked","modal2","hideModalStacked","Provider","children","ModalConsumer","Consumer","ModalConsumerStacked","ModalRootStacked","ModalRoot","Header","onLoginClick","getItem","parse","log","onLogoutClick","assign","returnSignIn","returnSignInBlock","calculateUserName","user","onAdminClick","ButtonToolbar","DropdownButton","title","getNotificationsMenu","getAdminMenu","MenuItem","eventKey","replace","src","logo","alt","questionHelpLogo","Footer","match","Moment","year","FilterBar","checked","filterData","selectedContentTypeOption","handleContentTypeClick","htmlFor","conferencePaperFilter","hidden","allMeetingFilter","handleMeetingTypeClick","annualMeetingFilter","internationalMeetingFilter","bookFilter","booksAll","onFilterClick","reviewedFilter","notReviewedFilter","twentyTwentyOneToPresent","twentySixteenToTwentyTwenty","twentyElevenToTwentyFifteen","twoThousandSixToTwentyTen","twoThousandOneToTwoThousandFive","isSeeMoreYearsHidden","MoreYears","MoreYearsDiv","ninetySixToTwoThousand","ninetyOneToNinetyFive","eightySixToNinety","eightyOneToEightyFive","seventySixToEighty","seventyOneToSeventyFive","uptoSeventy","SearchResultsList","searchResults","map","searchResultItem","index","result","onSearchResultClick","searchTerm","detailsBasePath","bookDetailsPath","displayCreatedAndStatus","returnSearchResult","SearchContainer","returnSearchComponent","resetLocalStorage","detailsSearchTerm","myUrl","resetSearchFilters","keywordType","updateSearchTerm","resetValue","BookStatusHelper","statusId","undefined","BookStatusFilterEnum","BookStatusEnum","SearchResultsPage","resetContentTypeFilters","allFilter","sortResults","sortTerm","redirect","pageSelectedIndex","loadResultsFromServer","currentTarget","resetAllYears","searchDropdownValue","filterName","bookStatusFilter","scrollPosition","scrollingElement","scrollTop","perPage","setSearchDropdownValueToSessionStorage","renderLoaderOrSearchResults","loading","term","determineType","search","queryString","time","calculateTimeFilters","contentFilters","calculateContentFilters","statusFilters","calculateStatusFilter","reset","otherState","offset","numTotalResults","params","trim","page","Math","max","abs","kw","filterPending","isAdmin","updateResultsPerPage","bind","handlePageClick","searchOverride","browseAll","sf","content","subtype","meettype","filter","termToSearch","odataSearchTermFilterQuery","odataMasterQuery","checkedBoxes","yearsCheckboxFilterString","contentCheckboxFilterString","meetingTypeCheckboxFilterString","reviewsCheckboxFilterString","odataCheckboxFilterQueryYears","odataCheckboxFilterQueryContent","odataCheckboxFilterQueryMeetingType","odataCheckboxFilterQueryReviews","boolsAll","key","push","checkbox","slice","bookStatusFilterQuery","adminParam","keyword","get","encodeURIComponent","$top","$skip","$count","$orderby","items","count","pageCount","ceil","newProps","selected","parseInt","floor","totalNumResults","dataLength","decodeURIComponent","getRedirect","generateRedirect","calculateSearchComponent","SearchResultsLandingPage","host","displayShowingText","selectedMeetingTypeOption","url","getDisplayCreatedAndStatus","AdminSearchResultsPageComponent","Helmet","length","previousLabel","nextLabel","breakLabel","breakClassName","marginPagesDisplayed","pageRangeDisplayed","onPageChange","containerClassName","subContainerClassName","activeClassName","forcePage","guardAdmin","proposedJSX","setTimeout","validateAdmin","includes","BookDateStatusBlock","created","Date","toLocaleDateString","toLocaleTimeString","bookStatusId","BookStatusDisplay","translateStatus","AdminSearchResultsLandingPage","getCreatedAndStatusBlock","item","position","BookDetailsContainer","getBookEditLink","returnVolunteerEditLink","bookData","isAcceptingVolunteers","returnVolunteerLink","getSearchContainer","getBookStatusDisplay","history","returnBookEditLink","basePath","calculateBackgroundImageClass","AdminBookDetailsContainer","getVolunteerEditLink","calculateBookStatusBlock","getBusyIndicator","isLoading","busy","DefaultConfig","ExpertiseModalContent","onTypeChange","categoryTypeIndex","expertiseCategoryIndex","selectedAvailableSubjectIndex","onCategoryChange","selectedIndex","onAvailableSelectionChange","onAddSubjectToBook","available","calculateSubjects","subjectId","isSubjectAlreadySelected","subject","subjectInfo","find","x","bookSubject","bookId","description","bookSubjects","selectedBookSubjectIndex","onRemoveSubjectFromBook","subjects","splice","onSelectedBookSubjectChange","getDefaultConfig","expertiseCategoryTypes","expertiseCategories","experise","array","calculateCategories","category","size","onDoubleClick","calculateSelectedSubjects","calculateSubjectDescription","expertiseCategoryTypeId","forEach","expertiseId","expertiseCategoryId","subjectAlreadySelected","i","expertiseCategory","expertiseSubCategory","calculateChecked","getMethodsAndTexts","getExpertiseCategories","getAvailableSubjects","getBookSubjects","BookNotifications","onCancel","onClose","handleSubmit","stopPropagation","notifications","settings","expertise","notification","loadFromServer","ref","BookNotificationsLandingPage","goBack","visibility","showDialog","click","AdminButton","NotificationTest","validate","confirm","triggerNotificationProcess","onReset","handleInputChanges","onCheckboxChange","onTriggerAuto","special","alternate","defaultNotificationEmail","recipient","bccAdmin","bccEmail","memberEmail","redirectEmail","uri","emailValidator","test","autoFocus","Checkbox","getAdvancedOptions","DataCallerBaseComponent","axiosHeaders","JournalNotifications","save","toggleCheck","journals","promises","loadJournals","loadUserSelections","Promise","all","values","buildJournalSelectedList","selections","selection","journal","journalId","isActive","text","getJournalDisplayText","issn","printISSN","onlineISSN","RegExp","addProtocolText","imageUrl","journalImage","issuesPerYear","issuesPerYearTxt","displayUrlProtocol","publisher","displayISSN","renderHTML","listJournals","disabled","JournalNotificationsLandingPage","JournalNotificationTest","onSendProductionNotification","getNotificationParams","IsTextOnlyEmail","ignoreInternalStaffApproval","loadData","concat","Title","displayValue","displayName","getProductionSection","getTestingOptions","getRendering","SessionClosedDialog","closeModal","modalIsOpen","Home","self","sessionDialog","About","Volunteer","Id","researchTeachingArea","selectedOption","institution","positionHeld","qualifications","sblid","bookName","handleChange","handleOptionChange","FirstName","LastName","ResearchArea","Institution","Position","Qualifications","EducationalLevel","SblId","BookId","rbllogo","readOnly","autoComplete","Help","Contact","nl2br","SearchResultsPageComponent","SearchResultConferencePaper","imgUrl","conferencePaperImage","coPresenterNames","fullName","extraDesc1","extraDesc2","meetingLocation","SearchResultBook","bookImage","meetingType","names","presenterNames","translators","OptionalContributor","Sponsors","AmericanTheological","Baker","BaylorPress","Brill","DeGruyter","MohrSiebeck","PSUP","WJK","WS","SearchComponent","redirectToSearchResults","onSearchSubmit","redirectToPage","onSearchValueChange","onDropdownChange","warn","forceUpdate","onSelect","placeholder","BookDetails","new","reviews","hasMemberVolunteered","searchType","returnReviewPdfLink","book","subtitle","formats","String","split","keywords","seriesInfo","publisherURL","edition","author","editor","translator","returnBookTitle","review","reviewDate","reviewedOn","format","reviewURL","getReviewDivider","numberOfPages","returnBackToSearchResults","imageURL","returnBookEdition","returnBookAuthors","returnBookEditors","returnBookTranslators","returnSeriesInfo","publisherName","copyright","returnPageCount","returnFormats","returnSubjects","returnKeywords","returnDescription","returnPublisherURL","amazonURL","returnReviews","ConferencePaperDetails","conferencePaperData","presenterFullName","TwoThousandImageIM","TwoThousandOneImageIM","TwoThousandTwoImageIM","TwoThousandThreeImageIM","TwoThousandFourImageIM","TwoThousandFiveImageIM","TwoThousandSixImageIM","TwoThousandSevenImageIM","TwoThousandEightImageIM","TwoThousandNineImageIM","TwoThousandTenImageIM","TwoThousandElevenImageIM","TwoThousandTwelveImageIM","TwoThousandThirteenImageIM","TwoThousandFourteenImageIM","TwoThousandFifteenImageIM","TwoThousandSixteenImageIM","TwoThousandSeventeenImageIM","TwoThousandEighteenImageIM","TwoThousandNineteenImageIM","TwoThousandTwentyTwoImageIM","TwoThousandTwentyThreeImageIM","ConferencePaperImage","TwoThousandImageAM","TwoThousandOneImageAM","TwoThousandTwoImageAM","TwoThousandThreeImageAM","TwoThousandFourImageAM","TwoThousandFiveImageAM","TwoThousandSixImageAM","TwoThousandSevenImageAM","TwoThousandEightImageAM","TwoThousandNineImageAM","TwoThousandTenImageAM","TwoThousandElevenImageAM","TwoThousandTwelveImageAM","TwoThousandThirteenImageAM","TwoThousandFourteenImageAM","TwoThousandFifteenImageA","TwoThousandSixteenImageAM","TwoThousandSeventeenImageAM","TwoThousandEighteenImageAM","TwoThousandNineteenImageAM","TwoThousandTwentyImageAM","TwoThousandTwentyOneImageAM","TwoThousandTwentyTwoImageAM","TwoThousandTwentyThreeImageAM","conferencePaperDocumentURL","conferencePresentationDocumentURL","returnPresenters","presentationDate","programUnit","meetingName","abstract","getConferencePaperDocumentLink","getConferencePresentationDocumentLink","VolunteerConfirmation","footer","bottom","go","Admin","AdminFooter","gotoAdd","MessageFlash","AdminHeader","returnMessageFlash","getMessage","getPublicMenu","Reports","SystemMaintenance","getNotificationTestItem","AdminSearchComponent","redirectToSearchFlag","redirectToSearchPage","AdminFilterBar","BusyIndicator","BookEditor","showPreview","file","files","_URL","URL","webkitURL","filename","checkExtension","fileUpload","sizeInMb","sizeErrorMessage","reader","FileReader","onload","image","Image","preview","selectedFile","createObjectURL","readAsDataURL","onBrowseClick","backButtonClick","handleInputChange","validateCopyright","contributors","isClassicRBLImport","accountId","isNew","isNewBook","uploadReviews","every","saveData","titleId","formData","FormData","append","saveReviews","redirectAfterBookSave","onSubjectChange","onReviewsUpdated","bookStatus","changeStatus","handleAccountChange","account","options","bookStatusName","publisherId","publisherLocation","seriesTitle","seriesNumber","doiPermanentURL","essays","bookStatusNote","statusEntry","suppressEmailNotifications","accounts","sourceFile","loadAccounts","loadBook","updateBookData","scrubData","serisNumber","toLowerCase","source","accept","exactlyFourDigits","fileUploads","needsUploading","reviewPDFName","upload","tempfile","model","updateContributorSortOrder","collectedWorks","setMessage","sortOrder","note","onSave","defaultValue","current","getBackToBookDetailLink","getTitle","getImageDisplay","rows","getSourceFileDisplay","getAccountSelect","getSuppressEmailSetting","getIsAcceptingVolunteersSetting","getBookReviews","getBookStatusBlock","requiredMark","TextField","InputField","ListField","listId","displayitem","modal","SelectField","display","BookFormats","displayFormat","translateFormatType","isbn","price","editModal","BookFormatModal","deleteRequested","edit","record","formatTypeId","parent","addModal","showBookFormatModal","getModal","onRequestDelete","onChangeAlphanumericOnly","toUpperCase","showDelete","getFormatTypes","getDeleteButton","BookStatusHistoryModal","previousStatus","newStatus","getStatusRows","BookStatusModal","onStatusHistory","validateForm","onNoteChange","rblDisabled","sblDisabled","setBookStatus","getStatusHistoryLink","toggleWithdrawn","getStatusHistoryBlock","BookStatus","newStatusId","onEditStatus","calculateStatusText","Contributors","displayContributor","calculateRoleDisplay","showContributorModal","ContributorModal","isAuthor","isEditor","isTranslator","person","contributor","role","substring","ExpertiseComponent","getSubjectsModalButton","getSubjects","passedArray","ExpertiseModal","showExpertiseModal","getSubjectsDisplay","isDataValid","CollectedWorksEssaysModalContent","onTextChange","essay","pageStart","pageEnd","doi","CollectedWorksEssaysModal","CollectedWorksEssays","getEssayDisplay","sortContributors","authors","editors","onAddEditButtonClick","getContributorListing","people","getContributorNameList","divider","BookStatusFilter","AdminQuickFilters","statusFilterType","getSearchHref","BookReviews","displayReview","BookReviewModal","submitter","showBookReviewModal","handleFileSelection","AccountManagement","editAccount","loadDataFromServer","getAccounts","AccountDetail","onDelete","delete","stateId","isCountryUSA","province","states","countries","country","countryId","imprints","copies","phone","address1","address2","city","postalCode","telephone","defaultReviewCopyOptions","loadAccount","sort","b","localeCompare","loadValues","unshift","getStateField","getProvinceField","Imprints","imprintCompare","displayImprint","imprint","ImprintModal","showImprintModal","MeetingImageUpload","onChangeNumericOnly","height","naturalHeight","width","naturalWidth","validateYear","deleteOldVersion","exists","response2","redirectAfterImageSave","meetingTypeId","meetingImage","BtnCellRenderer","btnClickedHandler","clicked","MetadataManagement","defaultStyle","columnDefs","field","headerName","sortable","cellStyle","valueFormatter","onDateRender","cellRenderer","cellRendererParams","refreshData","onGridReady","api","setSortModel","colId","sizeColumnsToFit","frameworkComponents","btnCellRenderer","month","day","hour","meridian","suppressRowClickSelection","enableCellTextSelection","rowData","metaFiles","UploadMeta","MainAccount","ImprintAccounts","AccountSelect","RBLExportHistoryModal","exportDate","adminUser","fromDate","toDate","getHistoryRows","ExcelFile","ReactExport","ExcelSheet","ExcelColumn","RBLExport","setfromDate","date","setHours","fromDateText","toLocaleString","settoDate","toDateText","updateDataDisplay","onExportHistory","onDownload","now","body","userName","filtertoDate","getYesterday","filterfromDate","setDate","getDate","tomorrow","processData","exportData","getExportHistoryLink","longText","getExcelFunctionalButton","subjectDisplay","ellipsisFormat","subjectTooltip","formatTooltip","descDisplay","descTooltip","formatDate","subTitle","copyrightYear","numberInSeries","yesterday","element","getExcelButton","label","multiline","getExportHistoryBlock","customInput","formatted","filterDate","getDataDisplay","timeZone","hour12","AccountingExportHistoryModal","AccountingExport","option","attributes","nodeValue","summary","toISOString","populateBillingAddress","today","getMonth","getFullYear","displayDate","minimumIntegerDigits","books","dateDisplay","calculateDisplayDate","importFile","multiDataSet","columns","wpx","font","bold","dataSet","cityState","countryName","RBL","download","Logo","Publishers","JournalsMenu","Journals","editJournal","isChecked","getInactiveList","getJournals","JournalDetail","header","setIsActive","JournalIssues","onNodeClick","targetNode","isLeaf","nodes","expanded","buildNodesForTreeDisplay","initUniqueTreeNodeValue","issues","journalNode","buildIndividualJournalNode","createJournalNode","yearNode","volume","issueNumber","issue","createYearNode","issueNode","createIssueNode","getUniqueValueForTreeNode","showCheckbox","seed","getNoJournalsFoundDisplay","onCheck","onExpand","showNodeIcon","expandOnClick","getJounralIssuesDisplay","JournalIssuesDetail","strDate","getDay","years","articles","notificationsDate","notificationSent","isIssueNotificationApproved","loadYears","loadExisting","arr","thisJournal","activeJournals","getActiveJournals","disable","toString","padStart","JournalArticles","displayTitle","tooltip","displayAuthor","JournalArticleModal","showJournalArticleModal","getArticlesGrid","sendNotifications","heading","JournalArticleAuthors","JournalArticleAuthorModal","showJournalArticleAuthorModal","RoundCheckbox","defaultChecked","CustomDateInput","forwardRef","BaseSummaryReport","reportTitle","ImportSummaryReport","base","formattedDate","sourceActivity","numRecordsInserted","numRecordsUpdated","numRecordsFailed","reportData","NotificationsSnapshotReport","todaysDate","makeAPICall","stateParameter","currentSBLMemberCount","currentBookMemberCount","currentJournalMemberCount","averageBookSubjectsSelected","medianBookSubjectsSelected","modeBookSubjectsSelected","averageJournalsSelected","medianJournalsSelected","modeJournalsSelected","displayType","suffix","decimalScale","SubjectSelectionsSnapshotReport","CustomDataGrid","initialRows","subjectCounts","subject2Display","subject2","subject2Tooltip","subject3Display","subject3","subject3Tooltip","subject1","JournalSelectionsSnapshotReport","journalCounts","titleDisplay","titleTooltip","publisherDisplay","publisherTooltip","memberCount","color","UserMenu","User","editUser","users","getUsers","UserDetail","adminusers","logPageView","ReactGA","initialize","Routes","barrel","containers","exact","SessionTimeoutDialog","cancellation","onSessionContinue","onSessionClose","seconds","timerTick","timerHandler","handleTimeout","timer","clearTimeout","App","storageListener","newValue","handleOnIdle","idleTimer","addEventListener","removeEventListener","timeout","onIdle","debounce","Boolean","hostname","logger","store","next","action","group","returnValue","getState","groupEnd","composeEnhancers","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","applyMiddleware","thunk","filterReducer","twentySixteenToPresent","journalFilter","combineReducers","createStore","reducer","middleware","ReactDOM","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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BACW,OAAT1d,EACF2d,2BACW,OAAT3d,EACF4d,0BACW,OAAT5d,EACF6d,0BACW,OAAT7d,EACF8d,4BACW,OAAT9d,EACF+d,2BACW,OAAT/d,EACFge,2BACW,OAAThe,EACFie,4BACW,OAATje,EACFke,8BAEAC,EAEgB,WAAhB7F,EACI,MAATtY,EACKoe,mBACW,OAATpe,EACFqe,sBACW,OAATre,EACFse,sBACW,OAATte,EACFue,wBACW,OAATve,EACFwe,uBACW,OAATxe,EACFye,uBACW,OAATze,EACF0e,sBACW,OAAT1e,EACF2e,wBACW,OAAT3e,EACF4e,wBACW,OAAT5e,EACF6e,uBACW,OAAT7e,EACF8e,sBACW,OAAT9e,EACF+e,yBACW,OAAT/e,EACFgf,yBACW,OAAThf,EACFif,2BACW,OAATjf,EACFkf,2BACW,OAATlf,EACFmf,yBACW,OAATnf,EACFof,0BACW,OAATpf,EACFqf,4BACW,OAATrf,EACFsf,2BACW,OAATtf,EACFuf,2BACW,OAATvf,EACFwf,yBACW,OAATxf,EACFyf,4BACW,OAATzf,EACF0f,4BACW,OAAT1f,EACF2f,8BAEAxB,EAGFA,CAEV,G,4CAED,WACE,GAAIvmB,KAAK8B,MAAMijB,oBAAoBiD,2BAA4B,CAC7D,IAAMhW,EAAMhS,KAAK8B,MAAMijB,oBAAoBiD,2BAC3C,OACE,mBAAG1iB,KAAM0M,EAAK5Q,OAAO,SAASiE,IAAI,sBAAlC,SAAwD,wBAI3D,CAED,MAAO,EACR,G,mDAED,WACE,GAAIrF,KAAK8B,MAAMijB,oBAAoBkD,kCAAmC,CACpE,IAAMjW,EAAMhS,KAAK8B,MAAMijB,oBAAoBkD,kCAC3C,OACE,mBAAG3iB,KAAM0M,EAAK5Q,OAAO,SAASiE,IAAI,sBAAlC,SAAwD,8BAI3D,CAED,MAAO,EACR,G,oBAED,WACE,OAAIrF,KAAK8B,MAAMoL,QAEX,sBAAKhJ,UAAU,YAAf,UACE,qBAAKA,UAAU,wBACf,qBAAKA,UAAU,wBACf,qBAAKA,UAAU,wBACf,qBAAKA,UAAU,wBACf,qBAAKA,UAAU,wBACf,qBAAK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","file":"static/js/main.f71e0258.chunk.js","sourcesContent":["const localEnvironment = {\r\n baseUrl: 'http://localhost:29002',\r\n loginUrl: 'http://localhost:29002',\r\n defaultNotificationEmail: 'harsha.hammika@soltech.net',\r\n sessionTimeoutInSeconds: 1000 * 60 * 60\r\n};\r\nconst SBLQAEnvironment = {\r\n baseUrl: 'https://test.www.sblcentral.org/API',\r\n loginUrl: 'https://test.www.sblcentral.org/API',\r\n defaultNotificationEmail: 'coconnor@sbl-site.org',\r\n sessionTimeoutInSeconds: 1000 * 60 * 60\r\n};\r\nconst SBLUATEnvironment = {\r\n baseUrl: 'https://uat.sblcentral.org/API',\r\n loginUrl: 'https://uat.sblcentral.org/API',\r\n sessionTimeoutInSeconds: 1000 * 60 * 60\r\n}\r\nconst SBLStagingEnvironment = {\r\n baseUrl: 'https://staging.sblcentral.org/API',\r\n loginUrl: 'https://authenticate.sbl-site.org',\r\n sessionTimeoutInSeconds: 1000 * 60 * 60\r\n}\r\nconst SBLProdrodEnvironment = {\r\n baseUrl: 'https://www.sblcentral.org/API',\r\n loginUrl: 'https://www.sblcentral.org/API',\r\n sessionTimeoutInSeconds: 1000 * 60 * 60 * 4\r\n};\r\n\r\nlet environment;\r\n\r\nif (process.env.REACT_APP_ENVIRONMENT === 'SBLQA') {\r\n environment = SBLQAEnvironment;\r\n}\r\nelse if (process.env.REACT_APP_ENVIRONMENT === 'SBLUAT') {\r\n environment = SBLUATEnvironment;\r\n}\r\nelse if (process.env.REACT_APP_ENVIRONMENT === 'SBLProd') {\r\n environment = SBLProdrodEnvironment;\r\n}\r\nelse if (process.env.REACT_APP_ENVIRONMENT === 'SBLSTAGING') {\r\n environment = SBLStagingEnvironment\r\n}\r\nelse {\r\n environment = localEnvironment;\r\n}\r\n\r\nexport default {\r\n // add common environment values here\r\n ...environment\r\n};","import React, { Component } from 'react';\r\nimport { Route, withRouter } from 'react-router-dom';\r\n\r\nclass ScrollToTopRoute extends Component {\r\n componentDidUpdate(prevProps) {\r\n if (this.props.path === this.props.location.pathname && this.props.location.pathname !== prevProps.location.pathname) {\r\n window.scrollTo(0, 0)\r\n }\r\n }\r\n\r\n render() {\r\n const { component: Component, ...rest } = this.props;\r\n\r\n return ()} />;\r\n }\r\n}\r\n\r\nexport default withRouter(ScrollToTopRoute);","export default __webpack_public_path__ + \"static/media/SBLCentral-Logo-Resize.e0a05f13.jpg\";","export default __webpack_public_path__ + \"static/media/questionmark-icon.af14c38b.png\";","import * as React from \"react\";\r\nimport \"./loginStyles.css\";\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport Modal from \"react-modal\";\r\nimport { Link } from \"react-router-dom\";\r\n\r\nclass Login extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n loggedInUser: {\r\n errorText: \"\",\r\n isAuthenticated: false,\r\n firstName: \"\",\r\n lastName: \"\",\r\n sblId: \"\",\r\n isAdminUser: false\r\n }\r\n };\r\n }\r\n\r\n updateEmail = e =>\r\n this.setState({\r\n emailAddress: e.target.value\r\n });\r\n\r\n updatePassword = e =>\r\n this.setState({\r\n password: e.target.value\r\n });\r\n\r\n onRequestClose = () => {\r\n this.props.onRequestClose();\r\n };\r\n\r\n postCredentials = async event => {\r\n event.preventDefault();\r\n\r\n let loggedInUser = this.state.loggedInUser\r\n\r\n await axios\r\n .post(`${environment.loginUrl}/api/login`, {\r\n email: this.state.emailAddress,\r\n password: this.state.password,\r\n })\r\n .then(async response => {\r\n if (response.data.success === false) {\r\n this.setState(prevState => ({\r\n loggedInUser: {\r\n ...prevState.loggedInUser,\r\n errorText: response.data.message,\r\n isAuthenticated: false,\r\n isAdminUser: false,\r\n firstName: '',\r\n lastName: '',\r\n sblId: '',\r\n emailAddress: ''\r\n }\r\n }));\r\n\r\n return;\r\n }\r\n\r\n const config = {\r\n headers: {\r\n 'Authorization': 'Bearer ' + response.data.token\r\n }\r\n }\r\n\r\n if (response.data.isAuthenticated) {\r\n await axios.post(`${environment.baseUrl}/api/login/getExtendedUserInfo`, { EmailAddress: response.data.emailAddress }, config)\r\n .then(info => {\r\n\r\n console.debug('Info: ', info)\r\n loggedInUser.errorText = \"\"\r\n loggedInUser.isAuthenticated = response.data.isAuthenticated\r\n loggedInUser.isAdminUser = info.data.isAdminUser\r\n loggedInUser.firstName = response.data.firstName\r\n loggedInUser.lastName = response.data.lastName\r\n loggedInUser.sblId = response.data.sblId\r\n loggedInUser.emailAddress = response.data.emailAddress\r\n loggedInUser.token = response.data.token\r\n\r\n this.setState({ loggedInUser: loggedInUser }, async () => {\r\n this.onRequestClose()\r\n window.location.reload()\r\n });\r\n })\r\n } else {\r\n this.setState(prevState => ({\r\n loggedInUser: {\r\n ...prevState.loggedInUser,\r\n errorText: response.data.error,\r\n isAuthenticated: response.data.isAuthenticated,\r\n isAdminUser: false,\r\n firstName: response.data.firstName,\r\n lastName: response.data.lastName,\r\n sblId: response.data.sblId,\r\n emailAddress: response.data.emailAddress\r\n }\r\n }));\r\n }\r\n\r\n sessionStorage.setItem(\r\n \"loggedInUser\",\r\n JSON.stringify(this.state.loggedInUser)\r\n );\r\n\r\n let payload = {\r\n loggedInUser: this.state.loggedInUser\r\n }\r\n \r\n localStorage.setItem('sessionStorage', JSON.stringify(payload));\r\n localStorage.removeItem('sessionStorage');\r\n })\r\n .catch(error => {\r\n alert(error);\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n \r\n \r\n
\r\n \r\n Sign In\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n Forgot Your Password?\r\n \r\n
\r\n
\r\n \r\n Join SBL or Renew Membership\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n );\r\n }\r\n}\r\n\r\nexport { Login };\r\n","import React, { Component, createContext } from \"react\";\r\n\r\nconst ModalContext = createContext({\r\n component: null,\r\n props: {},\r\n showModal: () => {},\r\n hideModal: () => {}\r\n});\r\n\r\nconst ModalContextStacked = createContext({\r\n component: null,\r\n props: {},\r\n showModal: () => {},\r\n hideModal: () => {}\r\n});\r\n\r\nexport class ModalProvider extends Component {\r\n showModal = (component, props = {}) => {\r\n this.setState({ \r\n modal1: {\r\n component: component,\r\n props: props,\r\n showModal: this.showModal,\r\n hideModal: this.hideModal\r\n } \r\n });\r\n };\r\n\r\n showModalStacked = (component, props = {}) => {\r\n this.setState({\r\n modal2: {\r\n component,\r\n props,\r\n showModal: this.showModalStacked,\r\n hideModal: this.hideModalStacked\r\n }\r\n });\r\n };\r\n\r\n hideModal = () =>\r\n this.setState({\r\n modal1: {\r\n component: null,\r\n props: {},\r\n showModal: this.showModal,\r\n hideModal: this.hideModal\r\n }\r\n });\r\n\r\n hideModalStacked = () =>\r\n this.setState({\r\n modal2: {\r\n component: null,\r\n props: {},\r\n showModal: this.showModalStacked,\r\n hideModal: this.hideModalStacked\r\n }\r\n });\r\n\r\n state = {\r\n modal1: {\r\n component: null,\r\n props: {},\r\n showModal: this.showModal,\r\n hideModal: this.hideModal\r\n },\r\n modal2: {\r\n component: null,\r\n props: {},\r\n showModal: this.showModalStacked,\r\n hideModal: this.hideModalStacked\r\n }\r\n };\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {this.props.children}\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport const ModalConsumer = ModalContext.Consumer;\r\nexport const ModalConsumerStacked = ModalContextStacked.Consumer;\r\n","import React from \"react\";\r\nimport { ModalConsumer, ModalConsumerStacked } from \"./loginContext\";\r\n\r\nconst ModalRoot = () => (\r\n \r\n {({ component: Component, props, hideModal }) =>\r\n Component ? : null\r\n }\r\n \r\n);\r\n\r\nexport const ModalRootStacked = () => (\r\n \r\n {({ component: Component, props, hideModal }) =>\r\n Component ? : null\r\n }\r\n \r\n)\r\n\r\nexport default ModalRoot;\r\n","import * as React from \"react\";\r\nimport { Fragment } from \"react\";\r\nimport { Link } from \"react-router-dom\";\r\nimport logo from \"../../Assets/Images/SBLCentral-Logo-Resize.jpg\";\r\nimport questionHelpLogo from \"../../Assets/Images/questionmark-icon.png\";\r\nimport { DropdownButton } from \"react-bootstrap\";\r\nimport { MenuItem } from \"react-bootstrap\";\r\nimport { ButtonToolbar } from \"react-bootstrap\";\r\n\r\nimport \"./headerStyles.css\";\r\nimport { Login } from \"../../Containers/Login/login\";\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport ModalRoot from \"../../Containers/Login/loginRoot\";\r\n\r\nclass Header extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n var loggedInUser = {\r\n errorText: \"\",\r\n isAuthenticated: false,\r\n firstName: \"\",\r\n lastName: \"\",\r\n sblId: \"\",\r\n isAdminUser: false\r\n };\r\n\r\n this.state = {\r\n loggedInUser: loggedInUser\r\n }\r\n }\r\n\r\n async componentDidMount() {\r\n if (sessionStorage.getItem(\"loggedInUser\")) {\r\n let loggedInUser = JSON.parse(sessionStorage.getItem(\"loggedInUser\"));\r\n\r\n this.setState({\r\n loggedInUser: loggedInUser\r\n });\r\n }\r\n }\r\n\r\n onLoginClick = () => {\r\n this.showModal();\r\n\r\n if (sessionStorage.getItem(\"loggedInUser\")) {\r\n this.setState({\r\n loggedInUser: JSON.parse(sessionStorage.getItem(\"loggedInUser\"))\r\n });\r\n\r\n console.log('Updated user: ', this.state.loggedInUser);\r\n }\r\n };\r\n\r\n onLogoutClick = () => {\r\n this.setState(prevState => ({\r\n loggedInUser: {\r\n ...prevState.loggedInUser,\r\n errorText: \"\",\r\n isAuthenticated: false,\r\n isAdminUser: false,\r\n firstName: \"\",\r\n lastName: \"\",\r\n sblId: \"\"\r\n }\r\n }), () => {\r\n sessionStorage.setItem(\"loggedInUser\", JSON.stringify(this.state.loggedInUser));\r\n //Redirect to home page\r\n window.location.assign(\"/home\");\r\n });\r\n };\r\n\r\n returnSignIn = () => {\r\n return
{this.returnSignInBlock(this.state.loggedInUser)}
;\r\n };\r\n\r\n calculateUserName = (user) => {\r\n if (user.firstName && user.lastName) {\r\n return user.firstName + \" \" + user.lastName;\r\n }\r\n else if ( user.firstName ) {\r\n return user.firstName;\r\n }\r\n else if ( user.lastName) {\r\n return user.lastName;\r\n }\r\n\r\n return \"Member\";\r\n }\r\n\r\n returnSignInBlock(loggedInUser) {\r\n if (loggedInUser && loggedInUser.isAuthenticated === true) {\r\n return (\r\n
\r\n \r\n \r\n {this.getNotificationsMenu(loggedInUser)}\r\n {/* October 2024 - Harsha Hammika - Journal notifications have been discontinued. Therefore, this [file or function] is no longer utilized. */}\r\n {/* {this.getJournalNotificationsMenu(loggedInUser)} */}\r\n {this.getAdminMenu(loggedInUser)}\r\n \r\n Sign Out\r\n \r\n \r\n \r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n \r\n \r\n {({ showModal }) => (\r\n \r\n showModal(Login)}\r\n >\r\n Sign In\r\n \r\n \r\n )}\r\n \r\n
\r\n );\r\n }\r\n }\r\n\r\n getAdminMenu(loggedInUser) {\r\n if(loggedInUser.isAdminUser) {\r\n return (\r\n \r\n SBLC Admin\r\n \r\n );\r\n }\r\n }\r\n\r\n getNotificationsMenu(loggedInUser) {\r\n return (\r\n \r\n window.location = '/home/notifications'} >\r\n Manage Book Notifications\r\n \r\n \r\n )\r\n }\r\n\r\n getJournalNotificationsMenu(loggedInUser) {\r\n return (\r\n window.location = '/home/journalNotifications'}>\r\n Manage Journal Notifications\r\n \r\n )\r\n }\r\n\r\n onAdminClick = () => {\r\n window.location = '/admin';\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n );\r\n }\r\n}\r\n\r\nexport { Header };\r\n","import * as React from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport Moment from 'moment';\r\n\r\nimport './footerStyles.css';\r\n\r\nexport const Footer = ({ match }) => (\r\n
\r\n
\r\n
\r\n ©{Moment().year()} Society of Biblical Literature\r\n
\r\n
\r\n
\r\n
\r\n
\r\n About\r\n
\r\n
\r\n RBL\r\n
\r\n
\r\n Publishers\r\n
\r\n
\r\n Sponsors\r\n
\r\n
\r\n Contact\r\n
\r\n
\r\n
\r\n
\r\n);\r\n","import * as React from 'react';\r\nimport { Component } from 'react';\r\n\r\nimport './filterBarStyles.css';\r\n\r\nexport const FilterBar = (props) => (\r\n
\r\n
Filter
\r\n
\r\n
\r\n
Content Type
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
Years
\r\n
\r\n
\r\n
\r\n props.onFilterClick('twentyTwentyOneToPresent')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('twentySixteenToTwentyTwenty')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('twentyElevenToTwentyFifteen')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('twoThousandSixToTwentyTen')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('twoThousandOneToTwoThousandFive')}\r\n />\r\n \r\n
\r\n {!props.isSeeMoreYearsHidden && }\r\n
\r\n
\r\n
\r\n);\r\n\r\nclass MoreYears extends Component {\r\n render() {\r\n return (\r\n
\r\n {\r\n \r\n }\r\n
\r\n )\r\n }\r\n}\r\n\r\nconst MoreYearsDiv = (props) => (\r\n
\r\n
\r\n props.onFilterClick('ninetySixToTwoThousand')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('ninetyOneToNinetyFive')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('eightySixToNinety')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('eightyOneToEightyFive')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('seventySixToEighty')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('seventyOneToSeventyFive')}\r\n />\r\n \r\n
\r\n
\r\n props.onFilterClick('uptoSeventy')}\r\n />\r\n \r\n
\r\n {/*
\r\n props.showLessYears()}>See Less\r\n
*/}\r\n
\r\n)","export default \"data:image/png;base64,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\"","import * as React from \"react\";\r\nimport { SearchResultConferencePaper } from \"../componentsBarrel\";\r\nimport { SearchResultBook } from \"../componentsBarrel\";\r\nimport ConferencePaperImage from \"../../Assets/Images/Paper-standard-image.png\";\r\n// import TwoThousandImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-AMcover.png\";\r\n// import TwoThousandOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-AMcover.png\";\r\n// import TwoThousandTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-AMcover.png\";\r\n// import TwoThousandThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-AMcover.png\";\r\n// import TwoThousandFourImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-AMCover.png\";\r\n// import TwoThousandFiveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-AMCover.png\";\r\n// import TwoThousandSixImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-AMcover.png\";\r\n// import TwoThousandSevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-AMcover.png\";\r\n// import TwoThousandEightImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-AMcover.png\";\r\n// import TwoThousandNineImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-AMcover.png\";\r\n// import TwoThousandTenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-AMcover.png\";\r\n// import TwoThousandElevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-AMcover.png\";\r\n// import TwoThousandTwelveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-AMcover.png\";\r\n// import TwoThousandThirteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-AMcover.png\";\r\n// import TwoThousandFourteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-AMcover.png\";\r\n// import TwoThousandFifteenImageA from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-AMcover.png\";\r\n// import TwoThousandSixteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-AMcover.png\";\r\n// import TwoThousandSeventeenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-AMcover.png\";\r\n// import TwoThousandEighteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-AMcover.png\";\r\n// import TwoThousandNineteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-AMcover.jpg\";\r\n// import TwoThousandTwentyImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2020-AMcover.png\";\r\n// import TwoThousandTwentyOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2021-AMcover.png\";\r\n// import TwoThousandTwentyTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-AMcover.png\";\r\n// import TwoThousandTwentyThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2023-AMcover.png\";\r\n\r\n// import TwoThousandImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-IMcover.jpg\";\r\n// import TwoThousandOneImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-IMcover.jpg\";\r\n// import TwoThousandTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-IMcover.jpg\";\r\n// import TwoThousandThreeImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-IMcover.jpg\";\r\n// import TwoThousandFourImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-IMcover.jpg\";\r\n// import TwoThousandFiveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-IMcover.jpg\";\r\n// import TwoThousandSixImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-IMcover.jpg\";\r\n// import TwoThousandSevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-IMcover.jpg\";\r\n// import TwoThousandEightImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-IMcover.jpg\";\r\n// import TwoThousandNineImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-IMcover.jpg\";\r\n// import TwoThousandTenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-IMcover.jpg\";\r\n// import TwoThousandElevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-IMcover.jpg\";\r\n// import TwoThousandTwelveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-IMcover.jpg\";\r\n// import TwoThousandThirteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-IMcover.jpg\";\r\n// import TwoThousandFourteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-IMcover.jpg\";\r\n// import TwoThousandFifteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-IMcover.jpg\";\r\n// import TwoThousandSixteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-IMcover.jpg\";\r\n// import TwoThousandSeventeenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-IMcover.jpg\";\r\n// import TwoThousandEighteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-IMcover.jpg\";\r\n// import TwoThousandNineteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-IMcover.png\";\r\n// import TwoThousandTwentyTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-IMcover.png\";\r\n// import TwoThousandTwentyThreeImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2023-IMcover.png\";\r\n\r\nimport \"./searchResultsListStyles.css\";\r\n\r\nexport const SearchResultsList = props => (\r\n
\r\n {props.searchResults.map((searchResultItem, index) => {\r\n function returnSearchResult() {\r\n let result;\r\n\r\n switch (searchResultItem.type) {\r\n case \"ConferencePaper\":\r\n result = (\r\n \r\n );\r\n break;\r\n case \"Book\":\r\n result = (\r\n \r\n );\r\n break;\r\n case \"Review\":\r\n result = (\r\n \r\n );\r\n break;\r\n default:\r\n result = (\r\n \r\n );\r\n }\r\n\r\n return result;\r\n }\r\n\r\n function returnImage(year, meetingType) {\r\n if (meetingType === \"International\") {\r\n if (year === 2000) {\r\n return TwoThousandImageIM;\r\n } else if (year === 2001) {\r\n return TwoThousandOneImageIM;\r\n } else if (year === 2002) {\r\n return TwoThousandTwoImageIM;\r\n } else if (year === 2003) {\r\n return TwoThousandThreeImageIM;\r\n } else if (year === 2004) {\r\n return TwoThousandFourImageIM;\r\n } else if (year === 2005) {\r\n return TwoThousandFiveImageIM;\r\n } else if (year === 2006) {\r\n return TwoThousandSixImageIM;\r\n } else if (year === 2007) {\r\n return TwoThousandSevenImageIM;\r\n } else if (year === 2008) {\r\n return TwoThousandEightImageIM;\r\n } else if (year === 2009) {\r\n return TwoThousandNineImageIM;\r\n } else if (year === 2010) {\r\n return TwoThousandTenImageIM;\r\n } else if (year === 2011) {\r\n return TwoThousandElevenImageIM;\r\n } else if (year === 2012) {\r\n return TwoThousandTwelveImageIM;\r\n } else if (year === 2013) {\r\n return TwoThousandThirteenImageIM;\r\n } else if (year === 2014) {\r\n return TwoThousandFourteenImageIM;\r\n } else if (year === 2015) {\r\n return TwoThousandFifteenImageIM;\r\n } else if (year === 2016) {\r\n return TwoThousandSixteenImageIM;\r\n } else if (year === 2017) {\r\n return TwoThousandSeventeenImageIM;\r\n } else if (year === 2018) {\r\n return TwoThousandEighteenImageIM;\r\n } else if (year === 2019) {\r\n return TwoThousandNineteenImageIM;\r\n } else if (year === 2022) {\r\n return TwoThousandTwentyTwoImageIM;\r\n } else if (year === 2023) {\r\n return TwoThousandTwentyThreeImageIM;\r\n } else {\r\n return ConferencePaperImage;\r\n }\r\n } else if (meetingType === \"Annual\") {\r\n if (year === 2000) {\r\n return TwoThousandImageAM;\r\n } else if (year === 2001) {\r\n return TwoThousandOneImageAM;\r\n } else if (year === 2002) {\r\n return TwoThousandTwoImageAM;\r\n } else if (year === 2003) {\r\n return TwoThousandThreeImageAM;\r\n } else if (year === 2004) {\r\n return TwoThousandFourImageAM;\r\n } else if (year === 2005) {\r\n return TwoThousandFiveImageAM;\r\n } else if (year === 2006) {\r\n return TwoThousandSixImageAM;\r\n } else if (year === 2007) {\r\n return TwoThousandSevenImageAM;\r\n } else if (year === 2008) {\r\n return TwoThousandEightImageAM;\r\n } else if (year === 2009) {\r\n return TwoThousandNineImageAM;\r\n } else if (year === 2010) {\r\n return TwoThousandTenImageAM;\r\n } else if (year === 2011) {\r\n return TwoThousandElevenImageAM;\r\n } else if (year === 2012) {\r\n return TwoThousandTwelveImageAM;\r\n } else if (year === 2013) {\r\n return TwoThousandThirteenImageAM;\r\n } else if (year === 2014) {\r\n return TwoThousandFourteenImageAM;\r\n } else if (year === 2015) {\r\n return TwoThousandFifteenImageA;\r\n } else if (year === 2016) {\r\n return TwoThousandSixteenImageAM;\r\n } else if (year === 2017) {\r\n return TwoThousandSeventeenImageAM;\r\n } else if (year === 2018) {\r\n return TwoThousandEighteenImageAM;\r\n } else if (year === 2019) {\r\n return TwoThousandNineteenImageAM;\r\n } else if (year === 2020) {\r\n return TwoThousandTwentyImageAM;\r\n } else if (year === 2021) {\r\n return TwoThousandTwentyOneImageAM;\r\n } else if (year === 2022) {\r\n return TwoThousandTwentyTwoImageAM;\r\n } else if (year === 2023) {\r\n return TwoThousandTwentyThreeImageAM;\r\n } else {\r\n return ConferencePaperImage;\r\n }\r\n } else {\r\n return ConferencePaperImage;\r\n }\r\n }\r\n\r\n return returnSearchResult();\r\n })}\r\n
\r\n);\r\n","import * as React from \"react\";\r\nimport { SearchComponent } from \"../../Components/componentsBarrel\";\r\n\r\nimport \"./searchContainerStyles.css\";\r\n\r\nexport class SearchContainer extends React.Component {\r\n returnSearchComponent = () => {\r\n if (this.props.resetLocalStorage === \"true\") {\r\n sessionStorage.setItem(\"searchDropdownValue\", \"All\");\r\n }\r\n\r\n if (this.props.detailsSearchTerm) {\r\n return (\r\n \r\n );\r\n } else {\r\n return (\r\n \r\n );\r\n }\r\n };\r\n\r\n resetSearchFilters = resetValue => {\r\n if (resetValue === true) {\r\n sessionStorage.setItem(\"scrollPosition\", 0);\r\n }\r\n };\r\n\r\n render() {\r\n return
{this.returnSearchComponent()}
;\r\n }\r\n}\r\n","export class BookStatusHelper {\r\n static translateStatus(statusId) {\r\n switch(statusId) {\r\n case null:\r\n case undefined:\r\n return 'None'\r\n case 0:\r\n return 'Withdrawn by Publisher'\r\n case 1:\r\n return 'Pending SBLC Approval'\r\n case 2:\r\n return 'SBLC Rejected'\r\n case 3: \r\n return 'Pending RBL Approval'\r\n case 4:\r\n return 'RBL Rejected'\r\n case 5:\r\n return 'RBL Approved'\r\n case 6:\r\n return 'RBL Published'\r\n default:\r\n return '** UNKNOWN STATUS ENCOUNTERED **'\r\n }\r\n }\r\n}\r\n\r\nexport const BookStatusFilterEnum = {\r\n All: '8',\r\n PendingSBLCApproval: '1',\r\n PendingRBLApproval: '3',\r\n PendingSubjectTag: '7',\r\n RBLApproved: '5',\r\n SBLCRejected: '2',\r\n RBLRejected: '4',\r\n Withdrawn: '0',\r\n RBLPublished: '6'\r\n}\r\n\r\nexport const BookStatusEnum = {\r\n All: 8,\r\n PendingSBLCApproval: 1,\r\n SBLCRejected: 2,\r\n PendingRBLApproval: 3,\r\n RBLRejected: 4,\r\n RBLApproved: 5,\r\n RBLPublished: 6\r\n}","import * as React from 'react';\r\nimport { SearchResultsList } from '../../Components/componentsBarrel';\r\nimport axios from 'axios';\r\nimport environment from '../../Environments/environments';\r\nimport queryString from 'query-string';\r\nimport './searchResultsPageContainerStyles.css';\r\nimport { BookStatusFilterEnum } from '../../Helpers/bookStatusHelper';\r\n\r\nexport class SearchResultsPage extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n let search = (this.props.location.search !== '') ? queryString.parse(this.props.location.search) : {};\r\n\r\n let time = this.calculateTimeFilters()\r\n let contentFilters = this.calculateContentFilters()\r\n let statusFilters = this.calculateStatusFilter()\r\n\r\n if (search.reset) {\r\n sessionStorage.setItem('scrollPosition', 0);\r\n }\r\n\r\n let otherState = {\r\n data: [],\r\n offset: 0,\r\n numTotalResults: -1,\r\n redirect: false,\r\n searchTerm: this.props.match.params.searchTerm.trim(),\r\n perPage: JSON.parse(sessionStorage.getItem('perPage')) || 20,\r\n pageSelectedIndex: search.page ? Math.max(Math.abs(JSON.parse(search.page)) - 1, 0) : 0,\r\n keywordType: search.kw ? search.kw : '',\r\n filterPending: props.filterPending,\r\n isAdmin: props.isAdmin\r\n };\r\n\r\n this.state = { ...time, ...contentFilters, ...otherState, ...statusFilters };\r\n\r\n this.updateResultsPerPage = this.updateResultsPerPage.bind(this);\r\n this.sortResults = this.sortResults.bind(this);\r\n this.loadResultsFromServer = this.loadResultsFromServer.bind(this);\r\n this.handlePageClick = this.handlePageClick.bind(this);\r\n this.renderLoaderOrSearchResults = this.renderLoaderOrSearchResults.bind(this);\r\n this.updateSearchTerm = this.updateSearchTerm.bind(this);\r\n this.handleContentTypeClick = this.handleContentTypeClick.bind(this);\r\n this.handleMeetingTypeClick = this.handleMeetingTypeClick.bind(this);\r\n }\r\n\r\n calculateTimeFilters() {\r\n let search = (this.props.location.search !== '') ? queryString.parse(this.props.location.search) : {};\r\n let time = search.time ? JSON.parse(search.time) : 0;\r\n\r\n let filters = {\r\n twentyTwentyOneToPresent: (time & 2048) > 0,\r\n twentySixteenToTwentyTwenty: (time & 1) > 0,\r\n twentyElevenToTwentyFifteen: (time & 2) > 0,\r\n twoThousandSixToTwentyTen: (time & 4) > 0,\r\n twoThousandOneToTwoThousandFive: (time & 8) > 0,\r\n ninetySixToTwoThousand: (time & 16) > 0,\r\n ninetyOneToNinetyFive: (time & 32) > 0,\r\n eightySixToNinety: (time & 64) > 0,\r\n eightyOneToEightyFive: (time & 128) > 0,\r\n seventySixToEighty: (time & 256) > 0,\r\n seventyOneToSeventyFive: (time & 512) > 0,\r\n uptoSeventy: (time & 1024) > 0\r\n }\r\n\r\n return filters;\r\n }\r\n\r\n calculateStatusFilter() {\r\n let search = (this.props.location.search !== '') ? queryString.parse(this.props.location.search) : {};\r\n\r\n let searchOverride = {}\r\n if (search.browseAll !== undefined) {\r\n searchOverride = { \r\n searchTerm: '', \r\n browseAll: true,\r\n sortTerm: search.sortTerm ? search.sortTerm : 'Created'\r\n }\r\n }\r\n\r\n return {bookStatusFilter: search.sf ? search.sf : BookStatusFilterEnum.All, ...searchOverride}\r\n }\r\n\r\n calculateContentFilters() {\r\n let search = (this.props.location.search !== '') ? queryString.parse(this.props.location.search) : {};\r\n let content = search.type ? JSON.parse(search.type) : 0;\r\n let subtype = search.subtype ? JSON.parse(search.subtype) : 0;\r\n let meettype = search.meettype ? JSON.parse(search.meettype) : 0;\r\n\r\n let filter = {\r\n allFilter: false,\r\n bookFilter: false,\r\n conferencePaperFilter: false,\r\n booksAll: true,\r\n reviewedFilter : false,\r\n notReviewedFilter: false,\r\n allMeetingFilter: true,\r\n annualMeetingFilter: false,\r\n internationalMeetingFilter: false\r\n }\r\n\r\n filter.sortTerm = search.sortTerm ? search.sortTerm : 'Relevance desc,TitleSortable'\r\n\r\n if (content === 1) {\r\n filter.bookFilter = true;\r\n filter.selectedContentTypeOption = 'bookFilter';\r\n filter.booksAll = (subtype === 0);\r\n filter.reviewedFilter = (subtype === 1);\r\n filter.notReviewedFilter = (subtype === 2);\r\n filter.searchDropdownValue = 'Books & Reviews';\r\n filter.isSeeMoreYearsHidden = false;\r\n }\r\n else if (content === 2) {\r\n filter.conferencePaperFilter = true;\r\n filter.selectedContentTypeOption = 'conferencePaperFilter';\r\n filter.allMeetingFilter = (meettype === 0);\r\n filter.annualMeetingFilter = (meettype === 1);\r\n filter.internationalMeetingFilter = (meettype === 2);\r\n filter.searchDropdownValue = 'Paper Abstracts';\r\n filter.isSeeMoreYearsHidden = true;\r\n }\r\n else {\r\n filter.allFilter = true;\r\n filter.selectedContentTypeOption = 'allFilter';\r\n filter.searchDropdownValue = 'All';\r\n filter.isSeeMoreYearsHidden = false;\r\n }\r\n\r\n sessionStorage.setItem('searchDropdownValue', filter.searchDropdownValue);\r\n\r\n return filter;\r\n }\r\n\r\n loadResultsFromServer() {\r\n let termToSearch = this.state.searchTerm;\r\n\r\n this.setState({\r\n loading: true,\r\n numTotalResults: -1\r\n });\r\n\r\n let odataSearchTermFilterQuery = '';\r\n let odataMasterQuery = '';\r\n\r\n odataSearchTermFilterQuery = \"\";\r\n\r\n let checkedBoxes = [];\r\n let yearsCheckboxFilterString = '';\r\n let contentCheckboxFilterString = '';\r\n let meetingTypeCheckboxFilterString = '';\r\n let reviewsCheckboxFilterString = '';\r\n let odataCheckboxFilterQueryYears = '';\r\n let odataCheckboxFilterQueryContent = '';\r\n let odataCheckboxFilterQueryMeetingType = '';\r\n let odataCheckboxFilterQueryReviews = '';\r\n let filterData = {\r\n twentyTwentyOneToPresent: this.state.twentyTwentyOneToPresent,\r\n twentySixteenToTwentyTwenty: this.state.twentySixteenToTwentyTwenty,\r\n twentyElevenToTwentyFifteen: this.state.twentyElevenToTwentyFifteen,\r\n twoThousandSixToTwentyTen: this.state.twoThousandSixToTwentyTen,\r\n twoThousandOneToTwoThousandFive: this.state.twoThousandOneToTwoThousandFive,\r\n ninetySixToTwoThousand: this.state.ninetySixToTwoThousand,\r\n ninetyOneToNinetyFive: this.state.ninetyOneToNinetyFive,\r\n eightySixToNinety: this.state.eightySixToNinety,\r\n eightyOneToEightyFive: this.state.eightyOneToEightyFive,\r\n seventySixToEighty: this.state.seventySixToEighty,\r\n seventyOneToSeventyFive: this.state.seventyOneToSeventyFive,\r\n uptoSeventy: this.state.uptoSeventy,\r\n bookFilter: this.state.bookFilter,\r\n allFilter: this.state.allFilter,\r\n conferencePaperFilter: this.state.conferencePaperFilter,\r\n allMeetingFilter: this.state.allMeetingFilter,\r\n annualMeetingFilter: this.state.annualMeetingFilter,\r\n internationalMeetingFilter: this.state.internationalMeetingFilter,\r\n reviewedFilter: this.state.reviewedFilter,\r\n notReviewedFilter: this.state.notReviewedFilter,\r\n boolsAll: this.state.booksAll\r\n };\r\n\r\n // add only checked checkboxes to new array\r\n for (let key in filterData) {\r\n if (filterData[key] === true) {\r\n checkedBoxes.push(key);\r\n }\r\n }\r\n\r\n // only run if there are checked filter boxes\r\n // then, map over array of only checked boxes and add correct odata filter string to array to filter search results\r\n if (checkedBoxes) {\r\n checkedBoxes.map(checkbox => {\r\n switch (checkbox) {\r\n case 'twentyTwentyOneToPresent':\r\n yearsCheckboxFilterString += '(Year ge 2021) or '\r\n break;\r\n case 'twentySixteenToTwentyTwenty':\r\n yearsCheckboxFilterString += '(Year ge 2016 and Year le 2020) or ';\r\n break;\r\n case 'twentyElevenToTwentyFifteen':\r\n yearsCheckboxFilterString += '(Year ge 2011 and Year le 2015) or ';\r\n break;\r\n case 'twoThousandSixToTwentyTen':\r\n yearsCheckboxFilterString += '(Year ge 2006 and Year le 2010) or ';\r\n break;\r\n case 'twoThousandOneToTwoThousandFive':\r\n yearsCheckboxFilterString += '(Year ge 2001 and Year le 2005) or ';\r\n break;\r\n case 'ninetySixToTwoThousand':\r\n yearsCheckboxFilterString += '(Year ge 1996 and Year le 2000) or ';\r\n break;\r\n case 'ninetyOneToNinetyFive':\r\n yearsCheckboxFilterString += '(Year ge 1991 and Year le 1995) or ';\r\n break;\r\n case 'eightySixToNinety':\r\n yearsCheckboxFilterString += '(Year ge 1986 and Year le 1990) or ';\r\n break;\r\n case 'eightyOneToEightyFive':\r\n yearsCheckboxFilterString += '(Year ge 1981 and Year le 1985) or ';\r\n break;\r\n case 'seventySixToEighty':\r\n yearsCheckboxFilterString += '(Year ge 1976 and Year le 1980) or ';\r\n break;\r\n case 'seventyOneToSeventyFive':\r\n yearsCheckboxFilterString += '(Year ge 1971 and Year le 1975) or ';\r\n break;\r\n case 'uptoSeventy':\r\n yearsCheckboxFilterString += '(Year le 1970) or ';\r\n break;\r\n case 'bookFilter':\r\n contentCheckboxFilterString += \"(Type,'Book') or \";\r\n break;\r\n case 'allFilter':\r\n break;\r\n case 'conferencePaperFilter':\r\n contentCheckboxFilterString += \"(Type,'ConferencePaper') or \";\r\n break;\r\n case 'annualMeetingFilter':\r\n meetingTypeCheckboxFilterString += \"(MeetingType,'Annual') or \";\r\n break;\r\n case 'internationalMeetingFilter':\r\n meetingTypeCheckboxFilterString += \"(MeetingType,'International') or \";\r\n break;\r\n case 'reviewedFilter':\r\n reviewsCheckboxFilterString += \"(MeetingType,'Reviewed') or \";\r\n break;\r\n case 'notReviewedFilter':\r\n reviewsCheckboxFilterString += \"(MeetingType,'NotReviewed') or \";\r\n break;\r\n default:\r\n break;\r\n }\r\n\r\n return null;\r\n });\r\n }\r\n\r\n if(yearsCheckboxFilterString || contentCheckboxFilterString || meetingTypeCheckboxFilterString || reviewsCheckboxFilterString) {\r\n // create odata string query for them\r\n odataSearchTermFilterQuery = '&$filter=(';\r\n if (yearsCheckboxFilterString) {\r\n // we are searching for the searchTerm OR block, AND the checkBox OR block, so add an and but also\r\n // create parenthesis around checkbox OR block\r\n odataCheckboxFilterQueryYears = ' ( '; // ' and (';\r\n odataCheckboxFilterQueryYears += yearsCheckboxFilterString;\r\n // we are added \" or \" to the end of every query for checkboxes, we must chop this off of the last query\r\n odataCheckboxFilterQueryYears = odataCheckboxFilterQueryYears.slice(0, -4);\r\n // close the checkbox OR block parenthesis and also close the entire filter block parenthesis\r\n if(contentCheckboxFilterString || meetingTypeCheckboxFilterString) {\r\n odataCheckboxFilterQueryYears += ')';\r\n } else {\r\n odataCheckboxFilterQueryYears += ')';\r\n }\r\n }\r\n\r\n if (contentCheckboxFilterString) {\r\n if(!(this.state.bookFilter && this.state.conferencePaperFilter)) {\r\n // we are searching for the searchTerm OR block, AND the checkBox OR block, so add an and but also\r\n // create parenthesis around checkbox OR block\r\n if(yearsCheckboxFilterString) {\r\n odataCheckboxFilterQueryContent = ' and (contains';\r\n } else {\r\n odataCheckboxFilterQueryContent = '(contains';\r\n }\r\n odataCheckboxFilterQueryContent += contentCheckboxFilterString;\r\n // we are added \" or \" to the end of every query for checkboxes, we must chop this off of the last query\r\n odataCheckboxFilterQueryContent = odataCheckboxFilterQueryContent.slice(0, -4);\r\n // close the checkbox OR block parenthesis and also close the entire filter block parenthesis\r\n if(meetingTypeCheckboxFilterString) {\r\n odataCheckboxFilterQueryContent += ')';\r\n } else {\r\n odataCheckboxFilterQueryContent += ')';\r\n }\r\n } else {\r\n odataCheckboxFilterQueryContent = '';\r\n if(!yearsCheckboxFilterString) {\r\n odataSearchTermFilterQuery = '';\r\n }\r\n // / add parenthesis on because we anticipate having too many parenthesis below when we do odataSearchTermFilterQuery.slice(0,-1);\r\n // odataSearchTermFilterQuery += ')';\r\n }\r\n }\r\n\r\n if (meetingTypeCheckboxFilterString) {\r\n // dont do this if both are checked, if both are checked it wont do anything anyway\r\n if(!(this.state.annualMeetingFilter && this.state.internationalMeetingFilter)) {\r\n // we are searching for the searchTerm OR block, AND the checkBox OR block, so add an and but also\r\n // create parenthesis around checkbox OR block\r\n if(yearsCheckboxFilterString || contentCheckboxFilterString) {\r\n odataCheckboxFilterQueryMeetingType = ' and (contains';\r\n } else {\r\n odataCheckboxFilterQueryMeetingType = '(contains';\r\n }\r\n odataCheckboxFilterQueryMeetingType += meetingTypeCheckboxFilterString;\r\n // we are added \" or \" to the end of every query for checkboxes, we must chop this off of the last query\r\n odataCheckboxFilterQueryMeetingType = odataCheckboxFilterQueryMeetingType.slice(0, -4);\r\n // close the checkbox OR block parenthesis and also close the entire filter block parenthesis\r\n odataCheckboxFilterQueryMeetingType += ')';\r\n\r\n } else {\r\n odataCheckboxFilterQueryMeetingType = '';\r\n // add parenthesis on because we anticipate having too many parenthesis below when we do odataSearchTermFilterQuery.slice(0,-1);\r\n // odataSearchTermFilterQuery += ')';\r\n if(!(yearsCheckboxFilterString || contentCheckboxFilterString)) {\r\n odataSearchTermFilterQuery = '';\r\n }\r\n }\r\n }\r\n\r\n if (reviewsCheckboxFilterString) {\r\n // dont do this if both are checked, if both are checked it wont do anything anyway\r\n if(!(this.state.reviewedFilter && this.state.notReviewedFilter)) {\r\n // we are searching for the searchTerm OR block, AND the checkBox OR block, so add an and but also\r\n // create parenthesis around checkbox OR block\r\n if(this.state.reviewedFilter) {\r\n odataCheckboxFilterQueryReviews = ` and (BookStatusIdValue eq ${BookStatusFilterEnum.RBLPublished} and HasBookReviews eq true)`;\r\n } else if(this.state.notReviewedFilter) {\r\n odataCheckboxFilterQueryReviews = ' and (IsAcceptingVolunteers eq true)';\r\n }\r\n\r\n } else {\r\n odataCheckboxFilterQueryReviews = '';\r\n // add parenthesis on because we anticipate having too many parenthesis below when we do odataSearchTermFilterQuery.slice(0,-1);\r\n // odataSearchTermFilterQuery += ')';\r\n }\r\n }\r\n // cut off the last parenthesis of the searchTerm query because we will be adding\r\n // checkboxFilterQuery to it and closing it as we did in the above line\r\n odataSearchTermFilterQuery = odataSearchTermFilterQuery.slice(0, -1);\r\n }\r\n\r\n let bookStatusFilterQuery = ''\r\n if (this.state.bookStatusFilter !== BookStatusFilterEnum.All ) {\r\n if (this.state.bookStatusFilter === BookStatusFilterEnum.PendingSubjectTag) {\r\n bookStatusFilterQuery = ` and (BookStatusIdValue ne ${BookStatusFilterEnum.PendingSBLCApproval}`\r\n bookStatusFilterQuery += ` and BookStatusIdValue ne ${BookStatusFilterEnum.SBLCRejected}`\r\n bookStatusFilterQuery += ` and BookStatusIdValue ne ${BookStatusFilterEnum.Withdrawn}`\r\n bookStatusFilterQuery += ' and SubjectCount eq 0)'\r\n }\r\n else {\r\n bookStatusFilterQuery = ` and (BookStatusIdValue eq ${this.state.bookStatusFilter})`\r\n }\r\n }\r\n\r\n const filterPending = `&filterPending=${this.state.filterPending}`\r\n\r\n const adminParam = this.state.isAdmin === true ? '&isAdmin=true' : ''\r\n\r\n odataMasterQuery += odataSearchTermFilterQuery \r\n + odataCheckboxFilterQueryYears \r\n + odataCheckboxFilterQueryContent \r\n + odataCheckboxFilterQueryMeetingType \r\n + odataCheckboxFilterQueryReviews\r\n + bookStatusFilterQuery;\r\n\r\n if (this.state.keyword === \"subsearch\") {\r\n axios\r\n .get(`${environment.baseUrl}/odata/odatasearchresults/subject?subject=${encodeURIComponent(termToSearch)}${odataMasterQuery}${filterPending}`, {\r\n params: {\r\n $top: this.state.perPage,\r\n $skip: this.state.pageSelectedIndex * this.state.perPage,\r\n $count: 'true',\r\n $orderby: this.state.sortTerm\r\n }\r\n })\r\n .then(response => {\r\n this.setState({\r\n data: response.data.items,\r\n numTotalResults: response.data.count,\r\n loading: false,\r\n pageCount: Math.ceil(response.data.count / this.state.perPage)\r\n });\r\n })\r\n .catch(function(error) {\r\n console.log(error);\r\n });\r\n }\r\n else {\r\n axios\r\n .get(`${environment.baseUrl}/odata/odatasearchresults?searchParam=${encodeURIComponent(this.state.searchTerm)}${odataMasterQuery}${filterPending}&status=${this.state.bookStatusFilter}${adminParam}`, {\r\n params: {\r\n $top: this.state.perPage,\r\n $skip: this.state.pageSelectedIndex * this.state.perPage,\r\n $count: 'true',\r\n $orderby: this.state.sortTerm\r\n }\r\n })\r\n .then(response => {\r\n this.setState({\r\n data: response.data.items,\r\n numTotalResults: response.data.count,\r\n loading: false,\r\n pageCount: Math.ceil(response.data.count / this.state.perPage)\r\n });\r\n window.scrollTo( 0, JSON.parse(sessionStorage.getItem('scrollPosition')) );\r\n sessionStorage.setItem('scrollPosition', 0);\r\n })\r\n .catch(function(error) {\r\n console.log('Error: ', error, error.message);\r\n });\r\n }\r\n }\r\n\r\n async componentWillReceiveProps(newProps) {\r\n let time = this.calculateTimeFilters();\r\n\r\n let search = (newProps.location.search !== '') ? queryString.parse(newProps.location.search) : {};\r\n\r\n let otherState = {\r\n searchTerm: newProps.match.params.searchTerm.trim(),\r\n pageSelectedIndex: search.page ? JSON.parse(search.page) : 0\r\n };\r\n\r\n this.setState({...time, ...otherState},\r\n () => {\r\n this.loadResultsFromServer();\r\n })\r\n }\r\n\r\n async componentDidMount() {\r\n this.loadResultsFromServer();\r\n }\r\n\r\n // fires when user searches a new term while they are already on the searchResultsPage\r\n // if the user is taken to this page by searching from another page,\r\n // the searchTerm is taken from the url on page load\r\n async updateSearchTerm(searchTerm, searchDropdownValue) {\r\n this.setState({ searchTerm: searchTerm.trim(), keywordType: '' });\r\n this.resetContentTypeFilters();\r\n\r\n //Set the filter data value based on the searchDropdownValue\r\n switch(searchDropdownValue) {\r\n case \"Books & Reviews\":\r\n this.setState({\r\n bookFilter: true, \r\n allFilter: false, \r\n conferencePaperFilter: false,\r\n isSeeMoreYearsHidden: false\r\n });\r\n break;\r\n case \"Paper Abstracts\":\r\n this.setState({\r\n bookFilter: false, \r\n allFilter: false, \r\n conferencePaperFilter: true,\r\n isSeeMoreYearsHidden: true\r\n });\r\n break;\r\n default:\r\n this.setState({\r\n bookFilter: false, \r\n allFilter: true, \r\n conferencePaperFilter: false,\r\n isSeeMoreYearsHidden: false\r\n });\r\n break;\r\n }\r\n\r\n this.loadResultsFromServer();\r\n }\r\n\r\n resetAllYears() {\r\n this.setState({\r\n twentyTwentyOneToPresent: false,\r\n twentySixteenToTwentyTwenty: false,\r\n twentyElevenToTwentyFifteen: false,\r\n twoThousandSixToTwentyTen: false,\r\n twoThousandOneToTwoThousandFive: false,\r\n ninetySixToTwoThousand: false,\r\n ninetyOneToNinetyFive: false,\r\n eightySixToNinety: false,\r\n eightyOneToEightyFive: false,\r\n seventySixToEighty: false,\r\n seventyOneToSeventyFive: false,\r\n uptoSeventy: false\r\n });\r\n }\r\n\r\n resetContentTypeFilters = () => {\r\n this.setState(\r\n {\r\n bookFilter: false,\r\n allFilter: true,\r\n conferencePaperFilter: false,\r\n selectedContentTypeOption: \"allFilter\",\r\n });\r\n\r\n this.sessionStorage.setItem(\"scrollPosition\", 0);\r\n }\r\n\r\n // fires when user clicks on a new page number\r\n handlePageClick(data) {\r\n let selected = data.selected;\r\n let offset = Math.ceil(selected * this.state.perPage);\r\n\r\n this.setState({ offset: offset, pageSelectedIndex: selected }, () => {\r\n this.setState({redirect:true});\r\n });\r\n };\r\n\r\n // fires when user updates the number of results per page in the select dropdown\r\n updateResultsPerPage(event, pageSelectedIndex, perPage) {\r\n let radix = 10;\r\n if (this.state.pageSelectedIndex * parseInt(event.target.value, radix) > this.state.numTotalResults) {\r\n this.setState({ pageSelectedIndex: Math.floor(this.state.numTotalResults / parseInt(event.target.value, radix)) });\r\n }\r\n this.setState({ offset: 0, perPage: parseInt(event.target.value, radix) }, () => {\r\n sessionStorage.setItem('perPage', this.state.perPage);\r\n this.loadResultsFromServer();\r\n });\r\n window.scrollTo(0, 0);\r\n };\r\n\r\n // fires when user selects a new term to sort by in the Sort By select dropdown\r\n sortResults = event => {\r\n let sortTerm = event.target.value;\r\n this.setState({ redirect: true, sortTerm: sortTerm, pageSelectedIndex: 0 }, () => {\r\n this.loadResultsFromServer();\r\n });\r\n };\r\n\r\n handleContentTypeClick = event => {\r\n let value = 'All';\r\n\r\n switch(event.currentTarget.value) {\r\n case 'bookFilter':\r\n value = 'Books & Reviews'\r\n this.resetAllYears();\r\n break;\r\n case 'conferencePaperFilter':\r\n value = \"Paper Abstracts\";\r\n this.resetAllYears();\r\n break;\r\n default:\r\n value = 'All';\r\n this.resetAllYears();\r\n break;\r\n }\r\n\r\n this.setState({ selectedContentTypeOption: event.target.value, searchDropdownValue: value }, () => {\r\n this.onFilterClick(this.state.selectedContentTypeOption);\r\n });\r\n };\r\n\r\n handleMeetingTypeClick = event => {\r\n this.onFilterClick(event.target.value);\r\n };\r\n\r\n // first when user clicks on one of the filters on the left side\r\n onFilterClick = (filterName, value) => {\r\n switch (filterName) {\r\n case 'twentyTwentyOneToPresent':\r\n this.setState({ twentyTwentyOneToPresent: !this.state.twentyTwentyOneToPresent, redirect: true });\r\n break;\r\n case 'twentySixteenToTwentyTwenty':\r\n this.setState({ twentySixteenToTwentyTwenty: !this.state.twentySixteenToTwentyTwenty, redirect: true });\r\n break;\r\n case 'twentyElevenToTwentyFifteen':\r\n this.setState({ twentyElevenToTwentyFifteen: !this.state.twentyElevenToTwentyFifteen, redirect: true });\r\n break;\r\n case 'twoThousandSixToTwentyTen':\r\n this.setState({ twoThousandSixToTwentyTen: !this.state.twoThousandSixToTwentyTen, redirect: true });\r\n break;\r\n case 'twoThousandOneToTwoThousandFive':\r\n this.setState({ twoThousandOneToTwoThousandFive: !this.state.twoThousandOneToTwoThousandFive, redirect:true });\r\n break;\r\n case 'ninetySixToTwoThousand':\r\n this.setState({ ninetySixToTwoThousand: !this.state.ninetySixToTwoThousand, redirect: true });\r\n break;\r\n case 'ninetyOneToNinetyFive':\r\n this.setState({ ninetyOneToNinetyFive: !this.state.ninetyOneToNinetyFive, redirect: true });\r\n break;\r\n case 'eightySixToNinety':\r\n this.setState({ eightySixToNinety: !this.state.eightySixToNinety, redirect: true });\r\n break;\r\n case 'eightyOneToEightyFive':\r\n this.setState({ eightyOneToEightyFive: !this.state.eightyOneToEightyFive, redirect: true });\r\n break;\r\n case 'seventySixToEighty':\r\n this.setState({ seventySixToEighty: !this.state.seventySixToEighty, redirect: true });\r\n break;\r\n case 'seventyOneToSeventyFive':\r\n this.setState({ seventyOneToSeventyFive: !this.state.seventyOneToSeventyFive, redirect: true });\r\n break;\r\n case 'uptoSeventy':\r\n this.setState({ uptoSeventy: !this.state.uptoSeventy, redirect: true });\r\n break;\r\n case 'bookFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Books & Reviews\");\r\n this.setState({ \r\n bookFilter: true, \r\n allFilter: false, \r\n conferencePaperFilter: false,\r\n annualMeetingFilter: false, \r\n internationalMeetingFilter: false,\r\n booksAll: true,\r\n reviewedFilter: false,\r\n notReviewedFilter: false,\r\n searchDropdownValue: 'Books & Reviews',\r\n redirect: true\r\n });\r\n break;\r\n case 'conferencePaperFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Paper Abstracts\");\r\n this.setState({ \r\n conferencePaperFilter: true, \r\n allFilter: false, \r\n bookFilter: false, \r\n reviewedFilter: false, \r\n allMeetingFilter: true,\r\n annualMeetingFilter: false,\r\n internationalMeetingFilter: false,\r\n searchDropdownValue: 'Paper Abstracts',\r\n redirect: true\r\n });\r\n break;\r\n case 'annualMeetingFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Paper Abstracts\");\r\n this.setState({ \r\n annualMeetingFilter: true, \r\n internationalMeetingFilter: false, \r\n allMeetingFilter: false,\r\n searchDropdownValue: 'Paper Abstracts',\r\n redirect: true\r\n });\r\n break;\r\n case 'internationalMeetingFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Paper Abstracts\");\r\n this.setState({ \r\n internationalMeetingFilter: true,\r\n annualMeetingFilter: false, \r\n allMeetingFilter: false,\r\n searchDropdownValue: 'Paper Abstracts',\r\n redirect: true\r\n });\r\n break;\r\n case 'allMeetingFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Paper Abstracts\");\r\n this.setState({ \r\n allMeetingFilter: false,\r\n annualMeetingFilter: false, \r\n internationalMeetingFilter: false, \r\n searchDropdownValue: 'Paper Abstracts',\r\n redirect: true\r\n });\r\n break;\r\n case 'booksAll':\r\n sessionStorage.setItem('searchDropdownValue', \"Books & Reviews\");\r\n this.setState({\r\n reviewedFilter: false,\r\n notReviewedFilter: false,\r\n booksAll: true,\r\n searchDropdownValue: 'Books & Reviews',\r\n redirect: true\r\n });\r\n break;\r\n case 'reviewedFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Books & Reviews\");\r\n this.setState({ \r\n reviewedFilter: true,\r\n notReviewedFilter: false,\r\n booksAll: false,\r\n searchDropdownValue: 'Books & Reviews',\r\n redirect: true\r\n });\r\n break;\r\n case 'notReviewedFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Books & Reviews\");\r\n this.setState({ \r\n notReviewedFilter: true,\r\n reviewedFilter: false,\r\n booksAll: false,\r\n searchDropdownValue: 'Books & Reviews',\r\n redirect: true\r\n });\r\n break;\r\n case 'bookStatusFilter':\r\n this.setState({bookStatusFilter: value, redirect: true})\r\n break;\r\n case '':\r\n //Reload data from server after resetting the filter data\r\n this.loadResultsFromServer();\r\n break;\r\n default:\r\n sessionStorage.setItem('searchDropdownValue', \"All\");\r\n this.setState({ \r\n allFilter: true, \r\n conferencePaperFilter: false, \r\n bookFilter: false, \r\n reviewedFilter: false,\r\n annualMeetingFilter: false, \r\n internationalMeetingFilter: false,\r\n searchDropdownValue: 'Books & Reviews',\r\n redirect: true\r\n });\r\n break;\r\n }\r\n\r\n this.setState({ pageSelectedIndex: 0 });\r\n };\r\n\r\n displayShowingText(pageSelectedIndex, perPage, totalNumResults, searchTerm, dataLength) {\r\n if (totalNumResults < 0) {\r\n return ''\r\n }\r\n \r\n if (totalNumResults > 0) {\r\n return `Showing ${pageSelectedIndex * perPage + 1}-${pageSelectedIndex * perPage +\r\n (dataLength || perPage)} of ${totalNumResults} results for \"${decodeURIComponent(searchTerm)}\"`;\r\n }\r\n else {\r\n return `No results found for \"${decodeURIComponent(searchTerm)}\"`;\r\n }\r\n };\r\n\r\n onSearchResultClick = () => {\r\n const scrollPosition = document.scrollingElement.scrollTop;\r\n\r\n sessionStorage.setItem('scrollPosition', scrollPosition);\r\n sessionStorage.setItem('selectedContentTypeOption', JSON.stringify(this.state.selectedContentTypeOption));\r\n sessionStorage.setItem('perPage', this.state.perPage);\r\n\r\n this.setSearchDropdownValueToSessionStorage();\r\n };\r\n\r\n setSearchDropdownValueToSessionStorage() {\r\n var selectedContentTypeOption = JSON.parse(sessionStorage.getItem('selectedContentTypeOption'));\r\n switch (selectedContentTypeOption) {\r\n case \"bookFilter\":\r\n this.setState({searchDropdownValue: 'Books & Reviews'});\r\n break;\r\n case \"conferencePaperFilter\":\r\n this.setState({searchDropdownValue: 'Paper Abstracts'});\r\n break;\r\n default:\r\n this.setState({searchDropdownValue: 'All'});\r\n break;\r\n }\r\n };\r\n\r\n renderLoaderOrSearchResults = () => {\r\n if (this.state.loading) {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n var term = this.state.keywordType === 'subsearch' ? '' : this.state.searchTerm;\r\n\r\n let type = this.determineType();\r\n\r\n return \r\n };\r\n\r\n determineType() {\r\n if ( this.state.bookFilter === true ) {\r\n return 1;\r\n }\r\n\r\n if( this.state.conferencePaperFilter === true ) {\r\n return 2;\r\n }\r\n\r\n return 0;\r\n }\r\n\r\n generateRedirect() {\r\n return this.props.getRedirect(this);\r\n }\r\n\r\n render() {\r\n if ( this.state.redirect ) {\r\n this.setState({redirect: false}, () => window.location = this.generateRedirect());\r\n return \"\";\r\n }\r\n\r\n return this.props.calculateSearchComponent(this);\r\n }\r\n}\r\n","import React from 'react'\r\nimport { SearchResultsPage } from '../SearchResultsPage/searchResultsPageContainer'\r\nimport { SearchResultsPageComponent } from '../../Components/componentsBarrel'\r\n\r\nexport class SearchResultsLandingPage extends React.Component {\r\n\r\n calculateSearchComponent = (host) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n getRedirect = (host) => {\r\n let url = '/home/searchResults/' + host.state.searchTerm.trim().replace(/\\//g, '%2F');\r\n url += '?page=' + (host.state.pageSelectedIndex + 1);\r\n \r\n let time = 0;\r\n time = (host.state.twentyTwentyOneToPresent) ? time | 2048 : time;\r\n time = (host.state.twentySixteenToTwentyTwenty) ? time | 1 : time;\r\n time = (host.state.twentyElevenToTwentyFifteen) ? time | 2 : time;\r\n time = (host.state.twoThousandSixToTwentyTen) ? time | 4 : time;\r\n time = (host.state.twoThousandOneToTwoThousandFive) ? time | 8 : time;\r\n time = (host.state.ninetySixToTwoThousand) ? time | 16 : time;\r\n time = (host.state.ninetyOneToNinetyFive) ? time | 32 : time;\r\n time = (host.state.eightySixToNinety) ? time | 64 : time;\r\n time = (host.state.eightyOneToEightyFive) ? time | 128 : time;\r\n time = (host.state.seventySixToEighty) ? time | 256 : time;\r\n time = (host.state.seventyOneToSeventyFive) ? time | 512 : time;\r\n time = (host.state.uptoSeventy) ? time | 1024 : time;\r\n \r\n url += \"&time=\" + time;\r\n \r\n let type = 0;\r\n if ( host.state.bookFilter === true ) {\r\n type = 1;\r\n let subType = host.state.reviewedFilter ? 1 : host.state.notReviewedFilter ? 2 : 0;\r\n url += \"&type=\" + type + \"&subtype=\" + subType;\r\n }\r\n else if ( host.state.conferencePaperFilter === true ) {\r\n type = 2;\r\n let meettype = host.state.annualMeetingFilter ? 1 : host.state.internationalMeetingFilter ? 2 : 0;\r\n url += \"&type=\" + type + \"&meettype=\" + meettype;\r\n }\r\n else {\r\n url += \"&type=\" + type;\r\n }\r\n\r\n if ( host.state.sortTerm ) {\r\n url += \"&sortTerm=\" + host.state.sortTerm\r\n }\r\n \r\n if ( host.state.keywordType !== '' ) {\r\n url += \"&kw=subsearch&reset=true\";\r\n }\r\n return url;\r\n \r\n }\r\n\r\n getDisplayCreatedAndStatus = () => {}\r\n \r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { AdminFilterBar } from '../componentsBarrel';\r\nimport { AdminSearchComponent } from '../componentsBarrel';\r\nimport ReactPaginate from 'react-paginate';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport './adminSearchResultsPageComponent.css';\r\n\r\nexport const AdminSearchResultsPageComponent = (props) => (\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {props.displayShowingText(props.pageSelectedIndex, props.perPage, props.numTotalResults, props.searchTerm, props.filterData.data.length)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{props.renderLoaderOrSearchResults()}
\r\n
\r\n ...}\r\n breakClassName={'break-me'}\r\n pageCount={props.pageCount}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n onPageChange={props.handlePageClick}\r\n containerClassName={'pagination'}\r\n subContainerClassName={'pages pagination'}\r\n activeClassName={'active'}\r\n forcePage={props.pageSelectedIndex}\r\n />\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n);","import axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\n\r\nexport function guardAdmin (proposedJSX) {\r\n setTimeout(validateAdmin, 500)\r\n return proposedJSX\r\n}\r\n\r\nfunction validateAdmin() {\r\n let user = null;\r\n \r\n if(sessionStorage.getItem('loggedInUser')) {\r\n user = JSON.parse(sessionStorage.getItem('loggedInUser'));\r\n }\r\n\r\n //console.debug('USER USER: ', user)\r\n\r\n if ( !user || user.isAuthenticated === false || user.isAdminUser === false || !user.token) {\r\n window.location = '/';\r\n }\r\n\r\n if (user) {\r\n axios.post(`${environment.baseUrl}/api/token/checktoken`, {token: user.token})\r\n .then(response => {\r\n if (response.data.success === false) {\r\n console.error('Error checking: ', response.data.message)\r\n alert('Error checking token: ' + response.data.message)\r\n window.location = '/'\r\n return\r\n }\r\n\r\n //console.debug('valid')\r\n })\r\n .catch(error => {\r\n console.error('Internal error: ', error)\r\n\r\n if (error.includes(\"Request aborted\") == false) {\r\n window.location = '/'\r\n }\r\n })\r\n }\r\n}\r\n","import React from 'react'\r\nimport { SearchResultsPage } from '../SearchResultsPage/searchResultsPageContainer'\r\nimport {AdminSearchResultsPageComponent} from '../../Components/AdminSearchResultsPageComponent/adminSearchResultsPageComponent'\r\nimport { guardAdmin } from '../../Components/Admin/admin-base'\r\nimport { BookStatusHelper } from '../../Helpers/bookStatusHelper'\r\nimport './adminSearchResultsLandingPage.css'\r\n\r\nconst BookDateStatusBlock = (props) => {\r\n if (props.created) {\r\n const created = new Date(props.created)\r\n return (\r\n
\r\n {'Entered: ' + created.toLocaleDateString() + ' ' + created.toLocaleTimeString()}\r\n \r\n
\r\n )\r\n }\r\n\r\n return ''\r\n}\r\n\r\nconst BookStatusDisplay = (props) => {\r\n if (props.bookStatusId===null)\r\n {\r\n return ''\r\n }\r\n\r\n return (\r\n
\r\n {BookStatusHelper.translateStatus(props.bookStatusId)}\r\n
\r\n )\r\n}\r\n\r\nexport class AdminSearchResultsLandingPage extends React.Component {\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n }\r\n\r\n calculateSearchComponent = (host) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n getRedirect = (host) => {\r\n\r\n let searchTerm = host.state.searchTerm.trim().replace(/\\//g, '%2F')\r\n if (host.state.browseAll) {\r\n searchTerm = 'all'\r\n }\r\n\r\n let url = '/admin/searchResults/' + searchTerm\r\n url += '?page=' + (host.state.pageSelectedIndex + 1);\r\n\r\n let time = 0;\r\n time = (host.state.twentyTwentyOneToPresent) ? time | 2048 : time;\r\n time = (host.state.twentySixteenToTwentyTwenty) ? time | 1 : time;\r\n time = (host.state.twentyElevenToTwentyFifteen) ? time | 2 : time;\r\n time = (host.state.twoThousandSixToTwentyTen) ? time | 4 : time;\r\n time = (host.state.twoThousandOneToTwoThousandFive) ? time | 8 : time;\r\n time = (host.state.ninetySixToTwoThousand) ? time | 16 : time;\r\n time = (host.state.ninetyOneToNinetyFive) ? time | 32 : time;\r\n time = (host.state.eightySixToNinety) ? time | 64 : time;\r\n time = (host.state.eightyOneToEightyFive) ? time | 128 : time;\r\n time = (host.state.seventySixToEighty) ? time | 256 : time;\r\n time = (host.state.seventyOneToSeventyFive) ? time | 512 : time;\r\n time = (host.state.uptoSeventy) ? time | 1024 : time;\r\n\r\n url += \"&time=\" + time;\r\n\r\n url += \"&type=1\";\r\n\r\n url += `&sf=${host.state.bookStatusFilter}`\r\n\r\n let subType = host.state.reviewedFilter ? 1 : host.state.notReviewedFilter ? 2 : 0;\r\n url += \"&subtype=\" + subType;\r\n\r\n if ( host.state.sortTerm ) {\r\n url += \"&sortTerm=\" + host.state.sortTerm\r\n }\r\n\r\n if ( host.state.keywordType !== '' ) {\r\n url += \"&kw=subsearch&reset=true\";\r\n }\r\n\r\n if (host.state.browseAll) {\r\n url += \"&browseAll\"\r\n }\r\n \r\n return url;\r\n }\r\n \r\n getCreatedAndStatusBlock = (item) => {\r\n return \r\n }\r\n \r\n render() {\r\n return guardAdmin(\r\n \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { BookDetails } from '../../Components/componentsBarrel'\r\nimport { SearchContainer } from '../containersBarrel'\r\nimport { BookStatusEnum } from '../../Helpers/bookStatusHelper'\r\n\r\nexport class BookDetailsContainer extends React.Component {\r\n\r\n getBookEditLink = (host) => {}\r\n\r\n returnVolunteerEditLink = (host) => {\r\n if (host.state.bookData.isAcceptingVolunteers === true\r\n && (host.state.bookData.bookStatusId === BookStatusEnum.RBLApproved || host.state.bookData.bookStatusId === BookStatusEnum.RBLPublished)) {\r\n return (\r\n
\r\n
\r\n {host.returnVolunteerLink(\"\", host.state.loggedInUser)}\r\n
\r\n );\r\n }\r\n }\r\n\r\n getSearchContainer = (host) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n getBookStatusDisplay = (host) =>{}\r\n \r\n render() {\r\n return (\r\n 'BackgroundImageSection BackgroundEmoryImage'}\r\n getBookStatusDisplay = {this.getBookStatusDisplay}\r\n />\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { BookDetails, AdminSearchComponent } from '../../Components/componentsBarrel'\r\nimport { guardAdmin } from '../../Components/Admin/admin-base'\r\nimport { BookStatusHelper } from '../../Helpers/bookStatusHelper'\r\n\r\nexport class AdminBookDetailsContainer extends React.Component {\r\n\r\n getSearchContainer = (host) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n getBookEditLink = (host) => {\r\n return (\r\n
\r\n \r\n Edit Book Detail\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n getVolunteerEditLink = (host) => {}\r\n\r\n calculateBookStatusBlock(host) {\r\n return (\r\n
\r\n Status: {BookStatusHelper.translateStatus(host.state.bookData.bookStatusId)}\r\n
\r\n )\r\n }\r\n\r\n getBookStatusDisplay = (host) => {\r\n const created = new Date(host.state.bookData.created)\r\n return (\r\n
\r\n
\r\n Entered: {created.toLocaleDateString()} {created.toLocaleTimeString()}\r\n
\r\n {this.calculateBookStatusBlock(host)}\r\n
\r\n )\r\n }\r\n \r\n render() {\r\n return guardAdmin(\r\n 'BackgroundImageSection BackgroundNoImage'}\r\n getBookStatusDisplay = {this.getBookStatusDisplay}\r\n />\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { BusyIndicator } from '../Components/componentsBarrel'\r\n\r\nimport './busyIndicator.css'\r\n\r\nexport const getBusyIndicator = (isLoading, alt) => {\r\n if (isLoading) {\r\n return
\r\n \r\n
\r\n }\r\n else {\r\n return alt;\r\n }\r\n}\r\n","export class DefaultConfig {\r\n static getDefaultConfig() {\r\n const user = (typeof sessionStorage != 'undefined') ? JSON.parse(sessionStorage.getItem('loggedInUser')) : {}\r\n\r\n let config = {\r\n headers: {\r\n 'Authorization': 'Bearer ' + user.token\r\n }\r\n }\r\n\r\n return config\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\n\r\nexport class ExpertiseModalContent extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n expertiseCategoryTypes: [],\r\n expertiseCategories: [],\r\n experise: [],\r\n subjectInfo: [],\r\n bookSubjects: props.subjects ? props.subjects : [],\r\n loading: true,\r\n categoryTypeIndex: -1,\r\n expertiseCategoryIndex: -1,\r\n selectedAvailableSubjectIndex: 0,\r\n selectedBookSubjectIndex: 0\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n const url = environment.baseUrl + '/api/subjects/enumerateExpertise'\r\n\r\n axios\r\n .get(url, this.config)\r\n .then(response => {\r\n let data = response.data\r\n\r\n this.setState({\r\n expertiseCategoryTypes: data.expertiseCategoryTypes,\r\n expertiseCategories: data.expertiseCategories,\r\n subjectInfo: data.subjectInfo,\r\n loading: false,\r\n categoryTypeIndex: 0,\r\n expertiseCategoryIndex: 0,\r\n selectedAvailableSubjectIndex: 0,\r\n selectedBookSubjectIndex: 0\r\n })\r\n })\r\n .catch(error => {\r\n console.error(error.response.data)\r\n alert(error.response.data)\r\n })\r\n }\r\n\r\n async componentWillReceiveProps(newProps) {\r\n this.setState({\r\n bookSubjects: newProps.subjects ? newProps.subjects : []\r\n })\r\n }\r\n\r\n onTypeChange = (e) => {\r\n let index = parseInt(e.target.name, 10)\r\n this.setState({\r\n categoryTypeIndex: index,\r\n expertiseCategoryIndex: 0,\r\n selectedAvailableSubjectIndex: 0\r\n })\r\n }\r\n\r\n onCategoryChange = (e) => {\r\n this.setState({\r\n expertiseCategoryIndex: e.target.selectedIndex\r\n })\r\n }\r\n\r\n onAvailableSelectionChange = (e) => {\r\n this.setState({\r\n selectedAvailableSubjectIndex: e.target.selectedIndex\r\n })\r\n }\r\n\r\n onAddSubjectToBook = (e) => {\r\n e.preventDefault()\r\n if (this.state.selectedAvailableSubjectIndex < 0) {\r\n return;\r\n }\r\n\r\n let available = this.calculateSubjects();\r\n let subjectId = '';\r\n\r\n if (this.state.selectedAvailableSubjectIndex < available.length)\r\n {\r\n subjectId = available[this.state.selectedAvailableSubjectIndex].subjectId\r\n }else\r\n {\r\n subjectId = available[0].subjectId\r\n }\r\n\r\n if (this.isSubjectAlreadySelected(subjectId)) {\r\n alert('Subject already assigned to the book')\r\n return\r\n }\r\n\r\n let subject = this.state.subjectInfo.find(x => x.subjectId === subjectId)\r\n\r\n let bookSubject = {\r\n bookId: 0,\r\n subjectId: subjectId,\r\n subject: {\r\n id: subjectId,\r\n description: subject.description\r\n }\r\n }\r\n\r\n let bookSubjects = this.state.bookSubjects\r\n bookSubjects.push(bookSubject)\r\n\r\n this.setState({\r\n bookSubjects: bookSubjects,\r\n selectedBookSubjectIndex: Math.max(bookSubjects.length - 1, 0)\r\n })\r\n }\r\n\r\n isSubjectAlreadySelected(subjectId) {\r\n var subject = this.state.bookSubjects.find(x => x.subjectId === subjectId)\r\n return subject ? true : false\r\n }\r\n\r\n onRemoveSubjectFromBook = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.state.selectedBookSubjectIndex >= 0 ) {\r\n let subjects = this.state.bookSubjects\r\n subjects.splice(this.state.selectedBookSubjectIndex, 1)\r\n\r\n this.setState({\r\n bookSubjects: subjects,\r\n selectedBookSubjectIndex: Math.max(subjects.length - 1, 0)\r\n })\r\n }\r\n }\r\n\r\n onSelectedBookSubjectChange = (e) => {\r\n this.setState({\r\n selectedBookSubjectIndex: e.target.selectedIndex\r\n })\r\n }\r\n\r\n calculateChecked(index) {\r\n return this.state.categoryTypeIndex === index;\r\n }\r\n\r\n getExpertiseCategories() {\r\n let array = this.calculateCategories()\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n getAvailableSubjects() {\r\n let array = this.calculateSubjects();\r\n\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n getBookSubjects() {\r\n let array = this.calculateSelectedSubjects();\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n calculateCategories() {\r\n if (this.state.categoryTypeIndex < 0) {\r\n return [];\r\n }\r\n\r\n let type = this.state.expertiseCategoryTypes[this.state.categoryTypeIndex].expertiseCategoryTypeId;\r\n let array = [];\r\n\r\n this.state.expertiseCategories.forEach(x => {\r\n if (x.expertiseCategoryTypeId === type) {\r\n array.push(x);\r\n }\r\n })\r\n\r\n return array;\r\n }\r\n\r\n calculateSubjects() {\r\n if (this.state.expertiseCategoryIndex < 0) {\r\n return [];\r\n }\r\n\r\n let expertiseCategories = this.calculateCategories();\r\n let expertiseId = expertiseCategories[this.state.expertiseCategoryIndex].id\r\n\r\n let array = []\r\n this.state.subjectInfo.forEach(info => {\r\n if (info.expertiseCategoryId === expertiseId) {\r\n if (this.subjectAlreadySelected(info) === false) {\r\n array.push(info);\r\n }\r\n }\r\n })\r\n\r\n return array\r\n }\r\n\r\n subjectAlreadySelected(item) {\r\n for(let i = 0; i < this.state.bookSubjects.length; ++i) {\r\n let subject = this.state.bookSubjects[i]\r\n\r\n if (subject.subjectId === item.subjectId) {\r\n return true;\r\n }\r\n }\r\n \r\n return false;\r\n }\r\n\r\n calculateSelectedSubjects() {\r\n return this.state.bookSubjects\r\n }\r\n\r\n calculateSubjectDescription(subjectId) {\r\n let subject = this.state.subjectInfo.find(x => x.subjectId === subjectId)\r\n if (subject) {\r\n return `${subject.description} (${subject.expertiseCategory}: ${subject.expertiseSubCategory})`\r\n }\r\n\r\n return \"Unknown \" + subjectId\r\n }\r\n\r\n getMethodsAndTexts() {\r\n return (\r\n \r\n
\r\n {this.state.expertiseCategoryTypes.map((item, index) => {\r\n return (\r\n \r\n )\r\n })}\r\n
\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {getBusyIndicator(this.state.loading,\r\n \r\n
\r\n
\r\n {this.getMethodsAndTexts()}\r\n
\r\n\r\n
\r\n {this.getExpertiseCategories()}\r\n
\r\n\r\n
\r\n
\r\n
\r\n Available Subjects\r\n {this.getAvailableSubjects()}\r\n
\r\n\r\n
\r\n \r\n


\r\n \r\n
\r\n\r\n
\r\n Selected Subjects\r\n {this.getBookSubjects()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport {ExpertiseModalContent} from '../../Components/Expertise/expertiseModalContent'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport './bookNotifications.css'\r\n\r\nexport class BookNotifications extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n settings: [],\r\n bookSubjects: [],\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.user) {\r\n window.location = '/'\r\n }\r\n\r\n this.setState({loading: true}, () => this.loadFromServer())\r\n }\r\n\r\n loadFromServer() {\r\n if (!this.user) return\r\n // debugger;\r\n let url = `${environment.baseUrl}/api/notifications/enumerate/${this.user.sblId}`\r\n\r\n try {\r\n axios\r\n .get(url, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n let subjects = []\r\n response.data.settings.forEach(x => {\r\n subjects.push({\r\n bookId: 0,\r\n subjectId: x.subjectId,\r\n subject: x.subject\r\n })\r\n })\r\n\r\n this.setState({\r\n settings: response.data.settings,\r\n bookSubjects: subjects,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error getting notifications: ', error, error.response);\r\n alert('Error Getting Notifications:' + error);\r\n\r\n this.setState({\r\n bookSubjects: [],\r\n loading: false\r\n })\r\n })\r\n }\r\n finally {\r\n this.setState({loading: false})\r\n }\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.onClose()\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n let notifications = {\r\n sblId: this.user.sblId,\r\n settings: []\r\n }\r\n\r\n this.expertise.state.bookSubjects.forEach(x => {\r\n let notification = {\r\n sblId: this.user.sblId,\r\n subjectId: x.subjectId\r\n }\r\n\r\n notifications.settings.push(notification)\r\n })\r\n\r\n let url = `${environment.baseUrl}/api/notifications/save`\r\n\r\n axios\r\n .post(url, notifications, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n alert('Book Notifications Saved Successfully')\r\n \r\n this.props.onClose()\r\n })\r\n .catch(error => {\r\n console.error('Error saving notifications: ', error, error.response);\r\n alert('Error Saving Notifications: ' + error);\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n Manage Book Notifications\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n this.expertise = x} subjects={this.state.bookSubjects}/>\r\n
\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { BookNotifications } from './bookNotifcations'\r\nimport { ModalConsumer } from \"../Login/loginContext\";\r\nimport ModalRoot from \"../Login/loginRoot\";\r\n\r\nimport './bookNotificationsLandingPage.css'\r\n\r\nexport class BookNotificationsLandingPage extends React.Component {\r\n componentDidMount() {\r\n document.getElementById('helpaAndLoginContainer').style.visibility = 'hidden'\r\n document.getElementById('RightFooterContainer').style.visibility = 'hidden'\r\n\r\n this.showDialog.click()\r\n }\r\n\r\n onRequestClose = () => {\r\n this.props.history.goBack()\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
this.showDialog = x} onClick={() => showModal(BookNotifications, {onClose: this.onRequestClose})}>
\r\n
\r\n )}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport './adminButton.css'\r\n\r\nexport const AdminButton = props => {\r\n return (\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport axios from 'axios'\r\nimport environment from \"../../Environments/environments\";\r\nimport { Checkbox } from 'react-bootstrap';\r\nimport { AdminButton } from '../../Components/AdminButton/adminButton'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport './notificationTest.css'\r\n\r\nexport class NotificationTest extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n let alternate = environment.defaultNotificationEmail ? environment.defaultNotificationEmail : ''\r\n let user = JSON.parse(sessionStorage.getItem(\"loggedInUser\"));\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n recipient: '',\r\n alternate: alternate,\r\n bccAdmin: false,\r\n bccEmail: user.emailAddress\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n }\r\n\r\n onSubmit = async (e) => {\r\n if (this.validate()) {\r\n if (window.confirm('Are you sure you wish to trigger the weekly notification process now?')) {\r\n await this.triggerNotificationProcess()\r\n }\r\n }\r\n }\r\n\r\n async triggerNotificationProcess() {\r\n let data = {\r\n memberEmail: this.state.recipient,\r\n redirectEmail: this.state.alternate,\r\n bccEmail: this.state.bccAdmin ? this.state.bccEmail : ''\r\n }\r\n \r\n let uri = `${environment.baseUrl}/api/trigger-notifications`\r\n\r\n return axios.post(uri, data, this.config)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n alert('Process returned successfully - If any emails were found to send, they seem to have been processed successfully.')\r\n })\r\n .catch(error => {\r\n console.error('Error calling notification trigger: ', error, error.message)\r\n alert('Error calling notification trigger: ' + error.message)\r\n })\r\n }\r\n\r\n validate() {\r\n if (this.state.recipient === '') {\r\n alert('A member email address is required.')\r\n return false\r\n }\r\n\r\n const emailValidator = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\r\n let isEmailValid = emailValidator.test(this.state.recipient)\r\n\r\n if (isEmailValid === false) {\r\n alert('Email address is not valid. Please try again.')\r\n return false\r\n }\r\n\r\n if (this.state.alternate !== '') {\r\n if (emailValidator.test(this.state.alternate) === false) {\r\n alert('Alternate email address is not valid. Please try again.')\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n }\r\n\r\n onReset = (e) => {\r\n let message = \"WARNING! This will reset dates of underlying data so that no books or reviews are new enough to trigger a notification email.\\n\\nAre you sure you wish to do this?\"\r\n\r\n if (window.confirm(message)) {\r\n if (window.confirm('WARNING! This cannot be undone. Continue?')) {\r\n axios.post(`${environment.baseUrl}/api/reset-notifications/kendall`, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n alert('Reset completed successfully')\r\n })\r\n .catch(error => {\r\n console.error('Error calling notification reset: ', error, error.message)\r\n alert('Error calling notification reset: ' + error.message)\r\n })\r\n }\r\n }\r\n }\r\n\r\n handleInputChanges = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n onTriggerAuto = (e, special) => {\r\n let message = 'This will trigger the notification process but induce a failure to test the confirmation email. Continue?'\r\n\r\n if (window.confirm(message)) {\r\n axios.post(`${environment.baseUrl}/api/autotrigger-notifications/${special}`, null, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n alert('Process called.')\r\n })\r\n .catch(error => {\r\n console.error('Error calling auto-notification: ', error, error.message)\r\n alert('Error calling auto-notification: ' + error.message)\r\n })\r\n }\r\n }\r\n\r\n getAdvancedOptions() {\r\n if (process.env.REACT_APP_ENVIRONMENT === 'SBLQA' || !process.env.REACT_APP_ENVIRONMENT) {\r\n return (\r\n
\r\n
\r\n
\r\n Advanced Options (QA only)\r\n
\r\n\r\n
\r\n \r\n \r\n
\r\n\r\n
\r\n Reset Notification Records\r\n     \r\n this.onTriggerAuto(e, 'none')}>Trigger Full Notification Process\r\n     \r\n this.onTriggerAuto(e, 'failure')}>Trigger Induced Failure\r\n
\r\n
\r\n )\r\n }\r\n\r\n return ''\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n

Process Book/Review Notifications

\r\n
\r\n This page allows you to trigger the standard book notifications email for the specified member.\r\n
\r\n
\r\n\r\n
\r\n \r\n \r\n Send blind courtesy copy of generated email to you?\r\n
\r\n\r\n
\r\n Run Notification Process Now\r\n
\r\n\r\n {this.getAdvancedOptions()}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\n\r\nexport default class DataCallerBaseComponent extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.axiosHeaders = DefaultConfig.getDefaultConfig()\r\n this.user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n }\r\n}\r\n","export default \"data:image/png;base64,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\"","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport DataCallerBaseComponent from '../../Components/Core/dataCallerBaseComponent'\r\nimport journalImage from \"../../Assets/Images/book_with_image.png\";\r\nimport renderHTML from 'react-render-html';\r\n\r\nimport { RoundCheckbox } from '../../Components/componentsBarrel';\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport './journalNotifications.css'\r\n\r\nexport class JournalNotifications extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n notifications: [],\r\n journals: [],\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n if (!this.user) {\r\n window.location = '/'\r\n }\r\n\r\n this.setState({loading: true}, () => this.loadFromServer())\r\n }\r\n\r\n loadFromServer() {\r\n if (!this.user) return\r\n\r\n let promises = [\r\n this.loadJournals(),\r\n this.loadUserSelections()\r\n ]\r\n\r\n Promise.all(promises)\r\n .then(values => {\r\n this.buildJournalSelectedList(values[0], values[1])\r\n \r\n this.setState({\r\n journals: values[0],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n loadJournals() {\r\n let url = `${environment.baseUrl}/api/journals/enumerate`\r\n\r\n return axios\r\n .get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return []\r\n }\r\n\r\n return response.data.journals\r\n })\r\n .catch(error => {\r\n console.error('Error getting journals: ', error, error.response);\r\n alert('Error Getting Journals:' + error);\r\n return []\r\n })\r\n }\r\n\r\n loadUserSelections() {\r\n let url = `${environment.baseUrl}/api/journalnotifications/enumerate/${this.user.sblId}`\r\n\r\n return axios\r\n .get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return []\r\n }\r\n\r\n return response.data.notifications.settings\r\n })\r\n .catch(error => {\r\n console.error('Error getting journal notifications: ', error, error.response);\r\n alert('Error Getting Journal notifications:' + error);\r\n return []\r\n })\r\n }\r\n\r\n buildJournalSelectedList(journals, selections) {\r\n selections.forEach(selection => {\r\n let journal = journals.find(x => x.id === selection.journalId)\r\n if (journal) {\r\n journal.selected = true\r\n }\r\n })\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.onClose()\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (this.state.loading === false) {\r\n this.setState({loading: false}, () => {\r\n this.save()\r\n this.setState({loading: false})\r\n })\r\n }\r\n }\r\n\r\n async save() {\r\n let notifications = {\r\n sblId: this.user.sblId,\r\n settings: []\r\n }\r\n\r\n this.state.journals.forEach(journal => {\r\n if (journal.selected === true) {\r\n notifications.settings.push({\r\n sblId: this.user.sblId,\r\n journalId: journal.id\r\n })\r\n }\r\n })\r\n\r\n let url = `${environment.baseUrl}/api/journalnotifications/save`\r\n //debugger;\r\n await axios\r\n .post(url, notifications, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n alert('Journal notifications saved successfully.')\r\n \r\n this.props.onClose()\r\n })\r\n .catch(error => {\r\n console.error('Error saving notifications: ', error, error.response);\r\n alert('Error Saving Notifications: ' + error);\r\n })\r\n }\r\n\r\n toggleCheck = (e, index) => {\r\n this.state.journals[index].selected = !this.state.journals[index].selected\r\n }\r\n\r\n listJournals() {\r\n return (\r\n\r\n
\r\n {this.state.journals.map((journal, index) => {\r\n if(journal.isActive){\r\n return (\r\n \r\n this.toggleCheck(e, index)}\r\n />\r\n
\r\n
\r\n )\r\n }\r\n })}\r\n
\r\n )\r\n }\r\n\r\n addProtocolText(url) {\r\n if(!/http|https/.test(url)){\r\n return \"https://\" + url;\r\n }\r\n return url;\r\n }\r\n\r\n displayISSN(journal) {\r\n const issn = \r\n journal.printISSN === null && journal.onlineISSN === null\r\n ? \"\"\r\n : (ISSN: )\r\n\r\n return (\r\n \r\n {issn}\r\n\r\n {\r\n journal.printISSN !== null\r\n ? {journal.printISSN} (Print)\r\n : \"\"\r\n }\r\n {\r\n journal.onlineISSN !== null\r\n ? journal.printISSN !== null \r\n ? {journal.onlineISSN} (Online)\r\n : {journal.onlineISSN} (Online)\r\n : \"\"\r\n }\r\n \r\n )\r\n }\r\n\r\n displayUrlProtocol(journal){\r\n const pattern = new RegExp('^(https?:\\\\/\\\\/)?'+ // protocol\r\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|'+ // domain name\r\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))'+ // OR ip (v4) address\r\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*'+ // port and path\r\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?'+ // query string\r\n '(\\\\#[-a-z\\\\d_]*)?$','i'); // fragment locator \r\n\r\n if (pattern.test(journal.url)) {\r\n return {journal.title} \r\n }\r\n else {\r\n return {journal.title}\r\n }\r\n }\r\n\r\n\r\n getJournalDisplayText(journal) {\r\n const imageUrl = (journal.imageUrl !== null) ? journal.imageUrl : journalImage\r\n let issuesPerYear = journal.issuesPerYear;\r\n let issuesPerYearTxt = \"issues per year\";\r\n\r\n return (\r\n \r\n
\r\n
\r\n
\r\n

\r\n \r\n {this.displayUrlProtocol(journal)}\r\n \r\n \r\n ({journal.publisher})\r\n

\r\n\r\n

Publication Frequency\r\n : \r\n {issuesPerYear === 0 || issuesPerYear === \"\" || issuesPerYear === null \r\n ? 0 {issuesPerYearTxt}\r\n : \r\n issuesPerYear === 1 \r\n ?{journal.issuesPerYear} {issuesPerYearTxt = \"issue per year\"}\r\n :{journal.issuesPerYear} {issuesPerYearTxt} \r\n }\r\n \r\n \r\n

\r\n\r\n

\r\n {this.displayISSN(journal)} \r\n

\r\n\r\n
\r\n {renderHTML('
' + journal.description + '
')}\r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {getBusyIndicator(this.state.loading, \r\n
\r\n
\r\n Manage Journal Notifications\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n {this.listJournals()}\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n )}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { JournalNotifications } from './journalNotifications'\r\nimport { ModalConsumer } from \"../Login/loginContext\";\r\nimport ModalRoot from \"../Login/loginRoot\";\r\n\r\nimport './journalNotificationsLandingPage.css'\r\n\r\nexport class JournalNotificationsLandingPage extends React.Component {\r\n componentDidMount() {\r\n document.getElementById('helpaAndLoginContainer').style.visibility = 'hidden'\r\n document.getElementById('RightFooterContainer').style.visibility = 'hidden'\r\n\r\n this.showDialog.click()\r\n }\r\n\r\n onRequestClose = () => {\r\n this.props.history.goBack()\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
this.showDialog = x} onClick={() => showModal(JournalNotifications, {onClose: this.onRequestClose})}>
\r\n
\r\n )}\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from 'axios'\r\nimport environment from \"../../Environments/environments\";\r\nimport DataCallerBaseComponent from '../../Components/Core/dataCallerBaseComponent'\r\n\r\nimport { Checkbox } from 'react-bootstrap';\r\nimport { AdminButton } from '../../Components/AdminButton/adminButton'\r\nimport { SelectField } from '../../Components/componentsBarrel'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\n\r\nimport './journalNotificationTest.css'\r\n\r\nexport class JournalNotificationTest extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n let alternate = environment.defaultNotificationEmail ? environment.defaultNotificationEmail : ''\r\n\r\n this.journals = [{id: 0, title: 'Select an Option'}]\r\n\r\n this.state = {\r\n recipient: '',\r\n alternate: alternate,\r\n bccAdmin: false,\r\n bccEmail: this.user.emailAddress,\r\n journalId: 0,\r\n ignoreInternalStaffApproval: false,\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.setState({loading: true}, () => this.loadData())\r\n }\r\n\r\n loadData() {\r\n let promises = []\r\n\r\n promises.push(this.loadJournals())\r\n\r\n Promise.all(promises)\r\n .then(values => {\r\n this.setState({loading: false})\r\n })\r\n }\r\n\r\n loadJournals() {\r\n //debugger;\r\n return axios.get(environment.baseUrl + '/api/journals/enumerate', this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n var data = this.journals.concat(response.data.journals)\r\n this.journals = []\r\n\r\n data.forEach(x => {if (x.isActive === true) this.journals.push(x)})\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading journal data: ', error, error.response)\r\n alert('Error Loading Journal Data')\r\n\r\n this.journals = []\r\n })\r\n }\r\n\r\n onSendProductionNotification = async () => {\r\n if (this.validate() === false) {\r\n return;\r\n }\r\n\r\n if (window.confirm('Are you sure you wish to trigger the journal notification process now?')) {\r\n let data = this.getNotificationParams()\r\n data.redirectEmail = ''\r\n\r\n await this.triggerNotificationProcess(data)\r\n }\r\n }\r\n\r\n onSubmit = async (e, special) => {\r\n if (this.validate()) {\r\n let data = this.getNotificationParams()\r\n\r\n if (special === 'TEXTONLY') {\r\n if (window.confirm('This will trigger the notification but only send the text version of the email for testing purposes. Continue?')) {\r\n data.IsTextOnlyEmail = true\r\n await this.triggerNotificationProcess(data)\r\n }\r\n }\r\n else if (window.confirm('Are you sure you wish to trigger the journal notification process now?')) {\r\n await this.triggerNotificationProcess(data)\r\n }\r\n }\r\n }\r\n\r\n getNotificationParams() {\r\n let params = {\r\n memberEmail: this.state.recipient,\r\n redirectEmail: this.state.alternate,\r\n bccEmail: this.state.bccAdmin ? this.state.bccEmail : '',\r\n journalId: this.state.journalId,\r\n ignoreInternalStaffApproval: this.state.ignoreInternalStaffApproval\r\n }\r\n\r\n return params\r\n }\r\n\r\n async triggerNotificationProcess(data) {\r\n let uri = `${environment.baseUrl}/api/trigger-journal-notifications`\r\n\r\n return axios.post(uri, data, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n let message = `Process returned successfully. ${response.data.count} email(s) were sent.`\r\n alert(message)\r\n })\r\n .catch(error => {\r\n console.error('Error calling journal notification trigger: ', error, error.message)\r\n alert('Error calling journal notification trigger: ' + error.message)\r\n })\r\n }\r\n\r\n validate() {\r\n if (this.state.journalId < 1) {\r\n alert('A journal selection is required.')\r\n return false\r\n }\r\n\r\n if (this.state.recipient === '') {\r\n alert('A member email address is required.')\r\n return false\r\n }\r\n\r\n const emailValidator = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\r\n let isEmailValid = emailValidator.test(this.state.recipient)\r\n\r\n if (isEmailValid === false) {\r\n alert('Email address is not valid. Please try again.')\r\n return false\r\n }\r\n\r\n if (this.state.alternate !== '') {\r\n if (emailValidator.test(this.state.alternate) === false) {\r\n alert('Alternate email address is not valid. Please try again.')\r\n return false\r\n }\r\n }\r\n\r\n return true\r\n }\r\n\r\n handleInputChanges = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n onTriggerAuto = (e, special) => {\r\n let message = 'This will trigger the notification process. Continue?'\r\n\r\n if (special === 'failure') {\r\n message = 'This will trigger the notification process but induce a failure to test the confirmation email. Continue?'\r\n }\r\n\r\n if (window.confirm(message)) {\r\n axios.post(`${environment.baseUrl}/api/autotrigger-journal-notifications/${special}`, null, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n alert('Process called.')\r\n })\r\n .catch(error => {\r\n console.error('Error calling auto-notification: ', error, error.message)\r\n alert('Error calling auto-notification: ' + error.message)\r\n })\r\n }\r\n }\r\n\r\n getTestingOptions() {\r\n if (process.env.REACT_APP_ENVIRONMENT === 'SBLQA' || !process.env.REACT_APP_ENVIRONMENT) {\r\n return (\r\n
\r\n
\r\n
\r\n Testing Options (QA Only)\r\n
\r\n\r\n
\r\n The functions in this section are designed to assist in testing efforts. They will only appear in the QA environment.\r\n
\r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n For QA only. Send most recent issue with at least one article regardless of whether issue is approved for member notification, but only if the member with Member Email above has selected the Journal for notifications.\r\n \r\n
\r\n\r\n
\r\n
\r\n
\r\n This button processes a single notification just like the \"Send Notification\" button in the production system but diverts to the resulting notification email to the specified QA destination.\r\n
\r\n QA Send Notification\r\n
\r\n\r\n
\r\n
\r\n This button will trigger the notification process using the settings in the production \r\n section above, but will only send the text version of the email.\r\n
\r\n this.onSubmit(e, 'TEXTONLY')}>QA Send Notification - Text Only Email\r\n
\r\n\r\n
\r\n
\r\n This button will throw a coding exception to test that an error email is sent to siteadmin.\r\n
\r\n this.onTriggerAuto(e, 'failure')}>Trigger Induced Failure\r\n
\r\n\r\n
\r\n
\r\n This button will trigger the full journal notification process and divert any pending notification emails to the QA Destination address above. \r\n This process does not honor the selections in the production section above.\r\n
\r\n this.onTriggerAuto(e, 'none')}>Trigger Full Journal Notification Process\r\n
\r\n\r\n
\r\n
\r\n )\r\n }\r\n\r\n return ''\r\n }\r\n\r\n getProductionSection() {\r\n return (\r\n \r\n
\r\n

Process Journal Notifications

\r\n
\r\n This page allows you to trigger the standard journal notifications email for the specified member. A notification for the most recently approved issue of the selected journal will be sent.\r\n
\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n \r\n Send blind courtesy copy of generated email to you?\r\n
\r\n\r\n
\r\n Send Notification\r\n
\r\n
\r\n )\r\n }\r\n\r\n getRendering() {\r\n return (\r\n
\r\n
\r\n {this.getProductionSection()}\r\n {this.getTestingOptions()} \r\n
\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n {getBusyIndicator(this.state.loading,this.getRendering())}\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport Modal from 'react-modal'\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './sessionClosedDialog.css'\r\n\r\nexport class SessionClosedDialog extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n modalIsOpen: false\r\n }\r\n }\r\n\r\n onRequestClose = () => {\r\n this.closeModal()\r\n }\r\n\r\n handleSubmit = () => {\r\n this.closeModal()\r\n }\r\n\r\n showModal = (props) => {\r\n this.setState({\r\n modalIsOpen: true\r\n })\r\n }\r\n\r\n closeModal() {\r\n this.setState({\r\n modalIsOpen: false\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n

Session Closed

\r\n\r\n
\r\n
\r\n To keep your information secure, you have been signed out due to inactivity.\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { SearchContainer } from '../../Containers/containersBarrel';\r\nimport { ModalProvider } from \"../../Containers/Login/loginContext\";\r\nimport { SessionClosedDialog } from '../../Components/SessionClosed/sessionClosedDialog'\r\n\r\nimport './homeStyles.css';\r\n\r\nexport class Home extends React.Component {\r\n render() {\r\n sessionStorage.removeItem('searchDropdownValue');\r\n\r\n if (sessionStorage.getItem(\"sblc_session_timeout\")) {\r\n let self = this\r\n sessionStorage.removeItem(\"sblc_session_timeout\")\r\n setTimeout(() => {\r\n self.sessionDialog.showModal()\r\n }, 500)\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

Fostering Biblical Scholarship

\r\n \r\n\r\n
\r\n \r\n this.sessionDialog = ref}/>\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { SearchContainer } from '../../Containers/containersBarrel';\r\n\r\nimport './aboutStyles.css';\r\n\r\nexport const About = (props) => (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n About Us\r\n
\r\n

SBL Central is SBL’s response to the pressures that biblical scholars face: increased specialization of the field, increased disaggregation of scholarly publications, decreased discoverability of publications, increased strain on traditional research hubs (libraries), and lack of access to resources in many parts of the world, as well as among unaffiliated scholars and adjunct faculty.

\r\n
\r\n
\r\n

As a nonprofit academic publisher and learned society, SBL looked for the sweet spot in which everyone wins: scholars, publishers, libraries, library services, and institutions of higher education. SBL Central fills a niche not currently being served and fosters each stakeholder's success. SBL rightly serves as a catalyst, not a competitor, by creating a mutually beneficial hub.

\r\n
\r\n
\r\n

What is its simple idea? SBL Central is a research platform to support participants in the entire interdisciplinary ecosystem of biblical, religious, and theological studies, including scholars, students, publishers, publishing associations, and libraries and their institutions. A learned society exists at the intersection of these stakeholders. Learned societies foster collaboration and, at their best, innovation. Like its Annual Meeting, a learned society facilitates networking, creates opportunity, fosters the production of knowledge, and provides opportunities for professional development. Institutions, publishers, and scholars depend on the hub learned societies provide. SBL’s job is to serve each of these. SBL Central embodies the adage that the whole is greater than the sum of its parts.

\r\n
\r\n
\r\n

SBL Central was conceived in this context. By creating granular discovery of content (books, book reviews, conference papers, and journal articles) naturally identified with the field's research specializations, our objective is for this resource to be a core tool to the research and professional development of its members.

\r\n
\r\n
\r\n
\r\n
\r\n);\r\n","export default __webpack_public_path__ + \"static/media/rbl_logo.2bc7cfb8.jpg\";","import * as React from \"react\";\r\nimport { SearchContainer } from \"../../Containers/containersBarrel\";\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport rbllogo from \"../../Assets/Images/rbl_logo.jpg\";\r\nimport environment from \"../../Environments/environments\";\r\nimport axios from \"axios\";\r\n\r\nimport \"./volunteerStyles.css\";\r\n\r\nexport class Volunteer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n var loggedInUser = {};\r\n if (sessionStorage.getItem(\"loggedInUser\")) {\r\n loggedInUser = JSON.parse(sessionStorage.getItem(\"loggedInUser\"));\r\n }\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n let title = sessionStorage.getItem('book_' + this.props.match.params.Id);\r\n\r\n this.state = {\r\n firstName: loggedInUser.firstName,\r\n lastName: loggedInUser.lastName,\r\n emailAddress: loggedInUser.emailAddress,\r\n researchTeachingArea: \"\",\r\n selectedOption: \"doctoralDegree\",\r\n institution: \"\",\r\n positionHeld: \"\",\r\n qualifications: \"\",\r\n sblid: loggedInUser.sblId,\r\n bookId: this.props.match.params.Id,\r\n bookName: title\r\n };\r\n\r\n this.handleChange = this.handleChange.bind(this);\r\n this.handleSubmit = this.handleSubmit.bind(this);\r\n this.handleOptionChange = this.handleOptionChange.bind(this);\r\n }\r\n\r\n componentDidMount() {\r\n let user = sessionStorage.getItem(\"loggedInUser\")\r\n if (!user) {\r\n window.location = '/'\r\n }\r\n }\r\n\r\n handleChange(event) {\r\n this.setState({ [event.target.name]: event.target.value });\r\n }\r\n\r\n handleSubmit(event) {\r\n event.preventDefault();\r\n\r\n let data = {\r\n FirstName: this.state.firstName,\r\n LastName: this.state.lastName,\r\n EmailAddress: this.state.emailAddress,\r\n ResearchArea: this.state.researchTeachingArea,\r\n Institution: this.state.institution,\r\n Position: this.state.positionHeld,\r\n Qualifications: this.state.qualifications,\r\n EducationalLevel: this.state.selectedOption,\r\n SblId: this.state.sblid,\r\n BookId: this.state.bookId\r\n }\r\n\r\n axios\r\n .post(`${environment.baseUrl}/api/volunteer`, data, this.config)\r\n .then(response => {\r\n this.props.history.replace('/home/volunteerConfirmation');\r\n })\r\n .catch(error => {\r\n console.error('Error Occured on Submit: ', error);\r\n alert('Error creating volunteer record: ' + error);\r\n });\r\n }\r\n\r\n handleOptionChange(event) {\r\n this.setState({\r\n selectedOption: event.target.value\r\n });\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \"rbl\r\n
\r\n\r\n
\r\n Volunteer to Review\r\n
\r\n\r\n
\r\n For questions relating to RBL, please contact rbladministrator@sbl-site.org.\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n  Doctoral Degree\r\n \r\n
\r\n
\r\n \r\n \r\n  Doctoral Candidate (ABD)\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { SearchContainer } from '../../Containers/containersBarrel';\r\n\r\nimport './helpStyles.css';\r\n\r\nexport const Help = (props) => (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n SBL Member Notifications\r\n
\r\n

Book/Review Notifications

\r\n

\r\n As an \r\n SBL member\r\n \r\n , you can choose to be notified by email when books and book reviews are added in your subject areas of interest. These notifications are processed weekly. To take advantage of this benefit, login and select Manage Book Notifications by clicking on the down arrow next to your name.\r\n

\r\n Video: Adding/Managing Book and Review Notifications\r\n
\r\n
\r\n

Journal Notifications

\r\n

\r\n As an \r\n SBL member\r\n \r\n , you can choose to receive timely email notifications providing the contents of your journals of interest as new issues are released. To take advantage of this benefit, login and select Manage Journal Notifications by clicking on the down arrow next to your name.\r\n

\r\n Video: Adding/Managing Journal Notifications\r\n
\r\n
\r\n
\r\n Search Help\r\n
\r\n

Capitalization

\r\n

Searches are not case sensitive. For example, a search for Job returns the same results as a search for JOB or job.

\r\n
\r\n
\r\n

Keyword as prefix terms

\r\n

Keywords, or portions of keywords, entered into the keyword search bar are treated as “prefix terms.” For example, if you search for con, you will get search results that include words which begin with these three characters, such as construing, consultation, contrast, and contextual.

\r\n

The more characters you enter, the more precise your search will be. For example, searching for con might return 4000 search results, searching for context might return 1400 search results, and searching for contextual might return 400 results.

\r\n
\r\n
\r\n

Search with multiple keywords

\r\n

To improve the precision of your search, search multiple keywords. For example, searching for contextual, interpretation, with a comma and/or a space between these search terms, will return search results that include both contextual AND interpretation.

\r\n
\r\n
\r\n

Combine searches

\r\n

You can enter OR between any two words. For example, contextual OR interpretation.

\r\n
\r\n
\r\n

Exclude words from your search

\r\n

Enter AND NOT in front of a word you want to leave out. For example, contextual AND NOT interpretation.

\r\n
\r\n
\r\n

Search for an exact match

\r\n

Put a word or phrase inside quotes. For example, “prophetic texts”. (Note that words or phrases entered in quotation marks are treated as whole words, not prefix terms.)

\r\n
\r\n
\r\n

Searchable Data

\r\n

When searching for paper abstracts, the following are searched: titles, presenters, program units, meeting names, meeting locations, and where applicable, subjects.

\r\n

\r\n When searching for books, the following are searched: titles, subtitles, descriptions, authors, editors, translators, publishers, subjects, keywords, copyright years, and ISBNs.\r\n

\r\n
\r\n
\r\n

Why can’t I see search results for paper abstracts prior to 2004?

\r\n

SBL first took the Call for Papers process online in 2004. Prior meeting data is not currently available in digital format.

\r\n
\r\n
\r\n

Why can’t I see subjects associated with paper abstracts prior to 2015?

\r\n

In 2015, SBL added functionality to its online Call for Papers interface to allow presenters to tag their paper proposals with subjects. Such functionality was not previously available.

\r\n
\r\n

Video: Searching for Books\r\n

\r\n

Video: Searching for Paper Abstracts\r\n

\r\n
\r\n
\r\n
\r\n);\r\n","import * as React from 'react';\r\nimport { SearchContainer } from '../../Containers/containersBarrel';\r\nimport nl2br from 'react-newline-to-break';\r\n\r\nimport './contactStyles.css';\r\n\r\n\r\nlet address =\r\n 'Society Of Biblical Literature\\nThe Luce Center\\n825 Houston Mill Road\\nAtlanta, GA 30329\\nUSA';\r\n\r\nexport const Contact = (props) => (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Contact Us
\r\n
Email
\r\n \r\n
\r\n
\r\n
Mail
\r\n
\r\n
{nl2br(address)}
\r\n
\r\n
\r\n
\r\n
Telephone
\r\n
01-404-727-3100
\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n
\r\n);","/**\r\n * Created by bhadaway on 2/8/18.\r\n */\r\nimport * as React from 'react';\r\nimport { FilterBar } from '../componentsBarrel';\r\nimport { SearchContainer } from '../../Containers/containersBarrel';\r\nimport ReactPaginate from 'react-paginate';\r\n\r\nimport './searchResultsPageComponentStyles.css';\r\n\r\nexport const SearchResultsPageComponent = (props) => (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {props.displayShowingText(props.pageSelectedIndex, props.perPage, props.numTotalResults, props.searchTerm, props.filterData.data.length)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
{props.renderLoaderOrSearchResults()}
\r\n
\r\n ...}\r\n breakClassName={'break-me'}\r\n pageCount={props.pageCount}\r\n marginPagesDisplayed={2}\r\n pageRangeDisplayed={5}\r\n onPageChange={props.handlePageClick}\r\n containerClassName={'pagination'}\r\n subContainerClassName={'pages pagination'}\r\n activeClassName={'active'}\r\n forcePage={props.pageSelectedIndex}\r\n />\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n);","import * as React from 'react';\r\nimport conferencePaperImage from '../../Assets/Images/Paper-standard-image.png';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport './searchResultConferencePaper.css';\r\n\r\nexport const SearchResultConferencePaper = props => (\r\n \r\n
{props.searchResultItem.extraDesc1}
\r\n
{props.searchResultItem.extraDesc2}
\r\n
{props.searchResultItem.meetingLocation}
\r\n
\r\n \r\n);","import * as React from 'react';\r\nimport bookImage from '../../Assets/Images/book_with_image.png';\r\nimport { Link } from 'react-router-dom';\r\n\r\nimport './searchResultBook.css';\r\n\r\nexport const SearchResultBook = props => {\r\n return (\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n {props.searchResultItem.extraDesc1}, {props.searchResultItem.year}\r\n
\r\n
\r\n
\r\n {props.searchResultItem.meetingLocation}\r\n
\r\n {props.displayCreatedAndStatus(props.searchResultItem)}\r\n
\r\n \r\n )\r\n}\r\n\r\nconst OptionalContributor = (props) => {\r\n if (props.names) {\r\n return (\r\n
\r\n {props.names}{props.title ? ', ' + props.title : ''}\r\n
\r\n )\r\n }\r\n else return null;\r\n}\r\n","export default __webpack_public_path__ + \"static/media/BakerAcademicLogo.aecc6751.png\";","export default __webpack_public_path__ + \"static/media/BP-logo_and_big_website_black.3f4e9e06.jpg\";","export default __webpack_public_path__ + \"static/media/Logo_brill_blauw_groot.5915be54.png\";","export default __webpack_public_path__ + \"static/media/Atla-Logo-Tagline-TEAL-RGB.9954fc3e.jpg\";","export default __webpack_public_path__ + \"static/media/Mohr-Siebeck-Logo-trasp_2017.7333b28c.png\";","export default __webpack_public_path__ + \"static/media/PSUP_black.lg.78aa693a.png\";","export default __webpack_public_path__ + \"static/media/rz_dg-degruyter.5de94ce4.jpg\";","export default __webpack_public_path__ + \"static/media/WJK_Logo_for_SBL.3e57dd0b.png\";","export default __webpack_public_path__ + \"static/media/WS_Logo_SBL_Central.12e5356f.jpg\";","import * as React from \"react\";\r\nimport { SearchContainer } from \"../../Containers/containersBarrel\";\r\n\r\n// images\r\nimport Baker from \"../../Assets/Images/SBLC-Sponsors/BakerAcademicLogo.png\";\r\nimport BaylorPress from \"../../Assets/Images/SBLC-Sponsors/BP-logo_and_big_website_black.jpg\";\r\n// import Bloomsbury from '../../Assets/Images/SBLC-Sponsors/bloomsbury.JPG';\r\nimport Bloomsbury from \"../../Assets/Images/SBLC-Sponsors/Bloomsbury-Publishing2.png\";\r\nimport Brill from \"../../Assets/Images/SBLC-Sponsors/Logo_brill_blauw_groot.png\";\r\nimport AmericanTheological from \"../../Assets/Images/SBLC-Sponsors/Atla-Logo-Tagline-TEAL-RGB.jpg\";\r\nimport MohrSiebeck from \"../../Assets/Images/SBLC-Sponsors/Mohr-Siebeck-Logo-trasp_2017.png\";\r\nimport PSUP from \"../../Assets/Images/SBLC-Sponsors/PSUP_black.lg.png\";\r\nimport DeGruyter from \"../../Assets/Images/SBLC-Sponsors/rz_dg-degruyter.jpg\";\r\nimport WJK from \"../../Assets/Images/SBLC-Sponsors/WJK_Logo_for_SBL.png\";\r\nimport WS from \"../../Assets/Images/SBLC-Sponsors/WS_Logo_SBL_Central.jpg\";\r\n\r\nimport \"./sponsorsStyles.css\";\r\n\r\nclass Sponsors extends React.Component {\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n

Sponsors and Support

\r\n
\r\n Major funding for SBL Central has been provided by the Henry\r\n Luce Foundation. And while this research platform is open to\r\n all academic publishers, the following publishers and\r\n organizations have become Foundation Sponsors to help SBL\r\n build and maintain this site.\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • Henry Luce Foundation
  • \r\n
  • Atla
  • \r\n
  • Baker Academic
  • \r\n
  • Baylor University Press
  • \r\n
  • Bloomsbury Publishing
  • \r\n
  • Brill Publishers
  • \r\n
  • De Gruyter
  • \r\n
  • Mohr Siebeck
  • \r\n
  • Penn State University Press
  • \r\n
  • Westminster John Knox Press
  • \r\n
  • Wipf and Stock Publishers
  • \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport { Sponsors };\r\n","export default \"data:image/png;base64,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\"","import * as React from 'react';\r\nimport { DropdownButton } from 'react-bootstrap';\r\nimport { MenuItem } from 'react-bootstrap';\r\nimport { ButtonToolbar } from 'react-bootstrap';\r\n\r\nimport './searchComponentStyles.css';\r\n\r\nexport class SearchComponent extends React.Component {\r\n\r\n redirectToSearchResults = false;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n search: this.props.searchTerm || '',\r\n keywordType: this.props.keywordType,\r\n searchDropdownValue: sessionStorage.getItem('searchDropdownValue') || \"All\"\r\n };\r\n\r\n this.redirectToSearchResults = false;\r\n\r\n if (sessionStorage.getItem('searchDropdownValue') == null)\r\n {\r\n sessionStorage.setItem('searchDropdownValue', 'All');\r\n }\r\n\r\n this.onSearchSubmit = this.onSearchSubmit.bind(this);\r\n this.onDropdownChange = this.onDropdownChange.bind(this);\r\n }\r\n\r\n componentWillReceiveProps(newProps) {\r\n let value = sessionStorage.getItem('searchDropdownValue');\r\n\r\n if ( this.state.searchDropdownValue !== value ) {\r\n this.setState({\r\n searchDropdownValue: value\r\n })\r\n }\r\n }\r\n\r\n onSearchSubmit = e => {\r\n e.preventDefault();\r\n this.redirectToPage();\r\n };\r\n\r\n redirectToPage() {\r\n this.props.resetSearchFilters(true);\r\n if (this.state.search) {\r\n this.redirectToSearchResults = true;\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n onSearchValueChange = e => this.setState({ \r\n search: e.target.value,\r\n keywordType: ''\r\n });\r\n\r\n onDropdownChange = e => {\r\n switch(e) {\r\n case 'allFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"All\");\r\n this.setState({searchDropdownValue: 'All'});\r\n break;\r\n case 'bookFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Books & Reviews\");\r\n this.setState({searchDropdownValue: 'Books & Reviews'});\r\n break;\r\n case 'conferencePaperFilter':\r\n sessionStorage.setItem('searchDropdownValue', \"Paper Abstracts\");\r\n this.setState({searchDropdownValue: 'Paper Abstracts'});\r\n break;\r\n default:\r\n console.warn('Unknown filter (defaulting to ALL): ', e);\r\n sessionStorage.setItem('searchDropdownValue', \"All\");\r\n this.setState({searchDropdownValue: 'All'});\r\n break;\r\n }\r\n };\r\n\r\n render() {\r\n // The part that makes the redirect happen\r\n if (this.redirectToSearchResults) {\r\n this.redirectToSearchResults = false;\r\n window.location = this.generateRedirect('/home/searchResults/');\r\n return \"\";\r\n }\r\n\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n All\r\n Books & Reviews\r\n Paper Abstracts\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
Advanced Search
\r\n
Browse Journals
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n\r\n generateRedirect(baseUrl) {\r\n let url = baseUrl + this.state.search.trim().replace(/\\//g, '%2F');\r\n\r\n let type = \"?type=\";\r\n\r\n if ( this.state.searchDropdownValue === 'Books & Reviews') {\r\n type += \"1\";\r\n }\r\n else if ( this.state.searchDropdownValue === 'Paper Abstracts') {\r\n type += \"2\";\r\n }\r\n else {\r\n type += \"0\";\r\n }\r\n\r\n return url + type;\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { Fragment } from \"react\";\r\nimport \"./bookDetailsStyles.css\";\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { Link } from \"react-router-dom\";\r\nimport Moment from \"moment\";\r\nimport bookImage from \"../../Assets/Images/book_with_image.png\";\r\nimport { Login } from \"../../Containers/Login/login\";\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport ModalRoot from \"../../Containers/Login/loginRoot\";\r\nimport queryString from 'query-string';\r\nimport renderHTML from 'react-render-html';\r\nimport Helmet from 'react-helmet';\r\n\r\nclass BookDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n var loggedInUser = {\r\n errorText: \"\",\r\n isAuthenticated: false,\r\n isAdminUser: false,\r\n firstName: \"\",\r\n lastName: \"\",\r\n sblId: \"\"\r\n };\r\n\r\n if (sessionStorage.getItem(\"loggedInUser\")) {\r\n loggedInUser = JSON.parse(sessionStorage.getItem(\"loggedInUser\"));\r\n }\r\n\r\n let search = (this.props.location.search !== '') ? queryString.parse(this.props.location.search) : {search: ''};\r\n\r\n this.state = {\r\n id: this.props.match.params.Id,\r\n new: search.new ? search.new : false,\r\n bookData: [],\r\n reviews: [],\r\n loading: true,\r\n loggedInUser: loggedInUser,\r\n hasMemberVolunteered: false,\r\n searchTerm: search.search,\r\n searchType: search.type\r\n };\r\n\r\n this.loadResultsFromServer = this.loadResultsFromServer.bind(this);\r\n this.returnReviewPdfLink = this.returnReviewPdfLink.bind(this);\r\n }\r\n\r\n async loadResultsFromServer() {\r\n if ( this.state.loading === false ) {\r\n this.setState({\r\n loading: true\r\n });\r\n }\r\n \r\n let sblId = '0';\r\n if ( this.state.loggedInUser && this.state.loggedInUser.isAuthenticated ) {\r\n sblId = this.state.loggedInUser.sblId;\r\n }\r\n\r\n let url = environment.baseUrl + '/api/book/getBookDetail/' + this.state.id + '/' + sblId;\r\n\r\n await axios\r\n .get(url, {\r\n params: {}\r\n })\r\n .then(response => {\r\n this.setState(\r\n {\r\n bookData: response.data.book,\r\n reviews: response.data.book.reviews,\r\n hasMemberVolunteered: response.data.hasMemberVolunteered,\r\n loading: false\r\n });\r\n })\r\n .catch(function(error) {\r\n console.error('Error getting book data: ', error, error.response);\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.loadResultsFromServer();\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n }\r\n\r\n returnBookTitle() {\r\n var title = this.state.bookData.title;\r\n if (this.state.bookData.subtitle) {\r\n title = title + \": \" + this.state.bookData.subtitle;\r\n }\r\n return title;\r\n }\r\n\r\n returnFormats() {\r\n if (this.state.bookData.formats) {\r\n return (\r\n
\r\n \r\n Formats: \r\n \r\n {this.state.bookData.formats}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnSubjects() {\r\n if (this.state.bookData.subjects) {\r\n var subjects = String(this.state.bookData.subjects).split(\"|\");\r\n\r\n var searchType = this.state.searchType ? this.state.searchType : 0\r\n\r\n return (\r\n
\r\n \r\n Subjects: \r\n \r\n {subjects.map(function(subject, index) {\r\n if (subject) {\r\n return (\r\n \r\n {subject.trim()}\r\n {index < subjects.length - 1 ? \", \" : \"\"}\r\n \r\n );\r\n }\r\n return '';\r\n }, this)}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnKeywords() {\r\n if (this.state.bookData.keywords === null || this.state.bookData.keywords === '') {\r\n return ''\r\n }\r\n\r\n return (\r\n
\r\n Keywords: \r\n {this.state.bookData.keywords}\r\n
\r\n )\r\n }\r\n\r\n returnSeriesInfo() {\r\n if (this.state.bookData.seriesInfo) {\r\n return (\r\n
\r\n \r\n Series: \r\n \r\n {this.state.bookData.seriesInfo}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnPublisherURL() {\r\n if (this.state.bookData.publisherURL) {\r\n return (\r\n \r\n );\r\n }\r\n }\r\n\r\n returnBookEdition() {\r\n if (this.state.bookData.edition) {\r\n return (\r\n
\r\n \r\n Edition: \r\n \r\n {this.state.bookData.edition}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnBookAuthors() {\r\n if (this.state.bookData.author) {\r\n return (\r\n
\r\n \r\n Author: \r\n \r\n {this.state.bookData.author}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnBookEditors() {\r\n if (this.state.bookData.editor) {\r\n return (\r\n
\r\n \r\n Editor: \r\n \r\n {this.state.bookData.editor}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnBookTranslators() {\r\n if (this.state.bookData.translator) {\r\n return (\r\n
\r\n \r\n Translator: \r\n \r\n {this.state.bookData.translator}\r\n
\r\n )\r\n }\r\n }\r\n\r\n returnDescription() {\r\n\r\n let description = this.state.bookData.description\r\n\r\n if (this.state.bookData.description) {\r\n return (\r\n
\r\n \r\n Description: \r\n \r\n\r\n {renderHTML('
' + description + '
')}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnVolunteerLink(url, loggedInUser) {\r\n if (loggedInUser && loggedInUser.isAuthenticated) {\r\n if ( this.state.hasMemberVolunteered ) {\r\n return (\r\n You have previously volunteered to review this book. Thank you!\r\n )\r\n }\r\n else {\r\n let title = this.returnBookTitle()\r\n sessionStorage.setItem('book_' + this.state.id, title)\r\n\r\n return (\r\n \r\n Volunteer to Review This Title for RBL\r\n \r\n );\r\n }\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n {\r\n e.preventDefault();\r\n showModal(Login)\r\n }}\r\n >\r\n Sign In to Volunteer to Review This Title for RBL\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n returnReviews() {\r\n if (!this.state.loading) {\r\n if (this.state.reviews.length > 0) {\r\n var reviews = this.state.reviews;\r\n return (\r\n
\r\n
\r\n \r\n Reviews: \r\n \r\n {reviews.map(function(review, index) {\r\n var reviewDate;\r\n if (review.reviewedOn) {\r\n reviewDate = (\r\n \r\n Published {Moment(review.reviewedOn).format(\"YYYY-MM-DD\")}{\" \"}\r\n
{\" \"}\r\n
\r\n );\r\n } else {\r\n reviewDate = \"\";\r\n }\r\n return (\r\n
\r\n \r\n Review by {review.names}\r\n {\" \"}\r\n
\r\n {reviewDate}\r\n {this.returnReviewPdfLink(\r\n review.reviewURL,\r\n this.state.loggedInUser\r\n )}\r\n\r\n {this.getReviewDivider(index, reviews.length-1)}\r\n
\r\n );\r\n }, this)}\r\n
\r\n );\r\n }\r\n }\r\n }\r\n\r\n getReviewDivider(index, count) {\r\n return (index < count) ?
: ''\r\n }\r\n\r\n returnReviewPdfLink(url, loggedInUser) {\r\n if (loggedInUser && loggedInUser.isAuthenticated) {\r\n return (\r\n \r\n \r\n Read the Review (PDF)\r\n \r\n \r\n );\r\n } else {\r\n return (\r\n \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n {\r\n e.preventDefault();\r\n showModal(Login)\r\n }}\r\n >\r\n Sign In to Read the Review\r\n \r\n \r\n )}\r\n \r\n \r\n );\r\n }\r\n }\r\n\r\n returnBackToSearchResults() {\r\n if ( this.state.new \r\n || !this.state.searchType \r\n || this.props.history.length <= 1 ) {\r\n return ''\r\n }\r\n\r\n return (\r\n {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }}>\r\n Back to Search Results\r\n \r\n );\r\n }\r\n\r\n returnPageCount() {\r\n if (!this.state.bookData.numberOfPages || this.state.bookData.numberOfPages === '') {\r\n return ''\r\n }\r\n\r\n return (\r\n
\r\n Page Count: \r\n {this.state.bookData.numberOfPages}\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n \r\n \r\n \r\n {this.state.loading ? (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n ) : (\r\n
\r\n
\r\n
\r\n {this.props.getSearchContainer(this)}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.returnBackToSearchResults()}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n {this.props.returnBookEditLink(this)}\r\n
\r\n \r\n Book Title: \r\n \r\n {this.returnBookTitle()}\r\n
\r\n {this.returnBookEdition()}\r\n {this.returnBookAuthors()}\r\n {this.returnBookEditors()}\r\n {this.returnBookTranslators()}\r\n {this.returnSeriesInfo()}\r\n
\r\n \r\n Publisher: \r\n \r\n {this.state.bookData.publisherName}\r\n
\r\n
\r\n \r\n Copyright: \r\n \r\n {this.state.bookData.copyright}\r\n
\r\n {this.props.getBookStatusDisplay(this)}\r\n {this.returnPageCount()}\r\n {this.returnFormats()}\r\n {this.returnSubjects()}\r\n {this.returnKeywords()}\r\n {this.returnDescription()}\r\n {this.returnPublisherURL()}\r\n \r\n {this.props.returnVolunteerEditLink(this)}\r\n {this.returnReviews()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n )}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport { BookDetails };\r\n","/**\r\n * Created by bhadaway on 2/8/18.\r\n */\r\nimport * as React from 'react';\r\n\r\nimport './sponsorsCarouselStyles.css';\r\n\r\nclass SponsorsCarousel extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n sponsors: [\r\n { name: '', donation: 30, img: 'hey.html' },\r\n { name: '', donation: 70, img: 'hey2.html' },\r\n { name: '', donation: 20, img: 'hey3.html' },\r\n { name: '', donation: 450, img: 'hey4.html' },\r\n { name: '', donation: 450, img: 'hey4.html' },\r\n { name: '', donation: 450, img: 'hey4.html' },\r\n { name: '', donation: 10, img: 'hey5.html' }\r\n ]\r\n };\r\n }\r\n render() {\r\n const returnSponsors = this.state.sponsors.map((sponsor, i) => {\r\n return (\r\n
\r\n {sponsor.name}\r\n
\r\n );\r\n });\r\n return (\r\n
\r\n
{returnSponsors}
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport { SponsorsCarousel };\r\n","/**\r\n * Created by bhadaway on 2/8/18.\r\n */\r\nimport * as React from \"react\";\r\nimport { SearchContainer } from \"../../Containers/containersBarrel\";\r\nimport \"./conferencePaperDetailsStyles.css\";\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport ConferencePaperImage from \"../../Assets/Images/Paper-standard-image.png\";\r\n// import TwoThousandImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-AMcover.png\";\r\n// import TwoThousandOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-AMcover.png\";\r\n// import TwoThousandTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-AMcover.png\";\r\n// import TwoThousandThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-AMcover.png\";\r\n// import TwoThousandFourImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-AMCover.png\";\r\n// import TwoThousandFiveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-AMCover.png\";\r\n// import TwoThousandSixImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-AMcover.png\";\r\n// import TwoThousandSevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-AMcover.png\";\r\n// import TwoThousandEightImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-AMcover.png\";\r\n// import TwoThousandNineImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-AMcover.png\";\r\n// import TwoThousandTenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-AMcover.png\";\r\n// import TwoThousandElevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-AMcover.png\";\r\n// import TwoThousandTwelveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-AMcover.png\";\r\n// import TwoThousandThirteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-AMcover.png\";\r\n// import TwoThousandFourteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-AMcover.png\";\r\n// import TwoThousandFifteenImageA from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-AMcover.png\";\r\n// import TwoThousandSixteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-AMcover.png\";\r\n// import TwoThousandSeventeenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-AMcover.png\";\r\n// import TwoThousandEighteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-AMcover.png\";\r\n// import TwoThousandNineteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-AMcover.jpg\";\r\n// import TwoThousandTwentyImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2020-AMcover.png\";\r\n// import TwoThousandTwentyOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2021-AMcover.png\";\r\n// import TwoThousandTwentyTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-AMcover.png\";\r\n// import TwoThousandTwentyThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2023-AMcover.png\";\r\n\r\n// import TwoThousandImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-IMcover.jpg\";\r\n// import TwoThousandOneImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-IMcover.jpg\";\r\n// import TwoThousandTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-IMcover.jpg\";\r\n// import TwoThousandThreeImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-IMcover.jpg\";\r\n// import TwoThousandFourImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-IMcover.jpg\";\r\n// import TwoThousandFiveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-IMcover.jpg\";\r\n// import TwoThousandSixImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-IMcover.jpg\";\r\n// import TwoThousandSevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-IMcover.jpg\";\r\n// import TwoThousandEightImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-IMcover.jpg\";\r\n// import TwoThousandNineImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-IMcover.jpg\";\r\n// import TwoThousandTenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-IMcover.jpg\";\r\n// import TwoThousandElevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-IMcover.jpg\";\r\n// import TwoThousandTwelveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-IMcover.jpg\";\r\n// import TwoThousandThirteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-IMcover.jpg\";\r\n// import TwoThousandFourteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-IMcover.jpg\";\r\n// import TwoThousandFifteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-IMcover.jpg\";\r\n// import TwoThousandSixteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-IMcover.jpg\";\r\n// import TwoThousandSeventeenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-IMcover.jpg\";\r\n// import TwoThousandEighteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-IMcover.jpg\";\r\n// import TwoThousandNineteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-IMcover.png\";\r\n// import TwoThousandTwentyTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-IMcover.png\";\r\n// import TwoThousandTwentyThreeImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2023-IMcover.png\";\r\n\r\nimport { Link } from \"react-router-dom\";\r\nimport Moment from \"moment\";\r\nimport queryString from 'query-string';\r\n\r\nclass ConferencePaperDetails extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n let search = (this.props.location.search !== '') ? queryString.parse(this.props.location.search) : {search: ''};\r\n\r\n this.state = {\r\n id: this.props.match.params.Id,\r\n conferencePaperData: [],\r\n loading: false,\r\n searchTerm: search.search\r\n };\r\n\r\n this.loadResultsFromServer = this.loadResultsFromServer.bind(this);\r\n }\r\n\r\n async loadResultsFromServer() {\r\n this.setState({\r\n loading: true\r\n });\r\n\r\n await axios\r\n .get(environment.baseUrl + \"/api/conference/\" + this.state.id, {\r\n params: {}\r\n })\r\n .then(response => {\r\n this.setState(\r\n {\r\n conferencePaperData: response.data,\r\n loading: false,\r\n year: response.data.year,\r\n meetingType: response.data.meetingType\r\n },\r\n () => {}\r\n );\r\n })\r\n .catch(function(error) {\r\n console.log(error);\r\n });\r\n }\r\n\r\n componentDidMount() {\r\n this.loadResultsFromServer();\r\n }\r\n\r\n returnPresenters(conferencePaperData) {\r\n if (conferencePaperData.coPresenterNames) {\r\n return (\r\n
\r\n \r\n Presenter(s): \r\n \r\n {this.state.conferencePaperData.presenterFullName},{\" \"}\r\n {conferencePaperData.coPresenterNames}\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n \r\n Presenter(s): \r\n \r\n {this.state.conferencePaperData.presenterFullName}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnSubjects(conferencePaperData) {\r\n if (conferencePaperData.subjects) {\r\n var subjects = String(conferencePaperData.subjects).split(\"|\");\r\n return (\r\n
\r\n \r\n Subject(s): \r\n \r\n {subjects.map(function(subject, index) {\r\n return (\r\n \r\n {subject.trim()}\r\n {index < subjects.length - 1 ? \", \" : \"\"}\r\n \r\n );\r\n })}\r\n
\r\n );\r\n }\r\n }\r\n\r\n returnBackToSearchResults() {\r\n if (this.props.history.length <= 1) {\r\n return ''\r\n }\r\n\r\n return (\r\n {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }}>\r\n Back to Search Results\r\n \r\n );\r\n }\r\n\r\n returnImage(year, meetingType) {\r\n if (meetingType === \"International\") {\r\n if (year === 2000) {\r\n return TwoThousandImageIM;\r\n } else if (year === 2001) {\r\n return TwoThousandOneImageIM;\r\n } else if (year === 2002) {\r\n return TwoThousandTwoImageIM;\r\n } else if (year === 2003) {\r\n return TwoThousandThreeImageIM;\r\n } else if (year === 2004) {\r\n return TwoThousandFourImageIM;\r\n } else if (year === 2005) {\r\n return TwoThousandFiveImageIM;\r\n } else if (year === 2006) {\r\n return TwoThousandSixImageIM;\r\n } else if (year === 2007) {\r\n return TwoThousandSevenImageIM;\r\n } else if (year === 2008) {\r\n return TwoThousandEightImageIM;\r\n } else if (year === 2009) {\r\n return TwoThousandNineImageIM;\r\n } else if (year === 2010) {\r\n return TwoThousandTenImageIM;\r\n } else if (year === 2011) {\r\n return TwoThousandElevenImageIM;\r\n } else if (year === 2012) {\r\n return TwoThousandTwelveImageIM;\r\n } else if (year === 2013) {\r\n return TwoThousandThirteenImageIM;\r\n } else if (year === 2014) {\r\n return TwoThousandFourteenImageIM;\r\n } else if (year === 2015) {\r\n return TwoThousandFifteenImageIM;\r\n } else if (year === 2016) {\r\n return TwoThousandSixteenImageIM;\r\n } else if (year === 2017) {\r\n return TwoThousandSeventeenImageIM;\r\n } else if (year === 2018) {\r\n return TwoThousandEighteenImageIM;\r\n } else if (year === 2019) {\r\n return TwoThousandNineteenImageIM;\r\n } else if (year === 2022) {\r\n return TwoThousandTwentyTwoImageIM;\r\n } else if (year === 2023) {\r\n return TwoThousandTwentyThreeImageIM;\r\n } else {\r\n return ConferencePaperImage;\r\n }\r\n } else if (meetingType === \"Annual\") {\r\n if (year === 2000) {\r\n return TwoThousandImageAM;\r\n } else if (year === 2001) {\r\n return TwoThousandOneImageAM;\r\n } else if (year === 2002) {\r\n return TwoThousandTwoImageAM;\r\n } else if (year === 2003) {\r\n return TwoThousandThreeImageAM;\r\n } else if (year === 2004) {\r\n return TwoThousandFourImageAM;\r\n } else if (year === 2005) {\r\n return TwoThousandFiveImageAM;\r\n } else if (year === 2006) {\r\n return TwoThousandSixImageAM;\r\n } else if (year === 2007) {\r\n return TwoThousandSevenImageAM;\r\n } else if (year === 2008) {\r\n return TwoThousandEightImageAM;\r\n } else if (year === 2009) {\r\n return TwoThousandNineImageAM;\r\n } else if (year === 2010) {\r\n return TwoThousandTenImageAM;\r\n } else if (year === 2011) {\r\n return TwoThousandElevenImageAM;\r\n } else if (year === 2012) {\r\n return TwoThousandTwelveImageAM;\r\n } else if (year === 2013) {\r\n return TwoThousandThirteenImageAM;\r\n } else if (year === 2014) {\r\n return TwoThousandFourteenImageAM;\r\n } else if (year === 2015) {\r\n return TwoThousandFifteenImageA;\r\n } else if (year === 2016) {\r\n return TwoThousandSixteenImageAM;\r\n } else if (year === 2017) {\r\n return TwoThousandSeventeenImageAM;\r\n } else if (year === 2018) {\r\n return TwoThousandEighteenImageAM;\r\n } else if (year === 2019) {\r\n return TwoThousandNineteenImageAM;\r\n } else if (year === 2020) {\r\n return TwoThousandTwentyImageAM;\r\n } else if (year === 2021) {\r\n return TwoThousandTwentyOneImageAM;\r\n } else if (year === 2022) {\r\n return TwoThousandTwentyTwoImageAM;\r\n } else if (year === 2023) {\r\n return TwoThousandTwentyThreeImageAM;\r\n } else {\r\n return ConferencePaperImage;\r\n }\r\n } else {\r\n return ConferencePaperImage;\r\n }\r\n }\r\n\r\n getConferencePaperDocumentLink() {\r\n if (this.state.conferencePaperData.conferencePaperDocumentURL) {\r\n const url = this.state.conferencePaperData.conferencePaperDocumentURL\r\n return (\r\n \r\n Read the Paper (PDF)\r\n \r\n )\r\n }\r\n\r\n return ''\r\n }\r\n\r\n getConferencePresentationDocumentLink() {\r\n if (this.state.conferencePaperData.conferencePresentationDocumentURL) {\r\n const url = this.state.conferencePaperData.conferencePresentationDocumentURL\r\n return (\r\n \r\n See the Presentation (PDF)\r\n \r\n )\r\n }\r\n\r\n return ''\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return (\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n {this.returnBackToSearchResults()}\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n Presentation Title: \r\n \r\n {this.state.conferencePaperData.title}\r\n
\r\n {this.returnPresenters(this.state.conferencePaperData)}\r\n
\r\n \r\n Presentation Date: \r\n \r\n {this.state.conferencePaperData.presentationDate\r\n ? Moment(\r\n this.state.conferencePaperData.presentationDate\r\n ).format(\"YYYY-MM-DD\")\r\n : \"\"}\r\n
\r\n
\r\n \r\n Program Unit: \r\n \r\n {this.state.conferencePaperData.programUnit}\r\n
\r\n
\r\n \r\n Meeting Name: \r\n \r\n {this.state.conferencePaperData.meetingName}\r\n
\r\n
\r\n \r\n Meeting Location: \r\n \r\n {this.state.conferencePaperData.meetingLocation}\r\n
\r\n {this.returnSubjects(this.state.conferencePaperData)}\r\n
\r\n \r\n Abstract: \r\n \r\n {this.state.conferencePaperData.abstract}\r\n
\r\n
\r\n {this.getConferencePaperDocumentLink()}\r\n
\r\n
\r\n {this.getConferencePresentationDocumentLink()}\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport { ConferencePaperDetails };\r\n","import * as React from 'react';\r\nimport { SearchContainer } from '../../Containers/containersBarrel';\r\n\r\nimport { Link } from \"react-router-dom\";\r\n\r\nimport './VolunteerConfirmation.css';\r\n\r\nexport class VolunteerConfirmation extends React.Component {\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer')\r\n footer.style.position = 'absolute'\r\n footer.style.bottom = '0'\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n Volunteer Confirmation\r\n
\r\n

Thank you for volunteering! The editorial board will contact you via email when a decision has been made.

\r\n
\r\n
\r\n {\r\n e.preventDefault();\r\n this.props.history.go(-2);\r\n }}>\r\n Back to Search Results\r\n \r\n
\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import * as React from \"react\";\r\nimport { guardAdmin } from './admin-base'\r\nimport { AdminSearchComponent, AdminQuickFilters } from \"../../Components/componentsBarrel\";\r\n\r\nimport \"./admin.css\";\r\nimport { Helmet } from 'react-helmet';\r\n\r\nexport class Admin extends React.Component {\r\n render() {\r\n // The icon below is rendered hidden to speed up display on other pages\r\n return guardAdmin(\r\n
\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n \r\n
\r\n
\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport Moment from 'moment';\r\n\r\nimport './adminFooter.css'\r\n\r\nexport class AdminFooter extends React.Component {\r\n \r\n componentWillUpdate() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'absolute';\r\n }\r\n\r\n gotoAdd = (e) => {\r\n window.location = '/admin/bookEditor/new'\r\n }\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n ©{Moment().year()} Society of Biblical Literature\r\n
\r\n
\r\n
\r\n
\r\n
\r\n Reports\r\n
\r\n
\r\n System Management\r\n
\r\n
\r\n Add Book\r\n
\r\n {/* October 2024 - Harsha Hammika - Journal notifications have been discontinued. Therefore, this [file or function] is no longer utilized. */}\r\n {/*
\r\n Journals\r\n
*/}\r\n
\r\n
\r\n
\r\n )\r\n }\r\n}\r\n","export class MessageFlash {\r\n static getMessage() {\r\n let message = sessionStorage.getItem('sblBookDetailMessage')\r\n sessionStorage.removeItem('sblBookDetailMessage')\r\n return message\r\n }\r\n\r\n static setMessage(message) {\r\n sessionStorage.setItem('sblBookDetailMessage', message)\r\n }\r\n}\r\n","export default __webpack_public_path__ + \"static/media/SBLCentral-AdminLogo-top.63737fe1.png\";","import React from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport { DropdownButton } from \"react-bootstrap\";\r\nimport { MenuItem } from \"react-bootstrap\";\r\nimport { ButtonToolbar } from \"react-bootstrap\";\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper'\r\n\r\nimport logo from \"../../Assets/Images/SBLCentral-AdminLogo-top.png\"\r\n\r\nimport \"./adminHeader.css\";\r\n\r\nexport class AdminHeader extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n let loggedInUser = {\r\n isAuthenticated: false,\r\n isAdminUser: false\r\n };\r\n\r\n if (sessionStorage.getItem(\"loggedInUser\")) {\r\n loggedInUser = JSON.parse(sessionStorage.getItem(\"loggedInUser\")); \r\n }\r\n\r\n this.state = {\r\n loggedInUser: loggedInUser\r\n }\r\n }\r\n\r\n returnSignIn = () => {\r\n return (\r\n
\r\n {this.returnSignInBlock(this.state.loggedInUser)}\r\n
\r\n )\r\n }\r\n\r\n returnSignInBlock(loggedInUser) {\r\n if (loggedInUser && loggedInUser.isAuthenticated) {\r\n return (\r\n
\r\n \r\n \r\n {this.getPublicMenu(loggedInUser)}\r\n \r\n Sign Out\r\n \r\n \r\n \r\n
\r\n );\r\n } \r\n }\r\n\r\n onLogoutClick = (e) => {\r\n sessionStorage.removeItem('loggedInUser');\r\n window.location = '/';\r\n }\r\n\r\n calculateUserName = (user) => {\r\n if (user.firstName && user.lastName) {\r\n return user.firstName + \" \" + user.lastName;\r\n }\r\n else if ( user.firstName ) {\r\n return user.firstName;\r\n }\r\n else if ( user.lastName) {\r\n return user.lastName;\r\n }\r\n \r\n return \"Member\";\r\n }\r\n \r\n getPublicMenu(loggedInUser) {\r\n if(loggedInUser.isAdminUser) {\r\n return (\r\n \r\n SBLC Public\r\n \r\n );\r\n }\r\n }\r\n \r\n onAdminClick = () => {\r\n window.location = '/';\r\n }\r\n\r\n returnMessageFlash = () => {\r\n let message = MessageFlash.getMessage()\r\n if (!message || message === '') {\r\n return ''\r\n }\r\n \r\n return (\r\n
\r\n {message}\r\n
\r\n )\r\n }\r\n\r\n render() {\r\n if (this.state.loggedInUser.isAuthenticated && this.state.loggedInUser.isAdminUser) {\r\n return (\r\n \r\n ) \r\n }\r\n else {\r\n return
\r\n }\r\n }\r\n}\r\n","import React from 'react'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport './reports.css'\r\n\r\nexport class Reports extends React.Component {\r\n render() {\r\n return guardAdmin(\r\n \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nimport './systemMaintenance.css'\r\n\r\nexport class SystemMaintenance extends React.Component {\r\n getNotificationTestItem() {\r\n return (\r\n \r\n
  • \r\n window.location='/admin/notificationTest'}>Process Book/Review Notifications\r\n
  • \r\n
    \r\n )\r\n }\r\n\r\n getExportItem() {\r\n return (\r\n
  • \r\n window.location='/admin/rblexport'}>RBL Export\r\n
  • \r\n )\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n
    \r\n \r\n \r\n \r\n
    \r\n System Management\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\n\r\nimport './adminSearchComponent.css'\r\n\r\nexport class AdminSearchComponent extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n search: props.searchTerm || '',\r\n keywordType: props.keywordType || '',\r\n }\r\n\r\n this.redirectToSearchFlag = false;\r\n }\r\n\r\n onSearchSubmit = (e) => {\r\n e.preventDefault();\r\n \r\n if( this.state.search ) {\r\n this.redirectToSearchFlag = true;\r\n this.forceUpdate();\r\n }\r\n }\r\n\r\n onSearchValueChange = (e) => {\r\n this.setState({ \r\n search: e.target.value,\r\n keywordType: ''\r\n });\r\n }\r\n\r\n redirectToSearchPage() {\r\n this.redirectToSearchFlag = false;\r\n window.location = '/admin/searchResults/' + this.state.search.trim().replace(/\\//g, '%2F') + \"?type=1&subtype=0\";\r\n }\r\n\r\n render() {\r\n if ( this.redirectToSearchFlag ) {\r\n this.redirectToSearchPage();\r\n return null;\r\n }\r\n\r\n return (\r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\n\r\nimport { BookStatusFilter } from '../componentsBarrel'\r\n\r\nimport './adminFilterBar.css';\r\n\r\nexport const AdminFilterBar = (props) => (\r\n
    \r\n
    Filter
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    Years
    \r\n
    \r\n
    \r\n
    \r\n props.onFilterClick('twentyTwentyOneToPresent')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('twentySixteenToTwentyTwenty')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('twentyElevenToTwentyFifteen')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('twoThousandSixToTwentyTen')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('twoThousandOneToTwoThousandFive')}\r\n />\r\n \r\n
    \r\n {!props.isSeeMoreYearsHidden && }\r\n
    \r\n
    \r\n
    \r\n);\r\n\r\nclass MoreYears extends React.Component {\r\n render() {\r\n return (\r\n
    \r\n {\r\n \r\n }\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst MoreYearsDiv = (props) => (\r\n
    \r\n
    \r\n props.onFilterClick('ninetySixToTwoThousand')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('ninetyOneToNinetyFive')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('eightySixToNinety')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('eightyOneToEightyFive')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('seventySixToEighty')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('seventyOneToSeventyFive')}\r\n />\r\n \r\n
    \r\n
    \r\n props.onFilterClick('uptoSeventy')}\r\n />\r\n \r\n
    \r\n {/* */}\r\n
    \r\n)","import React from 'react'\r\nimport './busyIndicator.css'\r\n\r\nexport class BusyIndicator extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n busy: props.busy ? props.busy : false\r\n }\r\n }\r\n\r\n show() {\r\n this.setState({busy:true});\r\n }\r\n\r\n hide() {\r\n this.setState({busy:false});\r\n }\r\n\r\n render() {\r\n return (\r\n this.state.busy ? \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n : null\r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { AdminButton } from '../AdminButton/adminButton'\r\nimport { BusyIndicator } from '../BusyIndicator/busyIndicator'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper';\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport './adminUsers.css'\r\n\r\nexport class AdminUsers extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n staff: [],\r\n admins: [],\r\n selectedAdmin: 0,\r\n selectedStaff: 0,\r\n busy: true\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n axios\r\n .get(`${environment.baseUrl}/api/admin/staff`, this.config)\r\n .then(response => {\r\n this.updateUsers(response.data);\r\n })\r\n .catch(error => {\r\n console.error('Error Occurred on User Get: ', error)\r\n alert(error);\r\n this.setState({ busy: false })\r\n });\r\n }\r\n\r\n updateUsers = (data) => {\r\n let staff = [];\r\n let admins = [];\r\n\r\n data.forEach((item) => {\r\n if (item.isAdminUser === true) admins.push(item)\r\n else staff.push(item);\r\n })\r\n\r\n this.setState({\r\n staff: staff,\r\n admins: admins,\r\n busy: false\r\n })\r\n }\r\n\r\n getUsersDisplay() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n {this.getStaffDisplay()}\r\n
    \r\n\r\n
    \r\n \r\n


    \r\n \r\n
    \r\n\r\n
    \r\n \r\n {this.getAdminDisplay()}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n Submit\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n getStaffDisplay() {\r\n return (\r\n this.setState({ selectedStaff: e.target.value })}\r\n value={this.state.selectedStaff}>\r\n\r\n {this.state.staff.map((item, index) => {\r\n return \r\n })}\r\n \r\n )\r\n }\r\n\r\n getAdminDisplay() {\r\n return (\r\n this.setState({ selectedAdmin: e.target.value })}\r\n value={this.state.selectedAdmin}>\r\n\r\n {this.state.admins.map((item, index) => {\r\n return (\r\n \r\n )\r\n })}\r\n\r\n \r\n )\r\n }\r\n\r\n handleAddAdminButton = (e) => {\r\n let staffList = document.getElementById('staffList');\r\n if (staffList.selectedOptions.length > 0) {\r\n this.addToAdmin(staffList.selectedOptions[0].index);\r\n }\r\n }\r\n\r\n handleRemoveAdminButton = (e) => {\r\n let adminList = document.getElementById('adminList');\r\n if (adminList.selectedOptions.length > 0) {\r\n this.removeFromAdmin(adminList.selectedOptions[0].index)\r\n }\r\n }\r\n\r\n handleAddAdmin = (e) => {\r\n this.addToAdmin(e.target.index)\r\n }\r\n\r\n addToAdmin(index) {\r\n let member = this.state.staff.splice(index, 1)[0];\r\n let newIndex = this.findSortedIndex(this.state.admins, member);\r\n this.state.admins.splice(newIndex, 0, member);\r\n this.setState({\r\n selectedAdmin: newIndex,\r\n selectedStaff: 0\r\n })\r\n }\r\n\r\n handleRemoveAdmin = (e) => {\r\n this.removeFromAdmin(e.target.index)\r\n }\r\n\r\n removeFromAdmin(index) {\r\n let member = this.state.admins.splice(index, 1)[0];\r\n let newIndex = this.findSortedIndex(this.state.staff, member);\r\n this.state.staff.splice(newIndex, 0, member);\r\n this.setState({\r\n selectedStaff: newIndex,\r\n selectedAdmin: 0\r\n });\r\n }\r\n\r\n findSortedIndex(array, item) {\r\n let index = 0;\r\n for (let i = 0; i < array.length; ++i) {\r\n index = i;\r\n let compareResult = item.lastName.localeCompare(array[i].lastName);\r\n\r\n if (compareResult < 1 ||\r\n (compareResult === 0 && item.firstName.localeCompare(array[i].firstName) < 1)) {\r\n return index;\r\n }\r\n }\r\n\r\n return index + 1;\r\n }\r\n\r\n onSubmit = (e) => {\r\n console.log('onSubmit');\r\n let model = {\r\n AdminStaff: this.state.admins,\r\n NonAdminStaff: this.state.staff\r\n }\r\n\r\n axios.post(`${environment.baseUrl}/api/admin/staff`, model, this.config)\r\n .then(response => {\r\n MessageFlash.setMessage('User Changes Saved Successfully')\r\n window.location = \"/admin/system\"\r\n })\r\n .catch(error => {\r\n console.error('Error Occurred on Saved: ', error);\r\n alert(error);\r\n })\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n this.state.busy ? :\r\n
    \r\n \r\n \r\n \r\n
    \r\n Admin User Management\r\n
    \r\n
    \r\n {this.getUsersDisplay()}\r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { Link } from 'react-router-dom'\r\nimport ModalRoot, {ModalRootStacked} from \"../../Containers/Login/loginRoot\";\r\nimport { guardAdmin } from '../../Components/Admin/admin-base'\r\nimport { Checkbox } from 'react-bootstrap'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport { \r\n CollectedWorksEssays, \r\n TextField, \r\n InputField, \r\n Contributors,\r\n ExpertiseComponent,\r\n BookFormats,\r\n BookStatus,\r\n BookReviews,\r\n AccountSelect\r\n} from '../componentsBarrel'\r\n\r\nimport bookImage from \"../../Assets/Images/book_with_image.png\";\r\n\r\nimport './bookEditor.css'\r\nimport { BookStatusFilterEnum, BookStatusEnum } from '../../Helpers/bookStatusHelper';\r\n\r\nexport class BookEditor extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n if (!this.user || this.user === null) {\r\n window.location = '/'\r\n return\r\n }\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n const bookStatusName = this.user.firstName + ' ' + this.user.lastName\r\n\r\n this.state = {\r\n titleId: this.props.match.params.Id,\r\n id: 0,\r\n loading: true,\r\n title: '',\r\n subtitle: '',\r\n description: '',\r\n publisherId: 0,\r\n publisherName: '',\r\n publisherLocation: '',\r\n contributors: [],\r\n formats: [],\r\n numberOfPages: '',\r\n copyright: '',\r\n seriesTitle: '',\r\n seriesNumber: '',\r\n edition: '',\r\n imageUrl: '',\r\n keywords: '',\r\n doiPermanentURL: '',\r\n preview: '',\r\n selectedFile: null,\r\n subjects: [],\r\n essays: [],\r\n reviews: [],\r\n bookStatusId: 1,\r\n bookStatusNote: '',\r\n bookStatusName: bookStatusName,\r\n statusEntry: '',\r\n suppressEmailNotifications: false,\r\n isClassicRBLImport: false,\r\n accounts: [],\r\n accountId: -1,\r\n isAcceptingVolunteers: false,\r\n sourceFile: ''\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0)\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.setState({loading: true}, async () => {\r\n await this.loadAccounts()\r\n this.loadBook()\r\n })\r\n }\r\n\r\n loadBook() {\r\n if (this.isNewBook()) {\r\n this.setState({ loading: false })\r\n return;\r\n }\r\n\r\n const url = environment.baseUrl + '/api/book/bookEdit/' + this.state.titleId\r\n\r\n axios\r\n .get(url, this.config)\r\n .then((response) => {\r\n this.updateBookData(response.data);\r\n })\r\n .catch((error) => {\r\n console.error('Error loading book data: ', error);\r\n alert('Error Loading Book: ' + error);\r\n this.setState({\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n updateBookData(data) {\r\n var book = this.scrubData(data);\r\n\r\n //console.debug('book: ', book)\r\n\r\n this.setState({\r\n id: book.id,\r\n title: book.title,\r\n subtitle: book.subtitle,\r\n description: book.description,\r\n publisherName: book.publisherName,\r\n publisherLocation: book.publisherLocation,\r\n publisherId: book.publisherId,\r\n contributors: book.contributors,\r\n copyright: book.copyright,\r\n formats: book.formats,\r\n edition: book.edition,\r\n seriesTitle: book.seriesTitle,\r\n seriesNumber: book.seriesNumber,\r\n imageUrl: book.imageURL,\r\n keywords: book.keywords,\r\n doiPermanentURL: book.doiPermanentURL,\r\n numberOfPages: book.numberOfPages,\r\n subjects: book.subjects,\r\n essays: book.essays,\r\n reviews: book.reviews,\r\n bookStatusId: book.bookStatusId,\r\n suppressEmailNotifications: book.suppressEmailNotifications,\r\n isClassicRBLImport: book.isClassicRBLImport,\r\n accountId: book.accountId,\r\n loading: false,\r\n isAcceptingVolunteers: book.isAcceptingVolunteers,\r\n sourceFile: book.sourceFile\r\n })\r\n }\r\n\r\n loadAccounts() {\r\n return axios\r\n .get(environment.baseUrl + '/api/accounts/enumerate', this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return;\r\n }\r\n\r\n this.setState({\r\n accounts: response.data.accounts\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error loading data: ', error, error.response);\r\n alert('Error Loading Data');\r\n\r\n this.setState({\r\n accounts: []\r\n })\r\n })\r\n }\r\n\r\n scrubData(data) {\r\n data.description = data.description ? data.description : ''\r\n data.numberOfPages = data.numberOfPages ? data.numberOfPages : ''\r\n data.seriesTitle = data.seriesTitle ? data.seriesTitle : ''\r\n data.serisNumber = data.seriesNumber ? data.seriesNumber : ''\r\n data.copyright = data.copyright ? data.copyright : ''\r\n data.edition = data.edition ? data.edition : ''\r\n data.keywords = data.keywords ? data.keywords : ''\r\n data.doiPermanentURL = data.doiPermanentURL ? data.doiPermanentURL : ''\r\n data.sourceFile = data.sourceFile ? data.sourceFile : 'Not Applicable'\r\n\r\n data.publisherName = data.publisherName ? data.publisherName : ''\r\n data.publisherLocation = data.publisherLocation ? data.publisherLocation : ''\r\n\r\n data.contributors = data.contributors ? data.contributors : []\r\n data.formats = data.formats ? data.formats : []\r\n data.subjects = data.subjects ? data.subjects : []\r\n data.essays = data.essays ? data.essays : []\r\n data.reviews = data.reviews ? data.reviews : []\r\n\r\n return data;\r\n }\r\n\r\n isNewBook() {\r\n return this.state.titleId === null || this.state.titleId === 0 || this.state.titleId === 'new';\r\n }\r\n\r\n showPreview = (e) => {\r\n const self = this\r\n const file = e.target.files[0]\r\n const _URL = window.URL || window.webkitURL;\r\n\r\n let filename = e.target.value\r\n\r\n if (!this.checkExtension(filename)) {\r\n alert(\"Invalid file type. Image must be GIF, JPEG, or PNG format.\")\r\n this.fileUpload.value = ''\r\n return false\r\n }\r\n\r\n const sizeInMb = file.size / 1024 / 1024\r\n if (sizeInMb > 5) {\r\n this.fileUpload.value = ''\r\n let sizeErrorMessage = \"Image file must be equal to or less than 5 MB.\"\r\n alert(sizeErrorMessage + \" The selected file is \" + Math.ceil(sizeInMb) + \"mb.\")\r\n return false\r\n }\r\n\r\n var reader = new FileReader()\r\n\r\n reader.onload = function (e) {\r\n let image = new Image();\r\n\r\n image.onload = function () {\r\n\r\n self.setState({\r\n preview: e.target.result,\r\n selectedFile: file\r\n })\r\n };\r\n\r\n image.src = _URL.createObjectURL(file);\r\n }\r\n\r\n reader.readAsDataURL(e.target.files[0])\r\n }\r\n\r\n checkExtension(filename) {\r\n var hash = {\r\n '.jpg': 1,\r\n '.jpeg': 1,\r\n '.png': 1,\r\n '.gif': 1\r\n };\r\n\r\n const re = /\\.[0-9a-z]+$/i\r\n const ext = filename.toLowerCase().match(re);\r\n\r\n return hash[ext]\r\n }\r\n\r\n onBrowseClick = (e) => {\r\n e.preventDefault();\r\n this.fileUpload.click();\r\n }\r\n\r\n getImageDisplay() {\r\n let source = this.state.preview === '' ? this.state.imageUrl || bookImage : this.state.preview;\r\n\r\n return (\r\n
    \r\n \r\n this.fileUpload = ref}\r\n />\r\n \r\n
    \r\n )\r\n }\r\n\r\n backButtonClick = (e) => {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }\r\n\r\n handleInputChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n exactlyFourDigits(value) {\r\n let numberFormat = /^\\d{4}$/\r\n return numberFormat.test(value)\r\n }\r\n\r\n validateCopyright() {\r\n if (this.state.copyright\r\n && this.state.copyright.length === 4\r\n && this.exactlyFourDigits(this.state.copyright)) {\r\n return true\r\n }\r\n\r\n return false;\r\n }\r\n\r\n handleSubmit = async (e) => {\r\n e.preventDefault();\r\n\r\n if (this.validateCopyright() === false) {\r\n alert('Copyright must be entered as a four-digit year.')\r\n return false\r\n }\r\n\r\n if (this.state.contributors.length === 0) {\r\n alert('Book must have at least one contributor')\r\n return false\r\n }\r\n\r\n if (this.state.formats.length === 0) {\r\n alert('Book must have at least one format')\r\n return false\r\n }\r\n\r\n if (this.state.isClassicRBLImport !== true) {\r\n if (this.state.accountId < 1) {\r\n alert('Must select a Bill To account.')\r\n return false\r\n }\r\n }\r\n\r\n if (this.state.description.length > 5000) {\r\n alert('The Description field contains more than the 5,000 character maximum.')\r\n return false\r\n }\r\n\r\n const isNew = this.isNewBook();\r\n\r\n let results = await this.uploadReviews()\r\n if (!results.every(x => x === true)) {\r\n return false;\r\n }\r\n\r\n if (this.state.preview) {\r\n const titleId = await this.saveData(isNew);\r\n\r\n const formData = new FormData();\r\n formData.append('files', this.state.selectedFile)\r\n formData.append('titleId', titleId)\r\n\r\n const url = environment.baseUrl + '/api/image/upload'\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + this.user.token\r\n }\r\n }\r\n\r\n axios\r\n .post(url, formData, config)\r\n .then(async response => {\r\n await this.saveReviews(titleId)\r\n this.redirectAfterBookSave(isNew, titleId)\r\n })\r\n .catch(error => {\r\n console.error('Error occurred on image upload: ', error, error.response.data);\r\n alert('Error uploading image: ' + error);\r\n });\r\n }\r\n else {\r\n const titleId = await this.saveData(isNew)\r\n await this.saveReviews(titleId)\r\n this.redirectAfterBookSave(isNew, titleId)\r\n }\r\n }\r\n\r\n async saveReviews(titleId) {\r\n let data = {\r\n reviews: this.state.reviews,\r\n titleId: titleId,\r\n statusEntry: this.state.statusEntry\r\n }\r\n\r\n const url = environment.baseUrl + '/api/reviews/save'\r\n\r\n return axios.post(url, data, this.config)\r\n .catch(error => {\r\n console.error('Error occurred on review save: ', error, error.response);\r\n alert('Error saving reviews: ' + error);\r\n });\r\n }\r\n\r\n async uploadReviews() {\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + this.user.token\r\n }\r\n }\r\n\r\n let fileUploads = []\r\n\r\n this.state.reviews.forEach(review => {\r\n if (review.needsUploading === true) {\r\n console.debug('uploading: ', review.reviewPDFName, review.selectedFile)\r\n\r\n const formData = new FormData();\r\n formData.append('files', review.selectedFile)\r\n\r\n let upload = \r\n axios.post(`${environment.baseUrl}/api/reviews/upload`, formData, config)\r\n .then(response => {\r\n review.reviewPDFName = response.data.tempfile\r\n return true\r\n })\r\n .catch(error => {\r\n console.error('Error uploading review: ', error, error.response.data)\r\n alert('Error uploading reviews: ' + error)\r\n return false\r\n })\r\n\r\n fileUploads.push(upload)\r\n }\r\n })\r\n \r\n return Promise.all(fileUploads)\r\n }\r\n\r\n async saveData(isNew) {\r\n let model = { ...this.state }\r\n model.contributors = this.updateContributorSortOrder(model.contributors)\r\n model.essays = this.collectedWorks.state.essays\r\n\r\n if (isNew) {\r\n model.titleId = 0\r\n }\r\n\r\n return axios\r\n .post(`${environment.baseUrl}/api/book/bookEdit`, model, this.config)\r\n .then(response => {\r\n return response.data.titleId\r\n })\r\n .catch(error => {\r\n console.error('Error occurred on submit: ', error, error.response.data);\r\n alert('Error saving book data: ' + error);\r\n });\r\n }\r\n\r\n redirectAfterBookSave(isNew, titleId) {\r\n MessageFlash.setMessage(\"Book data successfully saved\")\r\n\r\n if (isNew) {\r\n this.props.history.replace('/admin/bookDetails/' + titleId + '?new=true')\r\n }\r\n else {\r\n this.props.history.goBack();\r\n }\r\n }\r\n\r\n updateContributorSortOrder(contributors) {\r\n let index = 1;\r\n contributors.forEach(x => x.sortOrder = index++)\r\n return contributors;\r\n }\r\n\r\n onSubjectChange = (subjects) => {\r\n this.setState({\r\n subjects: subjects\r\n })\r\n }\r\n\r\n getTitle() {\r\n return this.isNewBook() ? 'Add Book' : 'Edit Book'\r\n }\r\n\r\n getBackToBookDetailLink() {\r\n return this.isNewBook() ? '' : (\r\n \r\n Back to Book Detail\r\n \r\n )\r\n }\r\n\r\n getBookStatusBlock() {\r\n const self = this\r\n\r\n const save = (data) => {\r\n let isAcceptingVolunteers = self.state.isAcceptingVolunteers\r\n if (`${self.state.bookStatusId}` !== BookStatusEnum.RBLApproved \r\n && data.bookStatusId === BookStatusEnum.RBLApproved) {\r\n isAcceptingVolunteers = true\r\n }\r\n else if (self.state.bookStatusId === BookStatusEnum.RBLApproved \r\n && data.bookStatusId !== BookStatusEnum.RBLApproved) {\r\n isAcceptingVolunteers = false\r\n }\r\n\r\n self.setState({\r\n bookStatusId: data.bookStatusId,\r\n bookStatusNote: data.note,\r\n isAcceptingVolunteers: isAcceptingVolunteers\r\n })\r\n }\r\n\r\n return this.isNewBook() ? '' : (\r\n
    \r\n this.bookStatus = ref}\r\n />\r\n
    \r\n )\r\n }\r\n\r\n onReviewsUpdated = (reviews) => {\r\n if (`${this.state.bookStatusId}` === BookStatusFilterEnum.RBLApproved \r\n && reviews.length > 0) {\r\n this.setState({\r\n reviews: reviews,\r\n bookStatusId: BookStatusEnum.RBLPublished,\r\n //isAcceptingVolunteers: false\r\n }, () => {\r\n this.bookStatus.changeStatus(this.state.bookStatusId)\r\n })\r\n }\r\n else if (`${this.state.bookStatusId}` === BookStatusFilterEnum.RBLPublished\r\n && reviews.length === 0) {\r\n this.setState({\r\n reviews: reviews,\r\n bookStatusId: BookStatusEnum.RBLApproved,\r\n //isAcceptingVolunteers: true\r\n }, () => {\r\n this.bookStatus.changeStatus(this.state.bookStatusId)\r\n })\r\n }\r\n else {\r\n this.setState({\r\n reviews: reviews\r\n })\r\n }\r\n }\r\n\r\n getBookReviews() {\r\n if (`${this.state.bookStatusId}` === BookStatusFilterEnum.RBLApproved\r\n || `${this.state.bookStatusId}` === BookStatusFilterEnum.RBLPublished) {\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n return ''\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n handleAccountChange = (e) => {\r\n let account = e.target.options[e.target.selectedIndex].value\r\n\r\n this.setState({\r\n accountId: account\r\n })\r\n }\r\n\r\n getSourceFileDisplay() {\r\n if (this.isNewBook()) {\r\n return (\r\n
    \r\n  \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n getAccountSelect() {\r\n if (this.state.isClassicRBLImport === true) {\r\n return ''\r\n }\r\n\r\n return (\r\n
    \r\n \r\n
    \r\n )\r\n }\r\n\r\n getSuppressEmailSetting() {\r\n if (this.state.isClassicRBLImport === true) {\r\n return ''\r\n }\r\n\r\n return (\r\n
    \r\n \r\n Suppress member email notifications?\r\n \r\n
    \r\n )\r\n }\r\n\r\n getIsAcceptingVolunteersSetting() {\r\n const current = `${this.state.bookStatusId}`\r\n\r\n if (current !== BookStatusFilterEnum.RBLApproved \r\n && current !== BookStatusFilterEnum.RBLPublished )\r\n {\r\n return ''\r\n }\r\n\r\n return (\r\n
    \r\n \r\n Accepting Volunteers?\r\n \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n {this.getBackToBookDetailLink()}\r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n {this.getTitle()}\r\n
    \r\n
    \r\n
    \r\n \r\n *\r\n \r\n \r\n  Required\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.getImageDisplay()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n this.collectedWorks = ref}/>\r\n
    \r\n\r\n {this.getSourceFileDisplay()}\r\n\r\n {this.getAccountSelect()}\r\n\r\n {this.getSuppressEmailSetting()}\r\n\r\n {this.getIsAcceptingVolunteersSetting()}\r\n\r\n {this.getBookReviews()}\r\n\r\n {this.getBookStatusBlock()}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import * as React from 'react'\r\n\r\nconst requiredMark = (required) => {\r\n if ( required ) {\r\n return * \r\n }\r\n}\r\n\r\nexport const TextField = (props) => {\r\n return (\r\n
    \r\n
    \r\n {requiredMark(props.required)}{props.title} {props.subtitle}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n","import * as React from 'react'\r\n\r\nconst requiredMark = (required) => {\r\n if ( required ) {\r\n return * \r\n }\r\n}\r\n\r\nexport const InputField = (props) => {\r\n return (\r\n
    \r\n
    \r\n {requiredMark(props.required)}{props.title}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n}\r\n","import React from 'react'\r\nimport './listField.css'\r\n\r\nexport class ListField extends React.Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n data: props.data ? props.data : []\r\n }\r\n\r\n this.listId = props.id ? props.id : ''\r\n }\r\n\r\n render() {\r\n const self = this\r\n\r\n if (this.state.data.length === 0) {\r\n return (\r\n
    None
    \r\n )\r\n }\r\n\r\n return (\r\n
    \r\n {this.state.data.map(function (item, index) {\r\n return self.props.displayitem(item, index, self.props.modal, self.props.showModal)\r\n })}\r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport \"./selectField.css\"\r\n\r\nconst requiredMark = (required) => {\r\n if ( required ) {\r\n return * \r\n }\r\n}\r\n\r\nexport const SelectField = (props) => {\r\n return (\r\n
    \r\n
    \r\n \r\n {requiredMark(props.required)}\r\n {props.Title}\r\n \r\n
    \r\n\r\n \r\n
    \r\n )\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport { ListField, BookFormatModal } from '../componentsBarrel'\r\n\r\nexport class BookFormats extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n formats: props.formats ? props.formats : []\r\n }\r\n }\r\n\r\n showBookFormatModal(showModal, self, item, index) {\r\n let close = (data, self) => {\r\n if (data) {\r\n let array = self.state.formats\r\n\r\n if (data.deleteRequested) {\r\n array.splice(index, 1)\r\n }\r\n else if (data.edit) {\r\n let record = array[index]\r\n record.isbn = data.isbn\r\n record.price = data.price\r\n record.format = data.format\r\n record.formatTypeId = data.formatTypeId\r\n array[index] = record;\r\n }\r\n else {\r\n array.push(data)\r\n }\r\n\r\n self.setState({\r\n formats: array\r\n })\r\n }\r\n }\r\n\r\n showModal(BookFormatModal, { onClose: close, parent: self, item: item })\r\n }\r\n\r\n addModal(event, modal, showModal) {\r\n event.preventDefault();\r\n modal(showModal, this)\r\n }\r\n\r\n editModal(event, modal, showModal, item, index) {\r\n event.preventDefault();\r\n if (item !== undefined) {\r\n modal(showModal, this, item, index)\r\n }\r\n }\r\n\r\n getModal() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n displayFormat = (item, index, modal, showModal) => {\r\n let format = this.translateFormatType(item.format) + ' (ISBN: ' + item.isbn\r\n \r\n if (item.price && item.price !== '') {\r\n format += ', Price: ' + item.price\r\n }\r\n\r\n format += ')'\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n translateFormatType(type) {\r\n if ( type === 'EBook' ) {\r\n return 'E-Book'\r\n }\r\n\r\n return type\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n * \r\n Formats\r\n \r\n \r\n {this.getModal()}\r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport Modal from 'react-modal'\r\nimport { InputField } from '../componentsBarrel'\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './bookFormatModal.css'\r\n\r\nexport class BookFormatModal extends React.Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.showDelete = props.item ? true : false\r\n\r\n this.state = {\r\n format: props.item ? props.item.format : 'Hardcover',\r\n formatTypeId: props.item ? props.item.formatTypeId : 2,\r\n isbn: props.item ? props.item.isbn : '',\r\n //price: props.item ? props.item.price : '',\r\n edit: props.item ? true : false\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n this.props.onRequestClose();\r\n }\r\n\r\n onRequestDelete = (e) => {\r\n e.preventDefault();\r\n let data = {\r\n ...this.state,\r\n deleteRequested: true\r\n }\r\n this.onRequestClose(e);\r\n this.props.onClose(data, this.props.parent);\r\n\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (/[^A-Z0-9]/.test(this.state.isbn)) {\r\n alert('ISBN must be alphanumeric only (upper case only).')\r\n return false\r\n }\r\n\r\n this.onRequestClose(e);\r\n this.props.onClose(this.state, this.props.parent);\r\n }\r\n\r\n onChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n onChangeAlphanumericOnly = (e) => {\r\n let value = e.target.value.replace(/[^a-zA-Z0-9]/g, '')\r\n value = value.toUpperCase()\r\n this.setState({[e.target.name]: value})\r\n }\r\n\r\n getDeleteButton() {\r\n if ( this.showDelete ) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n getFormatTypes() {\r\n return (\r\n
    \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Book Format

    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n Format\r\n
    \r\n
    \r\n {this.getFormatTypes()}\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n {/*
    \r\n \r\n
    */}\r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport Modal from 'react-modal'\r\nimport { BookStatusHelper } from '../../Helpers/bookStatusHelper'\r\n\r\nimport '../Styles/divTables.css'\r\nimport './bookStatusHistoryModal.css'\r\n\r\nexport class BookStatusHistoryModal extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n bookId: props.bookId,\r\n history: props.history\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.props.onRequestClose) {\r\n // this is what allows the dialog to close\r\n this.props.onRequestClose();\r\n }\r\n }\r\n\r\n translateStatus(statusId) {\r\n return BookStatusHelper.translateStatus(statusId)\r\n }\r\n\r\n getStatusRows() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.history.map((x, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    \r\n Date\r\n \r\n Name\r\n \r\n Previous Status\r\n \r\n Updated Status\r\n \r\n Note\r\n
    \r\n {new Date(x.created).toLocaleDateString()}\r\n \r\n {x.bookStatusName}\r\n \r\n {this.translateStatus(x.previousStatus)}\r\n \r\n {this.translateStatus(x.newStatus)}\r\n \r\n {x.note}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n

    Status History

    \r\n\r\n {this.getStatusRows()}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport Modal from 'react-modal'\r\nimport axios from 'axios'\r\nimport environment from \"../../Environments/environments\";\r\nimport { BookStatusHistoryModal } from './bookStatusHistoryModal'\r\nimport { ModalConsumerStacked } from '../../Containers/Login/loginContext'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { BookStatusEnum } from '../../Helpers/bookStatusHelper';\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './bookStatusModal.css'\r\n\r\nexport class BookStatusModal extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n bookStatusId: props.bookStatusId,\r\n note: props.note,\r\n bookId: props.bookId,\r\n rblDisabled: true,\r\n sblDisabled: false,\r\n loading: true\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setBookStatus(this.state.bookStatusId)\r\n\r\n const url = environment.baseUrl + '/api/book/bookStatusHistory/' + this.state.bookId\r\n const self = this\r\n\r\n axios.get(url)\r\n .then(response => {\r\n self.setState({\r\n history: response.data.history,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n self.setState({ loading: false })\r\n console.error('Error getting history: ', error)\r\n alert('Error getting history: ' + error.response.data.message)\r\n })\r\n }\r\n\r\n setBookStatus(statusId) {\r\n let rblDisabled = (statusId < 3)\r\n let sblDisabled = (statusId === 0)\r\n\r\n this.setState({\r\n bookStatusId: statusId,\r\n rblDisabled: rblDisabled,\r\n sblDisabled: sblDisabled\r\n })\r\n }\r\n\r\n toggleWithdrawn() {\r\n (this.state.bookStatusId === 0) ? this.onChange(1) : this.onChange(0)\r\n }\r\n\r\n onStatusHistory = (e, showModal) => {\r\n showModal(BookStatusHistoryModal, {bookId: this.props.bookId, history: this.state.history})\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.props.onRequestClose) {\r\n // this is what allows the dialog to close\r\n this.props.onRequestClose();\r\n }\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n this.onRequestClose(e)\r\n\r\n if (!this.validateForm()) {\r\n return false;\r\n }\r\n\r\n if (this.props.onSave) {\r\n\r\n const data = {\r\n bookStatusId: this.state.bookStatusId,\r\n note: this.state.note\r\n }\r\n\r\n this.props.onSave(data);\r\n }\r\n\r\n return true;\r\n }\r\n\r\n validateForm() {\r\n return true;\r\n }\r\n\r\n onChange(newStatus) {\r\n if (this.state.bookStatusId === BookStatusEnum.RBLPublished) {\r\n alert('Reviews already published. You must delete all reviews before you can change the status on this screen.')\r\n return false\r\n }\r\n\r\n this.setBookStatus(newStatus)\r\n }\r\n\r\n onNoteChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n getStatusHistoryLink(showModal) {\r\n return (\r\n this.onStatusHistory(e, showModal)}>Status History\r\n )\r\n }\r\n\r\n getStatusHistoryBlock() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n Notes\r\n {this.getStatusHistoryLink(showModal)}\r\n \r\n )}\r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Status

    \r\n\r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n {this.getStatusHistoryBlock()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, { Fragment } from 'react'\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport { BookStatusModal } from './bookStatusModal'\r\nimport { BookStatusHelper } from '../../Helpers/bookStatusHelper'\r\n\r\nimport './bookStatus.css'\r\n\r\nexport class BookStatus extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n bookStatusId: props.bookStatusId,\r\n note: props.note,\r\n bookId: props.bookId\r\n }\r\n }\r\n\r\n onEditStatus(e, showModal) {\r\n e.preventDefault();\r\n\r\n const self = this\r\n\r\n const save = (data) => {\r\n self.setState({\r\n bookStatusId: data.bookStatusId,\r\n note: data.note\r\n }, () => {\r\n if (self.props.onSave) {\r\n self.props.onSave(data)\r\n }\r\n })\r\n }\r\n\r\n const params = {\r\n onSave: save,\r\n bookStatusId: this.state.bookStatusId,\r\n note: this.state.note,\r\n bookId: this.state.bookId\r\n }\r\n\r\n showModal(BookStatusModal, params)\r\n }\r\n\r\n changeStatus = (newStatusId) => {\r\n this.setState({\r\n bookStatusId: newStatusId\r\n })\r\n }\r\n\r\n calculateStatusText() {\r\n return BookStatusHelper.translateStatus(this.state.bookStatusId)\r\n }\r\n\r\n getModal() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.getModal()}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { ListField, ContributorModal } from '../componentsBarrel'\r\nimport { ModalConsumerStacked } from \"../../Containers/Login/loginContext\";\r\n\r\nimport \"./contributors.css\"\r\n\r\nexport class Contributors extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.title = props.title ? props.title : 'Contributors'\r\n\r\n this.state = {\r\n contributors: props.contributors ? props.contributors : []\r\n }\r\n }\r\n\r\n getModal() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n addModal(event, modal, showModal) {\r\n event.preventDefault();\r\n modal(showModal, this)\r\n }\r\n\r\n editModal(event, modal, showModal, item, index) {\r\n event.preventDefault();\r\n if (item !== undefined) {\r\n modal(showModal, this, item, index)\r\n }\r\n }\r\n\r\n showContributorModal(showModal, self, item, index) {\r\n let close = (data, self) => {\r\n if (data) {\r\n let array = self.state.contributors\r\n\r\n if (data.deleteRequested) {\r\n array.splice(index, 1)\r\n }\r\n else if (data.edit) {\r\n let record = array[index]\r\n record.firstName = data.firstName\r\n record.lastName = data.lastName\r\n record.isAuthor = data.isAuthor\r\n record.isEditor = data.isEditor\r\n record.isTranslator = data.isTranslator\r\n \r\n if (record.author && record.author.person) {\r\n record.author.person.lastName = data.lastName\r\n record.author.person.firstName = data.firstName\r\n }\r\n\r\n array[index] = record;\r\n }\r\n else {\r\n array.push(data)\r\n }\r\n }\r\n }\r\n\r\n showModal(ContributorModal, { onClose: close, parent: self, item: item })\r\n }\r\n\r\n displayContributor = (item, index, modal, showModal) => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n calculateRoleDisplay(contributor) {\r\n let role = \"\";\r\n\r\n role += contributor.isAuthor ? \", Author\" : '';\r\n role += contributor.isEditor ? \", Editor\" : '';\r\n role += contributor.isTranslator ? \", Translator\" : '';\r\n\r\n if (role.length > 0) {\r\n role = role.substring(2);\r\n }\r\n\r\n return role;\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n * {this.title}\r\n \r\n\r\n {this.getModal()}\r\n
    \r\n )\r\n }\r\n}","import React from 'react'\r\nimport Modal from 'react-modal'\r\nimport { InputField } from '../componentsBarrel'\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './contributorModal.css'\r\nimport { Checkbox } from 'react-bootstrap'\r\n\r\nexport class ContributorModal extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.showDelete = props.item ? true : false\r\n\r\n this.state = {\r\n firstName: props.item ? props.item.firstName : '',\r\n lastName: props.item ? props.item.lastName : '',\r\n isAuthor: props.item ? props.item.isAuthor : true,\r\n isEditor: props.item ? props.item.isEditor : false,\r\n isTranslator: props.item ? props.item.isTranslator : false,\r\n edit: props.item ? true : false\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.props.onRequestClose) {\r\n this.props.onRequestClose();\r\n }\r\n }\r\n\r\n onRequestDelete = (e) => {\r\n e.preventDefault();\r\n let data = {\r\n ...this.state,\r\n deleteRequested: true\r\n }\r\n this.onRequestClose(e);\r\n this.props.onClose(data, this.props.parent);\r\n\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (this.state.isAuthor === false\r\n && this.state.isEditor === false\r\n && this.state.isTranslator === false) {\r\n alert('Must select at least one role') \r\n return false;\r\n }\r\n else {\r\n this.onRequestClose(e);\r\n this.props.onClose(this.state, this.props.parent);\r\n return true;\r\n }\r\n }\r\n\r\n onChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n getDeleteButton() {\r\n if (this.showDelete) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Contributor

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n Role\r\n
    \r\n
    \r\n
    \r\n \r\n Author\r\n \r\n
    \r\n
    \r\n \r\n Editor\r\n \r\n
    \r\n
    \r\n \r\n Translator\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport {ExpertiseModal, TextField} from '../componentsBarrel'\r\nimport { ModalConsumerStacked } from \"../../Containers/Login/loginContext\";\r\n\r\nimport './expertiseComponent.css'\r\n\r\nexport class ExpertiseComponent extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.rows = props.rows ? props.rows : \"4\"\r\n this.title = props.title ? props.title : 'Subjects'\r\n\r\n this.state = {\r\n subjects: props.subjects ? props.subjects : []\r\n }\r\n }\r\n\r\n getSubjects() {\r\n let result = ''\r\n\r\n for (let i = 0; i < this.state.subjects.length; ++i) {\r\n result += i === 0 ? '' : ', '\r\n result += this.state.subjects[i].subject.description\r\n }\r\n\r\n return result;\r\n }\r\n\r\n getSubjectsDisplay() {\r\n return (\r\n
    \r\n {this.getSubjectsModalButton()}\r\n \r\n
    \r\n )\r\n }\r\n\r\n getSubjectsModalButton() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n showExpertiseModal(showModal, self) {\r\n let close = (data, self) => {\r\n if (data) {\r\n self.props.onSubjectChange(data);\r\n self.setState({\r\n subjects: data\r\n })\r\n }\r\n }\r\n\r\n let passedArray = []\r\n self.state.subjects.forEach(x => passedArray.push(x))\r\n\r\n showModal(ExpertiseModal, { onClose: close, parent: self, subjects: passedArray })\r\n }\r\n\r\n addModal(event, showModal) {\r\n event.preventDefault();\r\n this.showExpertiseModal(showModal, this)\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.title}\r\n {this.getSubjectsDisplay()}\r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport Modal from 'react-modal'\r\nimport { ExpertiseModalContent } from './expertiseModalContent';\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './expertiseModal.css'\r\n\r\nexport class ExpertiseModal extends React.Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n bookSubjects: props.subjects ? props.subjects : [],\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n \r\n if (this.props.onRequestClose) {\r\n this.props.onRequestClose();\r\n }\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (this.isDataValid() === false) {\r\n // display alert if error messages needed\r\n return false;\r\n }\r\n else {\r\n this.onRequestClose(e);\r\n this.props.onClose(this.state.bookSubjects, this.props.parent);\r\n return true;\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n this.props.onRequestClose(e);\r\n }\r\n\r\n isDataValid() {\r\n // Validate data here and return false if not valid\r\n return true;\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n

    Subjects

    \r\n\r\n \r\n\r\n
    \r\n \r\n \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { InputField, TextField, ExpertiseComponent, Contributors } from '../componentsBarrel'\r\n\r\nimport '../BookEditor/bookEditor.css'\r\nimport '../Styles/dialogButtons.css'\r\n\r\nexport class CollectedWorksEssaysModalContent extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n let essay = props.essay ? props.essay : {}\r\n\r\n this.state = {\r\n id: essay.id ? essay.id : -1,\r\n title: essay.title ? essay.title : '',\r\n pageStart: essay.pageStart ? essay.pageStart : '',\r\n pageEnd: essay.pageEnd ? essay.pageEnd : '',\r\n abstract: essay.abstract ? essay.abstract : '',\r\n doi: essay.doi ? essay.doi : '',\r\n keywords: essay.keywords ? essay.keywords : '',\r\n contributors: props.essay ? props.essay.contributors : [],\r\n subjects: props.essay ? props.essay.subjects : []\r\n }\r\n }\r\n\r\n onTextChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n onSubjectChange = (subjects) => {\r\n this.setState({\r\n subjects: subjects\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from 'react'\r\nimport Modal from 'react-modal'\r\nimport { CollectedWorksEssaysModalContent } from './collectedWorksEssaysModalContent'\r\n\r\nimport './collectedWorksEssaysModal.css'\r\n\r\nexport class CollectedWorksEssaysModal extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n essay: props.essay ? props.essay : {contributors: [], subjects: []},\r\n edit: props.essay ? true : false\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (this.props.onRequestClose) {\r\n this.props.onRequestClose();\r\n }\r\n }\r\n\r\n onRequestDelete = (e) => {\r\n e.preventDefault();\r\n let data = {\r\n ...this.state,\r\n deleteRequested: true\r\n }\r\n this.onRequestClose(e);\r\n this.props.onSave(data, this.props.parent);\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault()\r\n e.stopPropagation()\r\n\r\n if (this.isDataValid() === false) {\r\n return false;\r\n }\r\n\r\n this.onRequestClose(e)\r\n\r\n const data = {\r\n essay: this.content.state,\r\n edit: this.state.edit,\r\n deleteRequested: this.state.deleteRequested\r\n }\r\n\r\n this.props.onSave(data)\r\n return true;\r\n }\r\n\r\n isDataValid() {\r\n if (this.state.essay.contributors.length < 1) {\r\n alert('You must enter at least one contributor.')\r\n return false\r\n }\r\n\r\n return true;\r\n }\r\n\r\n getDeleteButton() {\r\n if ( this.state.edit ) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n
    \r\n

    Essay

    \r\n\r\n this.content = ref} essay={this.state.essay}/>\r\n\r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { ListField } from '../componentsBarrel'\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport { CollectedWorksEssaysModal } from '../CollectedWorksEssaysModal/collectedWorksEssaysModal';\r\n\r\nimport './collectedWorksEssays.css'\r\n\r\nexport class CollectedWorksEssays extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n essays: props.essays ? props.essays : [],\r\n loading: false\r\n }\r\n\r\n //console.debug('passed essays: ', props.essays)\r\n }\r\n\r\n getEssayDisplay = (item, index, modal, showModal) => {\r\n const {authors, editors, translators} = this.sortContributors(item.contributors)\r\n\r\n return (\r\n \r\n \r\n
    \r\n {this.getContributorListing('author', authors)}\r\n {this.getContributorListing('editor', editors)}\r\n {this.getContributorListing('translator', translators)}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n getContributorListing(name, people) {\r\n if (people.length > 0) {\r\n return (\r\n
    \r\n {name}: {this.getContributorNameList(people)}\r\n
    \r\n )\r\n }\r\n\r\n return ''\r\n }\r\n\r\n sortContributors(contributors) {\r\n let authors = []\r\n let editors = []\r\n let translators = []\r\n\r\n contributors = contributors ? contributors : []\r\n\r\n contributors.forEach(x => {\r\n let name = `${x.firstName} ${x.lastName}`\r\n if (x.isAuthor) authors.push(name)\r\n if (x.isEditor) editors.push(name)\r\n if (x.isTranslator) translators.push(name)\r\n })\r\n\r\n return {authors, editors, translators}\r\n }\r\n\r\n getContributorNameList(array) {\r\n if (array.length === 1) {\r\n return array[0]\r\n }\r\n\r\n let divider = ' and '\r\n let result = ''\r\n\r\n for(let i = array.length-1; i >= 0; --i) {\r\n result = array[i] + result;\r\n if ( i > 0) {\r\n result = divider + result\r\n divider = ', '\r\n }\r\n }\r\n\r\n return result\r\n }\r\n\r\n onAddEditButtonClick = (e, showModal, item, index) => {\r\n e.preventDefault()\r\n\r\n let self = this\r\n\r\n let save = (data) => {\r\n let array = this.state.essays\r\n\r\n if (data.deleteRequested) {\r\n array.splice(index, 1)\r\n }\r\n else if (data.edit) {\r\n array[index] = data.essay\r\n }\r\n else {\r\n array.push(data.essay)\r\n }\r\n\r\n self.setState({\r\n essays: array\r\n })\r\n }\r\n\r\n showModal(CollectedWorksEssaysModal, {onSave: save, parent: self, essay: item})\r\n }\r\n\r\n render() {\r\n if (this.state.loading) {\r\n return \"\"\r\n }\r\n\r\n return (\r\n
    \r\n Collected Works / Essays\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport { BookStatusFilterEnum } from '../../Helpers/bookStatusHelper'\r\nimport './bookStatusFilter.css'\r\n\r\nexport class BookStatusFilter extends React.Component {\r\n render() {\r\n return (\r\n
    \r\n
    \r\n Status\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport {BookStatusFilterEnum} from '../../Helpers/bookStatusHelper'\r\n\r\nimport './adminQuickFilters.css'\r\n\r\nexport class AdminQuickFilters extends React.Component {\r\n getSearchHref(statusFilterType) {\r\n return \"/admin/searchResults/all?type=1&subttype=0&sf=\" + statusFilterType + \"&browseAll\"\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n

    Action Needed

    \r\n \r\n
    \r\n\r\n
    \r\n

    Pending Book Review

    \r\n \r\n
    \r\n\r\n
    \r\n

    No Action Needed

    \r\n \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport { ListField, BookReviewModal } from '../componentsBarrel'\r\n\r\nimport './bookReviews.css'\r\n\r\nexport class BookReviews extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.loggedInUser = null;\r\n if (sessionStorage.getItem(\"loggedInUser\")) {\r\n let user = JSON.parse(sessionStorage.getItem(\"loggedInUser\"));\r\n this.loggedInUser = `${user.firstName} ${user.lastName}`\r\n }\r\n\r\n this.state = {\r\n reviews: props.reviews ? props.reviews : []\r\n }\r\n }\r\n\r\n showBookReviewModal(showModal, self, item, index) {\r\n let close = (data, self) => {\r\n if (data) {\r\n let array = self.state.reviews\r\n\r\n if (data.deleteRequested) {\r\n array.splice(index, 1)\r\n }\r\n else if (data.edit) {\r\n let record = array[index]\r\n\r\n record.names = data.names\r\n record.reviewPDFName = data.reviewPDFName\r\n record.needsUploading = data.needsUploading ? data.needsUploading : false\r\n record.selectedFile = data.selectedFile\r\n\r\n array[index] = record;\r\n }\r\n else {\r\n data.submitter = self.loggedInUser\r\n array.push(data)\r\n }\r\n\r\n self.props.onReviewsUpdated(array)\r\n }\r\n }\r\n\r\n showModal(BookReviewModal, { onClose: close, parent: self, item: item })\r\n }\r\n\r\n displayReview = (item, index, modal, showModal) => {\r\n return (\r\n \r\n \r\n \r\n )\r\n }\r\n\r\n addModal(event, modal, showModal) {\r\n event.preventDefault();\r\n modal(showModal, this)\r\n }\r\n\r\n editModal(event, modal, showModal, item, index) {\r\n event.preventDefault();\r\n if (item !== undefined) {\r\n modal(showModal, this, item, index)\r\n }\r\n }\r\n\r\n getModal() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n Reviews\r\n \r\n \r\n {this.getModal()}\r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport Modal from 'react-modal'\r\nimport { InputField } from '../componentsBarrel'\r\n\r\nimport './bookReviewModal.css'\r\n\r\nexport class BookReviewModal extends React.Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.showDelete = props.item ? true : false\r\n\r\n this.state = {\r\n names: props.item ? props.item.names : '',\r\n file: props.item ? props.item.file : null,\r\n reviewPDFName: props.item ? props.item.reviewPDFName : '',\r\n reviewedOn: new Date(),\r\n edit: props.item ? true : false\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n this.props.onRequestClose();\r\n }\r\n\r\n onRequestDelete = (e) => {\r\n let data = {\r\n ...this.state,\r\n deleteRequested: true\r\n }\r\n \r\n this.onRequestClose(e);\r\n this.props.onClose(data, this.props.parent);\r\n }\r\n\r\n onChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n onBrowseClick = (e) => {\r\n e.preventDefault()\r\n this.fileUpload.click()\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (this.state.reviewPDFName === '') {\r\n alert('Review file is required')\r\n return false;\r\n }\r\n\r\n this.onRequestClose(e);\r\n this.props.onClose(this.state, this.props.parent);\r\n }\r\n\r\n handleFileSelection = (e) => {\r\n const self = this\r\n const file = e.target.files[0]\r\n\r\n let filename = e.target.value\r\n\r\n if (!this.checkExtension(filename)){\r\n alert('Invalid file type. File must be PDF format.')\r\n return false\r\n }\r\n\r\n const sizeInMb = file.size / 1024 / 1024\r\n if (sizeInMb > 10) {\r\n let sizeErrorMessage = \"File is too big. File size cannot exceed 10 MB.\"\r\n alert(sizeErrorMessage + \" The selected file is \" + Math.ceil(sizeInMb) + \"mb.\")\r\n return false\r\n }\r\n\r\n var reader = new FileReader()\r\n\r\n reader.onload = function (e) {\r\n\r\n console.debug('review file: ', file)\r\n\r\n self.setState({\r\n selectedFile: file,\r\n // eslint-disable-next-line\r\n reviewPDFName: filename.replace(/^.*?([^\\\\\\/]*)$/, '$1'),\r\n needsUploading: true\r\n })\r\n }\r\n\r\n reader.readAsDataURL(e.target.files[0])\r\n }\r\n\r\n checkExtension(filename) {\r\n var hash = {\r\n '.pdf': 1\r\n };\r\n\r\n const re = /\\.[0-9a-z]+$/i\r\n const ext = filename.toLowerCase().match(re);\r\n\r\n return hash[ext]\r\n }\r\n\r\n getDeleteButton() {\r\n if ( this.showDelete ) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Review

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n this.fileUpload = ref}\r\n />\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport './accountManagement.css'\r\n\r\nexport class AccountManagement extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n accounts: [],\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer')\r\n footer.style.position = 'relative'\r\n\r\n this.setState({loading: true}, () => {\r\n this.loadDataFromServer()\r\n })\r\n }\r\n\r\n loadDataFromServer() {\r\n const url = environment.baseUrl + '/api/accounts/enumerate'\r\n\r\n axios\r\n .get(url, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return;\r\n }\r\n\r\n this.setState({\r\n accounts: response.data.accounts,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error loading account data: ', error, error.response);\r\n alert('Error Loading Account Data');\r\n\r\n this.setState({\r\n accounts: [],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n editAccount = (e, id) => {\r\n e.preventDefault();\r\n this.props.history.push('/admin/accountDetail/' + id)\r\n }\r\n\r\n getAccounts() {\r\n if (this.state.accounts.length === 0) {\r\n return (\r\n \r\n No Accounts Found to List\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n {this.state.accounts.map((account, index) => {\r\n return (\r\n \r\n )\r\n })}\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Account Management\r\n
    \r\n\r\n
    \r\n Add Account\r\n
    \r\n\r\n
    \r\n {this.getAccounts()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport ModalRoot, {ModalRootStacked} from \"../../Containers/Login/loginRoot\";\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { InputField, SelectField, Imprints} from '../componentsBarrel'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nimport './accountDetail.css'\r\n\r\nexport class AccountDetail extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n let id = this.props.match.params.Id\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n id: id === 'new' ? 0 : id,\r\n states: [],\r\n countries: [],\r\n country: {},\r\n countryId: 1,\r\n isNew: (id === 'new'),\r\n name: '',\r\n imprints: [],\r\n copies: '1',\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n phone: '',\r\n address1: '',\r\n address2: '',\r\n city: '',\r\n state: {},\r\n stateId: 0,\r\n province: '',\r\n postalCode: '',\r\n telephone: ''\r\n }\r\n\r\n this.defaultReviewCopyOptions = ['1', '2', '3']\r\n }\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0)\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.setState({loading: true}, () => this.loadAccount());\r\n }\r\n\r\n loadAccount() {\r\n let promises = []\r\n\r\n if (this.state.isNew === false) {\r\n promises.push(axios\r\n .get(environment.baseUrl + '/api/accounts/get/' + this.state.id, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return;\r\n }\r\n\r\n if (response.data.imprints) {\r\n response.data.imprints.sort((a,b) => {\r\n return a.description.localeCompare(b.description)\r\n })\r\n }\r\n\r\n this.loadValues(response.data)\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading account: ', error, error.response);\r\n alert('Error Loading Account');\r\n \r\n this.setState({\r\n loading: false\r\n })\r\n }))\r\n }\r\n\r\n promises.push(axios\r\n .get(environment.baseUrl + '/api/accounts/states', this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return;\r\n }\r\n\r\n let states = response.data\r\n states.unshift({id: 0, name: ''})\r\n\r\n this.setState({\r\n states: response.data\r\n })\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading state data: ', error, error.response);\r\n alert('Error Loading State Data');\r\n\r\n this.setState({\r\n states: [],\r\n loading: false\r\n })\r\n }))\r\n\r\n promises.push(axios\r\n .get(environment.baseUrl + '/api/accounts/countries', this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return;\r\n }\r\n\r\n this.setState({\r\n countries: response.data\r\n })\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading state data: ', error, error.response);\r\n alert('Error Loading State Data');\r\n\r\n this.setState({\r\n countries: [],\r\n loading: false\r\n })\r\n }))\r\n\r\n Promise.all(promises)\r\n .then(values => {\r\n this.setState({loading: false})\r\n })\r\n }\r\n\r\n loadValues(data) {\r\n this.setState({\r\n id: data.id,\r\n name: data.name,\r\n imprints: data.imprints,\r\n copies: data.copies,\r\n firstName: data.firstName,\r\n lastName: data.lastName,\r\n email: data.email,\r\n phone: data.phone,\r\n address1: data.address1,\r\n address2: data.address2,\r\n city: data.city,\r\n stateId: data.stateId,\r\n province: data.province,\r\n countryId: data.countryId,\r\n postalCode: data.postalCode,\r\n telephone: data.telephone\r\n })\r\n }\r\n\r\n handleInputChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }\r\n\r\n onDelete = (e) => {\r\n e.preventDefault();\r\n\r\n if (!window.confirm('Are you sure you want to delete this account?')) {\r\n return false;\r\n }\r\n \r\n axios\r\n .delete(environment.baseUrl + '/api/accounts/delete/' + this.state.id, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n MessageFlash.setMessage('Account deleted')\r\n this.props.history.goBack();\r\n })\r\n .catch(error => {\r\n console.error('Error deleting account: ', error, error.response);\r\n alert('Error Deleting Account');\r\n })\r\n }\r\n\r\n getDeleteButton() {\r\n if (this.state.isNew === true) {\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n validateForm() {\r\n let isEmailValid = /(?:[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*|\"(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21\\x23-\\x5b\\x5d-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])*\")@(?:(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?|\\[(?:(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?|[a-z0-9-]*[a-z0-9]:(?:[\\x01-\\x08\\x0b\\x0c\\x0e-\\x1f\\x21-\\x5a\\x53-\\x7f]|\\\\[\\x01-\\x09\\x0b\\x0c\\x0e-\\x7f])+)\\])/\r\n .test(this.state.email)\r\n\r\n if (isEmailValid === false) {\r\n alert('Email address is not valid. Please try again.')\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n if (!this.validateForm()) {\r\n return false;\r\n }\r\n\r\n let model = {...this.state}\r\n\r\n model.stateId = this.isCountryUSA() ? model.stateId : 0\r\n model.province = this.isCountryUSA() ? '' : model.province\r\n\r\n axios\r\n .post(environment.baseUrl + '/api/accounts/save', model, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return\r\n }\r\n\r\n MessageFlash.setMessage('Account Saved Successfully')\r\n this.props.history.goBack();\r\n })\r\n .catch(error => {\r\n console.error('Error saving account: ', error, error.response);\r\n alert('Error Saving Account');\r\n })\r\n }\r\n\r\n isCountryUSA() {\r\n return `${this.state.countryId}` === '1'\r\n }\r\n\r\n getProvinceField() {\r\n if (this.isCountryUSA()) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n getStateField() {\r\n if (this.isCountryUSA()) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Account\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n *\r\n \r\n \r\n  Required\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n

    Billing Contact

    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n {this.getStateField()}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n {this.getProvinceField()}\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport { ListField, ImprintModal } from '../componentsBarrel'\r\n\r\nimport './imprints.css'\r\n\r\nexport class Imprints extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n let array = props.imprints ? props.imprints : []\r\n //array.sort(this.imprintCompare)\r\n\r\n this.state = {\r\n imprints: array\r\n }\r\n }\r\n\r\n showImprintModal(showModal, self, item, index) {\r\n let close = (data, self) => {\r\n if (data) {\r\n let array = self.state.imprints\r\n\r\n if (data.deleteRequested) {\r\n array.splice(index, 1)\r\n }\r\n else if (data.edit) {\r\n let record = array[index]\r\n record.description = data.description\r\n array[index] = record;\r\n }\r\n else {\r\n array.push(data)\r\n }\r\n\r\n array.sort(self.imprintCompare)\r\n\r\n self.setState({\r\n imprints: array\r\n })\r\n }\r\n }\r\n\r\n showModal(ImprintModal, { onClose: close, parent: self, item: item })\r\n }\r\n\r\n imprintCompare = (a,b) => {\r\n return a.description.localeCompare(b.description)\r\n }\r\n\r\n addModal(event, modal, showModal) {\r\n event.preventDefault();\r\n modal(showModal, this)\r\n }\r\n\r\n editModal(event, modal, showModal, item, index) {\r\n event.preventDefault();\r\n if (item !== undefined) {\r\n modal(showModal, this, item, index)\r\n }\r\n }\r\n\r\n getModal() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n displayImprint = (item, index, modal, showModal) => {\r\n let imprint = item.description\r\n \r\n return (\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n Imprints\r\n \r\n\r\n {this.getModal()}\r\n
    \r\n
    \r\n )\r\n }\r\n}","import React from 'react'\r\nimport Modal from 'react-modal'\r\nimport {InputField} from '../componentsBarrel'\r\n\r\nimport './imprintModal.css'\r\n\r\nexport class ImprintModal extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.showDelete = props.item ? true : false\r\n\r\n this.state = {\r\n description: props.item ? props.item.description : '',\r\n edit: props.item ? true : false\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n this.props.onRequestClose();\r\n }\r\n\r\n onRequestDelete = (e) => {\r\n e.preventDefault();\r\n let data = {\r\n ...this.state,\r\n deleteRequested: true\r\n }\r\n this.onRequestClose(e);\r\n this.props.onClose(data, this.props.parent);\r\n\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n this.onRequestClose(e);\r\n this.props.onClose(this.state, this.props.parent);\r\n }\r\n\r\n onChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n getDeleteButton() {\r\n if ( this.showDelete ) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Imprint

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}","import React, {Fragment} from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { AccountSelect } from '../componentsBarrel'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper';\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport meetingImage from \"../../Assets/Images/book_with_image.png\";\r\n\r\nimport './meetingImageUpload.css'\r\n\r\nimport { \r\n TextField, \r\n InputField\r\n} from '../componentsBarrel'\r\n\r\nexport class MeetingImageUpload extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n meetingType: props.item ? props.item.format : 'AnnualMeeting',\r\n meetingTypeId: props.item ? props.item.formatTypeId : 1,\r\n selectedFile: null,\r\n year: '',\r\n loading: false,\r\n preview: '',\r\n deleteOldVersion: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n }\r\n\r\n loadDataFromServer() {\r\n alert(this.state.year)\r\n this.showPreview = this.showPreview.bind(this)\r\n this.setState({loading: false})\r\n }\r\n\r\n onChangeNumericOnly = (e) => {\r\n let value = e.target.value.replace(/[^0-9]/g, '')\r\n value = value.toUpperCase()\r\n this.setState({[e.target.name]: value})\r\n }\r\n\r\n onBrowseClick = (e) => {\r\n e.preventDefault();\r\n this.fileUpload.click();\r\n }\r\n\r\n showPreview = (e) => {\r\n const self = this\r\n const file = e.target.files[0]\r\n const _URL = window.URL || window.webkitURL;\r\n\r\n let filename = e.target.value\r\n\r\n if (!this.checkExtension(filename)) {\r\n alert(\"Image file type must be .png or .jpg file.\")\r\n this.fileUpload.value = ''\r\n return false\r\n }\r\n\r\n const sizeInMb = file.size / 1024 / 1024\r\n if (sizeInMb > 1) {\r\n this.fileUpload.value = ''\r\n let sizeErrorMessage = \"Image file size cannot exceed 1 MB.\"\r\n alert(sizeErrorMessage)\r\n return false\r\n }\r\n\r\n var reader = new FileReader()\r\n\r\n reader.onload = function (e) {\r\n let image = new Image();\r\n\r\n image.onload = function () {\r\n var height = this.naturalHeight;\r\n var width = this.naturalWidth;\r\n if (height > 1200 || width > 750) {\r\n alert(\"Image file dimensions cannot exceed height = 1,200 pixels and width = 750 pixels.\");\r\n return false;\r\n }\r\n\r\n self.setState({\r\n preview: e.target.result,\r\n selectedFile: file\r\n })\r\n };\r\n\r\n image.src = _URL.createObjectURL(file);\r\n }\r\n\r\n reader.readAsDataURL(e.target.files[0])\r\n }\r\n\r\n getImageDisplay() {\r\n let source = this.state.preview === '' ? this.state.imageUrl || meetingImage : this.state.preview;\r\n\r\n return (\r\n
    \r\n \r\n this.fileUpload = ref}\r\n />\r\n
    \r\n
    \r\n \r\n
    \r\n
    .png or .jpg files only. Max size = 1 MB.
    Max hgt = 1,200 px. Max wth = 750 px.
    \r\n
    \r\n )\r\n }\r\n\r\n redirectAfterImageSave() {\r\n MessageFlash.setMessage('Meeting image successfully uploaded.');\r\n //this.props.history.goBack();\r\n window.location.href = '/admin/system';\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault()\r\n\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + this.user.token\r\n }\r\n }\r\n\r\n if (this.validateYear() === false) {\r\n alert('Year must be entered as a four-digit year.')\r\n return false\r\n }\r\n\r\n if (!this.state.selectedFile) {\r\n alert('Please upload an image file.')\r\n return false;\r\n }\r\n\r\n const formData = new FormData()\r\n formData.append('files', this.state.selectedFile)\r\n formData.append('year', this.state.year)\r\n formData.append('meetingType', this.state.meetingType)\r\n formData.append('deleteOldVersion', this.state.deleteOldVersion)\r\n\r\n this.setState({loading: true})\r\n console.log('formData: ', formData)\r\n\r\n return axios\r\n .get(`${environment.baseUrl}/api/image/checkifimageexists/` + this.state.year + '/' + this.state.meetingType, config)\r\n .then(response => {\r\n if (response.data.exists == true) {\r\n if (window.confirm('The image file for the ' + this.state.year + ' ' + this.state.meetingType +'already exists. Do you want to replace it?'))\r\n {\r\n console.log('deleteOldVersion: ', this.state.deleteOldVersion)\r\n console.log('Clicked on OK')\r\n //this.setState({deleteOldVersion: true})\r\n return axios\r\n .post(`${environment.baseUrl}/api/image/meetingupload`, formData, config)\r\n .then(response2 => {\r\n console.log('response2: ', response2)\r\n this.redirectAfterImageSave()\r\n })\r\n }\r\n else \r\n {\r\n console.log('deleteOldVersion: ', this.state.deleteOldVersion)\r\n console.log('Clicked on Cancel')\r\n //this.props.history.goBack();\r\n this.setState({loading: false})\r\n return false;\r\n }\r\n }\r\n else\r\n {\r\n return axios\r\n .post(`${environment.baseUrl}/api/image/meetingupload`, formData, config)\r\n .then(response2 => {\r\n console.log('response2: ', response2)\r\n this.redirectAfterImageSave()\r\n })\r\n }\r\n })\r\n .catch(error => {\r\n this.setState({loading: false})\r\n console.error('Error uploading file: ', error, error.response);\r\n alert('Error Uploading File: ' + error);\r\n })\r\n }\r\n\r\n handleFileSelection = (e) => {\r\n const self = this\r\n const file = e.target.files[0]\r\n const filename = e.target.value\r\n\r\n if (!this.checkExtension(filename)) {\r\n this.fileUpload.value = ''\r\n alert('Image file type must be .png or .jpg file.')\r\n return false\r\n }\r\n\r\n const sizeInMb = file.size / 1024 / 1024\r\n if (sizeInMb > 1) {\r\n this.fileUpload.value = ''\r\n alert(\"Image file size cannot exceed 1 MB.\")\r\n return false\r\n }\r\n\r\n //Initiate the JavaScript Image object.\r\n var image = new Image();\r\n\r\n //Set the Base64 string return from FileReader as source.\r\n image.src = e.target.result;\r\n\r\n //Validate the File Height and Width.\r\n image.onload = function () {\r\n var height = this.height;\r\n var width = this.width;\r\n if (height > 100 || width > 100) {\r\n alert(\"Height and Width must not exceed 100px.\");\r\n return false;\r\n }\r\n alert(\"Uploaded image has valid Height and Width.\");\r\n return true;\r\n };\r\n\r\n this.setState({\r\n selectedFile: file,\r\n filename: file.name\r\n })\r\n }\r\n\r\n checkExtension(filename) {\r\n var hash = { \r\n '.png': 1,\r\n '.jpg': 1,\r\n '.jpeg': 1\r\n };\r\n\r\n const re = /\\.[0-9a-z]+$/i\r\n const ext = filename.toLowerCase().match(re);\r\n\r\n return hash[ext]\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }\r\n\r\n exactlyFourDigits(value) {\r\n let numberFormat = /^\\d{4}$/\r\n return numberFormat.test(value)\r\n }\r\n\r\n validateYear() {\r\n if (this.state.year\r\n && this.state.year.length === 4\r\n && this.exactlyFourDigits(this.state.year)) {\r\n return true\r\n }\r\n\r\n return false;\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Meeting Image Upload\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.getImageDisplay()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Meeting Type\r\n
    \r\n
    \r\n \r\n\r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport { Link } from 'react-router-dom'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { AgGridReact } from 'ag-grid-react';\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { Helmet } from 'react-helmet';\r\n\r\nimport 'ag-grid-community/dist/styles/ag-grid.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-alpine.css';\r\nimport 'ag-grid-community/dist/styles/ag-theme-material.css';\r\nimport './metadataManagement.css'\r\n\r\nclass BtnCellRenderer extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n this.btnClickedHandler = this.btnClickedHandler.bind(this);\r\n }\r\n\r\n btnClickedHandler() {\r\n this.props.clicked(this.props.value);\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n Delete\r\n
    \r\n )\r\n }\r\n}\r\n\r\nexport class MetadataManagement extends React.Component {\r\n defaultStyle = {\r\n 'text-align': 'left'\r\n }\r\n\r\n columnDefs = [\r\n {field: 'account', headerName: 'Account', sortable: true, cellStyle: this.defaultStyle},\r\n {field: 'uploadedBy', headerName: 'Uploaded By', sortable: true, cellStyle: this.defaultStyle},\r\n {field: 'fileType', headerName: 'File Type', sortable: true, cellStyle: this.defaultStyle, width: 95},\r\n {field: 'uploadDateTime', headerName: 'Upload Date/Time', sortable: true, cellStyle: this.defaultStyle, valueFormatter: this.onDateRender},\r\n {\r\n field: 'filename',\r\n headerName: '', \r\n cellRenderer: 'btnCellRenderer',\r\n cellRendererParams: {\r\n clicked: (field) => this.onDelete(field)\r\n },\r\n width: 100\r\n }\r\n ]\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n files: [],\r\n loading: false,\r\n columnDefs: this.columnDefs,\r\n frameworkComponents: {\r\n btnCellRenderer: BtnCellRenderer,\r\n }\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.refreshData()\r\n }\r\n\r\n refreshData() {\r\n this.setState({loading: true}, () => {\r\n this.loadDataFromServer()\r\n })\r\n }\r\n\r\n loadDataFromServer() {\r\n axios\r\n .get(`${environment.baseUrl}/api/metadata/enumerate`, this.config)\r\n .then(response => {\r\n\r\n if (response.data.error) {\r\n alert('Error getting listing: ' + response.data.error)\r\n return;\r\n }\r\n\r\n this.setState({\r\n files: response.data.files,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error loading metadata listing: ', error, error.response);\r\n alert('Error Loading Listing');\r\n\r\n this.setState({\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n onDateRender(params) {\r\n let value = params.value\r\n let month = parseInt(value.substring(4,6), 10)\r\n let day = parseInt(value.substring(6,8), 10)\r\n let hour = parseInt(value.substring(9,11), 10)\r\n let meridian = 'AM'\r\n \r\n if (hour > 12) {\r\n hour -= 12\r\n meridian = 'PM'\r\n }\r\n \r\n return month + '/' + day + '/' + value.substring(0,4)\r\n + ' ' + hour + ':' + value.substring(11,13) + ':' + value.substring(13,15) \r\n + ' ' + meridian\r\n }\r\n\r\n uploadMeta() {\r\n this.props.history.push('/admin/uploadMeta')\r\n }\r\n\r\n onDelete = async (filename) => {\r\n if (!window.confirm(\"Are you sure you want to delete this file?\")) {\r\n return false\r\n }\r\n\r\n let data = {\r\n filename: filename,\r\n sblid: this.user.sblId\r\n }\r\n\r\n return await axios\r\n .post(`${environment.baseUrl}/api/metadata/delete`, data, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert('Error deleting record: ' + response.data.error)\r\n return false;\r\n }\r\n\r\n alert('Record deleted successfully.')\r\n\r\n this.refreshData()\r\n })\r\n .catch(error => {\r\n console.error('Error calling delete record: ', error.response)\r\n alert('Error deleting record');\r\n })\r\n }\r\n\r\n onGridReady = (params) => {\r\n let defaultSortModel = [\r\n { colId: 'account', sort: 'asc'},\r\n { colId: 'uploadDateTime', sort: 'asc'}\r\n ]\r\n\r\n params.api.setSortModel(defaultSortModel)\r\n params.api.sizeColumnsToFit()\r\n }\r\n\r\n metaFiles() {\r\n return (\r\n
    \r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Metadata Management\r\n
    \r\n\r\n
    \r\n Upload Metadata\r\n
    \r\n\r\n {this.metaFiles()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { AccountSelect } from '../componentsBarrel'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper';\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\n\r\nimport './uploadMeta.css'\r\n\r\nexport class UploadMeta extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n accounts: [],\r\n accountId: 0,\r\n selectedFile: null,\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({loading: true}, () => this.loadDataFromServer())\r\n }\r\n\r\n loadDataFromServer() {\r\n axios\r\n .get(environment.baseUrl + '/api/accounts/enumerate', this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return;\r\n }\r\n\r\n let accounts = response.data.accounts\r\n\r\n this.setState({\r\n accounts: accounts,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error loading data: ', error, error.response);\r\n alert('Error Loading Data');\r\n\r\n this.setState({\r\n accounts: [],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault()\r\n\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + this.user.token\r\n }\r\n }\r\n\r\n if (this.state.accountId < 1) {\r\n alert('A Bill-To option must be selected')\r\n return false\r\n }\r\n\r\n if (this.state.selectedFile === null) {\r\n alert('Must select a file.')\r\n return false\r\n }\r\n\r\n const formData = new FormData()\r\n formData.append('files', this.state.selectedFile)\r\n\r\n this.setState({loading: true})\r\n\r\n return axios\r\n .post(`${environment.baseUrl}/api/metadata/upload`, formData, config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert('Error processing metadata upload: ' + response.data.error)\r\n return false;\r\n }\r\n\r\n let data = {\r\n tempfile: response.data.tempfile,\r\n filename: this.state.filename,\r\n accountId: this.state.accountId,\r\n sblid: this.user.sblId\r\n }\r\n\r\n return axios\r\n .post(`${environment.baseUrl}/api/metadata/save`, data, this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert('Error saving metadata upload: ' + response.data.error)\r\n return false;\r\n }\r\n\r\n MessageFlash.setMessage('File Uploaded Successfully')\r\n this.props.history.goBack()\r\n })\r\n .catch(error => {\r\n this.setState({loading: false})\r\n console.error('Error uploading file: ', error, error.response);\r\n alert('Error Uploading File: ' + error);\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({loading: false})\r\n console.error('Error uploading file: ', error, error.response);\r\n alert('Error Uploading File: ' + error);\r\n })\r\n }\r\n\r\n handleAccountChange = (e) => {\r\n e.preventDefault()\r\n\r\n let account = e.target.options[e.target.selectedIndex].value\r\n\r\n this.setState({\r\n accountId: account\r\n })\r\n }\r\n\r\n handleFileSelection = (e) => {\r\n const self = this\r\n const file = e.target.files[0]\r\n const filename = e.target.value\r\n\r\n if (!this.checkExtension(filename)) {\r\n this.fileUpload.value = ''\r\n alert('Invalid file type. File must be XML or XLSX format.')\r\n return false\r\n }\r\n\r\n const sizeInMb = file.size / 1024 / 1024\r\n if (sizeInMb > 25) {\r\n this.fileUpload.value = ''\r\n alert(\"Error: File size cannot exceed 25 MB.\")\r\n return false\r\n }\r\n\r\n this.setState({\r\n selectedFile: file,\r\n filename: file.name\r\n })\r\n }\r\n\r\n checkExtension(filename) {\r\n var hash = { \r\n '.xml': 1,\r\n '.xlsx': 1\r\n };\r\n\r\n const re = /\\.[0-9a-z]+$/i\r\n const ext = filename.toLowerCase().match(re);\r\n\r\n return hash[ext]\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n Upload Metadata\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n this.fileUpload = ref}>\r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport './accountSelect.css'\r\n\r\nconst MainAccount = (props) => {\r\n return (\r\n \r\n )\r\n}\r\n\r\nconst ImprintAccounts = (props) => {\r\n let imprints = props.imprints.sort((a,b) => {\r\n return a.description.localeCompare(b.description)\r\n })\r\n \r\n return (\r\n imprints.map((imprint, index) => {\r\n return (\r\n \r\n )\r\n })\r\n )\r\n}\r\n\r\nconst requiredMark = (required) => {\r\n if ( required ) {\r\n return * \r\n }\r\n}\r\n\r\nexport class AccountSelect extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n accounts: props.accounts ? props.accounts : []\r\n }\r\n }\r\n\r\n render() {\r\n let defaultValue = this.props.defaultValue ? this.props.defaultValue : -1\r\n defaultValue = defaultValue === 0 ? -1 : defaultValue\r\n\r\n return (\r\n \r\n
    \r\n \r\n {requiredMark(this.props.required)}\r\n {this.props.Title}\r\n \r\n
    \r\n\r\n \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport Modal from 'react-modal'\r\nimport axios from 'axios'\r\nimport environment from \"../../Environments/environments\";\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\n\r\nimport './rblExportHistoryModal.css'\r\n\r\nexport class RBLExportHistoryModal extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n history: [],\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({loading: true}, () => this.loadFromServer())\r\n }\r\n\r\n loadFromServer() {\r\n let url = `${environment.baseUrl}/api/admin/book-export-history`\r\n\r\n axios.get(url, this.config)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n this.setState({\r\n history: response.data.history,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error getting export history: ', error)\r\n alert('Error getting export history: ' + error)\r\n\r\n this.setState({\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n getHistoryRows() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.history.map((x, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    \r\n Export Date\r\n \r\n User\r\n \r\n From Date\r\n \r\n To Date\r\n
    \r\n {new Date(x.exportDate).toLocaleDateString()}\r\n \r\n {x.adminUser}\r\n \r\n {new Date(x.fromDate).toLocaleDateString()}\r\n \r\n {new Date(x.toDate).toLocaleDateString()}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.props.onRequestClose) {\r\n // this is what allows the dialog to close\r\n this.props.onRequestClose();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n

    Export History

    \r\n\r\n {this.getHistoryRows()}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from 'axios'\r\nimport environment from \"../../Environments/environments\"\r\nimport ModalRoot from \"../../Containers/Login/loginRoot\"\r\nimport ReactExport from \"react-data-export\"\r\nimport DatePicker from 'react-datepicker'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nimport { RBLExportHistoryModal } from './rblExportHistoryModal'\r\nimport { ModalConsumer } from '../../Containers/Login/loginContext'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\n\r\nimport { CustomDateInput } from '../componentsBarrel'\r\n\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport './rblExport.css'\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nexport class RBLExport extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n const user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n if (!user || user === null) {\r\n window.location = '/'\r\n return\r\n }\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n const userName = user.firstName + ' ' + user.lastName\r\n\r\n this.state = {\r\n data: null,\r\n loading: false,\r\n userName: userName\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n let fromDate = new Date()\r\n let toDate = new Date()\r\n\r\n fromDate.setDate(fromDate.getDate())\r\n toDate.setDate(toDate.getDate())\r\n\r\n this.setfromDate(fromDate)\r\n this.settoDate(toDate)\r\n }\r\n\r\n setfromDate = (date) => {\r\n date.setHours(0, 0, 0, 0)\r\n\r\n this.setState({\r\n fromDate: date,\r\n fromDateText: date.toLocaleString('en-US', options) + ' 12:00 AM'\r\n })\r\n }\r\n\r\n settoDate = (date) => {\r\n date.setHours(23, 59, 59, 999)\r\n\r\n this.setState({\r\n toDate: new Date(date),\r\n toDateText: date.toLocaleString('en-US', options) + ' 11:59:59.999 PM'\r\n })\r\n }\r\n\r\n onCancel = (e) => {\r\n window.location = '/admin/reports'\r\n }\r\n\r\n validate() {\r\n if (this.state.toDate < this.state.fromDate) {\r\n alert('To Date cannot be prior to From Date')\r\n return false\r\n }\r\n\r\n let tomorrow = new Date()\r\n tomorrow.setHours(0, 0, 0, 0)\r\n tomorrow.setDate(tomorrow.getDate() + 1)\r\n\r\n if(this.state.toDate > tomorrow) {\r\n alert('To Date cannot be after current date')\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n onSubmit = (e) => {\r\n this.setState({data: null}, () => this.updateDataDisplay())\r\n }\r\n\r\n updateDataDisplay() {\r\n this.setState({loading: true}, () => this.processData())\r\n }\r\n\r\n processData() {\r\n if (!this.validate()) {\r\n this.setState({loading: false})\r\n return\r\n }\r\n\r\n let data = {\r\n fromDate: this.state.fromDate.toLocaleString(),\r\n toDate: this.state.toDate.toLocaleString()\r\n }\r\n\r\n let url = `${environment.baseUrl}/api/admin/rblExport`\r\n\r\n axios.post(url, data, this.config)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert('Error processing export data: ' + response.data.error)\r\n this.setState({loading: false})\r\n return\r\n }\r\n\r\n //console.debug('Export Data: ', response.data.exportData)\r\n\r\n this.setState({\r\n data: response.data.exportData,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({loading: false})\r\n console.error('Error getting RBL Export data: ', error)\r\n alert('Error getting RBL Export data: ' + error)\r\n })\r\n }\r\n\r\n getExportHistoryLink(showModal) {\r\n return (\r\n this.onExportHistory(e, showModal)}>Export History\r\n )\r\n }\r\n\r\n getExportHistoryBlock() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n {this.getExportHistoryLink(showModal)}\r\n \r\n )}\r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n onExportHistory = (e, showModal) => {\r\n showModal(RBLExportHistoryModal, {})\r\n }\r\n\r\n onDownload = (e) => {\r\n let now = new Date()\r\n now.setHours(0, 0, 0, 0)\r\n\r\n let body = {\r\n exportDate: now.toLocaleDateString(),\r\n adminUser: this.state.userName,\r\n fromDate: this.state.fromDate.toLocaleString(),\r\n toDate: this.state.toDate.toLocaleString()\r\n }\r\n\r\n let url = `${environment.baseUrl}/api/admin/book-export-history`\r\n\r\n axios.post(url, body, this.config)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert('Error saving history: ' + response.data.message)\r\n return\r\n }\r\n\r\n let button = document.getElementById('table-xls-button')\r\n button.click()\r\n })\r\n .catch(error => {\r\n console.error('Error saving export history', error)\r\n alert('Error saving export history: ' + error)\r\n })\r\n }\r\n\r\n ellipsisFormat(longText) {\r\n if (!longText || longText.length <= 25) {\r\n return longText\r\n }\r\n\r\n return longText.substring(0, 25) + '...'\r\n }\r\n\r\n formatTooltip(text) {\r\n const tipPrefix = \"

    \"\r\n const tipSuffix = '

    '\r\n\r\n return tipPrefix + text + tipSuffix\r\n }\r\n\r\n getDataDisplay() {\r\n if (!this.state.data) {\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n Export to Excel\r\n {this.getExcelFunctionalButton()}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.map((item, index) => {\r\n let subjectDisplay = this.ellipsisFormat(item.subjects)\r\n let subjectTooltip = this.formatTooltip(item.subjects)\r\n\r\n let descDisplay = this.ellipsisFormat(item.description)\r\n let descTooltip = this.formatTooltip(item.description)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    Date EnteredTitle IDISBNTitleSubtitlePriceFormatPublisher LocationPublisherCopyright YearDefaultNoReviewCopiesAuthorsEditorsTranslatorsBook DescriptionNumber of PagesEditionSeries TitleSeries NumberAccountSubjects
    {this.formatDate(item.created)}{item.titleId}{item.isbn}{item.title}{item.subTitle}{item.price}{item.format}{item.publisherLocation}{item.publisherName}{item.copyrightYear}{item.copies}{item.authors}{item.editors}{item.translators}\r\n

    \r\n {descDisplay}\r\n

    \r\n
    {item.numberOfPages}{item.edition}{item.seriesTitle}{item.numberInSeries}{item.account}\r\n

    \r\n {subjectDisplay}\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n formatDate(date) {\r\n return new Date(date).toLocaleDateString()\r\n }\r\n\r\n getExcelButton() {\r\n return (\r\n \r\n )\r\n }\r\n\r\n getYesterday() {\r\n let yesterday = new Date()\r\n yesterday.setDate(yesterday.getDate() - 1)\r\n return yesterday\r\n }\r\n\r\n filtertoDate = (date, fromDate) => {\r\n let yesterday = this.getYesterday()\r\n return (date <= yesterday) && date >= fromDate\r\n }\r\n\r\n filterfromDate = (date) => {\r\n let yesterday = this.getYesterday()\r\n return date <= yesterday\r\n }\r\n\r\n getExcelFunctionalButton() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n RBL Export\r\n
    \r\n\r\n
    \r\n
    \r\n {this.getExportHistoryBlock()}\r\n
    \r\n\r\n
    \r\n
    From
    \r\n
    To
    \r\n
    \r\n\r\n
    \r\n
    \r\n }\r\n onChange={date => this.setfromDate(date)}\r\n filterDate={this.filterfromDate}\r\n />\r\n
    \r\n
    \r\n }\r\n onChange={date => this.settoDate(date)}\r\n filterDate={date => this.filtertoDate(date, this.state.fromDate)}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n     \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {this.getDataDisplay()}\r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst options = { \r\n timeZone: \"America/New_York\", \r\n hour12: true,\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n //hour: 'numeric',\r\n //second: 'numeric',\r\n //minute: 'numeric'\r\n};\r\n","import React, { Fragment } from 'react'\r\nimport Modal from 'react-modal'\r\nimport axios from 'axios'\r\nimport environment from \"../../Environments/environments\";\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\n\r\nimport './accountingExportHistoryModal.css'\r\n\r\nexport class AccountingExportHistoryModal extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n this.state = {\r\n history: [],\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({loading: true}, () => this.loadFromServer())\r\n }\r\n\r\n loadFromServer() {\r\n let url = `${environment.baseUrl}/api/admin/accounting-export-history`\r\n\r\n axios.get(url, this.config)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n //console.debug('TEST: ', response.data.history)\r\n\r\n this.setState({\r\n history: response.data.history,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error getting export history: ', error)\r\n alert('Error getting export history: ' + error)\r\n\r\n this.setState({\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n getHistoryRows() {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.history.map((x, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    \r\n Publisher\r\n \r\n Export Date\r\n \r\n User\r\n \r\n From Date\r\n \r\n To Date\r\n
    \r\n {x.publisher}\r\n \r\n {new Date(x.exportDate).toLocaleDateString()}\r\n \r\n {x.adminUser}\r\n \r\n {new Date(x.fromDate).toLocaleDateString()}\r\n \r\n {new Date(x.toDate).toLocaleDateString()}\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n\r\n if (this.props.onRequestClose) {\r\n // this is what allows the dialog to close\r\n this.props.onRequestClose();\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n \r\n

    Accounting Export History

    \r\n\r\n {this.getHistoryRows()}\r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport ModalRoot from \"../../Containers/Login/loginRoot\"\r\nimport ReactExport from \"react-data-export\"\r\nimport DatePicker from 'react-datepicker'\r\nimport ReactTooltip from 'react-tooltip'\r\n\r\nimport { AccountingExportHistoryModal } from './accountingExportHistoryModal'\r\nimport { DefaultConfig } from '../../Helpers/defaultConfigHelper';\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { ModalConsumer } from '../../Containers/Login/loginContext'\r\nimport { AccountSelect } from '../componentsBarrel'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nimport { CustomDateInput } from '../componentsBarrel'\r\n\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport './accountingExport.css'\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nexport class AccountingExport extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n const user = (typeof sessionStorage != 'undefined') ? JSON.parse(sessionStorage.getItem('loggedInUser')) : {}\r\n\r\n if (!user || user === null) {\r\n window.location = '/'\r\n return\r\n }\r\n\r\n const userName = user.firstName + ' ' + user.lastName\r\n\r\n this.config = DefaultConfig.getDefaultConfig()\r\n\r\n let date = new Date()\r\n let today = `${date.getMonth()+1}/${date.getDate()}/${date.getFullYear()}`\r\n\r\n this.state = {\r\n accounts: [],\r\n loading: false,\r\n userName: userName,\r\n summary: [\r\n {label: 'Publisher', value: ''},\r\n {label: \"Today's date\", value: today},\r\n {label: 'Date Range', value: ''},\r\n {label: 'Billing Contact', value: ''},\r\n {label: 'Billing Email', value: ''},\r\n {label: 'Billing Telephone', value: ''},\r\n {label: 'Address Line 1', value: ''},\r\n {label: 'Address Line 2', value: ''},\r\n {label: 'City, State/Province', value: ''},\r\n {label: 'Postal Code', value: ''},\r\n {label: 'Country', value: ''},\r\n ]\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.setState({loading: true}, () => this.loadDataFromServer())\r\n }\r\n\r\n loadDataFromServer() {\r\n let fromDate = new Date()\r\n let toDate = new Date()\r\n\r\n fromDate.setDate(fromDate.getDate())\r\n toDate.setDate(toDate.getDate())\r\n\r\n this.setfromDate(fromDate)\r\n this.settoDate(toDate)\r\n\r\n axios\r\n .get(environment.baseUrl + '/api/accounts/enumerate', this.config)\r\n .then(response => {\r\n if (response.data.error) {\r\n alert(response.data.error)\r\n return;\r\n }\r\n\r\n let accounts = response.data.accounts\r\n\r\n //console.debug('ACCOUNTS: ', accounts)\r\n\r\n this.setState({\r\n accounts: accounts,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error loading data: ', error, error.response);\r\n alert('Error Loading Data');\r\n\r\n this.setState({\r\n accounts: [],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n setfromDate = (date) => {\r\n date.setHours(0, 0, 0, 0)\r\n\r\n this.setState({\r\n fromDate: date,\r\n fromDateText: date.toLocaleString('en-US', options) + ' 12:00 AM'\r\n })\r\n }\r\n\r\n settoDate = (date) => {\r\n date.setHours(23, 59, 59, 999)\r\n\r\n this.setState({\r\n toDate: new Date(date),\r\n toDateText: date.toLocaleString('en-US', options) + ' 11:59:59.999 PM'\r\n })\r\n }\r\n\r\n onCancel = (e) => {\r\n window.location = '/admin/reports'\r\n }\r\n\r\n getExportHistoryLink(showModal) {\r\n return (\r\n this.onExportHistory(e, showModal)}>Export History\r\n )\r\n }\r\n\r\n getExportHistoryBlock() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n {this.getExportHistoryLink(showModal)}\r\n \r\n )}\r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n onExportHistory = (e, showModal) => {\r\n showModal(AccountingExportHistoryModal, {})\r\n }\r\n\r\n ellipsisFormat(longText) {\r\n if (!longText || longText.length <= 25) {\r\n return longText\r\n }\r\n\r\n return longText.substring(0, 25) + '...'\r\n }\r\n\r\n formatTooltip(text) {\r\n const tipPrefix = \"

    \"\r\n const tipSuffix = '

    '\r\n\r\n return tipPrefix + text + tipSuffix\r\n }\r\n\r\n calculateDisplayDate(item) {\r\n if (!item.displayDate) {\r\n return ''\r\n }\r\n\r\n let date = new Date(item.displayDate)\r\n let month = (date.getMonth()+1).toLocaleString('en-us', {minimumIntegerDigits: 2})\r\n let day = (date.getDate()).toLocaleString('en-us', {minimumIntegerDigits: 2})\r\n\r\n return `${month}/${day}/${date.getFullYear()}`\r\n }\r\n\r\n getDataDisplay() {\r\n if (!this.state.data) {\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n Export to Excel\r\n {this.getExcelFunctionalButton()}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.books.map((item, index) => {\r\n item.dateDisplay = this.calculateDisplayDate(item)\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    Import FileDisplay DateISBNTitleSubtitlePublisher
    {item.importFile}{item.dateDisplay}{item.isbn}{item.title}{item.subTitle}{item.publisher}
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n formatDate(date) {\r\n return new Date(date).toLocaleDateString()\r\n }\r\n\r\n handleAccountChange = (e) => {\r\n e.preventDefault()\r\n\r\n let option = e.target.options[e.target.selectedIndex]\r\n let account = option.value\r\n let name = option.attributes.name.nodeValue\r\n\r\n this.setState({\r\n accountId: account,\r\n publisher: name\r\n })\r\n }\r\n\r\n validate() {\r\n if (this.state.toDate < this.state.fromDate) {\r\n alert('To Date cannot be prior to From Date')\r\n return false\r\n }\r\n\r\n let tomorrow = new Date()\r\n tomorrow.setHours(0, 0, 0, 0)\r\n tomorrow.setDate(tomorrow.getDate() + 1)\r\n\r\n if(this.state.toDate > tomorrow) {\r\n alert('To Date cannot be after current date')\r\n return false\r\n }\r\n\r\n if (!this.state.accountId || this.state.accountId === 0) {\r\n alert('Please select an account.')\r\n return\r\n }\r\n\r\n return true\r\n }\r\n\r\n onSubmit = (e) => {\r\n this.setState({data: null}, () => this.updateDataDisplay())\r\n }\r\n\r\n updateDataDisplay() {\r\n if (this.validate()) {\r\n this.setState({loading: true}, () => this.processData())\r\n }\r\n }\r\n\r\n processData() {\r\n let data = {\r\n fromDate: this.state.fromDate.toLocaleString(),\r\n toDate: this.state.toDate.toLocaleString(),\r\n accountId: this.state.accountId\r\n }\r\n\r\n let url = `${environment.baseUrl}/api/admin/accountingExport`\r\n\r\n axios.post(url, data, this.config)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert('Error processing accounting export data: ' + response.data.error)\r\n this.setState({loading: false})\r\n return\r\n }\r\n\r\n //console.debug('Export Data: ', response.data.exportData)\r\n\r\n this.setState({\r\n data: response.data.exportData,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n this.setState({loading: false})\r\n console.error('Error getting Accounting Export data: ', error)\r\n alert('Error getting Accounting Export data: ' + error)\r\n })\r\n }\r\n\r\n getExcelFunctionalButton() {\r\n const multiDataSet = [\r\n {\r\n columns: [\r\n {title: \"\", width: {wpx: 130}},//pixels width \r\n {title: \"\"}\r\n ],\r\n data: [\r\n [\r\n {value: this.state.summary[0].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[0].value}\r\n ],\r\n [\r\n {value: this.state.summary[1].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[1].value}\r\n ],\r\n [\r\n {value: this.state.summary[2].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[2].value}\r\n ],\r\n [\r\n {value: this.state.summary[3].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[3].value}\r\n ],\r\n [\r\n {value: this.state.summary[4].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[4].value}\r\n ],\r\n [\r\n {value: this.state.summary[5].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[5].value}\r\n ],\r\n [\r\n {value: this.state.summary[6].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[6].value}\r\n ],\r\n [\r\n {value: this.state.summary[7].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[7].value}\r\n ],\r\n [\r\n {value: this.state.summary[8].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[8].value}\r\n ],\r\n [\r\n {value: this.state.summary[9].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[9].value}\r\n ],\r\n [\r\n {value: this.state.summary[10].label, style: {font: {bold: true}}},\r\n {value: this.state.summary[10].value}\r\n ],\r\n ]\r\n }\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n getExcelButton() {\r\n return (\r\n \r\n )\r\n }\r\n\r\n onDownload = (e) => {\r\n let now = new Date()\r\n now.setHours(0, 0, 0, 0)\r\n\r\n let body = {\r\n exportDate: now.toLocaleDateString(),\r\n adminUser: this.state.userName,\r\n fromDate: this.state.fromDate.toLocaleString(),\r\n toDate: this.state.toDate.toLocaleString(),\r\n publisher: this.state.publisher,\r\n accountId: this.state.accountId\r\n }\r\n\r\n let url = `${environment.baseUrl}/api/admin/accounting-export-history`\r\n\r\n axios.post(url, body, this.config)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert('Error saving history: ' + response.data.message)\r\n return\r\n }\r\n\r\n //console.debug('account: ', response.data.account)\r\n\r\n let summary = this.state.summary\r\n let account = response.data.account\r\n\r\n let fromDate = (new Date(this.state.fromDate)).toISOString().split('T')[0]\r\n let toDate = (new Date(this.state.toDate)).toISOString().split('T')[0]\r\n\r\n summary[0].value = account.name\r\n summary[2].value = `${fromDate} to ${toDate}`\r\n summary[3].value = `${account.firstName} ${account.lastName}`\r\n summary[4].value = account.email\r\n summary[5].value = account.telephone\r\n\r\n this.populateBillingAddress(summary, account)\r\n\r\n this.setState({\r\n summary: summary\r\n }, () => {\r\n let button = document.getElementById('table-xls-button')\r\n button.click()\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error saving export history', error)\r\n alert('Error saving export history: ' + error)\r\n })\r\n }\r\n\r\n populateBillingAddress(summary, account) {\r\n summary[6].value = account.address1 ? account.address1 : ''\r\n summary[7].value = account.address2 ? account.address2 : ''\r\n\r\n let cityState = account.city ? account.city : ''\r\n if (account.province) {\r\n if (cityState !== '') {\r\n cityState += ', '\r\n }\r\n cityState += account.province\r\n }\r\n\r\n if (account.stateId !== 0) {\r\n if (cityState !== '') {\r\n cityState += ', '\r\n }\r\n cityState += account.state.name\r\n }\r\n\r\n summary[8].value = cityState\r\n\r\n summary[9].value = account.postalCode ? account.postalCode : ''\r\n summary[10].value = account.country.countryName\r\n }\r\n\r\n getYesterday() {\r\n let yesterday = new Date()\r\n yesterday.setDate(yesterday.getDate() - 1)\r\n return yesterday\r\n }\r\n\r\n filtertoDate = (date, fromDate) => {\r\n let yesterday = this.getYesterday()\r\n return (date <= yesterday) && date >= fromDate \r\n }\r\n\r\n filterfromDate = (date) => {\r\n let yesterday = this.getYesterday()\r\n return date <= yesterday\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Accounting Export\r\n
    \r\n\r\n
    \r\n
    \r\n {this.getExportHistoryBlock()}\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n
    From
    \r\n
    To
    \r\n
    \r\n\r\n
    \r\n
    \r\n }\r\n onChange={date => this.setfromDate(date)}\r\n filterDate={this.filterfromDate}\r\n />\r\n
    \r\n
    \r\n }\r\n onChange={date => this.settoDate(date)}\r\n filterDate={date => this.filtertoDate(date, this.state.fromDate)}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n     \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {this.getDataDisplay()}\r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst options = { \r\n timeZone: \"America/New_York\", \r\n hour12: true,\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n //hour: 'numeric',\r\n //second: 'numeric',\r\n //minute: 'numeric'\r\n};\r\n\r\nfunction exportTableToExcel(tableID, filename = ''){\r\n var downloadLink;\r\n var dataType = 'application/vnd.ms-excel';\r\n var tableSelect = document.getElementById(tableID);\r\n var tableHTML = tableSelect.outerHTML.replace(/ /g, '%20');\r\n \r\n // Specify file name\r\n filename = filename?filename+'.xls':'excel_data.xls';\r\n \r\n // Create download link element\r\n downloadLink = document.createElement(\"a\");\r\n \r\n document.body.appendChild(downloadLink);\r\n \r\n if(navigator.msSaveOrOpenBlob){\r\n var blob = new Blob(['\\ufeff', tableHTML], {\r\n type: dataType\r\n });\r\n navigator.msSaveOrOpenBlob( blob, filename);\r\n }else{\r\n // Create a link to the file\r\n downloadLink.href = 'data:' + dataType + ', ' + tableHTML;\r\n \r\n // Setting the file name\r\n downloadLink.download = filename;\r\n \r\n //triggering the function\r\n downloadLink.click();\r\n }\r\n}\r\n\r\n","export default __webpack_public_path__ + \"static/media/rbl_sblpress_logo.e08ce79e.jpg\";","import React from 'react'\r\nimport { SearchContainer } from \"../../Containers/containersBarrel\"\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport Logo from \"../../Assets/Images/rbl_sblpress_logo.jpg\"\r\n\r\nimport './RBL.css'\r\n\r\nexport class RBL extends React.Component {\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer')\r\n footer.style.position = 'relative'\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Review of Biblical Literature

    \r\n
    \r\n Review of Biblical Literature (RBL) is a publication of \r\n SBL Press that presents reviews of books in biblical studies \r\n and related fields. Published digitally on SBL Central and in an \r\n annual print edition\r\n , RBL is comprehensive, international, and timely.\r\n
    \r\n
    \r\n Using the filter to the left of search results, you can limit \r\n your search to books with published reviews or books for which \r\n you can volunteer to review. For further instructions on searching, \r\n see the Help page.\r\n
    \r\n
    \r\n For answers to commonly asked questions on the following topics, please consult\r\n the RBL Guidelines.\r\n
    \r\n
    \r\n
      \r\n
    • review format and guidelines
    • \r\n
    • requesting a due-date extension
    • \r\n
    • submitting a finished review
    • \r\n
    • volunteering to review a book
    • \r\n
    • responding to an unfair review
    • \r\n
    \r\n
    \r\n
    \r\n You may email all other questions to the RBL Managing Editor \r\n at RBLadministrator@sbl-site.org.\r\n
    \r\n
    \r\n Publishers interested in having their books listed on SBL Central and \r\n reviewed in RBL should visit the Publishers page.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n Editorial Board\r\n
    \r\n
    \r\n
      \r\n
    • Alicia J. Batten (General Editor), Conrad Grebel University College
    • \r\n
    • Lee Jefferson, Centre College
    • \r\n
    • Joseph Lam, University of North Carolina at Chapel Hill
    • \r\n
    • Carol Meyers, Duke University
    • \r\n
    • Eric M. Meyers, Duke University
    • \r\n
    • Raj Nadella, Columbia Theological Seminary
    • \r\n
    • Carmen Palmer, Stetson University
    • \r\n
    • Angela Parker, Mercer University
    • \r\n
    • Ekaputra Tupamahu, George Fox University
    • \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n","import * as React from 'react';\r\nimport { SearchContainer } from '../../Containers/containersBarrel';\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport './publishers.css'\r\n\r\nexport const Publishers = (props) => (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Publishers\r\n
    \r\n

    \r\n Academic books in biblical studies and related disciplines, including ancient \r\n Near Eastern studies, late antiquity and classics, archaeology, patristics and \r\n early Christianity, ancient Jewish studies, early qur’anic studies, history of \r\n interpretation, reception history, and theology, will be considered for display \r\n on SBL Central and review in RBL.\r\n

    \r\n
    \r\n
    \r\n

    \r\n For more information and for instructions on how to submit metadata using ONIX files or \r\n our Excel template, \r\n please see the Publisher Handbook. \r\n Physical copies are no longer accepted.\r\n

    \r\n
    \r\n
    \r\n

    \r\n Please contact SBLCadmin@sbl-site.org with any questions.\r\n

    \r\n
    \r\n
    \r\n
    \r\n
    \r\n);\r\n\r\n/*\r\nimport React from 'react'\r\nimport { SearchContainer } from \"../../Containers/containersBarrel\"\r\nimport { Link } from 'react-router-dom'\r\n\r\nimport './publishers.css'\r\n\r\nexport class Publishers extends React.Component {\r\n render() {\r\n return (\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n

    Publishers

    \r\n
    \r\n Academic books in biblical studies and related disciplines, including ancient \r\n Near Eastern studies, late antiquity and classics, archaeology, patristics and \r\n early Christianity, ancient Jewish studies, early qur’anic studies, history of \r\n interpretation, reception history, and theology, will be considered for display \r\n on SBL Central and review in RBL.\r\n
    \r\n
    \r\n For more information and for instructions on how to submit metadata using ONIX files or \r\n our Excel template, \r\n please see the Publisher Handbook. \r\n Physical copies are no longer accepted.\r\n
    \r\n
    \r\n Please contact SBLCadmin@sbl-site.org with any questions.\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n  \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n*/","import React from 'react'\r\nimport './journalsMenu.css'\r\nimport { Helmet } from 'react-helmet';\r\n\r\nexport class JournalsMenu extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport { Checkbox } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\n\r\nimport './journals.css'\r\n\r\nexport class Journals extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n journals: [],\r\n loading: false,\r\n checked: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer')\r\n footer.style.position = 'relative'\r\n\r\n this.setState({loading: true}, () => {\r\n this.loadDataFromServer()\r\n })\r\n }\r\n\r\n loadDataFromServer() {\r\n const url = environment.baseUrl + '/api/journals/enumerate'\r\n\r\n axios\r\n .get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n //console.debug('Data: ', response.data)\r\n\r\n this.setState({\r\n journals: response.data.journals,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error loading journal data: ', error, error.response)\r\n alert('Error Loading Journal Data')\r\n\r\n this.setState({\r\n journals: [],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n editJournal = (e, id) => {\r\n e.preventDefault()\r\n this.props.history.push('/admin/journalDetail/' + id)\r\n }\r\n\r\n getJournals() {\r\n if (this.state.journals.length === 0) {\r\n return (\r\n \r\n
    \r\n No Journals Found to List\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n {this.state.journals.map((journal, index) => {\r\n let isActive = journal.isActive;\r\n let isChecked = this.state.checked;\r\n let hidden = (!isActive && !isChecked) ? \"hidden\" : \"\";\r\n return ( \r\n
    \r\n this.editJournal(e, journal.id)}>{journal.title}\r\n {\r\n (!journal.isActive) ?\r\n \" (inactive)\"\r\n :\"\"\r\n }\r\n
    \r\n )\r\n })}\r\n
    \r\n )\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n getInactiveList(){\r\n return (\r\n
    \r\n \r\n Show inactive journals\r\n \r\n
    \r\n )\r\n }\r\n\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Journals\r\n
    \r\n\r\n
    \r\n Add Journal\r\n
    \r\n
    \r\n {this.getInactiveList()}\r\n {this.getJournals()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport ModalRoot, {ModalRootStacked} from \"../../Containers/Login/loginRoot\";\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport journalImage from \"../../Assets/Images/book_with_image.png\";\r\nimport { Checkbox } from 'react-bootstrap'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { InputField, TextField } from '../componentsBarrel'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper'\r\n\r\n\r\nimport './journalDetail.css'\r\n\r\nexport class JournalDetail extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n let id = this.props.match.params.Id\r\n\r\n this.state = {\r\n id: id === 'new' ? 0 : id,\r\n isNew: (id === 'new'),\r\n title: '',\r\n preview: '',\r\n imageUrl: '',\r\n isActive: true\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0)\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.setState({loading: true}, () => this.loadFromServer());\r\n }\r\n\r\n loadFromServer() {\r\n let promises = [\r\n this.getJournals(),\r\n ]\r\n\r\n Promise.all(promises)\r\n .then(values => {\r\n this.loadValues(values[0])\r\n \r\n this.setState({\r\n journals: values[0],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n getJournals() {\r\n if (this.state.isNew === false) {\r\n let url = `${environment.baseUrl}/api/journals/get/${this.state.id}` \r\n return axios\r\n .get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return {};\r\n }\r\n\r\n return response.data.journal\r\n })\r\n .catch(error => {\r\n console.error('Error loading journal: ', error, error.response);\r\n alert('Error Loading Journal');\r\n\r\n return {}\r\n })\r\n }\r\n\r\n return {}\r\n }\r\n\r\n loadValues(journal) {\r\n //console.debug('JOURNAL: ', journal)\r\n this.setState({\r\n id: journal.id,\r\n title: journal.title ? journal.title : '',\r\n printISSN: journal.printISSN ? journal.printISSN : '',\r\n onlineISSN: journal.onlineISSN ? journal.onlineISSN : '',\r\n publisher: journal.publisher ? journal.publisher : '',\r\n url: journal.url ? journal.url : '',\r\n description: journal.description ? journal.description : '',\r\n issuesPerYear: journal.issuesPerYear ? journal.issuesPerYear : '',\r\n imageUrl: journal.imageUrl,\r\n isActive: journal.isActive === undefined ? true : journal.isActive,\r\n loading: false\r\n\r\n })\r\n }\r\n\r\n handleInputChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n onChangeNumericOnly = (e) => {\r\n let value = e.target.value.replace(/[^0-9]/g, '')\r\n value = value.toUpperCase()\r\n this.setState({[e.target.name]: value})\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }\r\n\r\n onDelete = (e) => {\r\n e.preventDefault();\r\n\r\n if (!window.confirm('Are you sure you want to delete this journal?')) {\r\n return false;\r\n }\r\n \r\n axios\r\n .delete(environment.baseUrl + '/api/journals/delete/' + this.state.id, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n MessageFlash.setMessage('Journal deleted')\r\n this.props.history.goBack();\r\n })\r\n .catch(error => {\r\n console.error('Error deleting journal: ', error, error.response);\r\n alert('Error Deleting Journal');\r\n })\r\n }\r\n\r\n getDeleteButton() {\r\n if (this.state.isNew === true) {\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n showPreview = (e) => {\r\n const self = this\r\n const file = e.target.files[0]\r\n const _URL = window.URL || window.webkitURL;\r\n\r\n let filename = e.target.value\r\n\r\n if (!this.checkExtension(filename)) {\r\n alert(\"Invalid file type. Image must be GIF, JPEG, or PNG format.\")\r\n this.fileUpload.value = ''\r\n return false\r\n }\r\n\r\n const sizeInMb = file.size / 1024 / 1024\r\n if (sizeInMb > 5) {\r\n this.fileUpload.value = ''\r\n let sizeErrorMessage = \"Image file must be equal to or less than 5 MB.\"\r\n alert(sizeErrorMessage + \" The selected file is \" + Math.ceil(sizeInMb) + \"mb.\")\r\n return false\r\n }\r\n\r\n var reader = new FileReader()\r\n\r\n reader.onload = function (e) {\r\n let image = new Image();\r\n\r\n image.onload = function () {\r\n\r\n self.setState({\r\n preview: e.target.result,\r\n selectedFile: file\r\n })\r\n };\r\n\r\n image.src = _URL.createObjectURL(file);\r\n }\r\n\r\n reader.readAsDataURL(e.target.files[0])\r\n }\r\n\r\n checkExtension(filename) {\r\n var hash = {\r\n '.jpg': 1,\r\n '.jpeg': 1,\r\n '.png': 1,\r\n '.gif': 1\r\n };\r\n\r\n const re = /\\.[0-9a-z]+$/i\r\n const ext = filename.toLowerCase().match(re);\r\n\r\n return hash[ext]\r\n }\r\n\r\n onBrowseClick = (e) => {\r\n e.preventDefault();\r\n this.fileUpload.click();\r\n }\r\n\r\n getImageDisplay() {\r\n let source = this.state.preview === '' ? this.state.imageUrl || journalImage : this.state.preview;\r\n\r\n return (\r\n
    \r\n \r\n this.fileUpload = ref}\r\n />\r\n \r\n
    \r\n )\r\n }\r\n\r\n validateForm() {\r\n if (this.state.title === null || this.state.title.trim() === '') {\r\n alert('Please enter a title.')\r\n return false\r\n }\r\n\r\n if (!this.state.publisher || this.state.publisher.trim() === '') {\r\n alert('Please enter a publisher.')\r\n return false\r\n }\r\n\r\n if (!this.state.description || this.state.description.trim() === '') {\r\n alert('Please enter a description.')\r\n return false\r\n }\r\n\r\n let issuesPerYear = parseInt(this.state.issuesPerYear)\r\n if (this.state.issuesPerYear === '' || issuesPerYear < 1 || issuesPerYear > 255) {\r\n alert('Please enter a number of issues between 1 and 255.')\r\n return false\r\n }\r\n\r\n if (this.state.printISSN === '' && this.state.onlineISSN === '') {\r\n alert('Print ISSN or Online ISSN is required.')\r\n return false\r\n }\r\n\r\n if ((!this.state.preview || this.state.preview === '') && (!this.state.imageUrl || this.state.imageUrl === '')) {\r\n alert('An image is required.')\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n handleSubmit = async (e) => {\r\n e.preventDefault();\r\n\r\n if (!this.validateForm()) {\r\n return false;\r\n }\r\n\r\n const journalId = await this.saveData();\r\n\r\n if (journalId === -1) {\r\n return false;\r\n }\r\n\r\n if (!this.state.selectedFile) {\r\n MessageFlash.setMessage('Journal Saved Successfully')\r\n this.props.history.goBack();\r\n return\r\n }\r\n\r\n const formData = new FormData();\r\n formData.append('files', this.state.selectedFile)\r\n formData.append('titleId', 'J' + journalId)\r\n\r\n const url = environment.baseUrl + '/api/image/upload'\r\n const config = {\r\n headers: {\r\n 'Content-Type': 'multipart/form-data',\r\n 'Authorization': 'Bearer ' + this.user.token\r\n }\r\n }\r\n\r\n axios\r\n .post(url, formData, config)\r\n .then(async response => {\r\n MessageFlash.setMessage('Journal Saved Successfully')\r\n this.props.history.goBack();\r\n })\r\n .catch(error => {\r\n console.error('Error occurred on image upload: ', error, error.response.data);\r\n alert('Error uploading image: ' + error);\r\n });\r\n }\r\n\r\n async saveData() {\r\n let model = {...this.state}\r\n\r\n model.printISSN = model.printISSN !== '' ? model.printISSN : null\r\n model.onlineISSN = model.onlineISSN !== '' ? model.onlineISSN : null\r\n model.description = model.description !== '' ? model.description : null\r\n\r\n return axios\r\n .post(environment.baseUrl + '/api/journals/save', model, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return -1\r\n }\r\n\r\n //console.debug('RESULTS: ', response.data)\r\n\r\n return response.data.journal\r\n })\r\n .catch(error => {\r\n console.error('Error saving journal: ', error, error.response);\r\n alert('Error Saving Journal');\r\n })\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n setIsActive() {\r\n // if (this.state.isClassicRBLImport === true) {\r\n // return ''\r\n // }\r\n\r\n return (\r\n
    \r\n \r\n Active\r\n \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n let header = this.state.isNew === true ? 'Add Journal' : 'Edit Journal'\r\n\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {header}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n *\r\n \r\n \r\n  Required\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.getImageDisplay()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n and )\"\r\n maxLength=\"200\"\r\n name=\"description\"\r\n value={this.state.description}\r\n onChange={this.handleInputChange}\r\n rows=\"3\"\r\n required\r\n />\r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n {this.setIsActive()}\r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport CheckboxTree from 'react-checkbox-tree';\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\n\r\nimport { Link } from 'react-router-dom'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\n\r\nimport 'react-checkbox-tree/lib/react-checkbox-tree.css';\r\nimport './journalIssues.css'\r\n\r\nexport class JournalIssues extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n nodes: [],\r\n journals: [],\r\n checked: [],\r\n expanded: [],\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer')\r\n footer.style.position = 'relative'\r\n\r\n this.setState({loading: true}, () => {\r\n this.loadDataFromServer()\r\n })\r\n }\r\n\r\n onNodeClick = (targetNode) => {\r\n //console.debug('Targeted Node: ', targetNode)\r\n \r\n if (targetNode.isLeaf === true) {\r\n this.props.history.push(`/admin/journalIssuesDetail/${targetNode.value}`)\r\n }\r\n }\r\n\r\n loadDataFromServer() {\r\n const url = environment.baseUrl + '/api/journals/enumerate'\r\n\r\n axios.get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n this.setState({loading: false})\r\n return\r\n }\r\n\r\n this.setState({\r\n journals: response.data.journals,\r\n loading: false\r\n }, () => {\r\n this.buildNodesForTreeDisplay()\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error getting journal issues: ', error)\r\n alert('Error getting journal issues: ' + error)\r\n\r\n this.setState({loading: false})\r\n })\r\n }\r\n\r\n buildNodesForTreeDisplay() {\r\n let nodes = []\r\n this.initUniqueTreeNodeValue()\r\n\r\n this.state.journals.forEach(journal => {\r\n if (journal.issues.length > 0 && journal.isActive) {\r\n let journalNode = this.buildIndividualJournalNode(journal)\r\n nodes.push(journalNode)\r\n }\r\n })\r\n\r\n this.setState({nodes: nodes})\r\n }\r\n\r\n buildIndividualJournalNode(journal) {\r\n let journalNode = this.createJournalNode(journal)\r\n let yearNode = {}\r\n\r\n let issues = journal.issues.sort((a,b) => {\r\n if (a.year != b.year) {\r\n return b.year - a.year\r\n }\r\n\r\n if (a.volume != b.volume) {\r\n return b.volume - a.volume\r\n }\r\n\r\n const issueNumber = a.issue ? a.issue : 0\r\n\r\n return b.issue - issueNumber\r\n })\r\n\r\n issues.forEach(issue => {\r\n if (yearNode.label !== issue.year) {\r\n yearNode = this.createYearNode(issue)\r\n journalNode.children.push(yearNode)\r\n }\r\n\r\n let issueNode = this.createIssueNode(issue)\r\n\r\n yearNode.children.push(issueNode)\r\n })\r\n\r\n return journalNode\r\n }\r\n\r\n createJournalNode(journal) {\r\n return {\r\n label: journal.title,\r\n value: this.getUniqueValueForTreeNode(),\r\n showCheckbox: false,\r\n children: [],\r\n className: 'journal-issues-title'\r\n }\r\n }\r\n\r\n createYearNode(issue) {\r\n return {\r\n label: issue.year,\r\n value: this.getUniqueValueForTreeNode(),\r\n showCheckbox: false,\r\n children: [],\r\n className: 'journal-issues-year'\r\n }\r\n }\r\n\r\n createIssueNode(issue) {\r\n let display = issue.volume\r\n if (issue.issue) {\r\n display += '.' + issue.issue\r\n }\r\n\r\n return {\r\n label: display,\r\n value: issue.id,\r\n showCheckbox: false,\r\n className: 'journal-issues-volume'\r\n }\r\n }\r\n\r\n initUniqueTreeNodeValue() {\r\n this.seed = -1\r\n }\r\n\r\n getUniqueValueForTreeNode() {\r\n return this.seed--\r\n }\r\n\r\n getJounralIssuesDisplay() {\r\n if (this.state.nodes.length === 0) {\r\n return this.getNoJournalsFoundDisplay()\r\n }\r\n\r\n return (\r\n
    \r\n this.setState({ checked })}\r\n onExpand={expanded => this.setState({ expanded })}\r\n showNodeIcon={false}\r\n onClick= {(targetNode) => this.onNodeClick(targetNode)}\r\n expandOnClick={true}\r\n /> \r\n
    \r\n )\r\n }\r\n\r\n getNoJournalsFoundDisplay() {\r\n return (\r\n
    \r\n No Journal Issues Found to Display\r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Journal Issues\r\n
    \r\n\r\n
    \r\n Add Journal Issue\r\n
    \r\n\r\n
    \r\n {this.getJounralIssuesDisplay()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport ModalRoot, {ModalRootStacked} from \"../../Containers/Login/loginRoot\";\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\n\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { JournalArticles, InputField, SelectField } from '../componentsBarrel'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper'\r\nimport { Checkbox } from 'react-bootstrap'\r\n\r\nimport './journalIssuesDetail.css'\r\n\r\nexport class JournalIssuesDetail extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n let id = this.props.match.params.Id\r\n this.journals = [{id: 0, title: 'Select an Option'}]\r\n this.years = []\r\n\r\n this.state = {\r\n id: id === 'new' ? 0 : id,\r\n isNew: (id === 'new'),\r\n title: '',\r\n journalId: 0,\r\n volume: '',\r\n issue: '',\r\n url: '',\r\n year: 0,\r\n articles: [],\r\n notificationsDate: null,\r\n //sendNotifications: false,\r\n notificationSent: false,\r\n isIssueNotificationApproved: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0)\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.setState({loading: true}, () => this.loadData());\r\n }\r\n\r\n loadData() {\r\n let promises = []\r\n\r\n promises.push(this.loadJournals())\r\n promises.push(this.loadYears())\r\n\r\n if (this.state.isNew === false) {\r\n promises.push(this.loadExisting())\r\n }\r\n\r\n Promise.all(promises)\r\n .then(values => {\r\n this.setState({loading: false})\r\n })\r\n }\r\n\r\n loadExisting() {\r\n return axios\r\n .get(environment.baseUrl + '/api/journalissues/get/' + this.state.id, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return;\r\n }\r\n\r\n //console.debug('DATA: ', response.data)\r\n\r\n this.loadValues(response.data.issue)\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading journal issue: ', error, error.response);\r\n alert('Error Loading Journal Issue');\r\n })\r\n }\r\n\r\n getActiveJournals(journals){\r\n let arr = []\r\n for(let i = 0; journals.length > i; i++){\r\n let thisJournal = journals[i];\r\n if(thisJournal.isActive){\r\n arr.push(thisJournal);\r\n }\r\n }\r\n return arr;\r\n }\r\n\r\n loadJournals() {\r\n return axios\r\n .get(environment.baseUrl + '/api/journals/enumerate', this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n //console.debug('Journal Data: ', response.data)\r\n let activeJournals = this.getActiveJournals(response.data.journals);\r\n this.journals = this.journals.concat(activeJournals)\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading journal data: ', error, error.response)\r\n alert('Error Loading Journal Data')\r\n\r\n this.journals = []\r\n })\r\n }\r\n\r\n loadYears() {\r\n return axios.get(environment.baseUrl + '/api/journals/years', this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n //console.debug('YEARS: ', response.data)\r\n\r\n this.years = []\r\n response.data.years.forEach(year => {\r\n this.years.push({\r\n id: year,\r\n value: year\r\n })\r\n })\r\n\r\n if (this.years.length > 0) {\r\n this.setState({\r\n year: this.years[0].value\r\n })\r\n }\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading journal years: ', error, error.response)\r\n alert('Error loading journal years')\r\n\r\n this.years = []\r\n })\r\n }\r\n\r\n loadValues(issue) {\r\n this.setState({\r\n id: issue.id,\r\n volume: `${issue.volume}`,\r\n issue: issue.issue ? `${issue.issue}` : '',\r\n url: issue.url,\r\n journalId: issue.journalId,\r\n articles: issue.articles,\r\n year: `${issue.year}`,\r\n loading: false,\r\n notificationsDate: issue.notificationsDate,\r\n notificationSent: issue.notificationSent,\r\n isIssueNotificationApproved: issue.isIssueNotificationApproved ? issue.isIssueNotificationApproved : false\r\n })\r\n }\r\n\r\n handleInputChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n onChangeNumericOnly = (e) => {\r\n let value = e.target.value.replace(/[^0-9]/g, '')\r\n value = value.toUpperCase()\r\n this.setState({[e.target.name]: value})\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }\r\n\r\n onDelete = (e) => {\r\n e.preventDefault();\r\n\r\n if (!window.confirm('Are you sure you want to delete this journal issue?')) {\r\n return false;\r\n }\r\n \r\n axios\r\n .delete(environment.baseUrl + '/api/journalissues/delete/' + this.state.id, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n MessageFlash.setMessage('Journal Issue Deleted')\r\n this.props.history.goBack();\r\n })\r\n .catch(error => {\r\n console.error('Error deleting journal issue: ', error, error.response);\r\n alert('Error Deleting Journal Issue');\r\n })\r\n }\r\n\r\n getDeleteButton() {\r\n if (this.state.isNew === true || this.state.notificationSent) {\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n validateForm() {\r\n //console.debug('state: ', this.state)\r\n\r\n if (this.state.journalId === 0 || this.state.journalId === '0') {\r\n alert('Please select a journal')\r\n return false\r\n }\r\n\r\n if (this.state.volume === null || this.state.volume.trim() === '') {\r\n alert('Please enter a volume.')\r\n return false\r\n }\r\n\r\n let issue = parseInt(this.state.issue)\r\n if (issue > 255) {\r\n alert('Issue must be less than 256')\r\n return false\r\n }\r\n\r\n if (this.state.articles.length === 0) {\r\n alert('At least one article is required.')\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n\r\n if (!this.validateForm()) {\r\n return false;\r\n }\r\n\r\n let model = {...this.state}\r\n\r\n axios\r\n .post(environment.baseUrl + '/api/journalissues/save', model, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n MessageFlash.setMessage('Journal Issue Saved Successfully')\r\n this.props.history.goBack();\r\n })\r\n .catch(error => {\r\n console.error('Error saving journal issue: ', error, error.response);\r\n alert('Error Saving Journal Issue');\r\n })\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n formatDate =(strDate) =>{\r\n let date = new Date(strDate);\r\n return `${date.getMonth() + 1}/${date.getDay() + 1}/${date.getFullYear()}`\r\n }\r\n\r\n render() {\r\n let header = this.state.isNew === true ? 'Add Journal Issue' : 'Edit Journal Issue'\r\n\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n \r\n \r\n\r\n
    \r\n
    \r\n
    \r\n
    \r\n {header}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n *\r\n \r\n \r\n  Required\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n {\r\n (\r\n (new Date(this.state.notificationsDate).getMonth() <= new Date().getMonth()) &&\r\n (new Date(this.state.notificationsDate).getDay() < new Date().getDay()) &&\r\n (new Date(this.state.notificationsDate).getFullYear() <= new Date().getFullYear())\r\n ) ?\r\n\r\n this.disable = true :\r\n this.disable = false\r\n }\r\n \r\n Send Member Notification?\r\n \r\n
    \r\n\r\n
    \r\n { \r\n (this.state.isIssueNotificationApproved && this.state.notificationsDate !== null) ?\r\n Notification Sent: {\r\n ((new Date(this.state.notificationsDate).getMonth() + 1).toString().padStart(2, '0') + \"/\") +\r\n ((new Date(this.state.notificationsDate).getDate()).toString().padStart(2, '0') + \"/\") +\r\n (new Date(this.state.notificationsDate).getFullYear())\r\n // this.formatDate(this.state.notificationsDate)\r\n } :\r\n \"\"\r\n }\r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport Tooltip from 'react-tooltip-lite';\r\n\r\nimport { ModalConsumer } from \"../../Containers/Login/loginContext\";\r\nimport { JournalArticleModal } from '../componentsBarrel'\r\n\r\nimport './journalArticles.css'\r\n\r\nexport class JournalArticles extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n articles: props.articles ? props.articles : []\r\n }\r\n }\r\n\r\n showJournalArticleModal(showModal, self, item, index) {\r\n let close = (data, self) => {\r\n if (data) {\r\n let array = self.state.articles\r\n\r\n if (data.deleteRequested) {\r\n array.splice(index, 1)\r\n }\r\n else if (data.edit) {\r\n let record = array[index]\r\n\r\n record.title = data.title\r\n record.doi = data.doi\r\n record.authors = data.authors\r\n\r\n array[index] = record;\r\n }\r\n else {\r\n array.push(data)\r\n }\r\n\r\n self.setState({\r\n articles: array\r\n })\r\n }\r\n }\r\n\r\n showModal(JournalArticleModal, { onClose: close, parent: self, item: item })\r\n }\r\n\r\n addModal(event, modal, showModal) {\r\n event.preventDefault();\r\n modal(showModal, this)\r\n }\r\n\r\n editModal(event, modal, showModal, item, index) {\r\n event.preventDefault();\r\n if (item !== undefined) {\r\n modal(showModal, this, item, index)\r\n }\r\n }\r\n\r\n ellipsisFormat(longText, maxLength) {\r\n maxLength = (maxLength === null) ? 25 : maxLength\r\n\r\n if (!longText || longText.length <= maxLength) {\r\n return longText\r\n }\r\n\r\n return longText.substring(0, maxLength) + '...'\r\n }\r\n\r\n formatTooltip(text) {\r\n return text;\r\n }\r\n\r\n getArticlesGrid(modal, showModal) {\r\n return (\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.articles.map((x, index) => {\r\n return (\r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    TitleAuthor
    {this.displayTitle(x, index, modal, showModal)}{this.displayAuthor(x)}
    \r\n
    \r\n )\r\n }\r\n\r\n displayTitle = (item, index, modal, showModal) => {\r\n let title = this.ellipsisFormat(item.title, 50)\r\n let tooltip = this.formatTooltip(item.title)\r\n\r\n if (item.title.length > 50) {\r\n return (\r\n \r\n )\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n displayAuthor = (item) => {\r\n let name = `${item.authors[0].firstName} ${item.authors[0].lastName}`\r\n let display = this.ellipsisFormat(name, 50)\r\n let tooltip = this.formatTooltip(name)\r\n\r\n if (name.length > 50) {\r\n return (\r\n \r\n {display}\r\n \r\n )\r\n }\r\n\r\n return name;\r\n }\r\n\r\n getModal() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n \r\n\r\n {this.getArticlesGrid(this.showJournalArticleModal, showModal)}\r\n \r\n )}\r\n \r\n \r\n
    \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n
    \r\n
    \r\n {this.getModal()}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport Modal from 'react-modal'\r\n\r\nimport { JournalArticleAuthors, InputField, TextField } from '../componentsBarrel'\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './journalArticleModal.css'\r\n\r\nexport class JournalArticleModal extends React.Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.showDelete = props.item ? true : false\r\n\r\n this.state = {\r\n title: props.item ? props.item.title : '',\r\n authors: props.item ? [...props.item.authors] : [],\r\n sendNotifications: props.item ? props.sendNotifications : false,\r\n doi: props.item ? props.item.doi : '',\r\n edit: props.item ? true : false\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n this.props.onRequestClose();\r\n }\r\n\r\n onRequestDelete = (e) => {\r\n e.preventDefault();\r\n let data = {\r\n ...this.state,\r\n deleteRequested: true\r\n }\r\n this.onRequestClose(e);\r\n this.props.onClose(data, this.props.parent);\r\n\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (!this.validate()) return false\r\n\r\n this.onRequestClose(e);\r\n this.props.onClose(this.state, this.props.parent);\r\n }\r\n\r\n validate() {\r\n if (this.state.authors.length === 0) {\r\n alert('At least one author is required.')\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n onChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n onChangeNumericOnly = (e) => {\r\n let value = e.target.value.replace(/[^0-9]/g, '')\r\n value = value.toUpperCase()\r\n this.setState({[e.target.name]: value})\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n onTextChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n getDeleteButton() {\r\n if ( this.showDelete ) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n let heading = this.state.edit === false ? 'Add Journal Article' : 'Edit Journal Article'\r\n\r\n return (\r\n
    \r\n
    \r\n \r\n

    {heading}

    \r\n\r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport { ModalConsumerStacked } from \"../../Containers/Login/loginContext\";\r\nimport { ListField, JournalArticleAuthorModal } from '../componentsBarrel'\r\n\r\nexport class JournalArticleAuthors extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n authors: props.authors ? props.authors : []\r\n }\r\n }\r\n\r\n showJournalArticleAuthorModal(showModal, self, item, index) {\r\n let close = (data, self) => {\r\n if (data) {\r\n let array = self.state.authors\r\n\r\n if (data.deleteRequested) {\r\n array.splice(index, 1)\r\n }\r\n else if (data.edit) {\r\n let record = array[index]\r\n record.firstName = data.firstName\r\n record.lastName = data.lastName\r\n array[index] = record;\r\n }\r\n else {\r\n array.push(data)\r\n }\r\n\r\n self.setState({\r\n authors: array\r\n })\r\n }\r\n }\r\n\r\n showModal(JournalArticleAuthorModal, { onClose: close, parent: self, item: item })\r\n }\r\n\r\n addModal(event, modal, showModal) {\r\n event.preventDefault();\r\n modal(showModal, this)\r\n }\r\n\r\n editModal(event, modal, showModal, item, index) {\r\n event.preventDefault();\r\n if (item !== undefined) {\r\n modal(showModal, this, item, index)\r\n }\r\n }\r\n\r\n getModal() {\r\n return (\r\n
    \r\n \r\n \r\n {({ showModal }) => (\r\n \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )}\r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n displayAuthor = (item, index, modal, showModal) => {\r\n let author = `${item.firstName} ${item.lastName}`\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n \r\n * \r\n Authors\r\n \r\n \r\n {this.getModal()}\r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport Modal from 'react-modal'\r\nimport { InputField } from '../componentsBarrel'\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './journalArticleAuthorModal.css'\r\n\r\nexport class JournalArticleAuthorModal extends React.Component {\r\n\r\n constructor(props) {\r\n super(props)\r\n\r\n this.showDelete = props.item ? true : false\r\n\r\n this.state = {\r\n firstName: props.item ? props.item.firstName : '',\r\n lastName: props.item ? props.item.lastName : '',\r\n edit: props.item ? true : false\r\n }\r\n }\r\n\r\n onRequestClose = (e) => {\r\n e.preventDefault();\r\n this.props.onRequestClose();\r\n }\r\n\r\n onRequestDelete = (e) => {\r\n e.preventDefault();\r\n let data = {\r\n ...this.state,\r\n deleteRequested: true\r\n }\r\n this.onRequestClose(e);\r\n this.props.onClose(data, this.props.parent);\r\n\r\n }\r\n\r\n handleSubmit = (e) => {\r\n e.preventDefault();\r\n e.stopPropagation();\r\n\r\n if (!this.validate()) {\r\n return false;\r\n }\r\n\r\n this.onRequestClose(e);\r\n this.props.onClose(this.state, this.props.parent);\r\n }\r\n\r\n validate() {\r\n return true;\r\n }\r\n\r\n onChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.value });\r\n }\r\n\r\n getDeleteButton() {\r\n if ( this.showDelete ) {\r\n return (\r\n \r\n )\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Author

    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React from 'react'\r\nimport './roundCheckbox.css'\r\n\r\nexport const RoundCheckbox = (props) => {\r\n return (\r\n \r\n )\r\n}\r\n","import React from 'react'\r\nimport './CustomDateInput.css'\r\n\r\nexport const CustomDateInput = React.forwardRef(({formatted, onClick}, ref) => {\r\n return (\r\n \r\n )\r\n})\r\n","import React, {Fragment} from 'react'\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport DatePicker from 'react-datepicker'\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { CustomDateInput } from '../componentsBarrel'\r\n\r\nexport class BaseSummaryReport extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n loading: false\r\n }\r\n\r\n if (!this.user || this.user === null) {\r\n window.location = '/'\r\n return\r\n }\r\n } \r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n let fromDate = new Date()\r\n let toDate = new Date()\r\n\r\n fromDate.setDate(fromDate.getDate())\r\n toDate.setDate(toDate.getDate())\r\n\r\n this.setfromDate(fromDate)\r\n this.settoDate(toDate)\r\n }\r\n\r\n setfromDate = (date) => {\r\n date.setHours(0, 0, 0, 0)\r\n\r\n this.setState({\r\n fromDate: date,\r\n fromDateText: date.toLocaleString('en-US', options) + ' 12:00 AM'\r\n })\r\n }\r\n\r\n settoDate = (date) => {\r\n date.setHours(23, 59, 59, 999)\r\n\r\n this.setState({\r\n toDate: new Date(date),\r\n toDateText: date.toLocaleString('en-US', options) + ' 11:59:59.999 PM'\r\n })\r\n }\r\n\r\n getYesterday() {\r\n let yesterday = new Date()\r\n yesterday.setDate(yesterday.getDate() - 1)\r\n return yesterday\r\n }\r\n\r\n filtertoDate = (date, fromDate) => {\r\n let yesterday = this.getYesterday()\r\n return (date <= yesterday) && date >= fromDate\r\n }\r\n\r\n filterfromDate = (date) => {\r\n let yesterday = this.getYesterday()\r\n return date <= yesterday\r\n }\r\n\r\n onCancel = (e) => {\r\n window.location = '/admin/reports'\r\n }\r\n\r\n onSubmit = async (e) => {\r\n this.setState({loading: true}, async () => {\r\n await this.props.onSubmit()\r\n this.setState({loading: false})\r\n })\r\n }\r\n\r\n onDownload = () => {\r\n let button = document.getElementById('table-xls-button')\r\n button.click()\r\n }\r\n\r\n getExcelButton = () => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n render()\r\n {\r\n return (\r\n \r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.props.reportTitle}\r\n
    \r\n\r\n
    \r\n
    \r\n
    From
    \r\n
    To
    \r\n
    \r\n\r\n
    \r\n
    \r\n }\r\n onChange={date => this.setfromDate(date)}\r\n filterDate={this.filterfromDate}\r\n />\r\n
    \r\n
    \r\n }\r\n onChange={date => this.settoDate(date)}\r\n filterDate={date => this.filtertoDate(date, this.state.fromDate)}\r\n />\r\n
    \r\n
    \r\n\r\n
    \r\n \r\n     \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n\r\n {this.props.getDataDisplay()}\r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst options = { \r\ntimeZone: \"America/New_York\", \r\nhour12: true,\r\nyear: 'numeric',\r\nmonth: 'long',\r\nday: 'numeric',\r\n//hour: 'numeric',\r\n//second: 'numeric',\r\n//minute: 'numeric'\r\n};\r\n","import React, {Fragment} from 'react'\r\nimport axios from 'axios'\r\nimport DataCallerBaseComponent from '../../Core/dataCallerBaseComponent'\r\nimport environment from \"../../../Environments/environments\";\r\nimport ReactExport from \"react-data-export\"\r\n\r\nimport { BaseSummaryReport } from '../BaseSummaryReport'\r\nimport { guardAdmin } from '../../Admin/admin-base'\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nexport class ImportSummaryReport extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n data: null\r\n }\r\n\r\n this.reportTitle = 'Import Summary'\r\n }\r\n\r\n getDataDisplay = () => {\r\n if (!this.state.data) {\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n Export to Excel\r\n {this.getExcelFunctionalButton()}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.data.map((item, index) => {\r\n item.formattedDate = this.formatDate(item.date)\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n })}\r\n \r\n
    DateAccountSource FileSource ActivityNum Records InsertedNum Records UpdatedNum Records Failed
    {item.formattedDate}{item.account}{item.sourceFile}{item.sourceActivity}{item.numRecordsInserted}{item.numRecordsUpdated}{item.numRecordsFailed}
    \r\n
    \r\n
    \r\n
    \r\n )\r\n }\r\n\r\n formatDate(date) {\r\n return new Date(date).toLocaleDateString()\r\n }\r\n\r\n getExcelFunctionalButton() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n onSubmit = async (e) => {\r\n let url = `${environment.baseUrl}/api/reports/importsummary`\r\n\r\n let data = {\r\n fromDate: this.base.state.fromDate.toLocaleString(),\r\n toDate: this.base.state.toDate.toLocaleString()\r\n }\r\n\r\n return axios.post(url, data, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n console.error('Error: ', response.data.message)\r\n alert('Error getting Import Summary data: ' + response.data.message)\r\n return;\r\n }\r\n\r\n let reportData = response.data.data\r\n\r\n this.setState({ data: reportData }, () => true)\r\n })\r\n .catch(error => {\r\n console.log('Error: ', error)\r\n alert('An error occurred getting report data: ' + error)\r\n return false;\r\n })\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n this.base = x}\r\n />\r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport axios from 'axios'\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport environment from \"../../Environments/environments\"\r\nimport ReactExport from \"react-data-export\"\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport NumberFormat from 'react-number-format'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport Moment from 'moment'\r\n\r\nexport class NotificationsSnapshotReport extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n loading: false\r\n }\r\n\r\n this.reportTitle = 'Notifications Snapshot'\r\n this.todaysDate = new Date()\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({loading: true}, () => this.loadDataFromServer())\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n }\r\n\r\n loadDataFromServer() {\r\n this.makeAPICall('/api/notificationsSnapshot/currentSBLMemberCount', 'currentSBLMemberCount');\r\n this.makeAPICall('/api/notificationsSnapshot/currentBookMemberCount', 'currentBookMemberCount');\r\n this.makeAPICall('/api/notificationsSnapshot/currentJournalMemberCount', 'currentJournalMemberCount');\r\n this.makeAPICall('/api/notificationsSnapshot/bookSubjectsAverage', 'averageBookSubjectsSelected');\r\n this.makeAPICall('/api/notificationsSnapshot/bookSubjectsMedian', 'medianBookSubjectsSelected');\r\n this.makeAPICall('/api/notificationsSnapshot/bookSubjectsMode', 'modeBookSubjectsSelected');\r\n this.makeAPICall('/api/notificationsSnapshot/journalsAverage', 'averageJournalsSelected');\r\n this.makeAPICall('/api/notificationsSnapshot/journalsMedian', 'medianJournalsSelected');\r\n this.makeAPICall('/api/notificationsSnapshot/journalsMode', 'modeJournalsSelected');\r\n }\r\n\r\n formatDate(date) {\r\n return Moment(date).format(\"MM/DD/YYYY hh:mm A\");\r\n }\r\n\r\n makeAPICall(uri, stateParameter) {\r\n let url = environment.baseUrl.concat(uri)\r\n\r\n return axios.get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n console.error('Error: ', response.data.message)\r\n alert('Error getting Notifications data for the api: ' + uri + '. Error message: ' + response.data.message)\r\n return;\r\n }\r\n\r\n switch (stateParameter){\r\n case \"currentSBLMemberCount\":\r\n this.setState({ currentSBLMemberCount: response.data.data })\r\n break\r\n case \"currentBookMemberCount\":\r\n this.setState({ currentBookMemberCount: response.data.data })\r\n break\r\n case \"currentJournalMemberCount\":\r\n this.setState({ currentJournalMemberCount: response.data.data })\r\n break\r\n case \"averageBookSubjectsSelected\":\r\n this.setState({ averageBookSubjectsSelected: response.data.data })\r\n break\r\n case \"medianBookSubjectsSelected\":\r\n this.setState({ medianBookSubjectsSelected: response.data.data })\r\n break\r\n case \"modeBookSubjectsSelected\":\r\n this.setState({ modeBookSubjectsSelected: response.data.data })\r\n break\r\n case \"averageJournalsSelected\":\r\n this.setState({ averageJournalsSelected: response.data.data })\r\n break\r\n case \"medianJournalsSelected\":\r\n this.setState({ medianJournalsSelected: response.data.data })\r\n break\r\n case \"modeJournalsSelected\":\r\n this.setState({ modeJournalsSelected: response.data.data })\r\n break\r\n }\r\n \r\n this.setState({ \r\n loading: false\r\n }, () => true)\r\n })\r\n .catch(error => {\r\n console.log('Error: ', error)\r\n alert('An error occurred getting report data: ' + error)\r\n\r\n this.setState({\r\n stateParameter: 0,\r\n loading: false\r\n })\r\n return false;\r\n })\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {this.reportTitle}\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n Date/Time\r\n \r\n { this.formatDate(this.todaysDate) }\r\n
    \r\n Number of Current (Individual) SBL Members\r\n \r\n { this.state.currentSBLMemberCount }\r\n
      
    \r\n Book/Review Notifications\r\n \r\n
    \r\n Number of Current Members Signed Up\r\n \r\n { this.state.currentBookMemberCount }\r\n
    \r\n Percentage of Current Members Signed Up\r\n \r\n \r\n
    \r\n Number of Subjects Selected - Mean\r\n \r\n \r\n
    \r\n Number of Subjects Selected - Median\r\n \r\n \r\n
    \r\n Number of Subjects Selected - Mode\r\n \r\n \r\n
      
    \r\n Journal Notifications\r\n \r\n
    \r\n Number of Current Members Signed Up\r\n \r\n { this.state.currentJournalMemberCount }\r\n
    \r\n Percentage of Current Members Signed Up\r\n \r\n \r\n
    \r\n Number of Journals Selected - Mean\r\n \r\n \r\n
    \r\n Number of Journals Selected - Median\r\n \r\n \r\n
    \r\n Number of Journals Selected - Mode\r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n\r\nconst options = { \r\n timeZone: \"America/New_York\", \r\n hour12: true,\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n //hour: 'numeric',\r\n //second: 'numeric',\r\n //minute: 'numeric'\r\n};\r\n","import React, {Fragment, useState} from 'react'\r\nimport axios from 'axios'\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport environment from \"../../Environments/environments\"\r\nimport ReactExport from \"react-data-export\"\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport Moment from 'moment'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nimport \"./subjectSelectionsSnapshot.css\";\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nexport class SubjectSelectionsSnapshotReport extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n subjectCounts: null,\r\n loading: true\r\n }\r\n\r\n this.reportTitle = 'Subject Selections Snapshot'\r\n this.todaysDate = new Date()\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({loading: true}, () => this.loadDataFromServer())\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n }\r\n\r\n getExcelFunctionalButton() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n getExcelButton = () => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n onDownload = () => {\r\n let button = document.getElementById('table-xls-button')\r\n button.click()\r\n }\r\n\r\n loadDataFromServer() {\r\n this.makeAPICall('/api/notificationsSnapshot/subjectSelctionsSnapshot');\r\n }\r\n\r\n formatDate(date) {\r\n return Moment(date).format(\"MM/DD/YYYY hh:mm A\");\r\n }\r\n\r\n makeAPICall(uri) {\r\n let url = environment.baseUrl.concat(uri)\r\n\r\n return axios.get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n console.error('Error: ', response.data.message)\r\n alert('Error getting Notifications data for the api: ' + uri + '. Error message: ' + response.data.message)\r\n return;\r\n }\r\n else \r\n {\r\n this.setState({ subjectCounts: response.data.data })\r\n }\r\n\r\n this.setState({ \r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.log('Error: ', error)\r\n alert('An error occurred getting report data: ' + error)\r\n\r\n this.setState({\r\n loading: false\r\n })\r\n return false;\r\n })\r\n }\r\n\r\n ellipsisFormat(longText) {\r\n if (!longText || longText.length <= 50) {\r\n return longText\r\n }\r\n\r\n return longText.substring(0, 50).trim() + ' . . .'\r\n }\r\n\r\n formatTooltip(text) {\r\n const tipPrefix = \"

    \"\r\n const tipSuffix = '

    '\r\n\r\n return tipPrefix + text + tipSuffix\r\n }\r\n\r\n CustomDataGrid = () => {\r\n const initialRows = this.state.subjectCounts;\r\n if (initialRows != null && initialRows.length > 0)\r\n {\r\n return (\r\n \r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Book/Review Notifications\r\n


    \r\n {this.reportTitle}\r\n


    \r\n as of { this.formatDate(this.todaysDate) } (ET)\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Export to Excel\r\n {this.getExcelFunctionalButton()}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.subjectCounts.map((item, index) => {\r\n let subject2Display = this.ellipsisFormat(item.subject2)\r\n let subject2Tooltip = this.formatTooltip(item.subject2)\r\n \r\n let subject3Display = this.ellipsisFormat(item.subject3)\r\n let subject3Tooltip = this.formatTooltip(item.subject3)\r\n\r\n return (\r\n \r\n \r\n {(item.subject2.length > 50) ?\r\n \r\n :\r\n \r\n }\r\n {(item.subject3.length > 50) ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n )\r\n })}\r\n \r\n
    Subject 1Subject 2Subject 3# Selections
    {item.subject1}\r\n \r\n {subject2Display}\r\n \r\n {item.subject2}\r\n \r\n {subject3Display}\r\n \r\n {item.subject3}{item.count}
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n else\r\n {\r\n return getBusyIndicator(this.state.loading);\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )}\r\n}\r\n\r\nconst options = { \r\n timeZone: \"America/New_York\", \r\n hour12: true,\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n //hour: 'numeric',\r\n //second: 'numeric',\r\n //minute: 'numeric'\r\n};\r\n","import React, {Fragment, useState} from 'react'\r\nimport axios from 'axios'\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport environment from \"../../Environments/environments\"\r\nimport ReactExport from \"react-data-export\"\r\nimport ReactTooltip from 'react-tooltip'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport Moment from 'moment'\r\nimport { Helmet } from 'react-helmet'\r\n\r\n// import \"./journalSelectionsSnapshot.css\";\r\n\r\nconst ExcelFile = ReactExport.ExcelFile;\r\nconst ExcelSheet = ReactExport.ExcelFile.ExcelSheet;\r\nconst ExcelColumn = ReactExport.ExcelFile.ExcelColumn;\r\n\r\nexport class JournalSelectionsSnapshotReport extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n journalCounts: null,\r\n loading: true\r\n }\r\n\r\n this.reportTitle = 'Journal Selections Snapshot'\r\n this.todaysDate = new Date()\r\n }\r\n\r\n componentDidMount() {\r\n this.setState({loading: true}, () => this.loadDataFromServer())\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n }\r\n\r\n getExcelFunctionalButton() {\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )\r\n }\r\n\r\n getExcelButton = () => {\r\n return (\r\n \r\n )\r\n }\r\n\r\n onDownload = () => {\r\n let button = document.getElementById('table-xls-button')\r\n button.click()\r\n }\r\n\r\n loadDataFromServer() {\r\n this.makeAPICall('/api/notificationsSnapshot/journalSelectionsSnapshot');\r\n }\r\n\r\n formatDate(date) {\r\n return Moment(date).format(\"MM/DD/YYYY hh:mm A\");\r\n }\r\n\r\n makeAPICall(uri) {\r\n let url = environment.baseUrl.concat(uri)\r\n\r\n return axios.get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n console.error('Error: ', response.data.message)\r\n alert('Error getting Notifications data for the api: ' + uri + '. Error message: ' + response.data.message)\r\n return;\r\n }\r\n else \r\n {\r\n this.setState({ journalCounts: response.data.data })\r\n }\r\n\r\n this.setState({ \r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.log('Error: ', error)\r\n alert('An error occurred getting report data: ' + error)\r\n\r\n this.setState({\r\n loading: false\r\n })\r\n return false;\r\n })\r\n }\r\n\r\n ellipsisFormat(longText) {\r\n if (!longText || longText.length <= 50) {\r\n return longText\r\n }\r\n\r\n return longText.substring(0, 50).trim() + ' . . .'\r\n }\r\n\r\n formatTooltip(text) {\r\n const tipPrefix = \"

    \"\r\n const tipSuffix = '

    '\r\n\r\n return tipPrefix + text + tipSuffix\r\n }\r\n\r\n CustomDataGrid = () => {\r\n const initialRows = this.state.journalCounts;\r\n if (initialRows != null && initialRows.length > 0)\r\n {\r\n return (\r\n \r\n {getBusyIndicator(this.state.loading, \r\n
    \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n Journal Notifications\r\n


    \r\n {this.reportTitle}\r\n


    \r\n as of { this.formatDate(this.todaysDate) } (ET)\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Export to Excel\r\n {this.getExcelFunctionalButton()}\r\n
    \r\n
    \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.journalCounts.map((item, index) => {\r\n let titleDisplay = this.ellipsisFormat(item.title)\r\n let titleTooltip = this.formatTooltip(item.title)\r\n \r\n let publisherDisplay = this.ellipsisFormat(item.publisher)\r\n let publisherTooltip = this.formatTooltip(item.publisher)\r\n\r\n return (\r\n \r\n {(item.title.length > 50) ?\r\n \r\n :\r\n \r\n }\r\n {(item.publisher.length > 50) ?\r\n \r\n :\r\n \r\n }\r\n \r\n \r\n )\r\n })}\r\n \r\n
    JournalPublisher# Selections
    \r\n \r\n {titleDisplay}\r\n \r\n {item.title}\r\n \r\n {publisherDisplay}\r\n \r\n {item.publisher}{item.memberCount}
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n );\r\n }\r\n else\r\n {\r\n if (this.state.loading)\r\n return getBusyIndicator(this.state.loading);\r\n return (\r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Journal Notifications\r\n


    \r\n {this.reportTitle}\r\n


    \r\n as of { this.formatDate(this.todaysDate) } (ET)\r\n


    \r\n No records found\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n );\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n \r\n )}\r\n}\r\n\r\nconst options = { \r\n timeZone: \"America/New_York\", \r\n hour12: true,\r\n year: 'numeric',\r\n month: 'long',\r\n day: 'numeric',\r\n //hour: 'numeric',\r\n //second: 'numeric',\r\n //minute: 'numeric'\r\n};\r\n","import React from 'react'\r\nimport './userMenu.css'\r\n\r\nexport class UserMenu extends React.Component {\r\n render() {\r\n return (\r\n \r\n )\r\n }\r\n}\r\n","import React, {Fragment} from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport { Checkbox } from 'react-bootstrap'\r\nimport { Link } from 'react-router-dom'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport './user.css'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nexport class User extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.state = {\r\n users: [],\r\n loading: false,\r\n checked: false\r\n }\r\n }\r\n\r\n defaultStyle = {\r\n 'text-align': 'left'\r\n }\r\n\r\n componentDidMount() {\r\n let footer = document.getElementById('Footer')\r\n footer.style.position = 'relative'\r\n\r\n this.setState({loading: true}, () => {\r\n this.loadDataFromServer()\r\n })\r\n }\r\n\r\n loadDataFromServer() {\r\n const url = environment.baseUrl + '/api/adminusers/all'\r\n\r\n axios\r\n .get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n this.setState({\r\n users: response.data,\r\n loading: false\r\n })\r\n })\r\n .catch(error => {\r\n console.error('Error loading User data: ', error, error.response)\r\n alert('Error Loading User Data')\r\n\r\n this.setState({\r\n users: [],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n editUser = (e, id) => {\r\n e.preventDefault()\r\n this.props.history.push('/admin/UserDetail/' + id)\r\n }\r\n\r\n getUsers() {\r\n if (this.state.users.length === 0) {\r\n return (\r\n \r\n
    \r\n No Users Found to List\r\n
    \r\n
    \r\n )\r\n }\r\n\r\n return (\r\n \r\n {this.state.users.map((User, index) => {\r\n return ( \r\n \r\n )\r\n })}\r\n \r\n )\r\n }\r\n\r\n onCheckboxChange = (e) => {\r\n this.setState({ [e.target.name]: e.target.checked })\r\n }\r\n\r\n render() {\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n Admin Users\r\n
    \r\n
    \r\n Add Admin User\r\n
    \r\n
    \r\n {this.getUsers()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Fragment } from 'react'\r\nimport axios from \"axios\";\r\nimport environment from \"../../Environments/environments\";\r\nimport ModalRoot, {ModalRootStacked} from \"../../Containers/Login/loginRoot\";\r\nimport DataCallerBaseComponent from '../Core/dataCallerBaseComponent'\r\nimport journalImage from \"../../Assets/Images/book_with_image.png\";\r\nimport { Checkbox } from 'react-bootstrap'\r\nimport { guardAdmin } from '../Admin/admin-base'\r\nimport { InputField, TextField } from '../componentsBarrel'\r\nimport { getBusyIndicator } from '../../Helpers/busyIndicator'\r\nimport { MessageFlash } from '../../Helpers/messageFlashHelper'\r\nimport './userDetail.css'\r\nimport { Helmet } from 'react-helmet'\r\n\r\nexport class UserDetail extends DataCallerBaseComponent {\r\n constructor(props) {\r\n super(props)\r\n\r\n let id = this.props.match.params.Id\r\n\r\n this.state = {\r\n id: id === 'new' ? 0 : id,\r\n isNew: (id === 'new'),\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n loading: false\r\n }\r\n }\r\n\r\n componentDidMount() {\r\n window.scrollTo(0, 0)\r\n\r\n let footer = document.getElementById('Footer');\r\n footer.style.position = 'relative';\r\n\r\n this.setState({loading: true}, () => this.loadFromServer());\r\n }\r\n\r\n loadFromServer() {\r\n let promises = [\r\n this.getUsers(),\r\n ]\r\n\r\n Promise.all(promises)\r\n .then(values => {\r\n this.loadValues(values[0])\r\n \r\n this.setState({\r\n adminusers: values[0],\r\n loading: false\r\n })\r\n })\r\n }\r\n\r\n getUsers() {\r\n if (this.state.isNew === false) {\r\n let url = `${environment.baseUrl}/api/adminusers/get/${this.state.id}` \r\n return axios\r\n .get(url, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return {};\r\n }\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error loading admin user: ', error, error.response);\r\n alert('Error Loading admin user');\r\n\r\n return {}\r\n })\r\n }\r\n\r\n return {}\r\n }\r\n\r\n loadValues(adminUser) {\r\n this.setState({\r\n id: adminUser.id,\r\n firstName: adminUser.firstName ? adminUser.firstName : '',\r\n lastName: adminUser.lastName ? adminUser.lastName : '',\r\n email: adminUser.email ? adminUser.email : '',\r\n loading: false\r\n })\r\n }\r\n\r\n handleInputChange = (e) => {\r\n this.setState({\r\n [e.target.name]: e.target.value\r\n })\r\n }\r\n\r\n onChangeNumericOnly = (e) => {\r\n let value = e.target.value.replace(/[^0-9]/g, '')\r\n value = value.toUpperCase()\r\n this.setState({[e.target.name]: value})\r\n }\r\n\r\n onCancel = (e) => {\r\n e.preventDefault();\r\n this.props.history.goBack();\r\n }\r\n\r\n onDelete = (e) => {\r\n e.preventDefault();\r\n\r\n if (!window.confirm('Are you sure you want to delete this user?')) {\r\n return false;\r\n }\r\n let model = {...this.state}\r\n \r\n axios\r\n //.delete(environment.baseUrl + '/api/adminusers/delete/' + this.state.id, this.axiosHeaders)\r\n .post(environment.baseUrl + '/api/adminusers/delete', model, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return\r\n }\r\n\r\n MessageFlash.setMessage('User deleted')\r\n this.props.history.goBack();\r\n })\r\n .catch(error => {\r\n console.error('Error deleting user: ', error, error.response);\r\n alert('Error Deleting User');\r\n })\r\n }\r\n\r\n getDeleteButton() {\r\n if (this.state.isNew === true) {\r\n return ''\r\n }\r\n\r\n return (\r\n \r\n )\r\n }\r\n\r\n validateForm() {\r\n if (this.state.firstName === null || this.state.firstName.trim() === '') {\r\n alert('Please enter a first name.')\r\n return false\r\n }\r\n\r\n if (this.state.lastName === null || this.state.lastName.trim() === '') {\r\n alert('Please enter a last name.')\r\n return false\r\n }\r\n\r\n if (!this.state.email || this.state.email.trim() === '') {\r\n alert('Please enter an email.')\r\n return false\r\n }\r\n\r\n return true\r\n }\r\n\r\n handleSubmit = async (e) => {\r\n e.preventDefault();\r\n\r\n if (!this.validateForm()) {\r\n return false;\r\n }\r\n\r\n const adminUserId = await this.saveData();\r\n\r\n if (adminUserId === -1) {\r\n return false;\r\n }\r\n\r\n if (!this.state.selectedFile) {\r\n MessageFlash.setMessage('User Saved Successfully')\r\n this.props.history.goBack();\r\n return\r\n }\r\n }\r\n\r\n async saveData() {\r\n let model = {...this.state}\r\n\r\n return axios\r\n .post(environment.baseUrl + '/api/adminusers/save', model, this.axiosHeaders)\r\n .then(response => {\r\n if (response.data.success === false) {\r\n alert(response.data.message)\r\n return -1\r\n }\r\n\r\n return response.data\r\n })\r\n .catch(error => {\r\n console.error('Error saving admin user: ', error, error.response);\r\n alert('Error Saving Admin User');\r\n })\r\n }\r\n\r\n render() {\r\n let header = this.state.isNew === true ? 'Add Admin User' : 'Edit Admin User'\r\n\r\n return guardAdmin(\r\n \r\n {getBusyIndicator(this.state.loading,\r\n
    \r\n \r\n \r\n \r\n \r\n \r\n
    \r\n
    \r\n
    \r\n
    \r\n {header}\r\n
    \r\n
    \r\n
    \r\n
    \r\n \r\n *\r\n \r\n \r\n  Required\r\n \r\n
    \r\n
    \r\n
    \r\n\r\n
    \r\n
    \r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n \r\n
    \r\n\r\n
    \r\n
    \r\n \r\n \r\n {this.getDeleteButton()}\r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n
    \r\n )}\r\n
    \r\n )\r\n }\r\n}\r\n","import React from \"react\";\r\nimport { BrowserRouter as Router, Route, Switch, Redirect } from \"react-router-dom\";\r\n\r\nimport ScrollToTopRoute from \"./ScrollToTopRoute\";\r\nimport ReactGA from \"react-ga4\";\r\n\r\nimport * as barrel from '../Components/componentsBarrel'\r\nimport * as containers from \"../Containers/containersBarrel\";\r\n\r\nconst logPageView = () => {\r\n ReactGA.initialize(\"G-KBFQ4TKEHB\");\r\n // try {\r\n // setTimeout(_ => {\r\n // const ga4react = new ReactGA(\"G-KBFQ4TKEHB\");\r\n // ga4react.initialize().catch(err => console.error(err));\r\n // }, 4000);\r\n // } catch (err) {\r\n // console.error(err);\r\n // }\r\n return null;\r\n};\r\n\r\nconst Routes = () => (\r\n \r\n
    \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n \r\n\r\n \r\n {/* */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n\r\n \r\n }/>\r\n \r\n\r\n \r\n \r\n \r\n
    \r\n
    \r\n);\r\n\r\nexport default Routes;\r\n","import React from 'react'\r\nimport Modal from 'react-modal'\r\n\r\nimport '../Styles/dialogButtons.css'\r\nimport './sessionTimeoutDialog.css'\r\n\r\nexport class SessionTimeoutDialog extends React.Component {\r\n constructor(props) {\r\n super(props)\r\n\r\n this.timer = null\r\n\r\n this.state = {\r\n modalIsOpen: false,\r\n seconds: 60,\r\n cancellation: false\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n if (this.timer) {\r\n clearTimeout(this.timer)\r\n }\r\n }\r\n\r\n onRequestClose = () => {\r\n this.setState({\r\n cancellation: true\r\n }, () => {\r\n this.closeModal()\r\n this.onSessionContinue()\r\n })\r\n }\r\n\r\n showModal = (props) => {\r\n this.onSessionClose = props.onSessionClose\r\n this.onSessionContinue = props.onSessionContinue\r\n\r\n this.setState({\r\n modalIsOpen: true,\r\n seconds: 60,\r\n cancellation: false\r\n }, () => this.timerTick())\r\n }\r\n\r\n timerHandler = () => {\r\n let seconds = this.state.seconds - 1\r\n if (seconds <= 0) {\r\n this.handleTimeout()\r\n }\r\n\r\n this.setState({seconds: seconds}, () => this.timerTick())\r\n }\r\n\r\n handleTimeout = () => {\r\n this.closeModal()\r\n this.onSessionClose()\r\n }\r\n\r\n timerTick() {\r\n if (!this.state.cancellation) {\r\n this.timer = setTimeout(this.timerHandler, 1000)\r\n }\r\n }\r\n\r\n closeModal() {\r\n this.setState({\r\n modalIsOpen: false\r\n })\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n
    \r\n \r\n

    Session Timeout

    \r\n\r\n
    \r\n
    \r\n To keep your information secure, you are being timed out due to inactivity. To stay signed in, please click the Continue button. Otherwise, you will be signed out automatically in {this.state.seconds} seconds.\r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n \r\n
    \r\n
    \r\n )\r\n }\r\n}\r\n","import React, { Component } from \"react\";\r\nimport Routes from \"./App/Routes/routes\";\r\nimport environment from \"./App/Environments/environments\";\r\nimport IdleTimer from 'react-idle-timer'\r\nimport { ModalProvider } from \"./App/Containers/Login/loginContext\";\r\nimport { SessionTimeoutDialog } from './App/Components/SessionTimeout/sessionTimeoutDialog'\r\n\r\nimport \"./App.scss\";\r\n\r\nclass App extends Component {\r\n constructor(props) {\r\n super(props)\r\n this.idleTimer = null\r\n }\r\n\r\n componentDidMount() {\r\n window.addEventListener('storage', this.storageListener)\r\n\r\n if (!sessionStorage.getItem(\"loggedInUser\")) {\r\n //console.debug('ASKING FOR USER')\r\n sessionStorage.setItem(\"loggedInUser\", JSON.stringify({isAuthenticated: false}))\r\n localStorage.setItem(\"getSessionStorage\", Date.now())\r\n }\r\n }\r\n\r\n storageListener = (event) => {\r\n //console.debug('STORAGE LISTENER: ', event.key, event.newValue)\r\n if (event.key === 'getSessionStorage') {\r\n let payload = {\r\n loggedInUser: JSON.parse(sessionStorage.getItem(\"loggedInUser\"))\r\n }\r\n\r\n if (payload.loggedInUser.isAuthenticated === true) {\r\n //console.debug('GOT REQUEST FOR USER. SENDING: ', payload)\r\n localStorage.setItem('sessionStorage', JSON.stringify(payload));\r\n localStorage.removeItem('sessionStorage');\r\n }\r\n } else if (event.key === 'sessionStorage' && event.newValue) {\r\n let user = JSON.parse(sessionStorage.getItem(\"loggedInUser\"))\r\n if (user && user.isAuthenticated === true) {\r\n return\r\n }\r\n\r\n var data = JSON.parse(event.newValue)\r\n\r\n let payload = {}\r\n\r\n for (let key in data) {\r\n payload[key] = data[key];\r\n }\r\n\r\n //console.debug('GOT PAYLOAD: ', payload)\r\n\r\n if (payload.loggedInUser && payload.loggedInUser.isAuthenticated === true) {\r\n sessionStorage.setItem(\"loggedInUser\", JSON.stringify(payload.loggedInUser))\r\n window.location = window.location.href\r\n }\r\n }\r\n }\r\n\r\n componentWillUnmount() {\r\n console.debug('Removing event listener')\r\n window.removeEventListener('storage', this.storageListener)\r\n }\r\n\r\n handleOnIdle = (event) => {\r\n const user = JSON.parse(sessionStorage.getItem('loggedInUser'))\r\n\r\n if (user && !this.sessionDialog.state.modalIsOpen) {\r\n this.sessionDialog.showModal({\r\n onSessionClose: this.onSessionClose, \r\n onSessionContinue: this.onSessionContinue\r\n })\r\n }\r\n else {\r\n this.idleTimer.reset()\r\n }\r\n }\r\n\r\n onSessionClose = () => {\r\n this.idleTimer.reset()\r\n sessionStorage.removeItem(\"loggedInUser\")\r\n sessionStorage.setItem(\"sblc_session_timeout\", 1)\r\n window.location = '/'\r\n }\r\n\r\n onSessionContinue = () => {\r\n this.idleTimer.reset()\r\n }\r\n\r\n render() {\r\n return (\r\n
    \r\n {this.idleTimer = ref}}\r\n timeout={environment.sessionTimeoutInSeconds}\r\n onIdle={this.handleOnIdle}\r\n debounce={250}\r\n />\r\n\r\n
    \r\n \r\n \r\n this.sessionDialog = ref}\r\n onSessionClose={this.onSessionClose}\r\n onSessionContinue={this.onSessionContinue}\r\n />\r\n \r\n
    \r\n
    \r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","// In production, we register a service worker to serve assets from local cache.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\r\n// cached resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\r\n// This link also includes instructions on opting out of this behavior.\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.1/8 is considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n)\r\n\r\nexport default function register() {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location)\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebookincubator/create-react-app/issues/2374\r\n return\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Lets check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl)\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://goo.gl/SC7cgQ'\r\n )\r\n })\r\n } else {\r\n // Is not local host. Just register service worker\r\n registerValidSW(swUrl)\r\n }\r\n })\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the old content will have been purged and\r\n // the fresh content will have been added to the cache.\r\n // It's the perfect time to display a \"New content is\r\n // available; please refresh.\" message in your web app.\r\n console.log('New content is available; please refresh.')\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.')\r\n }\r\n }\r\n }\r\n }\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error)\r\n })\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl)\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n if (\r\n response.status === 404 ||\r\n response.headers.get('content-type').indexOf('javascript') === -1\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload()\r\n })\r\n })\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl)\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n )\r\n })\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister()\r\n })\r\n }\r\n}\r\n","const logger = (store) => (next) => (action) => {\r\n console.group(action.type)\r\n console.log('The action:', action)\r\n const returnValue = next(action)\r\n console.log('The new state:', store.getState())\r\n console.groupEnd()\r\n return returnValue\r\n}\r\n\r\nexport default logger","/**\r\n * Created by bhadaway on 3/19/18.\r\n */\r\nimport logger from './logger'\r\nimport thunk from 'redux-thunk'\r\nimport { applyMiddleware, compose } from 'redux'\r\n\r\nconst composeEnhancers = window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose\r\n\r\nexport default composeEnhancers(applyMiddleware(thunk, logger))","const filterReducer = (\r\n state = {\r\n twentySixteenToPresent: false,\r\n twentyElevenToTwentyFifteen: false,\r\n twoThousandSixToTwentyTen: false,\r\n twoThousandOneToTwoThousandFive: false,\r\n bookFilter: false,\r\n journalFilter: false,\r\n conferencePaperFilter: false,\r\n annualMeetingFilter: false,\r\n internationalMeetingFilter: false,\r\n reviewedFilter: false,\r\n notReviewedFilter: false,\r\n },\r\n action\r\n) => {\r\n switch (action.type) {\r\n case 'SET_TWENTY_SIXTEEN_TO_PRESENT_FILTER':\r\n state = {\r\n ...state,\r\n twentySixteenToPresent: action.checked\r\n };\r\n break;\r\n case 'SET_TWENTY_ELEVEN_TO_TWENTY_FIFTEEN_FILTER':\r\n state = {\r\n ...state,\r\n twentyElevenToTwentyFifteen: action.checked\r\n };\r\n break;\r\n case 'SET_TWO_THOUSAND_SIX_TO_TWENTY_TEN_FILTER':\r\n state = {\r\n ...state,\r\n twoThousandSixToTwentyTen: action.checked\r\n };\r\n break;\r\n case 'SET_TWO_THOUSAND_ONE_TO_TWO_THOUSAND_FIVE_FILTER':\r\n state = {\r\n ...state,\r\n twoThousandOneToTwoThousandFive: action.checked\r\n };\r\n break;\r\n case 'SET_BOOK_FILTER':\r\n state = {\r\n ...state,\r\n bookFilter: action.checked\r\n };\r\n break;\r\n case 'SET_JOURNAL_FILTER':\r\n state = {\r\n ...state,\r\n journalFilter: action.checked\r\n };\r\n break;\r\n case 'SET_CONFERENCE_PAPER_FILTER':\r\n state = {\r\n ...state,\r\n conferencePaperFilter: action.checked\r\n };\r\n break;\r\n case 'SET_ANNUAL_MEETING_FILTER':\r\n state = {\r\n ...state,\r\n annualMeetingFilter: action.checked\r\n };\r\n break;\r\n case 'SET_INTERNATIONAL_MEETING_FILTER':\r\n state = {\r\n ...state,\r\n internationalMeetingFilter: action.checked\r\n };\r\n break;\r\n case 'SET_REVIEWED_FILTER':\r\n state = {\r\n ...state,\r\n reviewedFilter: action.checked\r\n };\r\n break;\r\n case 'SET_NOT_YET_REVIEWED_FILTER':\r\n state = {\r\n ...state,\r\n notReviewedFilter: action.checked\r\n };\r\n break;\r\n default:\r\n break;\r\n }\r\n return state;\r\n};\r\n\r\nexport default filterReducer;\r\n","/**\r\n * Created by bhadaway on 3/20/18.\r\n */\r\nimport { combineReducers } from 'redux'\r\nimport filterReducer from './filterReducer'\r\n\r\nexport default combineReducers({\r\n filterReducer\r\n})","/**\r\n * Created by bhadaway on 2/22/18.\r\n */\r\nimport { createStore } from 'redux';\r\nimport middleware from './Middleware/index';\r\nimport reducer from './Reducers/index'\r\n\r\nexport default createStore(reducer, middleware)","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"bootstrap/dist/css/bootstrap.css\";\r\nimport \"./index.css\";\r\nimport \"typeface-roboto\";\r\nimport App from \"./App\";\r\nimport { unregister } from \"./registerServiceWorker\";\r\nimport { Provider } from \"react-redux\";\r\nimport store from \"./App/Redux/store\";\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n document.getElementById(\"root\")\r\n);\r\nunregister();\r\n"],"sourceRoot":""}