{"version":3,"sources":["services/AuthService.js","components/PageHeader.js","components/PageFooter.js","util/Helper.js","components/Form.js","services/AuthHeader.js","components/Ballot.js","components/MockUser.js","components/Confirm.js","components/Record.js","components/Login.js","components/Logout.js","components/Admin.js","components/Statement.js","components/ViewStatement.js","components/ViewCandidate.js","components/Home.js","components/Vote.js","components/Validate.js","services/PrivateRoute.js","components/ManageElection.js","components/TableDisplay.js","components/EditCandidateModal.js","components/ReviewCandidateModal.js","components/ManageCandidate.js","components/EditPartyModal.js","components/DeletePartyModal.js","components/ManageParty.js","components/EditAdminModal.js","components/DeleteAdminModal.js","components/ManageAdmin.js","components/AddBallot.js","components/AddCandidate.js","components/DragDropCandidates.js","components/DragDrop.js","components/EditElection.js","components/CandidateProfile.js","App.js","reportWebVitals.js","index.js"],"names":["getCurrentToken","JSON","parse","localStorage","getItem","isTokenValid","curToken","expires","Math","floor","Date","now","login","username","password","options","axios","post","process","headers","then","response","data","access_token","setItem","stringify","get","Authorization","res","catch","error","console","log","logout","removeItem","getCurrentUser","reloadPageAlreadyVoted","roles","includes","reloadPage","isAdmin","isStudent","isCandidate","getStarId","alreadyVoted","PageHeader","props","headerRef","useRef","ShowButton","AuthService","className","to","pathname","electionData","locked","DropdownButton","bsStyle","title","id","MenuItem","eventKey","href","style","boxShadow","ref","width","src","logo","alt","PageFooter","getFullYear","shuffleFisherYates","array","i","length","ri","random","sort","Form","ballotData","studentInfo","user","votes","setVotes","history","useHistory","handleChangeChecked","ballotId","e","writeIn","writeInId","numberChosen","ballot","allBallots","count","reduce","acc","cur","parseInt","BallotId","count_writein","WriteIn","target","checked","index","findIndex","obj","BallotCandidateId","value","splice","write_in_id","CandidateName","push","thisVote","ShowWriteIn","elements","FormControl","type","placeholder","name","defaultValue","writeInValue","onChange","arrObjects","valObj","filter","el","NewlineText","text","allCandidates","onSubmit","preventDefault","state","studentVoted","electionName","map","ballotRestrictionTypeId","classLevel","ballotRestrictionDetail","allColleges","some","college","coll","residential","ballotName","referendum","ballotDetail","FormGroup","candidate","Checkbox","ballotCandidateId","defaultChecked","elType","marginLeft","ballotCandidateName","ballotCandidatePartyName","profileApproved","rel","Button","AuthHeader","token","Ballot","useState","showBallot","setShowBallot","window","location","reload","useEffect","starId","authHeader","ShowStudent","first_Name","last_Name","item","MockUser","selected","setSelected","setOptions","isLoading","setLoading","showButton","setShowButton","tempOptions","tempVotes","ElectionId","electionId","setBallotData","Object","keys","getPrototypeOf","prototype","setStudentInfo","UUID","uuidv4","StarId","ShowMockStudent","middle_Name","tech_ID","selectedOptions","setMock","labelKey","onClick","path","disabled","marginBottom","Confirm","useLocation","curVote","x","candidateName","find","c","candidatePartyName","ButtonToolbar","goBack","Record","componentRef","ComponentToPrint","React","Component","trigger","content","current","Login","setUsername","setPassword","textAlign","event","size","controlId","ControlLabel","autoFocus","block","Logout","Admin","Statement","simpleValidator","SimpleReactValidator","showSubmit","setShowSubmit","candidateId","setCandidateId","allValid","setStatement","candidateStatement","imageFileName","setImage","image_preview","setRerenderListings","initImage","image_file","statement","imageTitle","setImageTitle","image","display","marginRight","image_as_base64","URL","createObjectURL","files","image_as_files","extension","replace","image_ext","autoComplete","class","componentClass","height","backgroundColor","CandidateStatement","CandidateStatus","put","imageAuthHeader","formData","FormData","append","err","ViewStatement","Grid","Row","Col","paddingBottom","candidateFirstName","candidateLastName","marginTop","CandidateProfile","Home","ShowText","Vote","isNotLocked","setIsNotLocked","isNotStudent","setIsNotStudent","setTimeout","res2","activeStatus","Validate","studentUuid","setStudentUuid","showResult","setShowResult","voteResults","setVoteResults","ballotNameShow","onFocus","select","onInput","PrivateRoute","component","rest","render","ManageElection","colorGradient","Gradient","studentCnt","setStudentCnt","votesCastCnt","setVotesCastCnt","csvData","setCsvData","chartData","setChartData","editStartDate","setEditStartDate","editEndDate","setEditEndDate","startDate","setStartDate","endDate","setEndDate","lock","setLock","cnt","votesCast","undefined","formatDate","startActiveAt","endActiveAt","arrRes","newObj","chldArr","role","bId","longest","longestCur","forEach","bal","setGradient","setMidpoint","colorArr","getArray","ic","curBallotName","ballotArr","chldObj","deleteAll","a","confirm","delete","updateElection","updElection","handleChangeLock","thisLock","tempElectionData","StartActiveAt","EndActiveAt","Locked","setElectionData","handlePost","election","format","parseDate","inputProps","onDayChange","day","dateObject","moment","set","toDate","toISOString","handleChangeStartDate","Feedback","onDoubleClick","handleChangeEndDate","verticalAlign","chartType","values","legend","position","chartArea","TableDisplay","tableHeading","heading","tableData","EditCandidateModal","initValue","ballotCandidateCandidateName","setUser","hasChanged","setHasChanged","setCandidateStarId","cCandidateStarId","modalProps","Modal","aria-labelledby","centered","Header","closeButton","Title","Body","mode","setRerender","doAction","varName","handleChange","onBlur","showMessageFor","message","CandidateEmail","candidateEmail","onHide","Footer","ReviewCandidateModal","candidateStatus","float","ManageCandidate","displayUsers","setDisplayUsers","modalShow","setModalShow","modalReviewShow","setModalReviewShow","firstName","lastName","email","setMode","rerender","cancel","unitList","val","statusIcon","emailStatus","candidateOptions","onSave","split","trim","elStarId","CandidateFirstName","CandidateLastName","saveEmails","onCancel","saveButtonLabel","cancelButtonLabel","attributes","instructions","candidateImageId","show","EditPartyModal","setBallotCandidatePartyName","cBallotCandidatePartyName","ballotCandidatePartyId","DeletePartyModal","ManageParty","initUser","modalDeleteShow","setModalDeleteShow","showModal","unitType","EditAdminModal","setStarId","setFirstName","setLastName","setEmail","adminId","debounceCandidates","useCallback","_","debounce","cStarId","cFirstName","cLastName","cEmail","cParam","handleChangeStarId","DeleteAdminModal","ManageAdmin","userId","AddBallot","partyData","ballotRestrictions","newBallot","ShowBallot","paddingTop","ballotRestrictionDescription","ballotRestrictionDetailId","AddCandidate","initState","newCandidate","setNewCandidate","handleAddCandidate","evt","isNaN","temp","ShowAddCandidate","DragDropCandidates","k","initial","onChangeHandleCandidates","newValue","updBallot","setState","prevState","candidates","handleFocus","onDragEnd","result","destination","source","list","startIndex","endIndex","Array","from","removed","prev","outerIndex","reorder","droppableId","provided","innerRef","droppableProps","draggableId","draggableProps","dragHandleProps","paddingLeft","DragDrop","stateVars","setPartyData","setBallotRestrictions","updateBallot","setUpdateBallot","newCandidateList","setNewCandidateList","isLocked","setIsLocked","onDelete","tempBallotData","ballotIndex","reorderDelete","tempData","j","sortOrder","onChangeHandle","debounceRestrictions","ballotRestrictionId","handleUpdateBallot","foundIndex","referendumCandidates","handleReferendum","rows","onChangeHandleRestrictions","okButtonStyle","BallotList","memo","ballots","BallotApp","output","EditElection","showAddBallot","newBallotLoc","BallotName","NumberChosen","SortOrder","Referendum","newBallotRestrictions","BallotRestrictionTypeId","BallotRestrictionDetail","resBallot","addNewBallot","setCandidates","match","params","ShowCandidates","isArray","listItems","close","App","mock","setrerender","exact","ViewCandidate","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.3564f85c.chunk.js","sourcesContent":["import axios from \"axios\";\r\n\r\nconst login = (username, password) => {\r\n let options = {\r\n 'username': username, \r\n 'password': password\r\n };\r\n return axios\r\n .post(\r\n process.env.REACT_APP_API_BASE +\r\n 'Authenticate', options, {\r\n headers: { 'content-type': 'application/json'},\r\n }\r\n )\r\n .then((response) => {\r\n if (response.data.access_token) {\r\n localStorage.setItem('token', JSON.stringify(response.data));\r\n localStorage.setItem('StarId', username);\r\n return axios\r\n .get(process.env.REACT_APP_API_BASE + 'voted/' + username, {\r\n headers: { Authorization: 'Bearer ' + response.data.access_token },\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n localStorage.setItem('studentVoted', true);\r\n }\r\n })\r\n .catch((error) => {\r\n console.log('error ', error);\r\n //localStorage.removeItem(\"token\");\r\n });\r\n }\r\n return response.data;\r\n });\r\n};\r\n\r\nconst logout = () => {\r\n localStorage.removeItem(\"token\");\r\n localStorage.removeItem(\"user\");\r\n localStorage.removeItem(\"options\");\r\n localStorage.removeItem(\"StarId\");\r\n};\r\n\r\nconst getCurrentToken = () => {\r\n return JSON.parse(localStorage.getItem(\"token\"));\r\n};\r\n\r\nconst getCurrentUser= () => {\r\n return JSON.parse(localStorage.getItem(\"user\"));\r\n};\r\n\r\nconst getStarId= () => {\r\n return localStorage.getItem(\"StarId\");\r\n};\r\n\r\nconst alreadyVoted= () => {\r\n return JSON.parse(localStorage.getItem(\"studentVoted\"));\r\n};\r\n\r\nconst isAdmin= () => {\r\n return isTokenValid() && getCurrentToken().roles.includes('Admin');\r\n};\r\n\r\nconst isStudent= () => {\r\n return isTokenValid() && getCurrentToken().roles.includes('Student');\r\n};\r\n\r\nconst isCandidate= () => {\r\n return isTokenValid() && getCurrentToken().roles.includes('Candidate');\r\n};\r\n\r\nconst reloadPageAlreadyVoted= () => {\r\n if (getCurrentToken().roles.includes('Admin')){\r\n return '/mock';\r\n } else {\r\n return '/validate';\r\n }\r\n}\r\n\r\nconst reloadPage= () => {\r\n if (getCurrentToken().roles.includes('Admin')){\r\n return '/mock';\r\n } else {\r\n return '/';\r\n }\r\n}\r\n\r\nconst isTokenValid = () => {\r\n const curToken = JSON.parse(localStorage.getItem(\"token\"));\r\n if (curToken !== null) {\r\n if (curToken.expires > Math.floor(Date.now() /1000)) {\r\n return true;\r\n } \r\n }\r\n return false;\r\n}\r\n\r\nexport default {\r\n login,\r\n logout,\r\n getCurrentToken,\r\n isTokenValid,\r\n getCurrentUser,\r\n reloadPageAlreadyVoted,\r\n reloadPage,\r\n isAdmin,\r\n isStudent,\r\n isCandidate,\r\n getStarId,\r\n alreadyVoted\r\n};","import React, {useRef} from 'react';\r\nimport logo from 'mnsu-webapp-core/images/mnsu-logo.png'\r\nimport { Link } from 'react-router-dom';\r\nimport AuthService from '../services/AuthService';\r\nimport { DropdownButton, MenuItem } from 'react-bootstrap';\r\n\r\nconst PageHeader = (props) => {\r\n let headerRef = useRef(null);\r\n const headerStyle = {\r\n boxShadow: '0 0 10px rgba(0,0,0,0.5)',\r\n };\r\n const ShowButton = () => {\r\n return AuthService.isTokenValid() ? (\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 \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 PageHeader;","import React from 'react';\r\n\r\nconst PageFooter = (props) => {\r\n\r\n return(\r\n \r\n );\r\n};\r\n\r\n\r\nexport default PageFooter;","import moment from 'moment';\r\n\r\nexport const findProp =(obj, key, out) => {\r\n let i,\r\n proto = Object.prototype,\r\n ts = proto.toString,\r\n hasOwn = proto.hasOwnProperty.bind(obj);\r\n\r\n if ('[object Array]' !== ts.call(out)) out = [];\r\n\r\n for (i in obj) {\r\n if (hasOwn(i)) {\r\n if (i === key && obj[i] !== '') {\r\n let tempObj = {[key]: obj[i]}\r\n out.some(el => {\r\n el[key] === tempObj[key] && out.push(tempObj );\r\n return '';\r\n }) \r\n } else if ('[object Array]' === ts.call(obj[i]) || '[object Object]' === ts.call(obj[i])) {\r\n findProp(obj[i], key, out);\r\n }\r\n }\r\n }\r\n\r\n return out;\r\n}\r\n\r\nexport const shuffleFisherYates = (array) => {\r\n let i = array.length;\r\n if (i > 2) {\r\n while (i--) {\r\n const ri = Math.floor(Math.random() * i);\r\n [array[i], array[ri]] = [array[ri], array[i]];\r\n }\r\n } else {\r\n array.sort(() => Math.random() - 0.5);\r\n }\r\n return array;\r\n};\r\n\r\nexport const formatDate = (date) => {\r\n return moment.utc(date).format('MM/DD/YYYY');\r\n}\r\n","import React from 'react';\r\nimport { Button, Checkbox, FormGroup, FormControl } from 'react-bootstrap';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { shuffleFisherYates } from '../util/Helper';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst Form = ({ ballotData, user, studentInfo, votes, setVotes }) => {\r\n let history = useHistory();\r\n\r\n /* submit votes and go to confirmation, votes are not saved yet */\r\n const onSubmit = (e) => {\r\n e.preventDefault();\r\n // todo - send data somewhere\r\n history.push({\r\n pathname: '/confirm',\r\n state: {\r\n // location state\r\n votes: votes,\r\n ballotData: ballotData,\r\n studentInfo: studentInfo,\r\n studentVoted: true,\r\n },\r\n });\r\n };\r\n\r\n /* Check that number of selections do not exceed limit */\r\n const handleChangeChecked = function (\r\n ballotId,\r\n e,\r\n writeIn,\r\n writeInId,\r\n numberChosen\r\n ) {\r\n let ballot = votes.allBallots;\r\n const count = ballot.reduce(\r\n (acc, cur) =>\r\n parseInt(cur.BallotId) === parseInt(ballotId) ? ++acc : acc,\r\n 0\r\n );\r\n const count_writein = ballot.reduce(\r\n (acc, cur) =>\r\n parseInt(cur.BallotId) === parseInt(ballotId) && cur.WriteIn\r\n ? ++acc\r\n : acc,\r\n 0\r\n );\r\n //remove non selected\r\n if (!writeIn && !e.target.checked) {\r\n let index = ballot.findIndex(\r\n (obj) =>\r\n obj.BallotId === ballotId &&\r\n obj.BallotCandidateId === parseInt(e.target.value)\r\n );\r\n if (index !== -1) {\r\n ballot.splice(index, 1);\r\n }\r\n }\r\n\r\n if (count >= numberChosen) {\r\n if (writeIn) {\r\n let index = ballot.findIndex(\r\n (obj) => obj.BallotId === ballotId && obj.write_in_id === writeInId\r\n );\r\n if (index < 0) {\r\n e.target.value = '';\r\n } else {\r\n if (e.target.value !== '') {\r\n ballot[index] = {\r\n BallotId: ballotId,\r\n CandidateName: e.target.value,\r\n BallotCandidateId: null,\r\n WriteIn: writeIn,\r\n write_in_id: writeInId,\r\n };\r\n } else {\r\n ballot.splice(index, 1);\r\n }\r\n }\r\n } else {\r\n e.target.checked = false;\r\n }\r\n } else {\r\n if (writeIn && count_writein < numberChosen) {\r\n if (ballot.length) {\r\n let index = ballot.findIndex(\r\n (obj) =>\r\n obj.BallotId === ballotId &&\r\n obj.BallotCandidateId === null &&\r\n obj.write_in_id === writeInId\r\n );\r\n if (index < 0) {\r\n ballot.push({\r\n BallotId: ballotId,\r\n CandidateName: e.target.value,\r\n BallotCandidateId: null,\r\n WriteIn: writeIn,\r\n write_in_id: writeInId,\r\n });\r\n } else {\r\n ballot[index] = {\r\n BallotId: ballotId,\r\n CandidateName: e.target.value,\r\n BallotCandidateId: null,\r\n WriteIn: writeIn,\r\n write_in_id: writeInId,\r\n };\r\n }\r\n } else {\r\n ballot.push({\r\n BallotId: ballotId,\r\n CandidateName: e.target.value,\r\n BallotCandidateId: null,\r\n WriteIn: writeIn,\r\n write_in_id: writeInId,\r\n });\r\n }\r\n } else {\r\n if (e.target.checked) {\r\n if (ballot.length) {\r\n let index = ballot.findIndex(\r\n (obj) =>\r\n obj.BallotId === ballotId &&\r\n obj.BallotCandidateId === parseInt(e.target.value)\r\n );\r\n if (index < 0) {\r\n ballot.push({\r\n BallotId: ballotId,\r\n CandidateName: null,\r\n BallotCandidateId: parseInt(e.target.value),\r\n WriteIn: writeIn,\r\n });\r\n }\r\n } else {\r\n ballot.push({\r\n BallotId: ballotId,\r\n CandidateName: null,\r\n BallotCandidateId: parseInt(e.target.value),\r\n WriteIn: writeIn,\r\n });\r\n }\r\n } else {\r\n let index = ballot.findIndex(\r\n (obj) =>\r\n obj.BallotId === ballotId &&\r\n obj.BallotCandidateId === parseInt(e.target.value)\r\n );\r\n if (index !== -1) {\r\n ballot.splice(index, 1);\r\n }\r\n }\r\n }\r\n }\r\n\r\n let thisVote = votes;\r\n thisVote.allBallots = ballot;\r\n setVotes(thisVote);\r\n };\r\n\r\n /* Show write ins */\r\n const ShowWriteIn = (data) => {\r\n let elements = [];\r\n for (let i = 1; i <= data.ballot.numberChosen; i++) {\r\n elements.push(\r\n <>\r\n \r\n handleChangeChecked(\r\n data.ballot.ballotId,\r\n e,\r\n 1,\r\n 'write_' + i + '_' + data.ballot.ballotId,\r\n data.ballot.numberChosen\r\n )\r\n }\r\n />\r\n
\r\n \r\n );\r\n }\r\n return elements;\r\n };\r\n\r\n /* saved votes from back navigation */\r\n const checkExists = (arrObjects, value, elType) => {\r\n if (typeof arrObjects !== 'undefined') {\r\n return arrObjects.some(function (el) {\r\n return el[elType] === value;\r\n })\r\n ? 'checked'\r\n : '';\r\n } else {\r\n return;\r\n }\r\n };\r\n\r\n /* Get value of write in candidate */\r\n const writeInValue = (arrObjects, i, ballotId) => {\r\n const valObj = arrObjects.filter((el) => {\r\n return el.write_in_id === 'write_' + i + '_' + ballotId;\r\n })[0];\r\n return valObj ? valObj.CandidateName : '';\r\n };\r\n\r\n const NewlineText = (props) => {\r\n const text = props.text;\r\n return
{text}
;\r\n };\r\n\r\n return ballotData.allBallots[0].allCandidates ? (\r\n
\r\n

{ballotData.electionName}

\r\n {ballotData.allBallots.map((ballot) => {\r\n if (\r\n ballot.ballotRestrictionTypeId === 1 ||\r\n (ballot.ballotRestrictionTypeId === 2 &&\r\n studentInfo.classLevel === ballot.ballotRestrictionDetail) ||\r\n (parseInt(ballot.ballotRestrictionTypeId) === 3 &&\r\n studentInfo.classLevel !== 'G' &&\r\n studentInfo.allColleges.some(\r\n (college) => college.coll === ballot.ballotRestrictionDetail\r\n )) ||\r\n (ballot.ballotRestrictionTypeId === 4 &&\r\n studentInfo.residential === ballot.ballotRestrictionDetail)\r\n ) {\r\n return (\r\n <>\r\n

{ballot.ballotName}

\r\n {ballot.referendum && ballot.ballotDetail ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n You may vote for{' '}\r\n \r\n {ballot.numberChosen > 1\r\n ? 'up to ' + ballot.numberChosen\r\n : 'one'}\r\n {' '}\r\n of the following choices{ballot.writeIn ? ' or write-in' : ''}.\r\n \r\n {shuffleFisherYates(ballot.allCandidates).map((candidate) => {\r\n return (\r\n <>\r\n \r\n handleChangeChecked(\r\n ballot.ballotId,\r\n e,\r\n 0,\r\n 0,\r\n ballot.numberChosen\r\n )\r\n }\r\n >\r\n
\r\n {candidate.ballotCandidateName}{' '}\r\n {!ballot.referendum\r\n ? ' - ' +\r\n (candidate.ballotCandidatePartyName\r\n ? candidate.ballotCandidatePartyName\r\n : 'Independent')\r\n : ''}\r\n {candidate.profileApproved ? (\r\n \r\n

\r\n \r\n [Candidate Statement]\r\n \r\n

\r\n
\r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n \r\n );\r\n })}\r\n {ballot.writeIn && !ballot.referendum ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n \r\n );\r\n } else return false;\r\n })}\r\n
\r\n \r\n
\r\n \r\n ) : (\r\n 'Loading...'\r\n );\r\n};\r\nexport default Form;\r\n","export default function AuthHeader() {\r\n const token = JSON.parse(localStorage.getItem('token')); \r\n //console.log(token)\r\n if (token && token.access_token) {\r\n return { Authorization: 'Bearer ' + token.access_token };\r\n } else {\r\n return {};\r\n }\r\n }","import React, { useState, useEffect } from \"react\";\r\nimport Form from \"./Form\";\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport axios from 'axios';\r\nimport AuthService from '../services/AuthService';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst Ballot = (props) => {\r\n const [user,] = useState([]);\r\n const [showBallot,setShowBallot] = useState(false);\r\n let history = useHistory();\r\n const reloadPage = AuthService.reloadPage();\r\n if(typeof props.studentInfo.allColleges === 'undefined'){\r\n history.push(reloadPage);\r\n window.location.reload();\r\n }\r\n\r\n /* check if mocked student has voted */\r\n useEffect(() => {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'voted/'+ props.studentInfo.starId,{ headers: authHeader() }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n setShowBallot(false);\r\n history.push(\"/mock\");\r\n } else {\r\n setShowBallot(true);\r\n }\r\n });\r\n }, []);\r\n\r\n const ShowStudent = ()=> {\r\n if(props.studentInfo) {\r\n return (\r\n <>\r\n
\r\n

Voter Info

\r\n
{props.studentInfo.first_Name} {props.studentInfo.last_Name}
\r\n
{props.studentInfo.residential === 'O'? 'Off-Campus':'On-Campus'} Resident
\r\n
{props.studentInfo.classLevel==='U'? 'Undergraduate':\"Graduate\"}
\r\n
{props.studentInfo.allColleges.map(function(item, index) { \r\n return (item['collegeDescription'] !== '') ? ((index < (props.studentInfo.allColleges.length -1)) ? item['collegeDescription']+', ' : item['collegeDescription']) : '';\r\n })}
\r\n
\r\n
\r\n \r\n )\r\n } else {\r\n return (
Pick a student to mock
)\r\n }\r\n}\r\n\r\nreturn (showBallot ? (\r\n <>\r\n \r\n
\r\n ) : (\r\n

Loading...

\r\n )\r\n ); \r\n}\r\n\r\nexport default Ballot;","import React, { useState, useEffect } from 'react';\r\nimport authHeader from '../services/AuthHeader';\r\nimport axios from 'axios';\r\nimport { Typeahead } from 'react-bootstrap-typeahead';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport './style.css';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { Button } from 'react-bootstrap';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nconst MockUser = (props) => {\r\n const [selected, setSelected] = useState([]);\r\n const [options, setOptions] = useState([]);\r\n const [isLoading, setLoading] = useState(true);\r\n const [showButton, setShowButton] = useState(false);\r\n\r\n localStorage.removeItem('studentVoted');\r\n\r\n let history = useHistory();\r\n\r\n const nextPath = (path) => {\r\n history.push(path);\r\n };\r\n\r\n /* Get election data */\r\n const tempOptions = JSON.parse(localStorage.getItem('options')) || {};\r\n let tempVotes = props.votes;\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'election/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n tempVotes.ElectionId = res.data.electionId;\r\n props.setBallotData(res.data);\r\n setLoading(false);\r\n });\r\n }, []);\r\n\r\n /* if tempOptions from local storage is empty get data from API and store in local storage */\r\n useEffect(() => {\r\n if (\r\n tempOptions &&\r\n Object.keys(tempOptions).length === 0 &&\r\n Object.getPrototypeOf(tempOptions) === Object.prototype\r\n ) {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'mockstudent', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n setOptions(res.data);\r\n localStorage.setItem('options', JSON.stringify(res.data));\r\n setLoading(false);\r\n });\r\n } else {\r\n setOptions(tempOptions);\r\n setLoading(false);\r\n }\r\n }, []);\r\n\r\n /* get selected student info */\r\n useEffect(() => {\r\n if (selected.length) {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'studentinfo/' + selected[0].starId,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => {\r\n props.setStudentInfo(res.data);\r\n setShowButton(true);\r\n });\r\n }\r\n }, [selected]);\r\n\r\n /* set state of votes */\r\n useEffect(() => {\r\n if (selected.length) {\r\n tempVotes.UUID = uuidv4();\r\n tempVotes.allBallots = [];\r\n tempVotes.StarId = selected[0].starId;\r\n props.setVotes(tempVotes);\r\n }\r\n }, [selected]);\r\n\r\n if (isLoading) {\r\n return
Loading...
;\r\n }\r\n /* select student from populated list */\r\n const handleChangeTypeahead = function (selectedOptions) {\r\n setSelected(selectedOptions);\r\n if (selectedOptions.length) {\r\n props.setMock(selectedOptions[0]);\r\n }\r\n };\r\n /* set data for mocked student */\r\n const ShowMockStudent = () => {\r\n if (selected.length) {\r\n return (\r\n <>\r\n
\r\n

Student to Mock

\r\n
First Name: {selected[0].first_Name}
\r\n
Last Name: {selected[0].last_Name}
\r\n
Middle Name: {selected[0].middle_Name}
\r\n
Star ID: {selected[0].starId}
\r\n
Tech ID: {selected[0].tech_ID}
\r\n
\r\n
\r\n \r\n );\r\n } else {\r\n return
Pick a student to mock
;\r\n }\r\n };\r\n\r\n return (\r\n <>\r\n \r\n
\r\n \r\n nextPath('/ballot')}\r\n disabled={showButton && !props.electionData[0].locked ? '' : true}\r\n style={{ marginBottom: '20px' }}\r\n >\r\n Mock User\r\n \r\n {props.electionData[0].locked ? (\r\n
\r\n Election is active, Mocking voters is disabled\r\n
\r\n ) : (\r\n ''\r\n )}\r\n \r\n );\r\n};\r\n\r\nexport default MockUser;\r\n","import React, { useState, useEffect } from \"react\";\r\nimport {\r\n Button,\r\n ButtonToolbar\r\n } from 'react-bootstrap';\r\nimport { useLocation } from \"react-router-dom\";\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport axios from 'axios';\r\nimport AuthService from '../services/AuthService';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst Confirm = () => {\r\n let history = useHistory();\r\n const location = useLocation();\r\n const reloadPage = AuthService.reloadPage();\r\n const reloadPageAlreadyVoted = AuthService.reloadPageAlreadyVoted();\r\n\r\n if (AuthService.alreadyVoted()) {\r\n history.push(reloadPageAlreadyVoted);//reloadPageAlreadyVoted\r\n window.location.reload();\r\n }\r\n\r\n if(typeof location.state === 'undefined'){\r\n history.push(reloadPage);\r\n window.location.reload();\r\n }\r\n const studentVoted = location.state.studentVoted;\r\n const votes = location.state.votes;\r\n const ballotData = location.state.ballotData;\r\n const studentInfo = location.state.studentInfo;\r\n const [showBallot,setShowBallot] = useState(false);\r\n\r\n useEffect(() => {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'voted/'+ studentInfo.starId,{ headers: authHeader() }\r\n )\r\n .then((res) => {\r\n if (res.data) {\r\n setShowBallot(false);\r\n history.push(\"/\");\r\n } else {\r\n setShowBallot(true);\r\n }\r\n });\r\n }, []);\r\n\r\n const onSubmit = (e) => {\r\n e.preventDefault();\r\n };\r\n\r\n const handleVote = () => {\r\n axios\r\n .post(process.env.REACT_APP_API_BASE + 'voteelectionballot/', votes, {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n if (localStorage.getItem('studentVoted') === null) {\r\n localStorage.setItem('studentVoted', studentVoted);\r\n }\r\n\r\n history.push({\r\n pathname: '/record',\r\n state: {\r\n // location state\r\n votes: votes,\r\n ballotData: ballotData,\r\n studentInfo: studentInfo,\r\n },\r\n });\r\n });\r\n };\r\n\r\n return (ballotData && showBallot ? (\r\n \r\n

