{"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/Assets/Images/SearchResultsPlaceholderImages/2000-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2001-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2002-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2003-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2004-AMCover.png","App/Assets/Images/SearchResultsPlaceholderImages/2005-AMCover.png","App/Assets/Images/SearchResultsPlaceholderImages/2006-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2007-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2008-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2009-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2010-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2011-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2012-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2013-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2014-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2015-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2016-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2017-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2018-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2019-AMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2020-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2021-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2022-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2023-AMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2000-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2001-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2002-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2003-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2004-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2005-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2006-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2007-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2008-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2009-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2010-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2011-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2012-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2013-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2014-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2015-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2016-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2017-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2018-IMcover.jpg","App/Assets/Images/SearchResultsPlaceholderImages/2019-IMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2022-IMcover.png","App/Assets/Images/SearchResultsPlaceholderImages/2023-IMcover.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/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","getJournalNotificationsMenu","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","returnImage","meetingType","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","result","img","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","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","conferencePaperImage","coPresenterNames","fullName","extraDesc1","extraDesc2","meetingLocation","SearchResultBook","imgUrl","bookImage","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","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","BtnCellRenderer","btnClickedHandler","clicked","MetadataManagement","defaultStyle","columnDefs","field","headerName","sortable","cellStyle","width","valueFormatter","onDateRender","cellRenderer","cellRendererParams","refreshData","onGridReady","api","setSortModel","colId","sizeColumnsToFit","frameworkComponents","btnCellRenderer","month","day","hour","meridian","height","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","onChangeNumericOnly","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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D,GACW,OAATjD,EACFkD,GACW,OAATlD,EACFmD,GACW,OAATnD,EACFoD,GACW,OAATpD,EACFqD,GACW,OAATrD,EACFsD,GACW,OAATtD,EACFuD,GACW,OAATvD,EACFwD,GACW,OAATxD,EACFyD,GACW,OAATzD,EACF0D,GACW,OAAT1D,EACF2D,GACW,OAAT3D,EACF4D,GACW,OAAT5D,EACF6D,GAEAC,EAEgB,WAAhBvB,EACI,MAATvC,EACK+D,EACW,OAAT/D,EACFgE,EACW,OAAThE,EACFiE,EACW,OAATjE,EACFkE,GACW,OAATlE,EACFmE,GACW,OAATnE,EACFoE,GACW,OAATpE,EACFqE,GACW,OAATrE,EACFsE,GACW,OAATtE,EACFuE,GACW,OAATvE,EACFwE,GACW,OAATxE,EACFyE,GACW,OAATzE,EACF0E,GACW,OAAT1E,EACF2E,GACW,OAAT3E,EACF4E,GACW,OAAT5E,EACF6E,GACW,OAAT7E,EACF8E,GACW,OAAT9E,EACF+E,GACW,OAAT/E,EACFgF,GACW,OAAThF,EACFiF,GACW,OAATjF,EACFkF,GACW,OAATlF,EACFmF,GACW,OAATnF,EACFoF,GACW,OAATpF,EACFqF,GACW,OAATrF,EACFsF,GAEAxB,EAGFA,CAEV,CAEH,OAtKA,WACE,IAAIyB,EAEJ,OAAQnD,EAAiB5F,MACvB,IAAK,kBACH+I,EACE,cAAC,GAAD,CACEnD,iBAAkBA,EAClBC,MAAOA,EAEPmD,IAAKlD,EACHF,EAAiBpC,KACjBoC,EAAiBG,aAEnBkD,oBAAqB7N,EAAM6N,oBAC3BC,WAAY9N,EAAM8N,WAClBlJ,KAAM5E,EAAM4E,MAPP6F,GAUT,MACF,IAAK,OACHkD,EACE,cAAC,GAAD,CACEnD,iBAAkBA,EAClBC,MAAOA,EACPoD,oBAAqB7N,EAAM6N,oBAE3BC,WAAY9N,EAAM8N,WAClBlJ,KAAM5E,EAAM4E,KACZmJ,gBAAiB/N,EAAMgO,gBACvBC,wBAAyBjO,EAAMiO,yBAJ1BxD,GAOT,MAYF,QACEkD,EACE,cAAC,GAAD,CACEnD,iBAAkBA,EAElBC,MAAOA,EACPq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ACW,OAAT1C,EACF2C,GACW,OAAT3C,EACF4C,GACW,OAAT5C,EACF6C,GACW,OAAT7C,EACF8C,GACW,OAAT9C,EACF+C,GACW,OAAT/C,EACFgD,GACW,OAAThD,EACFiD,GACW,OAATjD,EACFkD,GACW,OAATlD,EACFmD,GACW,OAATnD,EACFoD,GACW,OAATpD,EACFqD,GACW,OAATrD,EACFsD,GACW,OAATtD,EACFuD,GACW,OAATvD,EACFwD,GACW,OAATxD,EACFyD,GACW,OAATzD,EACF0D,GACW,OAAT1D,EACF2D,GACW,OAAT3D,EACF4D,GACW,OAAT5D,EACF6D,GAEAC,EAEgB,WAAhBvB,EACI,MAATvC,EACK+D,EACW,OAAT/D,EACFgE,EACW,OAAThE,EACFiE,EACW,OAATjE,EACFkE,GACW,OAATlE,EACFmE,GACW,OAATnE,EACFoE,GACW,OAATpE,EACFqE,GACW,OAATrE,EACFsE,GACW,OAATtE,EACFuE,GACW,OAATvE,EACFwE,GACW,OAATxE,EACFyE,GACW,OAATzE,EACF0E,GACW,OAAT1E,EACF2E,GACW,OAAT3E,EACF4E,GACW,OAAT5E,EACF6E,GACW,OAAT7E,EACF8E,GACW,OAAT9E,EACF+E,GACW,OAAT/E,EACFgF,GACW,OAAThF,EACFiF,GACW,OAATjF,EACFkF,GACW,OAATlF,EACFmF,GACW,OAATnF,EACFoF,GACW,OAATpF,EACFqF,GACW,OAATrF,EACFsF,GAEAxB,EAGFA,CAEV,G,4CAED,WACE,GAAInM,KAAK8B,MAAMkmB,oBAAoBE,2BAA4B,CAC7D,IAAM/S,EAAMnV,KAAK8B,MAAMkmB,oBAAoBE,2BAC3C,OACE,mBAAG5iB,KAAM6P,EAAK/T,OAAO,SAASiE,IAAI,sBAAlC,SAAwD,wBAI3D,CAED,MAAO,EACR,G,mDAED,WACE,GAAIrF,KAAK8B,MAAMkmB,oBAAoBG,kCAAmC,CACpE,IAAMhT,EAAMnV,KAAK8B,MAAMkmB,oBAAoBG,kCAC3C,OACE,mBAAG7iB,KAAM6P,EAAK/T,OAAO,SAASiE,IAAI,sBAAlC,SAAwD,8BAI3D,C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","file":"static/js/main.52350d81.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 {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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\"","export default __webpack_public_path__ + \"static/media/2000-AMcover.a653a16c.png\";","export default __webpack_public_path__ + \"static/media/2001-AMcover.1bf84b2a.png\";","export default __webpack_public_path__ + \"static/media/2002-AMcover.fb61ef3c.png\";","export default __webpack_public_path__ + \"static/media/2003-AMcover.baf3985a.png\";","export default __webpack_public_path__ + \"static/media/2004-AMCover.0e51da95.png\";","export default __webpack_public_path__ + \"static/media/2005-AMCover.d6913ba9.png\";","export default __webpack_public_path__ + \"static/media/2006-AMcover.05af5202.png\";","export default __webpack_public_path__ + \"static/media/2007-AMcover.6ede921d.png\";","export default __webpack_public_path__ + \"static/media/2008-AMcover.b1d715f9.png\";","export default __webpack_public_path__ + \"static/media/2009-AMcover.2c15d0c2.png\";","export default __webpack_public_path__ + \"static/media/2010-AMcover.d554a377.png\";","export default __webpack_public_path__ + \"static/media/2011-AMcover.da34aa14.png\";","export default __webpack_public_path__ + \"static/media/2012-AMcover.59905541.png\";","export default __webpack_public_path__ + \"static/media/2013-AMcover.1c32fb90.png\";","export default __webpack_public_path__ + \"static/media/2014-AMcover.5b033aa0.png\";","export default __webpack_public_path__ + \"static/media/2015-AMcover.30e65303.png\";","export default __webpack_public_path__ + \"static/media/2016-AMcover.243d94f2.png\";","export default __webpack_public_path__ + \"static/media/2017-AMcover.0ca646ae.png\";","export default __webpack_public_path__ + \"static/media/2018-AMcover.c9aa0abb.png\";","export default __webpack_public_path__ + \"static/media/2019-AMcover.2d51999f.jpg\";","export default __webpack_public_path__ + \"static/media/2020-AMcover.d3da1d70.png\";","export default __webpack_public_path__ + \"static/media/2021-AMcover.4a5dd65b.png\";","export default __webpack_public_path__ + \"static/media/2022-AMcover.a04d09ef.png\";","export default __webpack_public_path__ + \"static/media/2023-AMcover.76174331.png\";","export default __webpack_public_path__ + \"static/media/2000-IMcover.53e92884.jpg\";","export default __webpack_public_path__ + \"static/media/2001-IMcover.35d00d7b.jpg\";","export default __webpack_public_path__ + \"static/media/2002-IMcover.4e918419.jpg\";","export default __webpack_public_path__ + \"static/media/2003-IMcover.504b68b7.jpg\";","export default __webpack_public_path__ + \"static/media/2004-IMcover.ae4b0aab.jpg\";","export default __webpack_public_path__ + \"static/media/2005-IMcover.4ece767a.jpg\";","export default __webpack_public_path__ + \"static/media/2006-IMcover.3f99b9c3.jpg\";","export default __webpack_public_path__ + \"static/media/2007-IMcover.d8a71000.jpg\";","export default __webpack_public_path__ + \"static/media/2008-IMcover.56dbdbdf.jpg\";","export default __webpack_public_path__ + \"static/media/2009-IMcover.18738911.jpg\";","export default __webpack_public_path__ + \"static/media/2010-IMcover.b6bced86.jpg\";","export default __webpack_public_path__ + \"static/media/2011-IMcover.5475fb2c.jpg\";","export default __webpack_public_path__ + \"static/media/2012-IMcover.d9697507.jpg\";","export default __webpack_public_path__ + \"static/media/2013-IMcover.90bdb8c1.jpg\";","export default __webpack_public_path__ + \"static/media/2014-IMcover.8c7a5adf.jpg\";","export default __webpack_public_path__ + \"static/media/2015-IMcover.e761f70f.jpg\";","export default __webpack_public_path__ + \"static/media/2016-IMcover.4df70014.jpg\";","export default __webpack_public_path__ + \"static/media/2017-IMcover.d20ff383.jpg\";","export default __webpack_public_path__ + \"static/media/2018-IMcover.f3897e1d.jpg\";","export default __webpack_public_path__ + \"static/media/2019-IMcover.d97e7273.png\";","export default __webpack_public_path__ + \"static/media/2022-IMcover.ac4dd101.png\";","export default __webpack_public_path__ + \"static/media/2023-IMcover.02bd0079.png\";","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\nimport TwoThousandImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-AMcover.png\";\r\nimport TwoThousandOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-AMcover.png\";\r\nimport TwoThousandTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-AMcover.png\";\r\nimport TwoThousandThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-AMcover.png\";\r\nimport TwoThousandFourImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-AMCover.png\";\r\nimport TwoThousandFiveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-AMCover.png\";\r\nimport TwoThousandSixImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-AMcover.png\";\r\nimport TwoThousandSevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-AMcover.png\";\r\nimport TwoThousandEightImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-AMcover.png\";\r\nimport TwoThousandNineImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-AMcover.png\";\r\nimport TwoThousandTenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-AMcover.png\";\r\nimport TwoThousandElevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-AMcover.png\";\r\nimport TwoThousandTwelveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-AMcover.png\";\r\nimport TwoThousandThirteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-AMcover.png\";\r\nimport TwoThousandFourteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-AMcover.png\";\r\nimport TwoThousandFifteenImageA from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-AMcover.png\";\r\nimport TwoThousandSixteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-AMcover.png\";\r\nimport TwoThousandSeventeenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-AMcover.png\";\r\nimport TwoThousandEighteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-AMcover.png\";\r\nimport TwoThousandNineteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-AMcover.jpg\";\r\nimport TwoThousandTwentyImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2020-AMcover.png\";\r\nimport TwoThousandTwentyOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2021-AMcover.png\";\r\nimport TwoThousandTwentyTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-AMcover.png\";\r\nimport TwoThousandTwentyThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2023-AMcover.png\";\r\n\r\nimport TwoThousandImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-IMcover.jpg\";\r\nimport TwoThousandOneImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-IMcover.jpg\";\r\nimport TwoThousandTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-IMcover.jpg\";\r\nimport TwoThousandThreeImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-IMcover.jpg\";\r\nimport TwoThousandFourImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-IMcover.jpg\";\r\nimport TwoThousandFiveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-IMcover.jpg\";\r\nimport TwoThousandSixImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-IMcover.jpg\";\r\nimport TwoThousandSevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-IMcover.jpg\";\r\nimport TwoThousandEightImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-IMcover.jpg\";\r\nimport TwoThousandNineImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-IMcover.jpg\";\r\nimport TwoThousandTenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-IMcover.jpg\";\r\nimport TwoThousandElevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-IMcover.jpg\";\r\nimport TwoThousandTwelveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-IMcover.jpg\";\r\nimport TwoThousandThirteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-IMcover.jpg\";\r\nimport TwoThousandFourteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-IMcover.jpg\";\r\nimport TwoThousandFifteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-IMcover.jpg\";\r\nimport TwoThousandSixteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-IMcover.jpg\";\r\nimport TwoThousandSeventeenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-IMcover.jpg\";\r\nimport TwoThousandEighteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-IMcover.jpg\";\r\nimport TwoThousandNineteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-IMcover.png\";\r\nimport TwoThousandTwentyTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-IMcover.png\";\r\nimport 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\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 {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\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 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\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

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\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 {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","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, and copyright years.\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\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 {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\nimport TwoThousandImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-AMcover.png\";\r\nimport TwoThousandOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-AMcover.png\";\r\nimport TwoThousandTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-AMcover.png\";\r\nimport TwoThousandThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-AMcover.png\";\r\nimport TwoThousandFourImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-AMCover.png\";\r\nimport TwoThousandFiveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-AMCover.png\";\r\nimport TwoThousandSixImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-AMcover.png\";\r\nimport TwoThousandSevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-AMcover.png\";\r\nimport TwoThousandEightImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-AMcover.png\";\r\nimport TwoThousandNineImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-AMcover.png\";\r\nimport TwoThousandTenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-AMcover.png\";\r\nimport TwoThousandElevenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-AMcover.png\";\r\nimport TwoThousandTwelveImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-AMcover.png\";\r\nimport TwoThousandThirteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-AMcover.png\";\r\nimport TwoThousandFourteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-AMcover.png\";\r\nimport TwoThousandFifteenImageA from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-AMcover.png\";\r\nimport TwoThousandSixteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-AMcover.png\";\r\nimport TwoThousandSeventeenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-AMcover.png\";\r\nimport TwoThousandEighteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-AMcover.png\";\r\nimport TwoThousandNineteenImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-AMcover.jpg\";\r\nimport TwoThousandTwentyImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2020-AMcover.png\";\r\nimport TwoThousandTwentyOneImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2021-AMcover.png\";\r\nimport TwoThousandTwentyTwoImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-AMcover.png\";\r\nimport TwoThousandTwentyThreeImageAM from \"../../Assets/Images/SearchResultsPlaceholderImages/2023-AMcover.png\";\r\n\r\nimport TwoThousandImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2000-IMcover.jpg\";\r\nimport TwoThousandOneImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2001-IMcover.jpg\";\r\nimport TwoThousandTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2002-IMcover.jpg\";\r\nimport TwoThousandThreeImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2003-IMcover.jpg\";\r\nimport TwoThousandFourImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2004-IMcover.jpg\";\r\nimport TwoThousandFiveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2005-IMcover.jpg\";\r\nimport TwoThousandSixImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2006-IMcover.jpg\";\r\nimport TwoThousandSevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2007-IMcover.jpg\";\r\nimport TwoThousandEightImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2008-IMcover.jpg\";\r\nimport TwoThousandNineImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2009-IMcover.jpg\";\r\nimport TwoThousandTenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2010-IMcover.jpg\";\r\nimport TwoThousandElevenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2011-IMcover.jpg\";\r\nimport TwoThousandTwelveImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2012-IMcover.jpg\";\r\nimport TwoThousandThirteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2013-IMcover.jpg\";\r\nimport TwoThousandFourteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2014-IMcover.jpg\";\r\nimport TwoThousandFifteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2015-IMcover.jpg\";\r\nimport TwoThousandSixteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2016-IMcover.jpg\";\r\nimport TwoThousandSeventeenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2017-IMcover.jpg\";\r\nimport TwoThousandEighteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2018-IMcover.jpg\";\r\nimport TwoThousandNineteenImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2019-IMcover.png\";\r\nimport TwoThousandTwentyTwoImageIM from \"../../Assets/Images/SearchResultsPlaceholderImages/2022-IMcover.png\";\r\nimport 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\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","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
\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\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\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 System Management\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\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\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 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\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 {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\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 Account Management\r\n
    \r\n\r\n
    \r\n Add Account\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","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\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 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 { 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\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 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\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 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\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 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\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\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 {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\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 {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\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 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\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 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\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 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\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 {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\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":""}