{"version":3,"sources":["components/Header.js","components/Footer.js","components/TermSelect.js","components/Checkbox.js","components/LocationFilter.js","components/CheckboxSubject.js","components/SubjectFilter.js","components/MiscPopup.js","components/FilterPanel.js","components/SessionSelect.js","components/PageButton.js","components/TimeWithPopup.js","components/assets/newly_added.PNG","components/assets/limitedSeats.PNG","components/assets/Intersession.PNG","components/ClassCardBig.js","components/ClassesList.js","components/NoClassesToDisplay.js","components/ClassCard.js","components/Compare.js","components/ResultPanel.js","components/LoadingProgressBar.js","App.js","reportWebVitals.js","index.js"],"names":["Header","id","className","href","src","height","alt","type","data-toggle","data-target","aria-controls","aria-expanded","aria-label","target","React","Component","Footer","TermSelect","value","this","props","term","STRM","TERM_DESCR30","Checkbox","onChange","bind","e","name","checked","isChecked","htmlFor","LocationFilter","handleChange","event","locationCheckboxes","forEach","location","setState","state","countriesRendered","defaultChecked","checkAllLocations","map","isVisible","includes","country","push","CheckboxSubject","SubjectFilter","subjectCheckboxes","subject","checkAllSubjects","careerFilter","career","MiscPopup","showPopup","hidePopup","onMouseLeave","style","position","zIndex","padding","background","border","MozBorderRadius","WebkitBorderRadius","margin","WebkitBoxShadow","boxShadow","message","onMouseEnter","FilterPanel","clearDates","refDtFirst","createRef","refDtSecond","current","compareButton","status","compares","length","onClick","showCompares","showResults","area","width","termFilter","terms","t","instructionModeFilter","parseInt","aria-labelledby","data-parent","oneCreditOnly","showClassesStarted","showNewlyAdded","showIntersession","ref","startDateFirstFilter","startDateSecondFilter","defaultValue","searchFilter","PageButton","pageNumber","currentPage","gotoPage","TimeWithPopUp","showTimePopup","locationTimeZones","E687","regularTimeZone","summerTimeZone","regularTimeOffset","summerTimeOffset","regularTimeDescr","summerTimeDescr","E101","E102","E322","E402","E702","E156","E160","E174","E180","E186","E188","E189","E194","E198","E207","E209","E219","E221","E224","E359","E361","E363","E375","E381","E396","E445","E700","E701","E998","E999","E976","E441","E449","E121","E122","E129","E138","E140","E385","E240","E107","E110","E111","E113","E115","E439","E486","E482","E949","E967","E968","E100","E429","E475","E329","E910","E966","E983","E124","E126","E481","E484","E951","E952","E953","E974","E985","E993","hideTimePopup","date","getHours","getMinutes","offset","startTime","Date","cls","T1","setHours","endTime","T2","year","month","weekday","getDay","dayDiff","lastSunday","setDate","getDate","getFullYear","getCurrentYear","LOC","areWeInDST","dstEnd","START_DT","getMilitaryTime","getStartTime","getEndTime","timePopup","label","showLabel","compareDST","getTimeZoneAcronymn","ClassCardBig","starterCourses","showCourseDescr","toggleShowCourseDescr","getCourseDescr","DESCRIPTION","addToCompareButton","CLASS_NBR","addCompare","IM","getCourseDescrSwitch","dangerouslySetInnerHTML","__html","S","CN","replace","RegExp","T","CR","bottom","right","NT","intersession","newlyadd","SEATS","limSeats","class","LOC_D","CS","FAC","ES","CI","CO","SC","rel","toLocaleDateString","END_DT","MON","TUES","WED","THURS","FRI","SAT","SUN","downrangeLocations","ClassesList","buttonToLink","fontSize","textAlign","color","fontWeight","cursor","courseSort","classNumberSort","dateSort","locationSort","page","itemsPerPage","sortmode","sort","newState","Object","entries","key","slice","getNextSortMode","updateSort","console","log","i","classes","getSortedBy","a","b","classesOnThisPage","Math","ceil","totalPages","pages","disabled","window","print","NoClassesToDisplay","ClassCard","top","removeCompare","aria-hidden","colSpan","UC_DESCR254_NOTES","Compare","compare","ResultPanel","role","LoadingProgressBar","round","downloadProgress","aria-valuenow","aria-valuemin","aria-valuemax","loadingText","environment","hostname","App","apiUrl","unfilteredClasses","subjects","locationFilter","subjectFilter","ignoreFiltersFilter","sessionFilter","sessions","currentTarget","addInstructionMode","removeInstructionMode","updateClasses","parse","newLocationCheckboxes","newSubjectCheckboxes","replaceAll","setArea","loadLocations","newCompares","filter","classToBeAdded","concat","fetch","then","res","json","data","COUNTRY","loadSubjects","catch","SD","AC","loadTerms","find","SELECTED","loadSessions","loadDescriptions","xhr","XMLHttpRequest","open","onprogress","total","loaded","onload","statusText","response","JSON","descriptions","loadClasses","send","compileSchedule","newUnfilteredClasses","scheduledClass","descr","COURSE","instructionMode","newInstructionModeFilter","mode","credit","creditFilter","newCreditFilter","cr","filteredClasses","toString","split","s","SESSION_CODE","SESSION_START_DATE","SESSION_END_DATE","some","toUpperCase","toISOString","substr","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.8e853a68.chunk.js","sourcesContent":["import React from 'react';\n\nclass Header extends React.Component {\n render() {\n return (\n
\n
\n \n
\n );\n }\n}\n\nexport default Header;","import React from 'react';\n\nclass Footer extends React.Component {\n render() {\n return (\n
\n \n
\n );\n }\n }\n\n export default Footer;","import React from 'react';\n\nclass TermSelect extends React.Component {\n\n render() {\n return (\n \n );\n }\n}\n\nexport default TermSelect;\n","import React from 'react'\n\n\nclass Checkbox extends React.Component {\n\n constructor(props) {\n super(props);\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(e){\n this.props.onChange(e);\n }\n\n render() {\n return (\n
  • \n \n \n \n \n
  • \n );\n }\n}\n\nexport default Checkbox\n","import React from 'react';\nimport Checkbox from './Checkbox';\n\nclass LocationFilter extends React.Component {\n constructor(props) {\n super(props);\n this.state = { locationCheckboxes: [] };\n }\n\n handleChange = (event) => {\n let locationCheckboxes = this.props.locationCheckboxes\n locationCheckboxes.forEach(location => {\n if (location.id === event.target.id) {\n location.isChecked = event.target.checked\n }\n });\n this.setState({ locationCheckboxes: locationCheckboxes });\n this.props.onChange(event);\n }\n\n render() {\n let countriesRendered = [];\n return (\n
    \n \n \n \n
    \n );\n }\n}\n\nexport default LocationFilter;\n","import React from 'react'\n\n\nclass CheckboxSubject extends React.Component {\n\n constructor(props) {\n super(props);\n this.onChange = this.onChange.bind(this);\n }\n\n onChange(e){\n this.props.onChange(e);\n }\n\n render() {\n return (\n
  • \n \n \n
  • \n );\n }\n}\n\nexport default CheckboxSubject\n","import React from 'react';\nimport CheckboxSubject from './CheckboxSubject';\n\nclass SubjectFilter extends React.Component {\n constructor(props) {\n super(props);\n this.state = { subjectCheckboxes: [] };\n }\n\n handleChange = (event) => {\n let subjectCheckboxes = this.state.subjectCheckboxes\n subjectCheckboxes.forEach(subject => {\n if (subject.id === event.target.id) {\n subject.isChecked = event.target.checked\n }\n });\n this.setState({ subjectCheckboxes: subjectCheckboxes });\n this.props.onChange(event);\n }\n\n render() {\n return (\n
    \n \n \n \n
    \n );\n }\n}\n\nexport default SubjectFilter;\n","import React from 'react';\n\nclass MiscPopup extends React.Component {\n\n constructor(props) {\n super(props);\n this.showPopup = this.showPopup.bind(this);\n this.hidePopup = this.hidePopup.bind(this);\n }\n\n state = {\n showPopup: false,\n }\n\n showPopup() {\n this.setState({ showPopup: true });\n }\n\n hidePopup() {\n this.setState({ showPopup: false });\n }\n\n render() {\n\n let popup = {\n position: \"absolute\",\n zIndex: 99999,\n padding: \"10px\",\n background: \"#f5f5f5\",\n border: \"1px solid #ccc\",\n MozBorderRadius: \"20px\",\n WebkitBorderRadius: \"20px\",\n margin: \"0px\",\n WebkitBoxShadow: \"0px 0px 5px 0px rgba(164, 164, 164, 1)\",\n boxShadow: \"0px 0px 5px 0px rgba(164, 164, 164, 1)\",\n }\n\n\n if (this.state.showPopup) {\n return (\n <>\n  \n
    \n {this.props.message}\n
    \n \n );\n } else {\n return (\n  \n );\n }\n }\n}\n\nexport default MiscPopup;","import React from 'react';\nimport TermSelect from './TermSelect';\nimport LocationFilter from './LocationFilter';\nimport SubjectFilter from './SubjectFilter';\nimport MiscPopup from './MiscPopup';\nimport SessionSelect from './SessionSelect';\n\nclass FilterPanel extends React.Component {\n\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.clearDates = this.clearDates.bind(this);\n this.refDtFirst = React.createRef();\n this.refDtSecond = React.createRef();\n }\n\n handleChange(e) {\n this.props.onChange(e);\n }\n\n clearDates() {\n this.refDtFirst.current.value = null;\n this.refDtSecond.current.value = null;\n this.props.clearDates();\n }\n\n render() {\n let compareButton = null;\n if (this.props.status !== \"SHOW_COMPARES\" && this.props.compares.length === 1) {\n compareButton = ;\n } else if (this.props.status !== \"SHOW_COMPARES\" && this.props.compares.length > 1) {\n compareButton = ;\n } else if (this.props.status === \"SHOW_COMPARES\") {\n compareButton = ;\n }\n\n if (this.props.status !== \"CLASSES_FOUND\" && this.props.status !== \"NO_CLASSES_FOUND\") {\n return (\n <>\n  Log in to register\n {compareButton}\n \n );\n } else {\n return (\n <>\n  Log in to register\n {compareButton}\n
    \n {/*\n \n Commented out instead of removed because it will likely be requested in the future.\n\n (this.props.instructionModeFilter.includes(\"ONSITE\") || this.props.instructionModeFilter.includes(\"REMOTE\")) ?\n <>Region\n
    \n \n \n
    \n
    \n \n \n
    \n
    \n : null*/}\n Region\n
    \n \n \n
    \n
    \n \n \n
    \n
    \n\n Academic Career\n
    \n \n \n
    \n
    \n \n \n
    \n
    \n Term
    \n \n\n\n\n\n\n\n {/* Commented out for student facing version */}\n {/*

    \n Session
    \n \n */}\n\n\n\n\n

    \n Format\n
    \n \n \n
    \n
    \n \n \n
    \n
    \n \n \n
    \n {/* Remote on-site is only a valid option for Summer 21 and prior. Don't show the option after Summer '21 */}\n {parseInt(this.props.termFilter) < 2218 ?\n
    \n \n \n
    \n : null}\n
    \n \n \n
    \n
    \n
    \n {this.props.instructionModeFilter.includes(\"ONSITE\") ? <>\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n {this.props.instructionModeFilter.includes(\"ONSITE\") ?\n : null}\n\n\n {/* 6/26/23 YO: Workaround!! Delete below when section was created for new locations \n Keeping those if they still wants to show locations eventhough have no classes */}\n\n {/* ///////////////// */}\n\n\n {/* {this.props.area === \"EUROPE\" ? <>\n
      \n\n Romania

      \n
    • \n \n
    • \n
    \n \n : <> */}\n {/*
      \n Saudi Arabia

      \n
    • \n

    • \n
    */}\n\n\n {/* } */}\n {/* ///////////////// */}\n\n
    \n
    \n
    \n : null}\n\n\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n \n \n
    \n\n
    \n \n \n
    \n \n {/*Courses with Newly Added */}\n
    \n \n \n
    \n
    \n \n \n
    \n\n \n
    \n Start date
    \n \n \n
    \n \n
    \n \n
    \n
    \n
    \n\n
    \n
    \n
    \n \n
    \n
    \n
    \n
    \n \n
    \n \n \n
    \n
    \n
    \n
    \n
    \n \n );\n }\n }\n}\n\nexport default FilterPanel;\n","import React from 'react';\n\nclass SessionSelect extends React.Component {\n\n render() {\n return (\n \n );\n }\n}\n\nexport default SessionSelect;\n","import React from 'react'\n\nclass PageButton extends React.Component {\n render() {\n\n let className = 'page-item d-none d-lg-inline';\n if (this.props.pageNumber===this.props.currentPage) {\n className += ' active';\n }\n\n return (\n
  • \n \n
  • \n );\n }\n}\n\nexport default PageButton","import React from 'react';\n\nclass TimeWithPopUp extends React.Component {\n\n constructor(props) {\n super(props);\n this.showTimePopup = this.showTimePopup.bind(this);\n this.hideTimePopup = this.hideTimePopup.bind(this);\n }\n\n state = {\n showTimePopup: false,\n locationTimeZones: {\n E687: { regularTimeZone: 'GST', summerTimeZone: 'GST', regularTimeOffset: 4, summerTimeOffset: 4, regularTimeDescr: 'Gulf Standard Time', summerTimeDescr: 'Gulf Standard Time' },\n E101: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E102: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E322: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E402: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E702: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E156: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E160: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E174: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E180: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E186: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E188: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E189: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E194: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E198: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E207: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E209: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E219: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E221: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E224: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E359: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E361: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E363: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E375: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E381: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E396: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E445: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E700: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E701: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E998: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E999: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E976: { regularTimeZone: 'EAT', summerTimeZone: 'EAT', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Eastern African Time', summerTimeDescr: 'Eastern African Time' },\n E441: { regularTimeZone: 'EET', summerTimeZone: 'EET', regularTimeOffset: 2, summerTimeOffset: 2, regularTimeDescr: 'Eastern European Time', summerTimeDescr: 'Eastern European Time' },\n E449: { regularTimeZone: 'EET', summerTimeZone: 'EET', regularTimeOffset: 2, summerTimeOffset: 2, regularTimeDescr: 'Eastern European Time', summerTimeDescr: 'Eastern European Time' },\n E121: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E122: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E129: { regularTimeZone: 'GMT', summerTimeZone: 'BST', regularTimeOffset: 1, summerTimeOffset: 0, regularTimeDescr: 'Greenwich Mean Time', summerTimeDescr: 'British Summer Time' },\n E138: { regularTimeZone: 'GMT', summerTimeZone: 'BST', regularTimeOffset: 1, summerTimeOffset: 0, regularTimeDescr: 'Greenwich Mean Time', summerTimeDescr: 'British Summer Time' },\n E140: { regularTimeZone: 'GMT', summerTimeZone: 'BST', regularTimeOffset: 1, summerTimeOffset: 0, regularTimeDescr: 'Greenwich Mean Time', summerTimeDescr: 'British Summer Time' },\n E385: { regularTimeZone: 'GMT', summerTimeZone: 'BST', regularTimeOffset: 1, summerTimeOffset: 0, regularTimeDescr: 'Greenwich Mean Time', summerTimeDescr: 'British Summer Time' },\n E240: { regularTimeZone: 'EET', summerTimeZone: 'EEST', regularTimeOffset: 3, summerTimeOffset: 2, regularTimeDescr: 'Eastern European Time', summerTimeDescr: 'Eastern European Summer Time' },\n E107: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E110: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E111: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E113: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E115: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E439: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E486: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E482: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E949: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E967: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E968: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E100: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E429: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E475: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E329: { regularTimeZone: 'WET', summerTimeZone: 'WEST', regularTimeOffset: 1, summerTimeOffset: 0, regularTimeDescr: 'Western European Time', summerTimeDescr: 'Western European Summer Time' },\n E910: { regularTimeZone: 'AZOT', summerTimeZone: 'AZOST', regularTimeOffset: 0, summerTimeOffset: -1, regularTimeDescr: 'Azores Time', summerTimeDescr: 'Azores Summer Time' },\n E966: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E983: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E124: { regularTimeZone: 'TRT', summerTimeZone: 'TRT', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Turkey Time', summerTimeDescr: 'Turkey Time' },\n E126: { regularTimeZone: 'TRT', summerTimeZone: 'TRT', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Turkey Time', summerTimeDescr: 'Turkey Time' },\n E481: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E484: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E951: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E952: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E953: { regularTimeZone: 'CET', summerTimeZone: 'CEST', regularTimeOffset: 2, summerTimeOffset: 1, regularTimeDescr: 'Central European Time', summerTimeDescr: 'Central European Summer Time' },\n E974: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n E985: { regularTimeZone: 'EET', summerTimeZone: 'EET', regularTimeOffset: 2, summerTimeOffset: 2, regularTimeDescr: 'Eastern European Time', summerTimeDescr: 'Eastern European Time' },\n E993: { regularTimeZone: 'AST', summerTimeZone: 'AST', regularTimeOffset: 3, summerTimeOffset: 3, regularTimeDescr: 'Arabia Standard Time', summerTimeDescr: 'Arabia Standard Time' },\n \n }\n }\n\n getMilitaryTime(date) {\n let hours = date.getHours() < 10 ? \"0\" + date.getHours() : \"\" + date.getHours();\n let minutes = date.getMinutes() < 10 ? \"0\" + date.getMinutes() : \"\" + date.getMinutes();\n return hours + minutes;\n }\n\n showTimePopup() {\n this.setState({ showTimePopup: true });\n }\n\n hideTimePopup() {\n this.setState({ showTimePopup: false });\n }\n\n\n getStartTime(offset) {\n let startTime = new Date(this.props.cls.T1);\n startTime.setHours(startTime.getHours() + offset);\n return startTime;\n }\n\n getEndTime(offset) {\n let endTime = new Date(this.props.cls.T2);\n endTime.setHours(endTime.getHours() + offset);\n return endTime;\n }\n\n /*Daylight Saving Time in the EU is from the last Sunday of March to the last Sunday of October,\n per https://en.wikipedia.org/wiki/Central_European_Summer_Time#Period_of_observation . Turkey doesn't\n do DST, so if we are currently in the EU DST timeframe, then Turkey is no longer CET+2, but CET+1. */\n\n lastSunday(year, month) {\n var date = new Date(year, month, 1, 12);\n let weekday = date.getDay();\n let dayDiff = weekday === 0 ? 7 : weekday;\n let lastSunday = date.setDate(date.getDate() - dayDiff);\n return lastSunday;\n }\n\n getCurrentYear() {\n return new Date().getFullYear();\n }\n\n areWeInDST() {\n return new Date() >= this.lastSunday(this.getCurrentYear(), 3) && new Date() < this.lastSunday(this.getCurrentYear(), 10);\n }\n\n getTimeZoneAcronymn() {\n if (this.state.locationTimeZones[this.props.cls.LOC] != null) {\n return this.areWeInDST() ? this.state.locationTimeZones[this.props.cls.LOC].summerTimeZone : this.state.locationTimeZones[this.props.cls.LOC].regularTimeZone;\n } else {\n return \"\";\n }\n }\n // Check whether Start Date AFTER DST\n compareDST() {\n let dstEnd = new Date(2023,9,29)\n let classDate = new Date(this.props.cls.START_DT);\n\n if (classDate > dstEnd)\n {\n return this.getMilitaryTime(this.getStartTime(0)) + \"-\" + this.getMilitaryTime(this.getEndTime(0)) + \" \" + this.state.locationTimeZones[this.props.cls.LOC].regularTimeZone;\n }\n else {\n return this.getMilitaryTime(this.getStartTime(0)) + \"-\" + this.getMilitaryTime(this.getEndTime(0)) + \" \" + this.state.locationTimeZones[this.props.cls.LOC].summerTimeZone;\n }\n }\n\n render() {\n\n //Hide time and time popup for web classes, or for classes where start time = end time (field study for example).\n if (this.props.cls.LOC === \"WEB\" || this.props.cls.T1 === this.props.cls.T2) {\n return null;\n }\n\n //CSS object for React for popup\n let timePopup = {\n position: \"absolute\",\n zIndex: 99999,\n padding: \"10px\",\n background: \"#f5f5f5\",\n border: \"1px solid #ccc\",\n MozBorderRadius: \"20px\",\n WebkitBorderRadius: \"20px\",\n margin: \"0px\",\n WebkitBoxShadow: \"0px 0px 5px 0px rgba(164, 164, 164, 1)\",\n boxShadow: \"0px 0px 5px 0px rgba(164, 164, 164, 1)\",\n }\n\n let label = this.props.showLabel === \"true\" ? Time: : null;\n\n if (this.state.showTimePopup) {\n if (this.props.cls.LOC === \"E701\") {\n return (\n
    \n
    \n {label}{this.getMilitaryTime(this.getStartTime(0)) + \"-\" + this.getMilitaryTime(this.getEndTime(0))} {this.areWeInDST() ? this.state.locationTimeZones[this.props.cls.LOC].summerTimeZone : this.state.locationTimeZones[this.props.cls.LOC].regularTimeZone}\n  \n
    \n
    \n {this.getMilitaryTime(this.getStartTime(-2))}-{this.getMilitaryTime(this.getEndTime(-2))} Azores
    \n {this.getMilitaryTime(this.getStartTime(-1))}-{this.getMilitaryTime(this.getEndTime(-1))} UK, Portugal
    \n {this.getMilitaryTime(this.getStartTime(0))}-{this.getMilitaryTime(this.getEndTime(0))} Benelux, Germany, Spain, Italy
    \n {this.areWeInDST() ? <>\n {this.getMilitaryTime(this.getStartTime(1))}-{this.getMilitaryTime(this.getEndTime(1))} Greece, Turkey
    \n
    \n {/* 9/25/2023 YO: Add info text for Daylight Savings */}\n

    Daylight Saving Times ends on 29 October

    \n \n :\n <>\n {this.getMilitaryTime(this.getStartTime(1))}-{this.getMilitaryTime(this.getEndTime(1))} Greece
    \n {this.getMilitaryTime(this.getStartTime(2))}-{this.getMilitaryTime(this.getEndTime(2))} Turkey
    \n }\n
    \n
    \n );\n }\n if (this.props.cls.LOC === \"E702\") {\n return (\n
    \n
    \n {label}{this.getMilitaryTime(this.getStartTime(0)) + \"-\" + this.getMilitaryTime(this.getEndTime(0))} {this.areWeInDST() ? this.state.locationTimeZones[this.props.cls.LOC].summerTimeZone : this.state.locationTimeZones[this.props.cls.LOC].regularTimeZone}\n  \n
    \n
    \n {this.getMilitaryTime(this.getStartTime(0))}-{this.getMilitaryTime(this.getEndTime(0))} Bahrain, Djibouti, Egypt, Kuwait, Qatar
    \n {this.getMilitaryTime(this.getStartTime(1))}-{this.getMilitaryTime(this.getEndTime(1))} United Arab Emirates
    \n
    \n {/* 9/25/2023 YO: Add info text for Daylight Savings */}\n

    Daylight Saving Times ends on 29 October

    \n
    \n
    \n );\n }\n if (this.props.cls.LOC === \"E700\") {\n return (\n
    \n
    \n {label}{this.compareDST()}\n {/* {label}{this.getMilitaryTime(this.getStartTime(0)) + \"-\" + this.getMilitaryTime(this.getEndTime(0))} {this.areWeInDST() ? this.state.locationTimeZones[this.props.cls.LOC].summerTimeZone : this.state.locationTimeZones[this.props.cls.LOC].regularTimeZone} */}\n  \n
    \n
    \n {this.getMilitaryTime(this.getStartTime(-2))}-{this.getMilitaryTime(this.getEndTime(-2))} Azores
    \n {this.getMilitaryTime(this.getStartTime(-1))}-{this.getMilitaryTime(this.getEndTime(-1))} UK, Portugal
    \n {this.areWeInDST() ? <>\n {this.getMilitaryTime(this.getStartTime(0))}-{this.getMilitaryTime(this.getEndTime(0))} Benelux, Egypt, Germany, Italy, Spain
    \n {this.getMilitaryTime(this.getStartTime(1))}-{this.getMilitaryTime(this.getEndTime(1))} Bahrain, Djibouti, Greece, Kuwait, Turkey, Qatar
    \n {this.getMilitaryTime(this.getStartTime(2))}-{this.getMilitaryTime(this.getEndTime(2))} United Arab Emirates
    \n
    \n {/* 9/25/2023 YO: Add info text for Daylight Savings */}\n

    Daylight Saving Times ends on 29 October

    \n \n :\n <>\n {this.getMilitaryTime(this.getStartTime(0))}-{this.getMilitaryTime(this.getEndTime(0))} Benelux, Germany, Spain, Italy
    \n {this.getMilitaryTime(this.getStartTime(1))}-{this.getMilitaryTime(this.getEndTime(1))} Greece, Egypt, Romania
    \n {this.getMilitaryTime(this.getStartTime(2))}-{this.getMilitaryTime(this.getEndTime(2))} Bahrain, Djibouti, Kuwait, Turkey, Qatar
    \n {this.getMilitaryTime(this.getStartTime(3))}-{this.getMilitaryTime(this.getEndTime(3))} United Arab Emirates
    \n }\n
    \n
    \n );\n }\n } else {\n if (this.props.cls.LOC !== \"E700\" && parseInt(this.props.cls.STRM) > 2215) {\n return (\n
    \n
    \n {label}{this.getMilitaryTime(this.getStartTime(0)) + \"-\" + this.getMilitaryTime(this.getEndTime(0))} {this.getTimeZoneAcronymn()}\n
    \n
    \n );\n } \n //9/27/2023 YO: Check if the Virtual classes start after end of DST\n\n else if (this.props.cls.LOC === \"E700\" && this.areWeInDST) {\n return (\n
    \n
    \n {label}{this.compareDST()}\n  \n
    \n
    \n \n );\n \n } else {\n return (\n
    \n
    \n {label}{this.getMilitaryTime(this.getStartTime(0)) + \"-\" + this.getMilitaryTime(this.getEndTime(0))} {this.getTimeZoneAcronymn()}\n  \n
    \n
    \n );\n }\n }\n }\n}\n\nexport default TimeWithPopUp;","export default __webpack_public_path__ + \"static/media/newly_added.9fe2de3d.PNG\";","export default __webpack_public_path__ + \"static/media/limitedSeats.0f8c61d8.PNG\";","export default __webpack_public_path__ + \"static/media/Intersession.35c3c340.PNG\";","import React from \"react\";\nimport TimeWithPopUp from \"./TimeWithPopup\";\nimport newlyadd from \"./assets/newly_added.PNG\"\nimport limSeats from \"./assets/limitedSeats.PNG\"\nimport intersession from \"./assets/Intersession.PNG\"\n\n/* dangerouslySetInnerHTML is not actually dangerous here. It would be dangerous if the HTML would be generated based\non user input, which is not the case. */\n\nclass ClassCardBig extends React.Component {\n state = {\n starterCourses: [\"LIBS 150\", \"PACE 111M\", \"WRTG 111\"],\n showCourseDescr: false,\n };\n\n constructor(props) {\n super(props);\n this.toggleShowCourseDescr = this.toggleShowCourseDescr.bind(this);\n this.getCourseDescr = this.getCourseDescr.bind(this);\n }\n\n toggleShowCourseDescr() {\n this.setState({ showCourseDescr: !this.state.showCourseDescr });\n }\n\n getCourseDescr() {\n if (this.state.showCourseDescr) {\n return (\n
    \n {this.state.showCourseDescr ? this.props.cls.DESCRIPTION : \"\"}\n
    \n );\n } else {\n return null;\n }\n }\n\n getCourseDescrSwitch() {\n return this.state.showCourseDescr ? (\n \n ) : (\n \n );\n }\n\n render() {\n let addToCompareButton = null;\n if (\n this.props.compares.length < 3 &&\n !this.props.compares.includes(this.props.cls)\n ) {\n addToCompareButton = (\n \n Add to compare\n \n );\n } else {\n addToCompareButton = (\n \n Add to compare\n \n );\n }\n// Show default codes\n // let instructionMode = \"\";\n\n // switch (this.props.cls.IM) {\n // case \"WT\":\n // instructionMode = \"Online\";\n // break;\n // case \"TN\":\n // case \"OV\":\n // case \"VO\":\n // instructionMode = \"Online Virtual\";\n // break;\n // case \"P\":\n // case \"PC\":\n // case \"LP\":\n // case \"HY\":\n // case \"HC\":\n // case \"LH\":\n // case \"LC\":\n // instructionMode = \"On-site\";\n // break;\n // case \"FS\":\n // instructionMode = \"Field Study\";\n // break;\n // case \"LZ\":\n // case \"HZ\":\n // case \"PZ\":\n // case \"LF\":\n // case \"HF\":\n // case \"PF\":\n // instructionMode = \"On-site Flex\";\n // break;\n // default:\n // instructionMode = this.props.cls.IM;\n // }\n\n let instructionMode = \"\";\n instructionMode = this.props.cls.IM;\n\n return (\n
    \n
    \n \n {this.getCourseDescrSwitch()}\n \n  \n $&\"\n ),\n }}\n />{\" \"}\n -{\" \"}\n $&\"\n ),\n }}\n />\n  ({this.props.cls.CR} credit hours)\n \n {addToCompareButton}\n
    \n
    \n
    \n {/*YO: Winter Intersession image 10/19/2023 */} \n

    \n {this.props.cls.NT.length > 1 && this.props.cls.NT.includes(\"intersession\") ? (\n <>\n

    \n \"\"\n
    \n \n ) : null}\n \n

    \n\n\n {/*YO: NEwly Added image 8/09/2023 */} \n

    \n {this.props.cls.NT.length > 1 && this.props.cls.NT.includes(\"Newly Added!\") ? (\n <>\n

    \n \n
    \n \n ) : null}\n \n

    \n\n {/*YO: LimitedSeats image if it is 5 or less 8/09/2023 */} \n\n

    \n {this.props.cls.SEATS <=5 && this.props.cls.SEATS > 0 ? (\n <>\n

    \n \n
    \n \n ) : null}\n \n

    \n\n {this.getCourseDescr()}\n
    \n {this.state.starterCourses.includes(\n this.props.cls.S + this.props.cls.CN\n ) ? (\n

    \n \n {\" \"}\n * This class is\n great for new students.\n \n

    \n ) : (\n \"\"\n )}\n
    \n
    \n
    \n Location: \n $&\"\n ),\n }}\n />\n
    \n Class number: \n {this.props.cls.CLASS_NBR}\n
    \n Section: \n {this.props.cls.CS}\n {/*
    \n {this.props.cls.IM === \"\" ? null : 'Instruction mode: '}\n {instructionMode} */}\n
    \n
    \n Faculty: \n $&\"\n ),\n }}\n />\n
    \n Status: \n {this.props.cls.ES === \"O\"\n ? \"Open\"\n : this.props.cls.LOC === \"WEB\"\n ? \"Closed\"\n : \"Waitlist available\"}\n
    \n {new Date().setDate(new Date().getDate() + 21) >=\n new Date(this.props.cls.START_DT) ? (\n \n Syllabus\n \n ) : (\n Syllabus 3 wks prior to start\n )}\n
    \n {/* {this.props.cls.LOC.substring(0, 1) === \"E\" ? null : this.props.cls.SEATS === -99 ? null : 'Seats available: ' + Math.max(this.props.cls.SEATS, 0)}
    */}\n
    \n
    \n {new Date(this.props.cls.START_DT).toLocaleDateString(\"en-US\")} -{\" \"}\n {new Date(this.props.cls.END_DT).toLocaleDateString(\"en-US\")}\n
    \n {this.props.cls.MON === \"Y\" ||\n this.props.cls.TUES === \"Y\" ||\n this.props.cls.WED === \"Y\" ||\n this.props.cls.THURS === \"Y\" ||\n this.props.cls.FRI === \"Y\" ||\n this.props.cls.SAT === \"Y\" ||\n this.props.cls.SUN === \"Y\" ? (\n Days: \n ) : null}\n {this.props.cls.MON === \"Y\" ? \"Mon \" : \"\"}\n {this.props.cls.TUES === \"Y\" ? \"Tue \" : \"\"}\n {this.props.cls.WED === \"Y\" ? \"Wed \" : \"\"}\n {this.props.cls.THURS === \"Y\" ? \"Thu \" : \"\"}\n {this.props.cls.FRI === \"Y\" ? \"Fri \" : \"\"}\n {this.props.cls.SAT === \"Y\" ? \"Sat \" : \"\"}\n {this.props.cls.SUN === \"Y\" ? \"Sun \" : \"\"}\n \n
    \n
    \n
    \n
    \n {/* Combine Instruction mode and notes on one line */}\n {/* {this.props.cls.IM === \"\" ? null : \"Instruction mode: \"}\n {instructionMode}\n {this.props.cls.IM === \"\" ? null : \" / \"} */}\n\n \n {this.props.cls.NT.length > 1 ? (\n <>\n Note: \n \n ) : null}\n \n $&\"\n ),\n }}\n />\n \n
    \n
    \n
    \n
    \n
    \n
    \n \n );\n }\n}\n\nexport default ClassCardBig;\n","import React from 'react';\n//import Cls from './Cls';\nimport PageButton from './PageButton';\nimport ClassCardBig from './ClassCardBig';\n\nclass ClassesList extends React.Component {\n buttonToLink = {\n fontSize: '1em',\n textAlign: 'left',\n color: 'black',\n fontWeight: 'bold',\n background: 'none',\n margin: 0,\n padding: 0,\n border: 'none',\n cursor: 'pointer'\n\n }\n\n state = {\n courseSort: \"NONE\",\n classNumberSort: \"NONE\",\n dateSort: \"ASC\",\n locationSort: \"NONE\",\n page: 0,\n itemsPerPage: 25,\n }\n\n constructor(props) {\n super(props);\n this.handleChange = this.handleChange.bind(this);\n this.gotoPage = this.gotoPage.bind(this);\n }\n\n getNextSortMode(sortmode) {\n switch (sortmode) {\n case \"ASC\":\n return \"DESC\";\n case \"DESC\":\n return \"NONE\";\n case \"NONE\":\n return \"ASC\";\n default:\n }\n }\n\n gotoPage(page) {\n this.setState({ page: page });\n }\n\n updateSort(sort) {\n let newState = {};\n for (const [key, value] of Object.entries(this.state)) {\n if (key.slice(-4) === \"Sort\") {\n if (key === sort) {\n newState[key] = this.getNextSortMode(value);\n } else {\n newState[key] = \"NONE\";\n }\n }\n }\n this.setState(newState);\n }\n\n handleChange(e) {\n switch (e.target.id) {\n case \"btnCourseSort\":\n this.updateSort(\"courseSort\");\n break;\n case \"btnClassNumberSort\":\n this.updateSort(\"classNumberSort\");\n break;\n case \"btnDateSort\":\n this.updateSort(\"dateSort\");\n break;\n case \"btnLocationSort\":\n this.updateSort(\"locationSort\");\n break;\n default:\n console.log(e.target.id);\n }\n }\n\n getSortedBy() {\n for (const [key, value] of Object.entries(this.state)) {\n if (key.slice(-4) === \"Sort\") {\n if (value !== \"NONE\") {\n return key;\n }\n }\n }\n }\n\n render() {\n\n let classes = this.props.classes;\n //sort\n switch (this.getSortedBy()) {\n case \"courseSort\":\n if (this.state.courseSort === \"ASC\") {\n classes.sort((a, b) => (a.S + a.CN > b.S + b.CN) ? 1 : ((b.S + b.CN > a.S + a.CN) ? -1 : 0));\n } else {\n classes.sort((b, a) => (a.S + a.CN > b.S + b.CN) ? 1 : ((b.S + b.CN > a.S + a.CN) ? -1 : 0));\n }\n break;\n case \"classNumberSort\":\n if (this.state.classNumberSort === \"ASC\") {\n classes.sort((a, b) => (a.CLASS_NBR > b.CLASS_NBR) ? 1 : ((b.CLASS_NBR > a.CLASS_NBR) ? -1 : 0));\n } else {\n classes.sort((b, a) => (a.CLASS_NBR > b.CLASS_NBR) ? 1 : ((b.CLASS_NBR > a.CLASS_NBR) ? -1 : 0));\n }\n break;\n case \"dateSort\":\n if (this.state.dateSort === \"ASC\") {\n classes.sort((a, b) => (new Date(a.START_DT) > new Date(b.START_DT)) ? 1 : ((new Date(b.START_DT) > new Date(a.START_DT)) ? -1 : 0));\n } else {\n classes.sort((b, a) => (new Date(a.START_DT) > new Date(b.START_DT)) ? 1 : ((new Date(b.START_DT) > new Date(a.START_DT)) ? -1 : 0));\n }\n break;\n case \"locationSort\":\n if (this.state.locationSort === \"ASC\") {\n classes.sort((a, b) => (a.LOC_D > b.LOC_D) ? 1 : ((b.LOC_D > a.LOC_D) ? -1 : 0));\n } else {\n classes.sort((b, a) => (a.LOC_D > b.LOC_D) ? 1 : ((b.LOC_D > a.LOC_D) ? -1 : 0));\n }\n break;\n default:\n }\n\n //page\n let i;\n let classesOnThisPage = [];\n let currentPage = this.state.page;\n\n if (currentPage * this.state.itemsPerPage > this.props.classes.length) {\n currentPage = Math.ceil(this.props.classes.length / this.state.itemsPerPage) - 1;\n }\n\n for (i = currentPage * this.state.itemsPerPage; i < (currentPage * this.state.itemsPerPage) + this.state.itemsPerPage; i++) {\n if (classes[i]) {\n classesOnThisPage.push(classes[i]);\n } else {\n break;\n }\n }\n\n //page selector\n let totalPages = Math.ceil(classes.length / this.state.itemsPerPage);\n let pages = [];\n for (i = 0; i < totalPages; i++) {\n pages.push(i);\n }\n\n return (\n
    \n \n
    \n Sort by:\n \n \n \n \n
    \n\n {classesOnThisPage.map(cls => (\n \n ))}\n \n
    \n );\n }\n}\n\nexport default ClassesList;","import React from 'react';\n\nclass NoClassesToDisplay extends React.Component {\n\n render() {\n return (\n
    \n

    No classes were found using your current selection.

    \n

    Try to add more locations, subjects, or instruction modes, or expand the date range.

    \n

    Do you need help finding a class? Visit one of our Virtual Offices to speak to a person!

    \n VIRTUAL OFFICE: CLICK HERE TO VISIT US 7 DAYS PER WEEK\n
    \n );\n }\n}\n\nexport default NoClassesToDisplay;","import React from 'react';\nimport TimeWithPopUp from './TimeWithPopup';\n\nclass ClassCard extends React.Component {\n\n render() {\n\n return (\n
    \n
    \n {this.props.cls.S} {this.props.cls.CN} {this.props.cls.CS}
    \n {this.props.cls.T}\n
    \n \n
    \n
    \n
    \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
    Location:{this.props.cls.LOC_D}
    Class number:{this.props.cls.CLASS_NBR}
    Credits:{this.props.cls.CR}
    Dates:{new Date(this.props.cls.START_DT).toLocaleDateString('en-US')} - {new Date(this.props.cls.END_DT).toLocaleDateString('en-US')}
    Time:
    Days:\n {this.props.cls.MON === \"Y\" ? \"Mon \" : \"\"}\n {this.props.cls.TUES === \"Y\" ? \"Tue \" : \"\"}\n {this.props.cls.WED === \"Y\" ? \"Wed \" : \"\"}\n {this.props.cls.THURS === \"Y\" ? \"Thu \" : \"\"}\n {this.props.cls.FRI === \"Y\" ? \"Fri \" : \"\"}\n {this.props.cls.SAT === \"Y\" ? \"Sat \" : \"\"}\n {this.props.cls.SUN === \"Y\" ? \"Sun \" : \"\"}\n
    Faculty:{this.props.cls.FAC.replace(\",\",\", \")}
    {this.props.cls.UC_DESCR254_NOTES}
    {this.props.cls.DESCRIPTION}
    \n
    \n
    \n );\n }\n}\n\nexport default ClassCard;","import React from 'react';\nimport ClassCard from './ClassCard';\n\n\nclass Compare extends React.Component {\n \n render() {\n return (\n
    \n {this.props.compares.map((compare) => {\n return (\n
    \n \n
    \n );\n })}\n
    \n );\n }\n}\n\nexport default Compare;","import React from 'react';\nimport ClassesList from './ClassesList';\nimport NoClassesToDisplay from './NoClassesToDisplay';\nimport Compare from './Compare';\n\nclass ResultPanel extends React.Component {\n\n render() {\n switch (this.props.status) {\n case \"NO_CLASSES_FOUND\":\n return (\n \n );\n case \"CLASSES_FOUND\":\n return (
    \n \n
    \n );\n case \"SHOW_COMPARES\":\n return (\n \n );\n default:\n return (\n
    \n Loading...\n
    \n )\n }\n }\n}\n\nexport default ResultPanel;","import React from 'react';\n\nclass LoadingProgressBar extends React.Component {\n render() {\n return (\n
    \n
    \n
    \n
    \n
    \n
    \n
    \n

    {this.props.loadingText}

    \n

    {Math.round(this.props.downloadProgress) > 100 ? 100 : Math.round(this.props.downloadProgress)}%

    \n
    \n
    \n );\n }\n}\n\nexport default LoadingProgressBar;","/*\nSchedule of Classes - React \n\nJeroen Soeurt jeroen.soeurt@umgc.edu\n-------------------------------------\nThis was created as a more or less temp solution because the current\nSOC from 2006 no longer met the needs of UMGC Europe, and there were\nas of Spring 2021 not finalized plans to replace it. The approach is to \ngenerate one big JSON object containing the schedule that is loaded\nup-front, instead of doing AJAX calls to search server-side and\ndownload a sub-set of the schedule to the client. This was done for \ntwo reasons:\n1: \tThe server runs an old version of Cold Fusion and there were\n worries about the stability/robustness of it. This approach \n limits server-side processing, as the query can be cached.\n2: \tThis approach allows for faster client-side filtering and \n searching.\n3:\tThis approach does not require parameters to be passed from\n client to server, and thus prevents SQL injection attacks.\nFeedback indicated that the load-time of about 7 seconds of the app\nwas acceptable. If this changes in the future, then an AJAX-based\napproach is recommended. In that case, only the loading methods\nand filter method in App.js in the client need to be adjusted (and\neuropapi.cfm of course).\n\n----------------------------------------------------------------\n04/27/2021 JS: Original deployment. Ran into issue where prod servers did not return content-length header.\n Applied temp workaround that assumes a content-length as of today so progress bar works in\n loadClasses().\n04/28/2021 JS: Bug fixes: \n -Date filter does not include start date due to GMT vs CEST 2 hr time difference.\n -Compare button overlaps notes on mobile on long notes on specific phones.\n -Link on logo or title goes to wrong location\n -Search term disappears after comparing classes.\n Enhancements:\n -Checkbox label indent on second line.\n -Syllabus availability notice if not available\n -Added subject codes\n -Subjects adjust to career\n05/03/2021 JS: -Switched to AJAX per search instead of all data up front. This did not end up\n working. ColdFusion is just too slow.\n05/04/2021 JS: -Optimized by making descriptions a seperate load, and minifying/uglyfying field names\n in JSON. 8.5 mb to 2.9 mb. Stale cache load time from 45s to 11s.\n05/06/2021 JS: -Added \"credit hours\" after credits indicator.\n06/01/2021 JS: -Added session for staff version\n06/16/2021 JS: -A new delivery method was added without letting me know, and the question was raised why\n it does not work on the SOC. Making changes to facilitate this. The new delivery method\n is coded as location E700. The approach is to deal with it the same was as online classes\n (which are entered as location WEB).\n07/19/2021 JS -Made online the first option. \n -Changed europeapi.cfm to include a field that shows if it\n should be the current default term. \n -Changed loadTerms to find the default term and set it\n as termFilter in state. \n -Updated virtual office link.\n07/26/2021 JS: -Remove virtual as a delivery for which locations are an option in FilterPanel.js.\n -Classes at E994 are now the same as WEB.\n -A social work class is now identified by the career instead of the subject.\n*/\n\nimport './App.scss';\nimport Header from './components/Header';\nimport Footer from './components/Footer';\nimport FilterPanel from './components/FilterPanel';\nimport ResultPanel from './components/ResultPanel';\nimport React, { Component } from 'react';\nimport LoadingProgressBar from './components/LoadingProgressBar';\n\nexport const environment = {\n hostUrl: window.location.hostname\n};\n\nclass App extends Component {\n\n // Local development will still have to comment out above and uncomment below\n //default this value in cause env files are jacked\n apiUrl = \"https://webappsdev.umgc.edu/soc/europeapi.cfm\"\n\n state = {\n classes: [],\n unfilteredClasses: [],\n searchFilter: \"\",\n subjects: [],\n terms: [],\n careerFilter: ['UFSU', 'UGRD', 'USAL'],\n instructionModeFilter: ['ONSITE', 'REMOTE', 'FIELDSTUDY', 'VIRTUAL'],\n status: \"LOADING\",\n termFilter: \"\",\n locationFilter: [],\n subjectFilter: [],\n locationCheckboxes: [],\n subjectCheckboxes: [],\n ignoreFiltersFilter: false,\n startDateFirstFilter: null,\n startDateSecondFilter: null,\n oneCreditOnly: false,\n area: \"EUROPE\",\n downrangeLocations: [\"E993\", \"E687\", \"E983\", \"E482\", \"E966\", \"E967\", \"E968\", \"E976\", \"E402\", \"E441\", \"E702\", \"E974\", \"E696\", \"E484\"],\n compares: [],\n downloadProgress: 0,\n showClassesStarted: false,\n sessionFilter: \"\",\n sessions: []\n }\n\n componentDidMount() {\n this.loadLocations();\n }\n\n constructor(props) {\n super(props);\n this.clearDates = this.clearDates.bind(this);\n this.addCompare = this.addCompare.bind(this);\n this.showCompares = this.showCompares.bind(this);\n this.showResults = this.showResults.bind(this);\n this.removeCompare = this.removeCompare.bind(this);\n this.checkAllLocations = this.checkAllLocations.bind(this);\n this.checkAllSubjects = this.checkAllSubjects.bind(this);\n\n //make sure value isn't undefined\n if (process.env.REACT_APP_API_ENDPOINT && process.env.NODE_ENV !== 'production') {\n console.log('setting url');\n console.log(process.env.REACT_APP_API_ENDPOINT);\n this.apiUrl = process.env.REACT_APP_API_ENDPOINT;\n } else {\n this.apiUrl = \"//\" + environment.hostUrl + \"/soc/europeapi.cfm\"\n }\n\n }\n\n\n showCompares() {\n this.setState({ status: \"SHOW_COMPARES\" });\n }\n\n showResults() {\n if (this.state.classes.length > 0) {\n this.setState({ status: \"CLASSES_FOUND\" });\n } else {\n this.setState({ status: \"NO_CLASSES_FOUND\" });\n }\n }\n\n removeCompare(e) {\n let newCompares = this.state.compares.filter(cls => cls.CLASS_NBR !== parseInt(e.target.id));\n this.setState({ compares: newCompares });\n if (newCompares.length === 0) {\n this.showResults();\n }\n }\n\n addCompare(e) {\n if (this.state.compares.length < 3) {\n let newCompares = this.state.compares;\n let classToBeAdded = this.state.classes.filter(cls => cls.CLASS_NBR === parseInt(e.target.id));\n newCompares = newCompares.concat(classToBeAdded);\n this.setState({ compares: newCompares });\n }\n }\n\n loadLocations() {\n fetch(this.apiUrl + \"?f=locations\")\n .then(res => res.json())\n .then((data) => {\n data.sort((a, b) => (a.COUNTRY > b.COUNTRY) ? 1 : ((b.COUNTRY > a.COUNTRY) ? -1 : 0));\n this.setState({\n locationCheckboxes: data.map((location) => { return { id: location.LOC, value: location.LOC_D, isChecked: true, country: location.COUNTRY, isVisible: !this.state.downrangeLocations.includes(location.LOC) } }),\n locationFilter: data.map((location) => { return location.LOC }),\n }, this.loadSubjects);\n }).catch(console.log);\n }\n\n loadSubjects() {\n fetch(this.apiUrl + \"?f=subjects\")\n .then(res => res.json())\n .then((data) => {\n this.setState({\n subjectCheckboxes: data.map((subject) => { return { id: subject.S, value: subject.SD, career: subject.AC, isChecked: true } }),\n subjectFilter: data.map((subject) => { return subject.S }),\n }, this.loadTerms);\n }).catch(console.log);\n }\n\n loadTerms() {\n fetch(this.apiUrl + \"?f=terms\")\n .then(res => res.json())\n .then((data) => {\n //Add || data[0].STRM as default to the following in case a DEFAULT_DATE_AFTER not set in Admin for terms being sent.\n this.setState({ terms: data, termFilter: data.find(term => { return term.SELECTED === 1 })?.STRM || data[0].STRM }, this.loadSessions); //https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Optional_chaining\n }).catch(console.log);\n }\n\n loadSessions() {\n fetch(this.apiUrl + \"?f=sessions\")\n .then(res => res.json())\n .then((data) => {\n this.setState({ sessions: data }, this.loadDescriptions);\n }).catch(console.log);\n }\n\n async loadDescriptions() {\n this.setState({ loadingText: \"Loading course descriptions....\" });\n this.setState({ downloadProgress: 0 });\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"GET\", this.apiUrl + \"?f=descriptions\");\n\n xhr.onprogress = event => {\n /*Jeroen Soeurt, 04/27/2021\n Workaround. On 04/27/2021 when first deploying the prod server did not return\n a content length header. The content length as of right now should be 450000,\n so if there is no content-length, assume this is it. This way the progress bar\n works more or less. When the server config is fixed, it will start using the\n real content. In that case remove this workaround during the next deployment. */\n let total = event.total ? event.total : 535000;\n if (this.state.downloadProgress <= ((event.loaded / total) * 100) - 5) {\n this.setState({ downloadProgress: 10 + (event.loaded / total) * 100 });\n }\n };\n\n xhr.onload = () => {\n if (xhr.status !== 200) {\n console.log(`Error ${xhr.status}: ${xhr.statusText}`);\n } else {\n let response = JSON.parse(xhr.response);\n this.setState({ descriptions: response }, this.loadClasses);\n }\n };\n\n xhr.send();\n }\n\n async loadClasses() {\n this.setState({ loadingText: \"Loading schedule of classes....\" });\n this.setState({ downloadProgress: 0 });\n\n let xhr = new XMLHttpRequest();\n xhr.open(\"GET\", this.apiUrl + \"?f=schedule\");\n\n xhr.onprogress = event => {\n /*Jeroen Soeurt, 04/27/2021\n Workaround. On 04/27/2021 when first deploying the prod server did not return\n a content length header. The content length as of right now should be 8320357,\n so if there is no content-length, assume this is it. This way the progress bar\n works more or less. When the server config is fixed, it will start using the\n real content. In that case remove this workaround during the next deployment. */\n let total = event.total ? event.total : 4000000;\n if (this.state.downloadProgress <= ((event.loaded / total) * 100) - 5) {\n this.setState({ downloadProgress: 10 + (event.loaded / total) * 100 });\n }\n };\n\n xhr.onload = () => {\n if (xhr.status !== 200) {\n console.log(`Error ${xhr.status}: ${xhr.statusText}`);\n } else {\n let response = JSON.parse(xhr.response);\n\n this.setState({ unfilteredClasses: response }, this.compileSchedule);\n }\n };\n\n xhr.send();\n }\n\n compileSchedule() {\n let newUnfilteredClasses = this.state.unfilteredClasses.map((scheduledClass) => {\n scheduledClass.DESCRIPTION = this.state.descriptions.find((descr) => { return descr.COURSE === (scheduledClass.S + scheduledClass.CN) && descr.STRM === scheduledClass.STRM }).DESCRIPTION;\n return scheduledClass;\n });\n\n this.setState({ unfilteredClasses: newUnfilteredClasses }, this.updateClasses);\n }\n\n //Adds an instruction mode to state.instructionMode if it does not already exists.\n addInstructionMode(instructionMode) {\n if (!this.state.instructionModeFilter.includes(instructionMode)) {\n let newInstructionModeFilter = this.state.instructionModeFilter;\n newInstructionModeFilter.push(instructionMode);\n this.setState({ instructionModeFilter: newInstructionModeFilter }, this.updateClasses);\n }\n }\n\n //Remove an instruction mode from state.instructionMode.\n removeInstructionMode(instructionMode) {\n if (this.state.instructionModeFilter.length > 1) {\n this.setState({ instructionModeFilter: this.state.instructionModeFilter.filter((mode) => { return mode !== instructionMode }) }, this.updateClasses);\n }\n }\n\n //Adds a credit filter to state.creditFIlter if it does not already exists.\n addCredit(credit) {\n if (!this.state.creditFilter.includes(credit)) {\n let newCreditFilter = this.state.creditFilter;\n newCreditFilter.push(credit);\n this.setState({ creditFilter: newCreditFilter }, this.updateClasses);\n }\n }\n\n //Remove a credit filter from state.creditFIlter.\n removeCredit(credit) {\n this.setState({ creditFilter: this.state.creditFilter.filter((cr) => { return cr !== credit }) }, this.updateClasses);\n }\n\n //Clears data limitations.\n clearDates() {\n this.setState({ startDateFirstFilter: null, startDateSecondFilter: null }, this.updateClasses);\n }\n\n //Set area to Europe or downrange\n setArea(area) {\n if (area === \"EUROPE\") {\n let newLocationCheckboxes = this.state.locationCheckboxes.map((location) => { return { id: location.id, value: location.value, isChecked: true, country: location.country, isVisible: !this.state.downrangeLocations.includes(location.id) } });\n this.setState({ locationCheckboxes: newLocationCheckboxes }, this.updateClasses);\n this.setState({ area: \"EUROPE\" });\n } else {\n let newLocationCheckboxes = this.state.locationCheckboxes.map((location) => { return { id: location.id, value: location.value, isChecked: true, country: location.country, isVisible: this.state.downrangeLocations.includes(location.id) } });\n this.setState({ locationCheckboxes: newLocationCheckboxes }, this.updateClasses);\n this.setState({ area: \"DOWNRANGE\" });\n }\n }\n\n //Checks or unchecks all locations in the currently select area.\n checkAllLocations(e) {\n let newLocationCheckboxes = this.state.locationCheckboxes.map((location) => {\n if (this.state.area === \"EUROPE\") {\n return { id: location.id, value: location.value, isChecked: e.target.checked, country: location.country, isVisible: !this.state.downrangeLocations.includes(location.id) }\n } else {\n return { id: location.id, value: location.value, isChecked: e.target.checked, country: location.country, isVisible: this.state.downrangeLocations.includes(location.id) }\n }\n });\n this.setState({ locationCheckboxes: newLocationCheckboxes }, this.updateClasses);\n }\n\n //Checks or unchecks all subject checkboxes.\n checkAllSubjects(e) {\n let newSubjectCheckboxes = this.state.subjectCheckboxes.map(subject => {\n return { id: subject.id, value: subject.value, career: subject.career, isChecked: e.target.checked }\n });\n\n this.setState({ subjectCheckboxes: newSubjectCheckboxes }, this.updateClasses);\n }\n\n //Change handler for filter panel.\n onChange = (e) => {\n if (e.target.id === \"chkOnline\") {\n e.currentTarget.checked ? this.addInstructionMode('ONLINE') : this.removeInstructionMode('ONLINE');\n }\n else if (e.target.id === \"chkOnsite\") {\n e.currentTarget.checked ? this.addInstructionMode('ONSITE') : this.removeInstructionMode('ONSITE');\n }\n else if (e.target.id === \"chkRemote\") {\n e.currentTarget.checked ? this.addInstructionMode('REMOTE') : this.removeInstructionMode('REMOTE');\n }\n else if (e.target.id === \"chkVirtual\") {\n e.currentTarget.checked ? this.addInstructionMode('VIRTUAL') : this.removeInstructionMode('VIRTUAL');\n }\n else if (e.target.id === \"chkFieldStudy\") {\n e.currentTarget.checked ? this.addInstructionMode('FIELDSTUDY') : this.removeInstructionMode('FIELDSTUDY');\n }\n else if (e.target.id === \"radioUndergrad\") {\n this.setState({ sessionFilter: \"\" }, //Reset session when career changes\n this.setState({ careerFilter: ['UFSU', 'UGRD', 'USAL'] }, this.updateClasses));\n }\n else if (e.target.id === \"radioGrad\") {\n this.setState({ sessionFilter: \"\" }, //Reset session when career changes\n this.setState({ careerFilter: ['GBSU', 'GR4T', 'GRAD', 'GSAL'] }, this.updateClasses));\n }\n else if (e.target.id === \"dtFirst\") {\n this.setState({ startDateFirstFilter: Date.parse(e.target.value) }, this.updateClasses);\n }\n else if (e.target.id === \"dtSecond\") {\n this.setState({ startDateSecondFilter: Date.parse(e.target.value) }, this.updateClasses);\n }\n else if (e.target.id === \"selectTerm\") {\n\n //Uncheck remote if term is greater than Summer 21\n if (parseInt(e.target.value) > 2215) {\n this.removeInstructionMode('REMOTE');\n }\n this.setState({ sessionFilter: \"\" }, //Reset session when term changes\n this.setState({ termFilter: parseInt(e.target.value) }, this.updateClasses));\n }\n else if (e.target.id === \"selectSession\") {\n this.setState({ sessionFilter: e.target.value }, this.updateClasses);\n }\n else if (e.target.name === \"chkLocation\") {\n let newLocationCheckboxes = this.state.locationCheckboxes.map((location) => {\n if (location.id === e.target.id) {\n return { id: location.id, value: location.value, isChecked: !location.isChecked, country: location.country, isVisible: location.isVisible }\n } else {\n return location;\n }\n });\n this.setState({ locationCheckboxes: newLocationCheckboxes }, this.updateClasses);\n }\n else if (e.target.name === \"chkSubject\") {\n let newSubjectCheckboxes = this.state.subjectCheckboxes.map((subject) => {\n if (subject.id === e.target.id) {\n return { id: subject.id, value: subject.value, career: subject.career, isChecked: !subject.isChecked }\n } else {\n return subject;\n }\n });\n this.setState({ subjectCheckboxes: newSubjectCheckboxes }, this.updateClasses);\n }\n else if (e.target.name === \"search\") {\n this.setState({ searchFilter: e.target.value.replaceAll(/([\\^\\$\\(\\)\\*\\?\\+\\|\\[\\]\\.\\{\\}\\=\\\\])/g, '\\\\$&') }, this.updateClasses);\n }\n else if (e.target.name === \"chkIgnoreFilters\") {\n this.setState({ ignoreFiltersFilter: e.target.checked }, this.updateClasses);\n }\n else if (e.target.name === \"chkAllLocations\") {\n if (e.target.checked) {\n this.setState({ locationFilter: this.state.locationCheckboxes.map((location) => { return location.id }) }, this.updateClasses);\n } else {\n this.setState({ locationFilter: ['WEB'] }, this.updateClasses); //Always keep location web. If the user doens't want online classes then the instruction mode filter will remove it from the results.\n }\n }\n else if (e.target.name === \"chkAllSubjects\") {\n if (e.target.checked) {\n this.setState({ subjectFilter: this.state.subjectCheckboxes.map((subject) => { return subject.id }) }, this.updateClasses);\n } else {\n this.setState({ subjectFilter: [] }, this.updateClasses);\n }\n }\n else if (e.target.name === \"chk1Credit\") {\n if (e.target.checked) {\n this.setState({ oneCreditOnly: true }, this.updateClasses);\n } else {\n this.setState({ oneCreditOnly: false }, this.updateClasses);\n }\n }\n else if (e.target.name === \"chkClassesStarted\") {\n if (e.target.checked) {\n this.setState({ showClassesStarted: true }, this.updateClasses);\n } else {\n this.setState({ showClassesStarted: false }, this.updateClasses);\n }\n }\n //9/28/2023 Check Newly Added Filter\n else if (e.target.name === \"chkNewlyAdded\") {\n if (e.target.checked) {\n this.setState({ showNewlyAdded: true }, this.updateClasses);\n } else {\n this.setState({ showNewlyAdded: false }, this.updateClasses);\n }\n }\n // 10/19/2023 Intersession Filter\n else if (e.target.name === \"chkIntersession\") {\n if (e.target.checked) {\n this.setState({ showIntersession: true }, this.updateClasses);\n \n \n } else {\n this.setState({ showIntersession: false }, this.updateClasses);\n }\n }\n else if (e.target.id === \"radioEurope\") {\n this.setArea(\"EUROPE\");\n }\n else if (e.target.id === \"radioDownrange\") {\n this.setArea(\"DOWNRANGE\");\n }\n else {\n console.log(e.target.name);\n console.log(e.target.id);\n console.log(e.target.value);\n console.log(e.target.checked);\n }\n }\n\n //Runs filters on classes and update this in state. React pushes updates\n //to child component automatically. Result panel get classes as prop, so\n //updates by itself.\n //\n //The approach is to first apply filters that remove as many classes as \n //possible and that are cheap. The more expensive functions will come \n //later and will have less classes left to filter through.\n updateClasses() {\n\n this.setState({ 'status': \"LOADING\" })\n let filteredClasses = this.state.unfilteredClasses;\n\n //Never show social work classes for downrange for contract compliance reasons. \n //This even applies when the ignoreFilters button is checked.\n if (this.state.area === \"DOWNRANGE\") {\n filteredClasses = filteredClasses.filter((cls) => {\n return cls.AC !== \"USAL\" && cls.AC !== \"GSAL\";\n });\n }\n\n if (!this.state.ignoreFiltersFilter) {\n\n //Term\n filteredClasses = filteredClasses.filter((cls) => {\n // Somewhere the term 2222 is getting converted to a number so convert to string to safeguard. JP 20211013\n // Need to trace back on why when selecting term, 2222 is being converted to a number when it comes over as a string.\n return cls.STRM === this.state.termFilter.toString();\n });\n\n //Career\n filteredClasses = filteredClasses.filter((cls) => {\n return this.state.careerFilter.includes(cls.AC);\n });\n\n //Session \n if (this.state.sessionFilter !== \"\") {\n filteredClasses = filteredClasses.filter((cls) => {\n return (this.state.sessionFilter.replace(/\\s/g, '').split(\",\").includes(cls.SC)\n &&\n new Date(this.state.sessions.find(s => { return s.SESSION_CODE === this.state.sessionFilter && s.STRM === this.state.termFilter }).SESSION_START_DATE) <= new Date(cls.START_DT)\n &&\n new Date(this.state.sessions.find(s => { return s.SESSION_CODE === this.state.sessionFilter && s.STRM === this.state.termFilter }).SESSION_END_DATE) >= new Date(cls.END_DT)\n );\n });\n\n }\n\n //Instruction mode\n filteredClasses = filteredClasses.filter((cls) => {\n return (this.state.instructionModeFilter.includes(\"ONLINE\") && (cls.LOC === \"WEB\" || cls.LOC === \"E994\"))\n || (this.state.instructionModeFilter.includes(\"VIRTUAL\") && cls.LOC === \"E700\")\n || (this.state.instructionModeFilter.includes(\"FIELDSTUDY\") && cls.LOC === \"E998\")\n || (this.state.instructionModeFilter.includes(\"ONSITE\") && !(cls.LOC === \"E701\") && !(cls.LOC === \"E702\") && !(cls.LOC === \"WEB\") && !(cls.LOC === \"E994\") && !(cls.LOC === \"E998\") && !(cls.LOC === \"E700\"))\n || (this.state.instructionModeFilter.includes(\"REMOTE\") && (cls.LOC === \"E701\" || cls.LOC === \"E702\"))\n ;\n });\n\n //Area\n filteredClasses = filteredClasses.filter((cls) => {\n return ((cls.LOC === \"WEB\") || (cls.LOC === \"E994\") || (cls.LOC === \"E998\") || (cls.LOC === \"E700\") || (this.state.area === \"EUROPE\" && !this.state.downrangeLocations.includes(cls.LOC)) || (this.state.area === \"DOWNRANGE\" && this.state.downrangeLocations.includes(cls.LOC)));\n });\n\n //Credits\n if (this.state.oneCreditOnly) {\n filteredClasses = filteredClasses.filter((cls) => {\n return cls.CR === 1;\n });\n }\n\n //Show classes that already started\n if (!(this.state.showClassesStarted)) {\n filteredClasses = filteredClasses.filter((cls) => {\n return Date.parse(cls.START_DT) + 86400000 >= new Date();\n });\n }\n //Show newly added classes 9/27/23 YO\n if (this.state.showNewlyAdded) {\n filteredClasses = filteredClasses.filter((cls) => {\n return cls.NT.length > 1 && cls.NT.includes(\"Newly Added!\");\n });\n }\n //Show Intersession only 10/19/23 YO\n if (this.state.showIntersession) {\n filteredClasses = filteredClasses.filter((cls) => {\n return cls.NT.length > 1 && cls.NT.includes(\"intersession\");\n \n });\n }\n\n //Start date begin\n if (this.state.startDateFirstFilter) {\n filteredClasses = filteredClasses.filter((cls) => {\n return Date.parse(cls.START_DT) + 86400000 >= this.state.startDateFirstFilter;\n });\n }\n\n //Start date end \n if (this.state.startDateSecondFilter) {\n filteredClasses = filteredClasses.filter((cls) => {\n return Date.parse(cls.START_DT) <= this.state.startDateSecondFilter;\n });\n }\n\n //Location\n filteredClasses = filteredClasses.filter((cls) => {\n return this.state.locationCheckboxes.some(location => location['id'] === cls.LOC && location['isChecked']) || (cls.LOC === \"E700\") || (cls.LOC === \"WEB\") || (cls.LOC === \"E702\") || (cls.LOC === \"E701\");\n });\n\n //Subject\n filteredClasses = filteredClasses.filter((cls) => {\n return this.state.subjectCheckboxes.some(subject => subject['id'] === cls.S && subject['isChecked']);\n });\n }\n\n if (this.state.searchFilter) {\n filteredClasses = filteredClasses.filter((cls) => {\n return (cls.S + cls.CN + \"|\" + cls.T + \"|\" + cls.FAC + \"|\" + cls.SD + \"|\" + cls.LOC_D + \"|\" + cls.CS + \"|\" + cls.CLASS_NBR + \"|\" + cls.NT).toUpperCase().includes(this.state.searchFilter.toUpperCase())\n });\n }\n\n if (filteredClasses.length === 0) {\n this.setState({ status: \"NO_CLASSES_FOUND\" });\n } else {\n this.setState({ status: \"CLASSES_FOUND\" });\n }\n\n this.setState({ classes: filteredClasses });\n }\n\n render() {\n if (this.state.status === \"LOADING\") {\n return (\n
    \n
    \n
    \n \n
    \n
    \n
    \n );\n } else {\n return (\n
    \n
    \n
    \n
    \n
    \n \n
    \n
    \n \n
    \n
    \n
    \n
    \n
    \n );\n }\n }\n}\n\nexport default App;","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","//import $ from 'jquery';\n//import Popper from 'popper.js';\nimport 'bootstrap/dist/js/bootstrap.bundle.min';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\n\n\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}