{ballotData.electionName}

\r\n

Please Confirm Your Votes

\r\n {ballotData.allBallots\r\n .map((ballot) => { \r\n if(ballot.ballotRestrictionTypeId === 1\r\n || (ballot.ballotRestrictionTypeId === 2 && studentInfo.classLevel === ballot.ballotRestrictionDetail)\r\n || (parseInt(ballot.ballotRestrictionTypeId) === 3 && studentInfo.classLevel !== 'G' && studentInfo.allColleges.some(college => college.coll === ballot.ballotRestrictionDetail))\r\n || (ballot.ballotRestrictionTypeId === 4 && studentInfo.residential === ballot.ballotRestrictionDetail)\r\n ) { \r\n let elements = [];\r\n let curVote = votes.allBallots.filter(x => x.BallotId === ballot.ballotId);\r\n if (curVote) {\r\n /*\r\n{candidate.ballotCandidateName} {!ballot.referendum ? ' - ' + (candidate.ballotCandidatePartyName ? candidate.ballotCandidatePartyName : 'Independent') : ''}\r\n */\r\n for (let i=0; i < curVote.length; i++) {\r\n if (curVote[i].WriteIn) {\r\n elements.push(
{curVote[i].CandidateName} - Write In
);\r\n } else {\r\n let candidateName = ballot.allCandidates.find(c=> c.ballotCandidateId === curVote[i].BallotCandidateId).ballotCandidateName;\r\n if(!ballot.referendum) {\r\n let candidatePartyName = ballot.allCandidates.find(c=> c.ballotCandidateId === curVote[i].BallotCandidateId).ballotCandidatePartyName;\r\n candidatePartyName = candidatePartyName === '' ? 'Independent' : candidatePartyName;\r\n elements.push(
{candidateName} - {candidatePartyName}
);\r\n } else {\r\n elements.push(
{candidateName}
);\r\n }\r\n }\r\n }\r\n } \r\n return (\r\n <>\r\n
{ballot.ballotName}
\r\n { elements.length ? elements : '--Abstained--'}\r\n \r\n );\r\n } else return false;\r\n })\r\n }\r\n \r\n
\r\n \r\n history.goBack()}\r\n >\r\n Back\r\n \r\n handleVote()}\r\n >\r\n Submit My Vote\r\n \r\n \r\n
\r\n \r\n ) : 'Loading...'\r\n ); \r\n};\r\nexport default Confirm;","import React, { useRef } from \"react\";\r\nimport {\r\n Button\r\n } from 'react-bootstrap';\r\nimport { useLocation } from \"react-router-dom\";\r\nimport AuthService from '../services/AuthService';\r\nimport { useHistory } from 'react-router-dom';\r\nimport ReactToPrint from \"react-to-print\";\r\n\r\nconst Record = () => {\r\n let history = useHistory();\r\n const location = useLocation();\r\n const componentRef = useRef();\r\n const reloadPage = AuthService.reloadPage();\r\n if(typeof location.state === 'undefined'){\r\n history.push(reloadPage);\r\n window.location.reload();\r\n }\r\n const votes = location.state.votes;\r\n const ballotData = location.state.ballotData;\r\n const studentInfo = location.state.studentInfo;\r\n\r\n\r\n/* const onSubmit = (e) => {\r\n e.preventDefault();\r\n }; */\r\n\r\n class ComponentToPrint 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 \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {ballotData.allBallots.map((ballot) => {\r\n if (\r\n ballot.ballotRestrictionTypeId === 1 ||\r\n (ballot.ballotRestrictionTypeId === 2 &&\r\n studentInfo.classLevel ===\r\n ballot.ballotRestrictionDetail) ||\r\n (parseInt(ballot.ballotRestrictionTypeId) === 3 &&\r\n studentInfo.classLevel !== 'G' &&\r\n studentInfo.allColleges.some(\r\n (college) =>\r\n college.coll === ballot.ballotRestrictionDetail\r\n )) ||\r\n (ballot.ballotRestrictionTypeId === 4 &&\r\n studentInfo.residential ===\r\n ballot.ballotRestrictionDetail)\r\n ) {\r\n let elements = [];\r\n let curVote = votes.allBallots.filter(\r\n (x) => x.BallotId === ballot.ballotId\r\n );\r\n if (curVote) {\r\n for (let i = 0; i < curVote.length; i++) {\r\n if (curVote[i].WriteIn) {\r\n elements.push(\r\n \r\n \r\n \r\n );\r\n } else {\r\n let candidateName = ballot.allCandidates.find(\r\n (c) =>\r\n c.ballotCandidateId ===\r\n curVote[i].BallotCandidateId\r\n ).ballotCandidateName;\r\n if (!ballot.referendum) {\r\n let candidatePartyName = ballot.allCandidates.find(\r\n (c) =>\r\n c.ballotCandidateId ===\r\n curVote[i].BallotCandidateId\r\n ).ballotCandidatePartyName;\r\n candidatePartyName =\r\n candidatePartyName === ''\r\n ? 'Independent'\r\n : candidatePartyName;\r\n elements.push(\r\n \r\n \r\n \r\n );\r\n } else {\r\n elements.push(\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 {elements.length ? elements : '--Abstained--'}\r\n \r\n \r\n \r\n \r\n );\r\n } else return false;\r\n })}\r\n \r\n
\r\n

{ballotData.electionName}

\r\n
This is a record of your votes
\r\n Random ID: {votes.UUID}\r\n
\r\n We do not match this ID to any identifier, your vote is\r\n anonymous.\r\n
\r\n This ID can be used to check the integrity of your vote\r\n
\r\n Print this page for your record. Your ID could not be looked\r\n up after this page is closed\r\n
\r\n
\r\n
{curVote[i].CandidateName} - Write In
\r\n {candidateName} - {candidatePartyName}\r\n
{candidateName}
\r\n {ballot.ballotName}\r\n
\r\n
\r\n
\r\n \r\n );\r\n } \r\n }\r\n\r\n return (ballotData ? (\r\n <>\r\n \r\n
\r\n Print this out!}\r\n content={() => componentRef.current}\r\n />\r\n
\r\n \r\n ) : 'Loading...'\r\n ); \r\n};\r\nexport default Record;","import React, { useState } from \"react\";\r\nimport {Button, Form, FormGroup, FormControl, ControlLabel} from 'react-bootstrap';\r\nimport AuthService from \"../services/AuthService\";\r\nimport {\r\n useHistory\r\n } from 'react-router-dom';\r\nexport default function Login() {\r\n const [username, setUsername] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n let history = useHistory();\r\n function validateForm() {\r\n return username.length > 0 && password.length > 0;\r\n }\r\n\r\n function handleSubmit(event) {\r\n event.preventDefault();\r\n\r\n AuthService.login(username, password).then(\r\n () => {\r\n history.push(\"/\");\r\n window.location.reload();\r\n },\r\n (error) => {\r\n console.log('error ', error);\r\n }\r\n );\r\n }\r\n\r\n return (\r\n
\r\n

Voting Booth

\r\n
\r\n
\r\n \r\n Username\r\n setUsername(e.target.value)}\r\n />\r\n \r\n \r\n Password\r\n setPassword(e.target.value)}\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 {\r\n useHistory\r\n} from 'react-router-dom';\r\n\r\nexport default function Logout() {\r\n let history = useHistory();\r\n localStorage.removeItem(\"token\");\r\n localStorage.removeItem(\"StarId\");\r\n localStorage.removeItem(\"user\");\r\n history.push(\"/\");\r\n window.location.reload();\r\n return (\r\n

Log out

\r\n );\r\n}","import React from \"react\";\r\n\r\nconst Admin = (props) => {\r\n \r\n\r\nreturn (\r\n <>\r\n
\r\n {/*
    \r\n
  • Home
  • \r\n
  • Mock User
  • \r\n
  • Manage Elections
  • \r\n
*/}\r\n

Welcome to the Voting Booth

\r\n

As an admin, you have the ability to add, delete and edit ballots and candidates.
\r\n Please use the menu in the header to navigate to where you need to be.

\r\n

With great power comes great responsibilities, if you mess up, please submit a ticket.

\r\n
\r\n \r\n ); \r\n}\r\n\r\nexport default Admin;","import React, { useState, useRef, useEffect } from 'react';\r\nimport axios from 'axios';\r\nimport {\r\n ControlLabel,\r\n Button,\r\n Form,\r\n FormGroup,\r\n FormControl,\r\n} from 'react-bootstrap';\r\nimport authHeader from '../services/AuthHeader';\r\nimport SimpleReactValidator from 'simple-react-validator';\r\nimport AuthService from '../services/AuthService';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\nconst Statement = (props) => {\r\n let history = useHistory();\r\n const simpleValidator = useRef(\r\n new SimpleReactValidator({ className: 'text-danger' })\r\n );\r\n const [showSubmit, setShowSubmit] = useState(true);\r\n const [candidateId, setCandidateId] = useState();\r\n let allValid = simpleValidator.current.allValid();\r\n useEffect(() => {\r\n if (allValid) {\r\n setShowSubmit(false);\r\n } else {\r\n setShowSubmit(true);\r\n }\r\n }, [allValid]);\r\n\r\n /* Get candidate statement and image */\r\n useEffect(() => {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE +\r\n 'candidateprofile/' +\r\n AuthService.getStarId(),\r\n { headers: authHeader() }\r\n )\r\n .then((res) => {\r\n setStatement(res.data.candidateStatement);\r\n if (res.data.imageFileName !== null && res.data.imageFileName !== '') {\r\n setImage({\r\n image_preview:\r\n process.env.REACT_APP_API_BASE +\r\n 'imageview/' +\r\n res.data.candidateId +\r\n '_' +\r\n res.data.imageFileName,\r\n });\r\n }\r\n });\r\n }, []);\r\n\r\n /* Get candidate Id */\r\n useEffect(() => {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE +\r\n 'candidateid/' +\r\n AuthService.getStarId(),\r\n { headers: authHeader() }\r\n )\r\n .then((res) => {\r\n setCandidateId(res.data.candidateId);\r\n });\r\n }, []);\r\n\r\n const { setRerenderListings, ...modalProps } = props;\r\n const initImage = {\r\n image_file: null,\r\n image_preview: '',\r\n };\r\n const [statement, setStatement] = useState('');\r\n const [imageTitle, setImageTitle] = useState('');\r\n const [image, setImage] = useState(initImage);\r\n\r\n // Image Title Handler\r\n const handleStatement = (e) => {\r\n setStatement(e.target.value);\r\n };\r\n\r\n // Image Preview Handler\r\n const handleImagePreview = (e) => {\r\n let image_as_base64 = URL.createObjectURL(e.target.files[0]);\r\n let image_as_files = e.target.files[0];\r\n var extension = e.target.files[0].type.replace(/(.*)\\//g, '');\r\n setImageTitle(e.target.files[0].name);\r\n setImage({\r\n image_preview: image_as_base64,\r\n image_file: image_as_files,\r\n image_ext: extension,\r\n });\r\n };\r\n\r\n // Image/File Submit Handler\r\n const handleSubmitFile = (e) => {\r\n e.preventDefault();\r\n\r\n const candidate = {\r\n BallotCandidateId: candidateId,\r\n CandidateStatement: statement,\r\n CandidateStatus: 'u',\r\n };\r\n\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE + 'candidatestatement/' + candidateId,\r\n candidate,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => console.log('success ', res.data));\r\n\r\n let imageAuthHeader = authHeader();\r\n imageAuthHeader['Content-type'] = 'multipart/form-data';\r\n if (image.image_file !== null) {\r\n let formData = new FormData();\r\n formData.append('CandidateId', candidateId);\r\n formData.append('ImageBlob', image.image_file);\r\n formData.append('ImageFileName', imageTitle);\r\n formData.append('ImageFileType', 'image/' + image.image_ext);\r\n\r\n axios\r\n .post(process.env.REACT_APP_API_BASE + 'imageupload/', formData, {\r\n headers: imageAuthHeader,\r\n })\r\n .then((res) => {\r\n setImage(initImage);\r\n setImageTitle('');\r\n history.push({\r\n pathname: '/viewcandidate',\r\n });\r\n })\r\n .catch((err) => {\r\n console.log(err);\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 Statement:\r\n \r\n \r\n \r\n Save\r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default Statement;\r\n","import React, { useState, useEffect } from 'react';\r\nimport axios from 'axios';\r\nimport authHeader from '../services/AuthHeader';\r\nimport { Grid, Row, Col } from 'react-bootstrap';\r\n\r\nconst ViewStatement = (props) => {\r\n const [image, setImage] = useState();\r\n const [isLoading, setLoading] = useState(true);\r\n useEffect(() => {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'candidateprofile/' + props.StarId,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => {\r\n setImage(res.data);\r\n setLoading(false);\r\n });\r\n }, []);\r\n\r\n if (isLoading) {\r\n return
Loading...
;\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 {image.candidateFirstName} {image.candidateLastName}\r\n

\r\n
\r\n \r\n
\r\n \r\n \r\n
\r\n
Candidate Statement:
\r\n
\r\n \r\n
\r\n \r\n \r\n {image.candidateStatement !== ''\r\n ? image.candidateStatement\r\n : 'Not Available'}\r\n \r\n \r\n
\r\n \r\n );\r\n};\r\n\r\nexport default ViewStatement;\r\n","import React from 'react';\r\nimport ViewStatement from './ViewStatement';\r\nimport AuthService from '../services/AuthService';\r\n\r\n\r\nconst CandidateProfile = (props) => { \r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default CandidateProfile;","import React, { useState } from \"react\";\r\nimport AuthService from '../services/AuthService';\r\n\r\nconst Home = (props) => {\r\n const ShowText = () => {\r\n if (AuthService.isAdmin() || AuthService.isStudent()) {\r\n return ( \r\n <> \r\n Welcome to the Voting Booth\r\n )\r\n } else {\r\n return (\r\n <>\r\n You do not have access to this application\r\n )\r\n }\r\n }\r\nreturn (\r\n \r\n);\r\n \r\n \r\n}\r\n\r\nexport default Home;","import React, { useState, useEffect } from \"react\";\r\nimport Form from \"./Form\";\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport axios from 'axios';\r\nimport AuthService from '../services/AuthService';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { v4 as uuidv4 } from 'uuid';\r\n\r\nconst Vote = (props) => {\r\n const [user, ] = useState([]);\r\n const [showBallot,setShowBallot] = useState(false);\r\n const [votes, ] = useState(\r\n {\r\n \"ElectionId\": \"\",\r\n \"UUID\": \"\",\r\n \"StarId\" : \"\",\r\n \"allBallots\": []\r\n }\r\n );\r\n const [isNotLocked, setIsNotLocked] = useState(false);\r\n const [isNotStudent, setIsNotStudent] = useState(false);\r\n \r\n let history = useHistory();\r\n /* Check if student has voted */\r\n useEffect(() => {\r\n if (AuthService.alreadyVoted()) {\r\n setShowBallot(false);\r\n setTimeout(function(){ history.push(\"/validate\"); }, 1000);\r\n } else {\r\n setShowBallot(true);\r\n } \r\n\r\n }, []);\r\n\r\n /* Get student and election data */\r\n useEffect(() => {\r\n if (AuthService.isStudent()) {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'studentinfo/' + AuthService.getStarId(),{ headers: authHeader() }\r\n )\r\n .then((res) => {\r\n props.setStudentInfo(res.data);\r\n let tempVotes = votes;\r\n\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'election/',{ headers: authHeader() }\r\n )\r\n .then((res2) => {\r\n if(res2.data.activeStatus) {\r\n props.setBallotData(res2.data);\r\n tempVotes.ElectionId = res2.data.electionId;\r\n tempVotes.UUID = uuidv4();\r\n tempVotes.allBallots = [];\r\n tempVotes.StarId = AuthService.getStarId();\r\n props.setVotes(tempVotes);\r\n setIsNotLocked(false);\r\n } else {\r\n setIsNotLocked(true);\r\n }\r\n });\r\n });\r\n } else {\r\n setIsNotStudent(true);\r\n }\r\n }, []);\r\n \r\n /* Show student info */\r\n const ShowStudent = ()=> {\r\n if(props.studentInfo.allColleges) {\r\n return (\r\n <>\r\n
\r\n

Your Information

\r\n
{props.studentInfo.first_Name} {props.studentInfo.last_Name}
\r\n
{props.studentInfo.residential === 'O'? 'Off-Campus':'On-Campus'} Resident
\r\n
{props.studentInfo.classLevel==='U'? 'Undergraduate':\"Graduate\"}
\r\n
{props.studentInfo.allColleges.map(function(item, index) {\r\n return (index < (props.studentInfo.allColleges.length -1)) ? item['collegeDescription']+', ' : item['collegeDescription'];\r\n })}
\r\n
\r\n
\r\n \r\n )\r\n } else {\r\n return (
Please contact the student office
)\r\n }\r\n}\r\n\r\n\r\nif (isNotStudent) {\r\n return
You do not have permission to access this page
;\r\n}\r\n\r\n\r\nif (isNotLocked) {\r\n return
Election is not active
;\r\n}\r\n\r\nif (!showBallot) {\r\n return
You have already voted
;\r\n}\r\n\r\nreturn (Object.keys(props.ballotData).length ? (\r\n <>\r\n \r\n
\r\n ) : (\r\n

Loading...

\r\n )\r\n ); \r\n}\r\n\r\nexport default Vote;","import React, { useState } from \"react\";\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport axios from 'axios';\r\nimport 'react-bootstrap-typeahead/css/Typeahead.css';\r\nimport './style.css';\r\nimport {\r\n Button,\r\n FormControl,\r\n } from 'react-bootstrap';\r\n\r\nconst Validate = (props) => {\r\n const [studentUuid,setStudentUuid] = useState();\r\n const [showResult,setShowResult] = useState(false);\r\n const [voteResults,setVoteResults] = useState([]);\r\n\r\n /* Get ballots based on UUID */\r\n const onSubmit = (e) => {\r\n e.preventDefault();\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + \"votingresultsuuid/\"+studentUuid, {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n setVoteResults(res.data);\r\n setShowResult(true);\r\n });\r\n };\r\n /* select text when focues */ \r\n const handleFocus = (event) => event.target.select();\r\n let ballotName = '';\r\n let ballotNameShow = true;\r\nreturn (\r\n <>\r\n \r\n setStudentUuid(e.target.value)}\r\n />\r\n \r\n Validate!\r\n \r\n \r\n { showResult ? (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n { voteResults.map((ballot, i) => {\r\n if (ballotName !== ballot.ballotName){\r\n ballotName = ballot.ballotName;\r\n ballotNameShow = true;\r\n } else {\r\n ballotNameShow = false;\r\n }\r\n return(\r\n <>\r\n { ballotNameShow ? (\r\n \r\n \r\n ) : ''}\r\n \r\n \r\n \r\n )\r\n })} \r\n \r\n
\r\n {/*

{ballotData.electionName}

*/}\r\n
This is a record of your votes
\r\n Random ID: {studentUuid}\r\n
\r\n We do not match this ID to any identifier, your vote is\r\n anonymous.\r\n
\r\n This ID can be used to check the integrity of your vote\r\n
\r\n
\r\n {ballot.ballotName}\r\n
\r\n
\r\n {ballot.ballotCandidateName ? ballot.ballotCandidateName : ballot.candidateName}\r\n {ballot.ballotCandidatePartyName ? ' - ' + ballot.ballotCandidatePartyName : (\r\n (!ballot.writeIn ? (ballot.referendum ? '' : ' - Independent'): ' - Write In')\r\n )}\r\n
\r\n
\r\n ) : 'No results available'}\r\n \r\n )\r\n}\r\n\r\nexport default Validate;","import React from 'react';\r\nimport {\r\n Route,\r\n Redirect\r\n } from 'react-router-dom';\r\nimport AuthService from \"../services/AuthService\";\r\n\r\n\r\nexport default function PrivateRoute ({ component: Component, data, ...rest }) {\r\n return (\r\n (\r\n AuthService.isTokenValid()\r\n ? \r\n : \r\n )} />\r\n )}","import React, { useState, useEffect } from \"react\";\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport axios from 'axios';\r\nimport { useHistory } from 'react-router-dom';\r\nimport { BsToggleOn, BsToggleOff } from \"react-icons/bs\";\r\nimport { FaPen, FaFileDownload } from \"react-icons/fa\";\r\n//import { formatDate } from '../util/Helper';\r\nimport { Link } from 'react-router-dom';\r\nimport { CSVLink } from \"react-csv\";\r\nimport { VscClearAll } from \"react-icons/vsc\";\r\nimport Chart from \"react-google-charts\";\r\nimport Gradient from \"javascript-color-gradient\";\r\nimport {confirm} from 'react-bootstrap-confirmation';\r\nimport DayPickerInput from 'react-day-picker/DayPickerInput';\r\nimport 'react-day-picker/lib/style.css';\r\nimport { formatDate, parseDate } from 'react-day-picker/moment';\r\nimport moment from 'moment';\r\nimport {\r\n FormGroup,\r\n FormControl\r\n} from 'react-bootstrap';\r\n\r\nconst ManageElection = (props) => {\r\n let history = useHistory();\r\n const colorGradient = new Gradient();\r\n const [studentCnt, setStudentCnt] = useState([]);\r\n const [votesCastCnt, setVotesCastCnt] = useState(0);\r\n const [csvData, setCsvData] = useState([]);\r\n const [chartData, setChartData] = useState([]);\r\n const [editStartDate, setEditStartDate] = useState(false);\r\n const [editEndDate, setEditEndDate] = useState(false);\r\n const [startDate, setStartDate] = useState();\r\n const [endDate, setEndDate] = useState();\r\n const [lock, setLock] = useState();\r\n\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'studentcount/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n setStudentCnt(res.data.cnt);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'voterecordcount/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n setVotesCastCnt(res.data.votesCast);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'studentsvoted/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n setCsvData(res.data);\r\n });\r\n }, []);\r\n\r\n useEffect(() => {\r\n if(props.electionData !== undefined && props.electionData.length !== 0) {\r\n setStartDate(formatDate(props.electionData[0].startActiveAt));\r\n setEndDate(formatDate(props.electionData[0].endActiveAt));\r\n setLock(props.electionData[0].locked);\r\n }\r\n }, [props.electionData]);\r\n\r\n /* get voting results and set up chart */\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'votingresults/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n if(res.data.length) {\r\n let arrRes = []\r\n let newObj = {};\r\n let chldArr = [[\"Candidate\", \"Votes\", { role: 'annotation'}, { role: \"style\" }]];\r\n let bId = '';\r\n\r\n var longest = 0;\r\n var longestCur = 1;\r\n if(res.data) {\r\n res.data.forEach((bal, i) => {\r\n if (bId !== bal.ballotId) {\r\n bId = bal.ballotId;\r\n if (i) {\r\n if (longestCur > longest) {\r\n longest = longestCur\r\n }\r\n longestCur = 1;\r\n }\r\n bId = bal.ballotId;\r\n }\r\n longestCur++;\r\n });\r\n }\r\n\r\n colorGradient.setGradient(\"#3F2CAF\", \"e9446a\");\r\n colorGradient.setMidpoint(longest);\r\n const colorArr = colorGradient.getArray();\r\n let ic = 0;\r\n let curBallotName = ''\r\n for (var i = 0; i < res.data.length; i++) {\r\n if (bId !== res.data[i].ballotId) {\r\n ic = 0;\r\n if (i) {\r\n newObj = {\r\n ballotId: bId,\r\n ballotName: curBallotName,\r\n ballotArr: chldArr,\r\n };\r\n arrRes.push(newObj);\r\n chldArr = [[\"Candidate\", \"Votes\", { role: 'annotation'}, { role: \"style\" }]];\r\n\r\n }\r\n bId = res.data[i].ballotId;\r\n curBallotName = res.data[i].ballotName;\r\n }\r\n if (bId === res.data[i].ballotId) {\r\n ic++;\r\n let chldObj = [\r\n (res.data[i].candidateName ? res.data[i].candidateName: '') \r\n + (res.data[i].ballotCandidateName? res.data[i].ballotCandidateName : '') \r\n + (res.data[i].ballotCandidatePartyName ? ' - '+res.data[i].ballotCandidatePartyName : '')\r\n + (res.data[i].ballotCandidateId && !res.data[i].ballotCandidatePartyName && !res.data[i].referendum ? ' - Independent' : '') \r\n + (!res.data[i].ballotCandidateId && !res.data[i].referendum ? ' (Write-In)' : ''),\r\n res.data[i].cnt, res.data[i].cnt, 'color: '+colorArr[ic]\r\n ];\r\n chldArr.push(chldObj);\r\n }\r\n }\r\n newObj = {\r\n ballotId: bId,\r\n ballotName: curBallotName,\r\n ballotArr: chldArr,\r\n };\r\n arrRes.push(newObj);\r\n chldArr = [[\"Candidate\", \"Votes\", { role: 'annotation'}, { role: \"style\" }]];\r\n setChartData(arrRes);\r\n } else {\r\n setChartData(null);\r\n }\r\n });\r\n }, []);\r\n\r\n /* delete all results */\r\n const deleteAll = async () => {\r\n const result = await confirm('Are you really sure?');\r\n if(result) {\r\n axios\r\n .delete(\r\n process.env.REACT_APP_API_BASE + 'votingresults/', { headers: authHeader() }\r\n )\r\n .then(window.location.reload())\r\n }\r\n };\r\n\r\n /* update elecion settings */\r\n const updateElection = (updElection) => {\r\n axios\r\n .put(process.env.REACT_APP_API_BASE + 'election/1', updElection, {\r\n headers: authHeader(),\r\n })\r\n }\r\n\r\n const handleChangeStartDate = function (e) {\r\n setEditStartDate(false);\r\n setStartDate(e);\r\n\r\n var dateMomentObject = moment(e, \"MM/DD/YYYY\").set(\"hour\", 3).set(\"minute\", 0); \r\n var dateObject = dateMomentObject.toDate();\r\n \r\n const updElection = {\r\n StartActiveAt: dateObject.toISOString(),\r\n EndActiveAt: null,\r\n Locked: null\r\n }\r\n updateElection(updElection);\r\n let tempElectionData = props.electionData;\r\n tempElectionData[0].startActiveAt = dateObject.toISOString();\r\n props.setElectionData(tempElectionData);\r\n };\r\n\r\n const handleChangeEndDate = function (e) {\r\n setEditEndDate(false);\r\n setEndDate(e);\r\n\r\n var dateMomentObject = moment(e, \"MM/DD/YYYY\").set(\"hour\", 12).set(\"minute\", 0); \r\n var dateObject = dateMomentObject.toDate();\r\n\r\n const updElection = {\r\n StartActiveAt: null,\r\n EndActiveAt: dateObject.toISOString(),\r\n Locked: null\r\n }\r\n updateElection(updElection);\r\n let tempElectionData = props.electionData;\r\n tempElectionData[0].endActiveAt = dateObject.toISOString();\r\n props.setElectionData(tempElectionData);\r\n };\r\n\r\n /* activate/deactivate election */\r\n const handleChangeLock = async () => {\r\n var thisLock = !lock;\r\n let tempElectionData = props.electionData;\r\n const updElection = {\r\n StartActiveAt: null,\r\n EndActiveAt: null,\r\n Locked: thisLock\r\n }\r\n if(!lock) {\r\n const result = await confirm('Activating the election will clear out the mocked votes. Are you sure?');\r\n if(result) {\r\n axios\r\n .delete(\r\n process.env.REACT_APP_API_BASE + 'votingresults/', { headers: authHeader() }\r\n )\r\n .then(\r\n updateElection(updElection),\r\n tempElectionData[0].locked = thisLock,\r\n props.setElectionData(tempElectionData),\r\n setLock(thisLock),\r\n props.handlePost(),\r\n setChartData(null),\r\n setVotesCastCnt(0) \r\n )\r\n }\r\n } else {\r\n updateElection(updElection);\r\n tempElectionData[0].locked = thisLock;\r\n props.setElectionData(tempElectionData);\r\n setLock(thisLock);\r\n props.handlePost();\r\n }\r\n };\r\n\r\n return props.electionData ? (\r\n <>\r\n

{props.electionData.electionName}

\r\n

Manage Elections

\r\n \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.electionData.map((election, i) => {\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
ElectionStatusStart DateEnd Date
{election.electionName}{lock ? 'Active' : 'Inactive'}\r\n {editStartDate ? (\r\n \r\n \r\n handleChangeStartDate(\r\n moment(day).format('MM/DD/YYYY')\r\n )\r\n }\r\n />\r\n \r\n ) : (
setEditStartDate(true)}>{formatDate(startDate)}
)}\r\n
\r\n {editEndDate ? (\r\n \r\n \r\n handleChangeEndDate(\r\n moment(day).format('MM/DD/YYYY')\r\n )\r\n }\r\n />\r\n \r\n ) : (
setEditEndDate(true)}>{formatDate(endDate)}
)}\r\n
\r\n {\r\n history.push({\r\n pathname: '/editelection',\r\n state: {\r\n // location state\r\n electionData: props.electionData,\r\n },\r\n });\r\n }}\r\n >\r\n {lock ? '':\r\n \r\n }\r\n \r\n \r\n {lock ? (\r\n {\r\n handleChangeLock()\r\n }}\r\n style={{verticalAlign:'middle'}} \r\n title='election is active'\r\n />\r\n ) : (\r\n {\r\n handleChangeLock()\r\n }}\r\n style={{verticalAlign:'middle'}} \r\n title='election is inactive'\r\n />\r\n )}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n Votes Cast\r\n \r\n {votesCastCnt}/{studentCnt}\r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n

Results

\r\n
\r\n
\r\n {chartData ? chartData.map((ballot, 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 }) : 'There are no results yet!! Hold your horses!!'} \r\n
\r\n
\r\n
\r\n \r\n ) : (\r\n 'Loading...'\r\n );\r\n};\r\nexport default ManageElection;","import React from 'react';\r\n\r\nconst TableDisplay = (props)=>{\r\n return(<>\r\n \r\n \r\n \r\n {props.tableHeading.map((heading, i)=>{\r\n return();\r\n })\r\n }\r\n \r\n \r\n {props.tableData}\r\n \r\n
{heading}
\r\n )\r\n}\r\n\r\nexport default TableDisplay;","import React, { useState, useRef, useEffect } from 'react';\r\nimport axios from 'axios';\r\nimport {Modal, Button, Form, FormGroup, FormControl} from 'react-bootstrap';\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport SimpleReactValidator from 'simple-react-validator';\r\n\r\nconst EditCandidateModal = (props) => {\r\n let initValue = {\r\n ballotCandidateCandidateName: ''\r\n };\r\n\r\n const [user, setUser] = useState(initValue);\r\n const [hasChanged, setHasChanged] = useState(false);\r\n const [starId, setCandidateStarId] = useState();\r\n\r\n const simpleValidator = useRef(new SimpleReactValidator({className: \"text-danger\"}));\r\n const [showSubmit,setShowSubmit] = useState(true);\r\n let allValid = simpleValidator.current.allValid();\r\n\r\n useEffect(() => {\r\n setUser({\r\n starId: props.user.starId,\r\n });\r\n setCandidateStarId(props.user.starId);\r\n }, [props.user]);\r\n\r\n useEffect(() => {\r\n if (allValid) {\r\n setShowSubmit(false);\r\n } else {\r\n setShowSubmit(true);\r\n }\r\n }, [allValid]);\r\n\r\n\r\n const submitHandler = (e) => {\r\n e.preventDefault();\r\n\r\n async function doAction(){\r\n if (hasChanged === true) {\r\n /*put request when mode == \"EDIT\"*/\r\n if (props.mode === 'EDIT') {\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE + 'candidate/' + props.user.starId,\r\n user, { headers: authHeader() }\r\n )\r\n .then((res) => props.setRerender(true));\r\n }\r\n /*post request when mode == \"ADD\"*/\r\n \r\n if (props.mode === 'ADD') {\r\n axios\r\n .post(process.env.REACT_APP_API_BASE + 'candidate/', user, { headers: authHeader() })\r\n .then((res) => props.setRerender(true));\r\n }\r\n }\r\n \r\n setHasChanged(false);\r\n setUser(initValue);\r\n setCandidateStarId('');\r\n };\r\n doAction();\r\n\r\n };\r\n\r\n const handleChange = function (varName, e) {\r\n setHasChanged(true);\r\n const { value } = e.target; \r\n setUser((state) => ({ ...state, [varName]: value }));\r\n };\r\n\r\n const handleClick = function () {\r\n setHasChanged(true);\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'candidate/'+ user.starId,{ headers: authHeader() }\r\n )\r\n .then((res) => {\r\n const candidate = {\r\n BallotCandidateId: props.user.ballotCandidateId,\r\n StarId: user.starId,\r\n CandidateEmail: res.data.candidateEmail\r\n }\r\n\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE + 'candidate/' + props.user.candidateId,\r\n candidate, { headers: authHeader() }\r\n )\r\n .then((res) => props.setRerender(true));\r\n });\r\n setUser((state) => ({ ...state }));\r\n props.onHide();\r\n };\r\n\r\n const handleBack = function () {\r\n setCandidateStarId('');\r\n setUser(initValue);\r\n props.onHide();\r\n }\r\n\r\n let cCandidateStarId = user.starId;\r\n \r\n const { setRerenderListings, ...modalProps } = props;\r\n return (\r\n \r\n \r\n \r\n Edit Candidate\r\n \r\n \r\n \r\n
\r\n \r\n handleChange('starId', e)}\r\n autoComplete='off'\r\n name='starId'\r\n onBlur={simpleValidator.current.showMessageFor('starId')} \r\n />\r\n {simpleValidator.current.message('starId',cCandidateStarId, 'alpha_num')}\r\n \r\n \r\n \r\n Save\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 EditCandidateModal;","import React from 'react';\r\nimport axios from 'axios';\r\nimport { Modal, Button } from 'react-bootstrap';\r\nimport authHeader from '../services/AuthHeader';\r\nimport ViewStatement from './ViewStatement';\r\n\r\nconst ReviewCandidateModal = (props) => {\r\n const candidate = {\r\n BallotCandidateId: props.user.ballotCandidateId,\r\n StarId: props.user.starId,\r\n CandidateEmail: props.user.candidateEmail,\r\n CandidateStatement: props.user.candidateStatement,\r\n CandidateStatus: '',\r\n };\r\n\r\n /* approve candidate statement and image */\r\n const approveHandler = (e) => {\r\n candidate.CandidateStatus = 'r';\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE + 'candidate/' + props.user.candidateId,\r\n candidate,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => props.setRerender(true));\r\n props.onHide();\r\n };\r\n\r\n /* decline candidate statement and image */\r\n const declineHandler = (e) => {\r\n candidate.CandidateStatus = 'x';\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE + 'candidate/' + props.user.candidateId,\r\n candidate,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => props.setRerender(true));\r\n props.onHide();\r\n };\r\n const { setRerenderListings, ...modalProps } = props;\r\n return (\r\n \r\n \r\n \r\n Review This Candidate\r\n \r\n \r\n \r\n <>\r\n \r\n
\r\n
\r\n {props.user.candidateStatus !== 'r' ? (\r\n \r\n Approve\r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n
\r\n {props.user.candidateStatus !== 'x' ? (\r\n \r\n Decline\r\n \r\n ) : (\r\n ''\r\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 ReviewCandidateModal;\r\n","import React, { useEffect, useState } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport axios from 'axios';\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport TableDisplay from './TableDisplay';\r\nimport { Button } from 'react-bootstrap';\r\nimport EditCandidateModal from './EditCandidateModal';\r\nimport ReviewCandidateModal from './ReviewCandidateModal';\r\nimport { useHistory } from \"react-router-dom\";\r\nimport { MdEmail, MdReadMore, MdOutlineCheck, MdUpload, MdVisibility, MdThumbDown, MdOutlineVisibility } from \"react-icons/md\";\r\nimport { FaPen } from \"react-icons/fa\";\r\nimport EasyEdit from 'react-easy-edit';\r\n\r\nconst ManageCandidate = (props) => {\r\n let history = useHistory();\r\n const initUser ={\r\n starId: '',\r\n firstName: '',\r\n lastName: '',\r\n email: ''\r\n };\r\n const [displayUsers, setDisplayUsers] = useState([]);\r\n \r\n const heading = [\"Name on Ballot\", \"Email\", \"\", \"Status\", \"Review\", \"\"];\r\n \r\n const [modalShow, setModalShow] = useState(false);\r\n const [modalReviewShow, setModalReviewShow] = useState(false);\r\n \r\n const [user, setUser] = useState(initUser);\r\n \r\n const [mode, setMode] = useState(\"\");\r\n const [rerender, setRerender] = useState(false);\r\n \r\n const modalHide = ()=>{ \r\n setModalShow(false);\r\n }\r\n \r\n const showModal = ()=>{\r\n setModalShow(true)\r\n }\r\n \r\n const modalReviewHide = ()=>{ \r\n setModalReviewShow(false);\r\n }\r\n \r\n const showReviewModal = ()=>{\r\n setModalReviewShow(true)\r\n }\r\n\r\n const saveEmails = (value, id) => {\r\n let arr = value.split(\",\").map(function(item) {\r\n return item.trim();\r\n });\r\n arr.forEach(elStarId => {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'candidate/'+ elStarId,{ headers: authHeader() }\r\n )\r\n .then((res) => {\r\n const candidate = {\r\n BallotCandidateId: id,\r\n StarId: elStarId,\r\n CandidateEmail: res.data.candidateEmail,\r\n CandidateFirstName: res.data.candidateFirstName,\r\n CandidateLastName: res.data.candidateLastName\r\n }\r\n axios\r\n .post(\r\n process.env.REACT_APP_API_BASE + 'candidate/',\r\n candidate, { headers: authHeader() }\r\n )\r\n .then((res) => setRerender(true));\r\n });\r\n });\r\n }\r\n\r\n const cancel = () => {console.log(\"Cancelled\")}\r\n \r\n /* get candidates and the statuses of their statements */\r\n useEffect(()=>{\r\n axios.get(\r\n process.env.REACT_APP_API_BASE + 'candidate/',{ headers: authHeader() }\r\n )\r\n .then(res=>{\r\n let unitList = res.data.map((val,i)=>{\r\n let statusIcon = '';\r\n if (val.candidateEmail !== '' && val.candidateStatus === '') {\r\n statusIcon = \r\n } else if (val.candidateStatus === 'e' ){\r\n statusIcon = \r\n } else if (val.candidateStatus === 'u'){\r\n statusIcon = \r\n } else if (val.candidateStatus === 'r'){\r\n statusIcon = \r\n } else if (val.candidateStatus === 'x'){\r\n statusIcon = \r\n }\r\n let emailStatus = '';\r\n let candidateOptions = ''\r\n if (val.candidateEmail === '') {\r\n emailStatus = saveEmails(value,val.ballotCandidateId)}\r\n onCancel={cancel}\r\n saveButtonLabel=\"Save\"\r\n cancelButtonLabel=\"Cancel\"\r\n attributes={{ name: \"input_\"+val.ballotCandidateId, id: val.ballotCandidateId}}\r\n instructions=\"Enter Star ID, separate with a comma if multiple\"\r\n />\r\n candidateOptions = <>\r\n \r\n {val.ballotCandidateName}\r\n {emailStatus}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ;\r\n } else {\r\n emailStatus =
{val.candidateEmail}
\r\n candidateOptions = <>\r\n \r\n {val.ballotCandidateName}\r\n {emailStatus}\r\n \r\n {\r\n setMode(\"EDIT\")\r\n showModal()\r\n setUser(val)\r\n }}>\r\n \r\n {statusIcon}\r\n \r\n {(val.candidateStatement !== '' && val.candidateImageId !== 0) ? (\r\n {\r\n setMode(\"EDIT\")\r\n showReviewModal()\r\n setUser(val)\r\n }}> \r\n {(val.candidateStatus === 'r')? : }\r\n ) : ''}\r\n \r\n \r\n \r\n ;\r\n }\r\n\r\n return(candidateOptions);\r\n });\r\n setDisplayUsers(unitList);\r\n setRerender(false);\r\n }); \r\n }, [rerender]);\r\n\r\nreturn (<>\r\n

Manage Candidates

\r\n \r\n \r\n \r\n \r\n
\r\n); \r\n}\r\n\r\nexport default ManageCandidate;","import React, { useState, useRef, useEffect } from 'react';\r\nimport axios from 'axios';\r\nimport { Modal, Button, Form, FormGroup, FormControl } from 'react-bootstrap';\r\nimport authHeader from '../services/AuthHeader';\r\nimport SimpleReactValidator from 'simple-react-validator';\r\n\r\nconst EditPartyModal = (props) => {\r\n let initValue = {\r\n ballotCandidatePartyName: '',\r\n };\r\n\r\n const [user, setUser] = useState(initValue);\r\n const [hasChanged, setHasChanged] = useState(false);\r\n const [ballotCandidatePartyName, setBallotCandidatePartyName] = useState();\r\n\r\n const simpleValidator = useRef(\r\n new SimpleReactValidator({ className: 'text-danger' })\r\n );\r\n const [showSubmit, setShowSubmit] = useState(true);\r\n let allValid = simpleValidator.current.allValid();\r\n\r\n /* Set candidate party */\r\n useEffect(() => {\r\n setUser({\r\n ballotCandidatePartyName: props.user.ballotCandidatePartyName,\r\n });\r\n setBallotCandidatePartyName(props.user.ballotCandidatePartyName);\r\n }, [props.user]);\r\n\r\n useEffect(() => {\r\n if (allValid) {\r\n setShowSubmit(false);\r\n } else {\r\n setShowSubmit(true);\r\n }\r\n }, [allValid]);\r\n\r\n const submitHandler = (e) => {\r\n e.preventDefault();\r\n\r\n async function doAction() {\r\n if (hasChanged === true) {\r\n /*put request when mode == \"EDIT\"*/\r\n if (props.mode === 'EDIT') {\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE +\r\n 'party/' +\r\n props.user.ballotCandidatePartyId,\r\n user,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => props.setRerender(true));\r\n }\r\n /*post request when mode == \"ADD\"*/\r\n\r\n if (props.mode === 'ADD') {\r\n axios\r\n .post(process.env.REACT_APP_API_BASE + 'party/', user, {\r\n headers: authHeader(),\r\n })\r\n .then((res) => props.setRerender(true));\r\n }\r\n }\r\n\r\n setHasChanged(false);\r\n setUser(initValue);\r\n setBallotCandidatePartyName('');\r\n }\r\n doAction();\r\n };\r\n\r\n /* change party info */\r\n const handleChange = function (varName, e) {\r\n setHasChanged(true);\r\n const { value } = e.target;\r\n setUser((state) => ({ ...state, [varName]: value }));\r\n };\r\n\r\n /* submit form */\r\n const handleClick = function () {\r\n setHasChanged(true);\r\n setUser((state) => ({ ...state }));\r\n props.onHide();\r\n };\r\n\r\n /* go back without changes */\r\n const handleBack = function () {\r\n setBallotCandidatePartyName('');\r\n setUser(initValue);\r\n props.onHide();\r\n };\r\n\r\n let cBallotCandidatePartyName = user.ballotCandidatePartyName;\r\n\r\n const { setRerenderListings, ...modalProps } = props;\r\n return (\r\n \r\n \r\n \r\n Add/Edit Parties\r\n \r\n \r\n \r\n
\r\n \r\n handleChange('ballotCandidatePartyName', e)}\r\n autoComplete='off'\r\n name='ballotCandidatePartyName'\r\n onBlur={simpleValidator.current.showMessageFor(\r\n 'ballotCandidatePartyName'\r\n )}\r\n />\r\n {simpleValidator.current.message(\r\n 'ballotCandidatePartyName',\r\n cBallotCandidatePartyName,\r\n 'alpha_space'\r\n )}\r\n \r\n\r\n \r\n Save\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditPartyModal;\r\n","import React from 'react';\r\nimport axios from 'axios';\r\nimport {Modal, Button} from 'react-bootstrap';\r\nimport authHeader from \"../services/AuthHeader\";\r\n\r\nconst DeletePartyModal = (props) => {\r\n const onChangeHandler = (e) => {\r\n props.onHide();\r\n axios\r\n .delete(\r\n process.env.REACT_APP_API_BASE + 'party/' +\r\n props.user.ballotCandidatePartyId, { headers: authHeader() }\r\n )\r\n .then(props.setRerender(true))\r\n };\r\n const { setRerenderListings, ...modalProps } = props;\r\n return (\r\n \r\n \r\n \r\n Delete This Party\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Party: {props.user.ballotCandidatePartyName}
\r\n
\r\n \r\n Delete\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 DeletePartyModal;","import React, { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport TableDisplay from './TableDisplay';\r\nimport { Button } from 'react-bootstrap';\r\nimport EditPartyModal from './EditPartyModal';\r\nimport DeletePartyModal from './DeletePartyModal';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst ManageParty = (props) => {\r\n let history = useHistory();\r\n const initUser ={\r\n starId: '',\r\n firstName: '',\r\n lastName: '',\r\n email: ''\r\n };\r\n const [displayUsers, setDisplayUsers] = useState([]);\r\n \r\n const heading = [\"Party Name\"];\r\n \r\n const [modalShow, setModalShow] = useState(false);\r\n const [modalDeleteShow, setModalDeleteShow] = useState(false);\r\n \r\n const [user, setUser] = useState(initUser);\r\n \r\n const [mode, setMode] = useState(\"\");\r\n const [rerender, setRerender] = useState(false);\r\n \r\n const modalHide = ()=>{ \r\n setModalShow(false);\r\n }\r\n \r\n const showModal = ()=>{\r\n setModalShow(true)\r\n }\r\n \r\n const modalDeleteHide = ()=>{ \r\n setModalDeleteShow(false);\r\n }\r\n \r\n const showDeleteModal = ()=>{\r\n setModalDeleteShow(true)\r\n }\r\n \r\n useEffect(()=>{\r\n axios.get(\r\n process.env.REACT_APP_API_BASE + 'party/',{ headers: authHeader() }\r\n )\r\n .then(res=>{\r\n let unitList = res.data.map((val,i)=>{\r\n return(<>\r\n \r\n {val.ballotCandidatePartyName}\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n });\r\n setDisplayUsers(unitList);\r\n setRerender(false);\r\n }); \r\n }, [rerender]);\r\n\r\nreturn (<>\r\n

Manage Parties

\r\n \r\n \r\n \r\n \r\n \r\n
\r\n); \r\n}\r\n\r\nexport default ManageParty;","import React, { useState, useRef, useEffect, useCallback } from 'react';\r\nimport axios from 'axios';\r\nimport { Modal, Button, Form, FormGroup, FormControl } from 'react-bootstrap';\r\nimport authHeader from '../services/AuthHeader';\r\nimport SimpleReactValidator from 'simple-react-validator';\r\nimport _ from 'lodash';\r\n\r\nconst EditAdminModal = (props) => {\r\n let initValue = {\r\n starId: '',\r\n firstName: '',\r\n lastName: '',\r\n email: '',\r\n };\r\n\r\n const [user, setUser] = useState(initValue);\r\n const [hasChanged, setHasChanged] = useState(false);\r\n const [starId, setStarId] = useState();\r\n const [firstName, setFirstName] = useState();\r\n const [lastName, setLastName] = useState();\r\n const [email, setEmail] = useState();\r\n\r\n const simpleValidator = useRef(\r\n new SimpleReactValidator({ className: 'text-danger' })\r\n );\r\n const [showSubmit, setShowSubmit] = useState(true);\r\n let allValid = simpleValidator.current.allValid();\r\n\r\n /* set user for edit */\r\n useEffect(() => {\r\n setUser({\r\n starId: props.user.adminId,\r\n firstName: props.user.firstName,\r\n lastName: props.user.lastName,\r\n email: props.user.email,\r\n });\r\n }, [props.user]);\r\n\r\n useEffect(() => {\r\n if (allValid) {\r\n setShowSubmit(false);\r\n } else {\r\n setShowSubmit(true);\r\n }\r\n }, [allValid]);\r\n\r\n /* insert new admin or update existing on submit */\r\n const submitHandler = (e) => {\r\n e.preventDefault();\r\n\r\n async function doAction() {\r\n if (hasChanged === true) {\r\n /*put request when mode == \"EDIT\"*/\r\n if (props.mode === 'EDIT') {\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE + 'admin/' + props.user.adminId,\r\n user,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => props.setRerender(true));\r\n }\r\n /*post request when mode == \"ADD\"*/\r\n\r\n if (props.mode === 'ADD') {\r\n axios\r\n .post(process.env.REACT_APP_API_BASE + 'admin/', user, {\r\n headers: authHeader(),\r\n })\r\n .then((res) => props.setRerender(true));\r\n }\r\n }\r\n\r\n setHasChanged(false);\r\n setUser(initValue);\r\n setStarId('');\r\n setFirstName('');\r\n setLastName('');\r\n setEmail('');\r\n }\r\n doAction();\r\n };\r\n\r\n const handleChangeStarId = function (e) {\r\n debounceCandidates(e);\r\n };\r\n\r\n /* get admin details using StarId to fill in form */\r\n const debounceCandidates = useCallback(\r\n _.debounce((e) => {\r\n const { value } = e.target;\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'PersonInfo/' + value, {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n if (res.data) {\r\n setFirstName(res.data.first_Name);\r\n setLastName(res.data.last_Name);\r\n setEmail(res.data.email);\r\n setUser({\r\n starId: value,\r\n firstName: res.data.first_Name,\r\n lastName: res.data.last_Name,\r\n email: res.data.email,\r\n });\r\n }\r\n });\r\n }, 1000),\r\n []\r\n );\r\n\r\n /* if any values are manually changed */\r\n const handleChange = function (varName, e) {\r\n setHasChanged(true);\r\n const { value } = e.target;\r\n setUser((state) => ({ ...state, [varName]: value }));\r\n };\r\n\r\n /* set user and close modal */\r\n const handleClick = function () {\r\n setHasChanged(true);\r\n setUser((state) => ({ ...state }));\r\n props.onHide();\r\n };\r\n\r\n /* clears modal and close */\r\n const handleBack = function () {\r\n setStarId('');\r\n setFirstName('');\r\n setLastName('');\r\n setEmail('');\r\n setUser(initValue);\r\n props.onHide();\r\n };\r\n\r\n let cStarId = '';\r\n let cFirstName = '';\r\n let cLastName = '';\r\n let cEmail = '';\r\n let cParam = '';\r\n if (props.mode === 'ADD') {\r\n cStarId = user.starId;\r\n cFirstName = user.firstName;\r\n cLastName = user.lastName;\r\n cEmail = user.email;\r\n cParam = 'alpha_num';\r\n } else {\r\n cStarId = user.starId;\r\n cFirstName = user.firstName;\r\n cLastName = user.lastName;\r\n cEmail = user.email;\r\n cParam = 'alpha_num';\r\n }\r\n const { setRerenderListings, ...modalProps } = props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n handleChangeStarId(e)}\r\n autoComplete='off'\r\n name='starId'\r\n onBlur={simpleValidator.current.showMessageFor('starId')}\r\n />\r\n {simpleValidator.current.message('starId', cStarId, cParam)}\r\n \r\n \r\n handleChange('firstName', e)}\r\n autoComplete='off'\r\n name='firstName'\r\n onBlur={simpleValidator.current.showMessageFor('firstName')}\r\n />\r\n {simpleValidator.current.message(\r\n 'firstName',\r\n cFirstName,\r\n 'alpha_space'\r\n )}\r\n \r\n \r\n handleChange('lastName', e)}\r\n autoComplete='off'\r\n name='lastName'\r\n onBlur={simpleValidator.current.showMessageFor('lastName')}\r\n />\r\n {simpleValidator.current.message(\r\n 'lastName',\r\n cLastName,\r\n 'alpha_space'\r\n )}\r\n \r\n \r\n handleChange('email', e)}\r\n autoComplete='off'\r\n name='email'\r\n onBlur={simpleValidator.current.showMessageFor('email')}\r\n />\r\n {simpleValidator.current.message('email', cEmail, 'email')}\r\n \r\n \r\n Save\r\n \r\n \r\n
\r\n \r\n \r\n \r\n \r\n );\r\n};\r\n\r\nexport default EditAdminModal;\r\n","import React from 'react';\r\nimport axios from 'axios';\r\nimport {Modal, Button} from 'react-bootstrap';\r\nimport authHeader from \"../services/AuthHeader\";\r\n\r\nconst DeleteAdminModal = (props) => {\r\n const onChangeHandler = (e) => {\r\n props.onHide();\r\n axios\r\n .delete(\r\n process.env.REACT_APP_API_BASE + 'admin/' +\r\n props.user.adminId, { headers: authHeader() }\r\n )\r\n .then(props.setRerender(true))\r\n };\r\n const { setRerenderListings, ...modalProps } = props;\r\n return (\r\n \r\n \r\n \r\n Delete This User\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Star Id: {props.user.starId}
Last Name: {props.user.lastName}
First Name: {props.user.firstName}
Email: {props.user.email}
\r\n
\r\n \r\n Delete\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 DeleteAdminModal;","import React, { useEffect, useState } from 'react';\r\nimport axios from 'axios';\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport TableDisplay from './TableDisplay';\r\nimport { Button } from 'react-bootstrap';\r\nimport EditAdminModal from './EditAdminModal';\r\nimport DeleteAdminModal from './DeleteAdminModal';\r\nimport { useHistory } from \"react-router-dom\";\r\n\r\nconst ManageAdmin = (props) => {\r\n let history = useHistory();\r\n const initUser ={\r\n starId: '',\r\n firstName: '',\r\n lastName: '',\r\n email: ''\r\n };\r\n const [displayUsers, setDisplayUsers] = useState([]);\r\n \r\n const heading = [\"Star Id\", \"First Name\", \"Last Name\", \"Email\"];\r\n \r\n const [modalShow, setModalShow] = useState(false);\r\n const [modalDeleteShow, setModalDeleteShow] = useState(false);\r\n \r\n const [user, setUser] = useState(initUser);\r\n \r\n const [mode, setMode] = useState(\"\");\r\n const [rerender, setRerender] = useState(false);\r\n \r\n const modalHide = ()=>{ \r\n setModalShow(false);\r\n }\r\n \r\n const showModal = ()=>{\r\n setModalShow(true)\r\n }\r\n \r\n const modalDeleteHide = ()=>{ \r\n setModalDeleteShow(false);\r\n }\r\n \r\n const showDeleteModal = ()=>{\r\n setModalDeleteShow(true)\r\n }\r\n \r\n useEffect(()=>{\r\n axios.get(\r\n process.env.REACT_APP_API_BASE + 'adminlist/',{ headers: authHeader() }\r\n )\r\n .then(res=>{\r\n let unitList = res.data.map((val,i)=>{\r\n return(<>\r\n \r\n {val.starId}\r\n {val.firstName}\r\n {val.lastName}\r\n {val.email}\r\n \r\n \r\n \r\n \r\n \r\n );\r\n });\r\n setDisplayUsers(unitList);\r\n setRerender(false);\r\n }); \r\n }, [rerender]);\r\n\r\nreturn (<>\r\n

Manage Admins

\r\n \r\n \r\n \r\n \r\n \r\n); \r\n}\r\n\r\nexport default ManageAdmin;","import React, { useState } from \"react\";\r\nimport { FormControl, Checkbox } from 'react-bootstrap';\r\n\r\nconst AddBallot = ({ partyData, ballotRestrictions }) => {\r\nconst [newBallot, ] = useState([]);\r\n\r\n\r\nconst ShowBallot = () => {\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
Add Ballot:
\r\n \r\n
Add Candidates:
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {' '}\r\n \r\n \r\n \r\n {partyData.map((x) => (\r\n \r\n {x.ballotCandidatePartyName}\r\n \r\n ))}\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Allow Write Ins:
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {' '}\r\n Number of Selections Allowed:\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
Restrictions:\r\n \r\n \r\n \r\n None\r\n \r\n {ballotRestrictions.map((x) => (\r\n \r\n {x.ballotRestrictionDescription}\r\n \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\nexport default AddBallot;","import React, { useState, useCallback } from \"react\";\r\nimport { FormControl } from 'react-bootstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { MdOutlineAdd } from \"react-icons/md\";\r\nimport axios from 'axios';\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport _ from 'lodash';\r\n\r\nconst AddCandidate= (props) => {\r\nconst initState = {\r\n ballotCandidateName: '',\r\n ballotCandidatePartyId: 0,\r\n ballotId: props.ballotId\r\n};\r\nconst [newCandidate, setNewCandidate] = useState(initState);\r\n\r\n/* add new candidate */\r\nconst addNewCandidate = () => {\r\n axios\r\n .post(process.env.REACT_APP_API_BASE + 'ballotCandidate/', newCandidate, {\r\n headers: authHeader(),\r\n })\r\n .then(props.setRerender(true));\r\n \r\n}\r\n\r\nconst handleAddCandidate= (evt, name) => {\r\n debounceCandidates(evt, name);\r\n};\r\n\r\n/* debounce until user finished typing */\r\nconst debounceCandidates = useCallback(\r\n \r\n _.debounce((evt, name) => {\r\n let value = isNaN(evt.target.value)\r\n ? evt.target.value\r\n : parseInt(evt.target.value);\r\n let temp = newCandidate;\r\n if (name==='ballotCandidateName') {\r\n temp['ballotCandidatePartyId'] = 0;\r\n } \r\n temp[name] = value;\r\n setNewCandidate(temp);\r\n }, 1000),\r\n []\r\n);\r\n\r\nconst ShowAddCandidate = () => {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n handleAddCandidate(evt, 'ballotCandidateName')}\r\n />{' '}\r\n \r\n \r\n handleAddCandidate(evt, 'ballotCandidatePartyId')\r\n }\r\n >\r\n \r\n {props.partyData.map((x) => (\r\n \r\n {x.ballotCandidatePartyName}\r\n \r\n ))}\r\n \r\n \r\n \r\n addNewCandidate()}\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\nexport default AddCandidate;","import React, { useState, useEffect, useCallback } from 'react';\r\nimport { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd';\r\nimport { MdDelete } from 'react-icons/md';\r\nimport { FormControl } from 'react-bootstrap';\r\nimport axios from 'axios';\r\nimport authHeader from '../services/AuthHeader';\r\nimport _ from 'lodash';\r\nimport { Link } from 'react-router-dom';\r\n\r\nconst DragDropCandidates = (props) => {\r\n props.allCandidates.map((k) => {\r\n return k;\r\n });\r\n\r\n const initial = props.allCandidates.map((k) => {\r\n const custom = {\r\n ballotCandidateId: k.ballotCandidateId,\r\n ballotCandidateName: k.ballotCandidateName,\r\n ballotCandidatePartyName: k.ballotCandidatePartyName,\r\n ballotCandidatePartyId: k.ballotCandidatePartyId,\r\n };\r\n\r\n return custom;\r\n });\r\n\r\n const reorder = (list, startIndex, endIndex) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n result.splice(endIndex, 0, removed);\r\n\r\n props.setBallotData((prev) => {\r\n prev.allBallots[props.outerIndex].allCandidates = result;\r\n const update = {\r\n ...prev,\r\n allBallots: prev.allBallots,\r\n };\r\n return update;\r\n });\r\n\r\n return result;\r\n };\r\n\r\n const deleteCandidate = (ballotCandidateId) => {\r\n axios\r\n .delete(\r\n process.env.REACT_APP_API_BASE + 'ballotCandidate/' + ballotCandidateId,\r\n {\r\n headers: authHeader(),\r\n }\r\n )\r\n .then(props.setRerender(true));\r\n };\r\n //\r\n const onChangeHandleCandidates = (evt, name, ballotCandidateId) => {\r\n debounceCandidates(evt, name, ballotCandidateId);\r\n };\r\n\r\n const debounceCandidates = useCallback(\r\n _.debounce((evt, name, ballotCandidateId) => {\r\n let newValue = '';\r\n if (name === 'ballotCandidatePartyId') {\r\n newValue = parseInt(evt.target.value);\r\n } else {\r\n newValue = evt.target.value;\r\n }\r\n\r\n const updBallot = {\r\n [name]: newValue,\r\n BallotId: props.ballotId,\r\n BallotCandidateId: ballotCandidateId,\r\n };\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE +\r\n 'ballotCandidate/' +\r\n ballotCandidateId,\r\n updBallot,\r\n {\r\n headers: authHeader(),\r\n }\r\n )\r\n .then(props.setRerender(true));\r\n setState((prevState) => ({\r\n ...prevState,\r\n ['bg_' + name]: state['bg_' + name] ? false : true,\r\n }));\r\n }, 1000),\r\n []\r\n );\r\n\r\n const [state, setState] = useState({ candidates: initial });\r\n useEffect(() => {\r\n setState({ candidates: initial });\r\n }, [props.rerender]);\r\n\r\n function onDragEnd(result) {\r\n if (!result.destination) {\r\n return;\r\n }\r\n\r\n if (result.destination.index === result.source.index) {\r\n return;\r\n }\r\n\r\n const candidates = reorder(\r\n state.candidates,\r\n result.source.index,\r\n result.destination.index\r\n );\r\n\r\n setState({ candidates });\r\n }\r\n\r\n const handleFocus = (event) => event.target.select();\r\n return (\r\n \r\n \r\n {(provided) => (\r\n
\r\n {state.candidates.map((candidate, index) => (\r\n \r\n {(provided) => (\r\n \r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
{/* */}\r\n \r\n onChangeHandleCandidates(\r\n evt,\r\n 'ballotCandidateName',\r\n candidate.ballotCandidateId\r\n )\r\n }\r\n onFocus={handleFocus}\r\n disabled={props.referendum}\r\n />{' '}\r\n \r\n {!props.referendum ? (\r\n \r\n onChangeHandleCandidates(\r\n evt,\r\n 'ballotCandidatePartyId',\r\n candidate.ballotCandidateId\r\n )\r\n }\r\n >\r\n \r\n {props.partyData.map((x) => (\r\n \r\n {x.ballotCandidatePartyName}\r\n \r\n ))}\r\n \r\n Independent\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n {!props.referendum ? (\r\n \r\n deleteCandidate(candidate.ballotCandidateId)\r\n }\r\n >\r\n \r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n
\r\n
\r\n )}\r\n \r\n ))}\r\n {provided.placeholder}\r\n \r\n )}\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DragDropCandidates;\r\n","import React, { useState, useEffect, useCallback } from \"react\";\r\nimport { DragDropContext, Droppable, Draggable } from \"react-beautiful-dnd\";\r\nimport { FaGripVertical} from \"react-icons/fa\";\r\nimport axios from 'axios';\r\nimport authHeader from \"../services/AuthHeader\";\r\nimport { FaWindowClose } from 'react-icons/fa';\r\nimport {\r\n MdDelete,\r\n} from 'react-icons/md';\r\nimport { Link } from 'react-router-dom';\r\nimport { FormControl, Checkbox } from 'react-bootstrap';\r\nimport _ from 'lodash';\r\nimport { confirm } from 'react-bootstrap-confirmation';\r\nimport AddCandidate from './AddCandidate';\r\nimport DragDropCandidates from './DragDropCandidates';\r\n\r\nconst DragDrop = (props) => {\r\n let stateVars = {};\r\n const [partyData, setPartyData] = useState([]);\r\n const [rerender, setRerender] = useState(false);\r\n const [ballotRestrictions, setBallotRestrictions] = useState([]);\r\n const [updateBallot, setUpdateBallot] = useState({});\r\n const [newCandidateList, setNewCandidateList] = useState([]);\r\n const [isLocked, setIsLocked] = useState(false);\r\n /* Get election data, use stateVars as dynamic var to maintain state for each ballot */\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'election/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n props.setBallotData(res.data);\r\n setIsLocked(res.data.locked);\r\n res.data.allBallots.map((ballot) => {\r\n stateVars['ib_' + ballot.ballotId] = ballot;\r\n return 1;\r\n });\r\n setRerender(false);\r\n });\r\n }, [rerender]);\r\n\r\n /* Get all parties for drop down selection */\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'party/', { headers: authHeader() })\r\n .then((res) => {\r\n setPartyData(res.data);\r\n });\r\n }, []);\r\n \r\n /* get ballot restrictions for drop down selection */\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'ballotrestrictions/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n setBallotRestrictions(res.data);\r\n });\r\n }, []);\r\n\r\n const [state, setState] = useState(stateVars);\r\n\r\n const onChange = (name) => {\r\n setRerender(true);\r\n setState((prevState) => ({\r\n ...prevState,\r\n ['bg_' + name]: state['bg_' + name] ? false : true,\r\n }));\r\n };\r\n\r\n /* Delete ballot on confirmation */\r\n const onDelete = async (ballotId) => {\r\n const result = await confirm('Delete this ballot?');\r\n if (result) {\r\n let ballotIndex;\r\n //let result;\r\n let tempBallotData = props.ballotData.allBallots;\r\n axios\r\n .delete(process.env.REACT_APP_API_BASE + 'ballot/' + ballotId, {\r\n headers: authHeader(),\r\n })\r\n .then(\r\n ballotIndex = props.ballotData.allBallots.findIndex(\r\n (x) => parseInt(x.ballotId) === parseInt(ballotId)\r\n ),\r\n reorderDelete(tempBallotData, ballotIndex),\r\n setRerender(true) \r\n );\r\n }\r\n };\r\n\r\n /* update order after deletion of ballot */\r\n const reorderDelete = (tempData, ballotIndex) => {\r\n for (var j = ballotIndex; j < tempData.length; j++){\r\n tempData[j].sortOrder = j;\r\n }\r\n axios\r\n .put(process.env.REACT_APP_API_BASE + 'reorderballots/1', tempData, {\r\n headers: authHeader(),\r\n }) \r\n return tempData;\r\n };\r\n\r\n /* Update individual ballot information */\r\n const onChangeHandle = (evt, name, ballotId) => {\r\n debounce(evt, name, ballotId);\r\n };\r\n\r\n /* Use debounce to wait for user to finish typing */\r\n const debounce = useCallback(\r\n _.debounce((evt, name, ballotId) => {\r\n let newValue = '';\r\n if (name === 'numberChosen') {\r\n newValue = parseInt(evt.target.value);\r\n } else if (name === 'writeIn' || name === 'referendum') {\r\n newValue = evt.target.checked ? true : false;\r\n } else {\r\n newValue = evt.target.value;\r\n }\r\n const updBallot = {\r\n [name]: newValue,\r\n };\r\n\r\n if(name === 'referendum') {\r\n axios\r\n .put(process.env.REACT_APP_API_BASE + 'ballot/' + ballotId, updBallot, {\r\n headers: authHeader(),\r\n })\r\n .then(\r\n setRerender(true)\r\n )\r\n } else {\r\n axios\r\n .put(process.env.REACT_APP_API_BASE + 'ballot/' + ballotId, updBallot, {\r\n headers: authHeader(),\r\n })\r\n }\r\n }, 1000),\r\n []\r\n );\r\n\r\n /* Update individual ballot restrictions */\r\n const onChangeHandleRestrictions = (\r\n evt,\r\n name,\r\n ballotId,\r\n ballotRestrictionId\r\n ) => {\r\n debounceRestrictions(evt, name, ballotId, ballotRestrictionId);\r\n };\r\n\r\n const debounceRestrictions = useCallback(\r\n _.debounce((evt, name, ballotId, ballotRestrictionId) => {\r\n let newValue = evt.target.value;\r\n let ballotRestrictionTypeId = '';\r\n if (evt.target.value === null || evt.target.value === '0') {\r\n ballotRestrictionTypeId = 1;\r\n } else if (evt.target.value === 'G') {\r\n ballotRestrictionTypeId = 2;\r\n } else if (evt.target.value === 'O' || evt.target.value === 'R') {\r\n ballotRestrictionTypeId = 4;\r\n } else {\r\n ballotRestrictionTypeId = 3;\r\n }\r\n\r\n const updBallot = {\r\n [name]: newValue,\r\n BallotId: ballotId,\r\n BallotRestrictionTypeId: ballotRestrictionTypeId,\r\n };\r\n\r\n axios\r\n .put(\r\n process.env.REACT_APP_API_BASE +\r\n 'ballotRestrictions/' +\r\n ballotRestrictionId,\r\n updBallot,\r\n {\r\n headers: authHeader(),\r\n }\r\n )\r\n }, 1000),\r\n []\r\n );\r\n\r\n /* Update ballot */\r\n const handleUpdateBallot = (ballotId) => {\r\n var foundIndex = props.ballotData.allBallots.findIndex(\r\n (x) => parseInt(x.ballotId) === parseInt(ballotId)\r\n );\r\n\r\n setUpdateBallot({\r\n ...props.ballotData.allBallots[foundIndex],\r\n });\r\n };\r\n\r\n /* Update ballot to referendum with pre-set options */\r\n const handleReferendum = (evt, ballotId) => {\r\n const referendumCandidates = [\r\n {\r\n ballotId: ballotId,\r\n ballotCandidateName: 'Yes',\r\n ballotCandidatePartyId: null,\r\n },\r\n {\r\n ballotId: ballotId,\r\n ballotCandidateName: 'No',\r\n ballotCandidatePartyId: null,\r\n },\r\n {\r\n ballotId: ballotId,\r\n ballotCandidateName: 'Abstain',\r\n ballotCandidatePartyId: null,\r\n },\r\n ];\r\n\r\n axios\r\n .delete(process.env.REACT_APP_API_BASE + 'referendum/' + ballotId, {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n if (evt.target.checked) {\r\n axios\r\n .post(\r\n process.env.REACT_APP_API_BASE + 'referendum/',\r\n referendumCandidates,\r\n {\r\n headers: authHeader(),\r\n }\r\n )\r\n }\r\n });\r\n onChangeHandle(evt, 'referendum', ballotId); \r\n };\r\n\r\n /* set focus */\r\n const handleFocus = (event) => event.target.select();\r\n\r\n\r\n if (isLocked) {\r\n return (\r\n
\r\n Election is Active and Cannot Be Edited\r\n
\r\n );\r\n }\r\n props.ballotData.allBallots.map(k => {\r\n return k;\r\n });\r\n\r\n const initial = props.ballotData.allBallots.map(k => {\r\n const custom = {\r\n ballotId: `${k.ballotId}`,\r\n ballotName: k.ballotName,\r\n ballotDetail: k.ballotDetail,\r\n ballotRestrictionId: k.ballotRestrictionId,\r\n ballotRestrictionDetail: k.ballotRestrictionDetail,\r\n ballotRestrictionTypeId: k.ballotRestrictionTypeId,\r\n numberChosen: k.numberChosen,\r\n writeIn: k.writeIn,\r\n sortOrder: k.sortOrder,\r\n referendum: k.referendum,\r\n allCandidates: k.allCandidates\r\n };\r\n \r\n return custom;\r\n });\r\n\r\n /* Update ballot order */\r\n const reorder = (list, startIndex, endIndex) => {\r\n const result = Array.from(list);\r\n const [removed] = result.splice(startIndex, 1);\r\n let tempBallotData = props.ballotData;\r\n result.splice(endIndex, 0, removed);\r\n result.map((x, i) => {\r\n return (x.sortOrder = i + 1);\r\n });\r\n tempBallotData.allBallots = result;\r\n props.setBallotData(tempBallotData);\r\n const output = result.map(({ ballotId, ...rest }) => ({\r\n ...rest,\r\n ballotId: +ballotId,\r\n }));\r\n axios\r\n .put(process.env.REACT_APP_API_BASE + 'reorderballots/1', output, {\r\n headers: authHeader(),\r\n })\r\n return result;\r\n };\r\n \r\n /* Set ballots as draggable */\r\n function Ballot({ ballot, index }) {\r\n return (\r\n \r\n {(provided) => (\r\n \r\n onChange(ballot.ballotId)}\r\n >\r\n {!state['bg_' + ballot.ballotId] ? (\r\n <>\r\n
\r\n {ballot.ballotName}\r\n
\r\n
\r\n {ballot.allCandidates.map((candidate) => {\r\n return (\r\n
\r\n {candidate.ballotCandidateName}-{' '}\r\n {candidate.ballotCandidatePartyName\r\n ? candidate.ballotCandidatePartyName\r\n : 'Independent'}\r\n
\r\n );\r\n })}\r\n
\r\n \r\n ) : (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {!ballot.referendum ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n \r\n \r\n )}\r\n \r\n \r\n \r\n \r\n
Edit Ballot:
\r\n \r\n onChangeHandle(\r\n evt,\r\n 'ballotName',\r\n ballot.ballotId\r\n )\r\n }\r\n onFocus={handleFocus}\r\n />\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n handleReferendum(evt, ballot.ballotId)\r\n }\r\n defaultChecked={ballot.referendum}\r\n />\r\n \r\n \r\n \r\n
Referendum:
\r\n
Manage Candidates:
\r\n
\r\n \r\n {!ballot.referendum ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n onChangeHandle(\r\n evt,\r\n 'writeIn',\r\n ballot.ballotId\r\n )\r\n }\r\n defaultChecked={ballot.writeIn}\r\n />\r\n \r\n \r\n \r\n
Allow Write Ins:
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n {' '}\r\n Number of Selections Allowed:\r\n \r\n \r\n onChangeHandle(\r\n evt,\r\n 'numberChosen',\r\n ballot.ballotId\r\n )\r\n }\r\n />\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {' '}\r\n Ballot Details:\r\n \r\n \r\n \r\n onChangeHandle(\r\n evt,\r\n 'ballotDetail',\r\n ballot.ballotId\r\n )\r\n }\r\n />\r\n \r\n \r\n \r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
Restrictions:\r\n \r\n onChangeHandleRestrictions(\r\n evt,\r\n 'ballotRestrictionDetail',\r\n ballot.ballotId,\r\n ballot.ballotRestrictionId\r\n )\r\n }\r\n >\r\n \r\n \r\n None\r\n \r\n {ballotRestrictions.map((x) => (\r\n \r\n {x.ballotRestrictionDescription}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n \r\n )}\r\n \r\n
\r\n {!state['bg_' + ballot.ballotId] ? (\r\n <>\r\n onDelete(ballot.ballotId)}\r\n style={{ float: 'right', marginLeft: '10px' }}\r\n options={{ okButtonStyle: 'danger' }}\r\n >\r\n \r\n \r\n \r\n ) : (\r\n <>\r\n onChange(ballot.ballotId)}\r\n style={{ float: 'right' }}\r\n >\r\n \r\n \r\n \r\n )}\r\n
\r\n \r\n )}\r\n
\r\n );\r\n }\r\n\r\n /* List of all ballots in election */\r\n const BallotList = React.memo(function BallotList({ ballots }) {\r\n return ballots.map((ballot, index) => (\r\n \r\n ));\r\n });\r\n \r\n function BallotApp() {\r\n const [state, setState] = useState({ ballots: initial });\r\n\r\n function onDragEnd(result) {\r\n if (!result.destination) {\r\n return;\r\n }\r\n\r\n if (result.destination.index === result.source.index) {\r\n return;\r\n }\r\n\r\n const ballots = reorder(\r\n state.ballots,\r\n result.source.index,\r\n result.destination.index\r\n );\r\n\r\n setState({ ballots });\r\n }\r\n return (\r\n \r\n \r\n {(provided) => (\r\n
\r\n \r\n {provided.placeholder}\r\n
\r\n )}\r\n
\r\n
\r\n );\r\n }\r\n\r\n return ()\r\n}\r\n\r\nexport default DragDrop;","import React, { useState, useEffect } from 'react';\r\nimport authHeader from '../services/AuthHeader';\r\nimport axios from 'axios';\r\nimport AddBallot from './AddBallot';\r\nimport DragDrop from './DragDrop';\r\nimport {\r\n MdOutlineAdd,\r\n MdOutlineRemove,\r\n} from 'react-icons/md';\r\nimport { Link } from 'react-router-dom';\r\n//import { useImmer } from \"use-immer\";\r\n\r\nconst EditElection = ({ electionData, ballotData, setBallotData }) => {\r\n let stateVars = {};\r\n const [partyData, ] = useState([]);\r\n const [showAddBallot] = useState(false);\r\n const [rerender, setRerender] = useState(false);\r\n const [ballotRestrictions, ] = useState([]);\r\n const [isLocked, setIsLocked] = useState(false);\r\n\r\n /* Get election data, use stateVars as dynamic var to maintain state for each ballot */\r\n useEffect(() => {\r\n axios\r\n .get(process.env.REACT_APP_API_BASE + 'election/', {\r\n headers: authHeader(),\r\n })\r\n .then((res) => {\r\n setBallotData(res.data);\r\n setIsLocked(res.data.locked);\r\n res.data.allBallots.map((ballot) => {\r\n stateVars['ib_' + ballot.ballotId] = ballot;\r\n return 1;\r\n });\r\n setRerender(false);\r\n });\r\n }, [rerender]);\r\n\r\n const [state, setState] = useState(stateVars);\r\n\r\n /* update order after deletion of ballot */\r\n const reorder = (tempData, ballotIndex) => {\r\n for (var j = ballotIndex; j < tempData.length; j++){\r\n tempData[j].sortOrder = j;\r\n }\r\n axios\r\n .put(process.env.REACT_APP_API_BASE + 'reorderballots/1', tempData, {\r\n headers: authHeader(),\r\n }) \r\n return tempData;\r\n };\r\n\r\n /* Add new individual ballot */\r\n const addNewBallot = () => {\r\n const newBallotLoc = ballotData.allBallots.length + 1;\r\n const newBallot = {\r\n ElectionId: ballotData.electionId,\r\n BallotName: 'Enter ballot',\r\n NumberChosen: 1,\r\n WriteIn: false,\r\n SortOrder: newBallotLoc,\r\n Referendum: false,\r\n };\r\n let newBallotRestrictions = {\r\n BallotId: 0,\r\n BallotRestrictionTypeId: 1,\r\n BallotRestrictionDetail: null,\r\n };\r\n axios\r\n .post(process.env.REACT_APP_API_BASE + 'ballot/', newBallot, {\r\n headers: authHeader(),\r\n })\r\n .then((resBallot) => {\r\n newBallotRestrictions = {\r\n ...newBallotRestrictions,\r\n BallotId: resBallot.data,\r\n };\r\n axios\r\n .post(\r\n process.env.REACT_APP_API_BASE + 'ballotRestrictions/',\r\n newBallotRestrictions,\r\n {\r\n headers: authHeader(),\r\n }\r\n )\r\n .then(console.log('add'),setRerender(true));\r\n setState((prevState) => ({\r\n ...prevState,\r\n ['bg_' + newBallotLoc]: true,\r\n }));\r\n });\r\n };\r\n\r\n if (isLocked) {\r\n return (\r\n
\r\n Election is Active and Cannot Be Edited\r\n
\r\n );\r\n }\r\n\r\n return (\r\n <>\r\n
\r\n
\r\n

{ballotData.electionName}

\r\n
\r\n
\r\n
\r\n
\r\n\r\n {ballotData.allBallots ? (\r\n
\r\n \r\n
\r\n ) : (\r\n loading...\r\n )}\r\n\r\n
\r\n
\r\n {showAddBallot ? (\r\n \r\n Done\r\n
\r\n ) : (\r\n \r\n Add Another Ballot\r\n
\r\n )}\r\n \r\n
\r\n addNewBallot()}>\r\n {showAddBallot ? (\r\n \r\n ) : (\r\n \r\n )}\r\n \r\n
\r\n \r\n {showAddBallot ? (\r\n \r\n ) : (\r\n ''\r\n )}\r\n \r\n );\r\n};\r\nexport default EditElection;\r\n","import React, { useState, useEffect } from 'react';\r\nimport axios from 'axios';\r\nimport authHeader from '../services/AuthHeader';\r\nimport ViewStatement from './ViewStatement';\r\nimport { Grid, Row, Col, Button } from 'react-bootstrap';\r\n\r\nconst CandidateProfile = (props) => {\r\n const [candidates, setCandidates] = useState();\r\n\r\n useEffect(() => {\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE +\r\n 'candidateprofile/StarId_' +\r\n props.match.params.id,\r\n { headers: authHeader() }\r\n )\r\n .then((res) => {\r\n setCandidates(res.data);\r\n });\r\n }, []);\r\n\r\n const ShowCandidates = React.memo((candidates) => {\r\n if (Array.isArray(candidates.candidates)) {\r\n const listItems = candidates.candidates.map((e) => (\r\n <>\r\n \r\n
\r\n
\r\n \r\n ));\r\n return
{listItems}
;\r\n } else {\r\n return '';\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 window.close();\r\n }}\r\n >\r\n Close This Tab\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default CandidateProfile;\r\n","import React, { useState, useEffect } from 'react';\r\nimport PageHeader from './components/PageHeader';\r\nimport PageFooter from './components/PageFooter';\r\nimport Ballot from './components/Ballot';\r\nimport MockUser from './components/MockUser';\r\nimport Confirm from './components/Confirm';\r\nimport Record from './components/Record';\r\nimport Login from './components/Login';\r\nimport Logout from './components/Logout';\r\nimport Admin from './components/Admin';\r\nimport Statement from './components/Statement';\r\nimport ViewStatement from './components/ViewStatement';\r\nimport ViewCandidate from './components/ViewCandidate';\r\nimport Home from './components/Home';\r\nimport Vote from './components/Vote';\r\nimport Validate from './components/Validate';\r\nimport PrivateRoute from \"./services/PrivateRoute\"\r\nimport {\r\n HashRouter as Router,\r\n Route\r\n} from 'react-router-dom';\r\nimport './App.css';\r\nimport ManageElection from './components/ManageElection';\r\nimport ManageCandidate from './components/ManageCandidate';\r\nimport ManageParty from './components/ManageParty';\r\nimport ManageAdmin from './components/ManageAdmin';\r\nimport EditElection from './components/EditElection';\r\nimport CandidateProfile from './components/CandidateProfile';\r\nimport axios from 'axios';\r\nimport authHeader from \"./services/AuthHeader\";\r\nimport AuthService from './services/AuthService';\r\n\r\n\r\nexport default function App(props) {\r\n const [mock, setMock] = useState([]);\r\n const [votes, setVotes] = useState(\r\n {\r\n \"ElectionId\": \"\",\r\n \"UUID\": \"\",\r\n \"StarId\" : \"\",\r\n \"allBallots\": []\r\n }\r\n );\r\n const [electionData,setElectionData] = useState([{locked: false}]);\r\n const [ballotData,setBallotData] = useState([]);\r\n const [studentInfo, setStudentInfo] = useState([]);\r\n const [isLoading, ] = useState(true);\r\n const [rerender, setrerender] = useState(false)\r\n \r\n\r\n useEffect(() => {\r\n\r\n axios\r\n .get(\r\n process.env.REACT_APP_API_BASE + 'allelections/',{ headers: authHeader() }\r\n )\r\n .then((res) => {\r\n setElectionData(res.data);\r\n });\r\n }, []);\r\n\r\n const handlePost = () => {\r\n let setrerender_temp = rerender;\r\n setrerender(!setrerender_temp);\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 { AuthService.isAdmin() ? (\r\n <>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : '' }\r\n\r\n { AuthService.isStudent() && !AuthService.isAdmin() ? (\r\n <>\r\n \r\n \r\n ) : }\r\n { AuthService.isCandidate() ? (\r\n <>\r\n \r\n \r\n \r\n \r\n ) : ''}\r\n { !AuthService.isAdmin() && !AuthService.isStudent() && !AuthService.isCandidate() ? (\r\n \r\n ) : ''}\r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n );\r\n}\r\n\r\n","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 React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport 'mnsu-webapp-core/styles/main.min.css'\nimport reportWebVitals from './reportWebVitals';\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":""}