{"version":3,"sources":["styles.less","images/banner.png","actionTypes.js","store.js","actions.js","components/atoms/modal/Modal.js","components/atoms/molecules/DeleteConfirmation.jsx","components/atoms/upload/Upload.js","components/atoms/molecules/AddEditPostModal.jsx","components/home.js","components/members.js","components/atoms/molecules/ContactUsModal.jsx","components/navigation.js","components/atoms/molecules/AddEditRaceModal.js","components/races.js","components/atoms/molecules/AdminCards.jsx","components/atoms/molecules/Login.jsx","components/admin.jsx","components/atoms/molecules/AddEditRosterModal.jsx","components/rosters.jsx","components/atoms/molecules/Footer.jsx","components/atoms/NoMatch.jsx","components/races-edit.js","App.js","index.js"],"names":["module","exports","ActionTypes","LOAD_RACES","LOAD_POSTS","POPULATE_RACE_FORM","GET_RACE_INFO","SAVE_RACE","UPDATE_RACE_OBJECT","RESET_RACE","GET_API_VERSION","LOAD_ROSTERS","SAVE_ROSTER","DELETE_ROSTER","UPDATE_LOGIN","GET_YEARS","SET_SELECTED_YEAR","UPDATE_AUTH_TOKEN","SEND_MESSAGE","RaceInitialState","GUID","RaceName","Winner","ReleaseStation","RaceDate","FName","FileData","initialState","Races","Posts","Race","ResetRace","Rosters","Roster","AccountID","Name","LoftName","Email","Phone","IsEmailVisible","IsPhoneVisible","SubscribedNotofication","IsRosterVisible","IsLogin","APIVersion","Years","SelectedYear","AuthToken","reducer","state","action","actionType","Set","payload","StoreContext","createContext","dispatch","undefined","StoreProvider","children","useReducer","Provider","value","AuthStr","concat","config","headers","Authorization","PopulateRaceForm","raceResult","SavePostWithAttachment","post","authToken","Token","fd","FormData","append","name","Title","Detail","Attached","axios","baseUrl","then","response","GetPosts","catch","error","ErrorHandler","get","data","console","log","SaveRace","ValidateRace","set","GetYears","RequestResults","Date","getFullYear","alert","SetSelectedYear","year","selectedYear","params","GetRosters","Logout","msg","toString","includes","ModalWrapper","props","handleSave","event","handleOnClick","closeModal","Fragment","show","Modal","backdrop","Header","title","Body","Footer","Button","variant","onClick","DeleteConfirmation","className","Msg","Upload","fileReader","useContext","file","useState","fileName","setFileName","setFileData","useEffect","ReadFile","sender","target","files","FileReader","onloadend","content","result","lines","split","line","length","row","trim","cols","raceName","substring","raceDate","convertedDate","day","getDate","month","getMonth","releaseStation","charAt","endsWith","winner","handleFileRead","readAsText","type","id","onChange","for","AddEditPostModal","IsPinned","setIsPinned","setTitle","setDetail","setAttachment","setFormData","Post","SavePost","toDelete","DeletePost","preventDefault","valid","style","color","placeholder","e","required","checked","width","height","Home","isAdmin","setIsAdmin","deleteFlag","setDeleteFlag","showModal","setShowModal","modalTitle","setModalTitle","formData","initialPost","render","renderEditDeleteBtn","class","icon","faEdit","addEditClick","deletePostClick","faTrashAlt","map","item","fName","window","open","role","faPlus","Members","renderMembersTR","memberList","index","scope","loftName","React","Component","ContactUsModal","setName","setEmail","setPhone","MessageBody","setMessageBody","handleSend","message","Message","Recipient","href","Navigation","showContactModal","setShowContactModal","src","logo","Navbar","bg","expand","Toggle","aria-controls","Collapse","Nav","Link","as","to","AddEditRaceModal","require","setRaceDate","setWinner","Station","setStation","setFName","setFData","validForm","setValidForm","raceData","dt","EditRace","DeleteRace","showPopperArrow","selected","date","showErrorMessage","RacesUpdated","renderracesTR","visible","setVisible","initialRaceData","setRaceData","colSpan","sort","a","b","dT","evt","guid","currentTarget","filter","i","key","race","stopPropagation","openFile","viewBox","fill","xmlns","d","fill-rule","clip-rule","Top3","displayTop3","DropdownButton","Dropdown","Item","winners","AdminCards","Login","userName","setuserName","password","setPassword","loginStatus","setLoginStatus","btnSubmitText","setBtnSubmitText","FormGroup","controlId","bsSize","FormLabel","FormControl","autoFocus","block","disabled","Logging","Admin","AddEditRosterModal","setIsRosterVisible","setLoftName","SubscribedNotification","setSubscribedNotification","roster","SaveRoster","DeleteRoster","defaultChecked","fieldData","setFieldData","addEdit","counter","contactInfo","GetAPIVersion","faFlagUsa","NoMatch","App","path","exact","component","ReactDOM","document","getElementById"],"mappings":"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","file":"static/js/main.f646fe53.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/styles.81998085.less\";","module.exports = __webpack_public_path__ + \"static/media/banner.f401ef0e.png\";","export const ActionTypes = {\r\n LOAD_RACES: \"LOAD_RACES\",\r\n LOAD_POSTS: \"LOAD_POSTS\",\r\n POPULATE_RACE_FORM: \"POPULATE_RACE_FORM\",\r\n GET_RACE_INFO: \"GET_RACE_INFO\",\r\n SAVE_RACE: \"SAVE_RACE\",\r\n UPDATE_RACE_OBJECT: \"UPDATE_RACE_OBJECT\",\r\n RESET_RACE: \"RESET_RACE\",\r\n GET_API_VERSION: \"GET_API_VERSION\",\r\n LOAD_ROSTERS: \"LOAD_ROSTERS\",\r\n SAVE_ROSTER: \"SAVE_ROSTER\",\r\n DELETE_ROSTER: \"DELETE_ROSTER\",\r\n UPDATE_LOGIN: \"UPDATE_LOGIN\",\r\n GET_YEARS: \"GET_YEARS\",\r\n SET_SELECTED_YEAR: \"SET_SELECTED_YEAR\",\r\n UPDATE_AUTH_TOKEN: \"UPDATE_AUTH_TOKEN\",\r\n SEND_MESSAGE: \"SEND_MESSAGE\",\r\n};\r\n\r\nexport default ActionTypes;\r\n","import React, { createContext, useReducer } from \"react\";\r\nimport ActionTypes from \"./actionTypes\";\r\n\r\nconst RaceInitialState = {\r\n GUID: \"\",\r\n RaceName: \"\",\r\n Winner: \"\",\r\n ReleaseStation: \"\",\r\n RaceDate: \"\",\r\n FName: \"\",\r\n FileData: null,\r\n};\r\n\r\nconst RosterInitialState = {\r\n AccountID: \"\",\r\n GUID: \"\",\r\n Name: \"\",\r\n LoftName: \"\",\r\n Email: \"\",\r\n Phone: \"\",\r\n IsEmailVisible: false,\r\n IsPhoneVisible: false,\r\n SubscribedNotofication: false,\r\n IsRosterVisible: false,\r\n};\r\nexport const initialState = {\r\n Races: [],\r\n Posts: [],\r\n Race: RaceInitialState,\r\n ResetRace: RaceInitialState,\r\n Rosters: [],\r\n Roster: RosterInitialState,\r\n IsLogin: false,\r\n APIVersion: 0,\r\n Years: [],\r\n SelectedYear: \"\",\r\n AuthToken: {},\r\n};\r\n\r\nfunction reducer(state, action) {\r\n switch (action.actionType) {\r\n case ActionTypes.LOAD_RACES:\r\n return {\r\n ...state,\r\n Races: [...new Set(action.payload)],\r\n //Races: action.payload,\r\n Race: RaceInitialState,\r\n ///RacesUpdated: true,\r\n };\r\n case ActionTypes.RESET_RACE:\r\n return {\r\n ...state,\r\n Race: action.payload,\r\n };\r\n case ActionTypes.LOAD_POSTS:\r\n return {\r\n ...state,\r\n Posts: [...new Set(action.payload)],\r\n };\r\n case ActionTypes.POPULATE_RACE_FORM:\r\n return {\r\n ...state,\r\n Race: action.payload,\r\n };\r\n case ActionTypes.UPDATE_RACE_OBJECT:\r\n return {\r\n ...state,\r\n Race: action.payload,\r\n };\r\n case ActionTypes.LOAD_ROSTERS:\r\n return {\r\n ...state,\r\n Rosters: action.payload,\r\n };\r\n case ActionTypes.SAVE_ROSTER:\r\n return {\r\n ...state,\r\n Roster: action.payload,\r\n };\r\n // case ActionTypes.UPDATE_AUTH_TOKEN:\r\n // return {\r\n // ...state,\r\n // AuthToken: action.payload,\r\n // };\r\n case ActionTypes.GET_API_VERSION:\r\n return {\r\n ...state,\r\n APIVersion: action.payload,\r\n };\r\n case ActionTypes.GET_YEARS:\r\n return {\r\n ...state,\r\n Years: action.payload,\r\n };\r\n case ActionTypes.SET_SELECTED_YEAR:\r\n return {\r\n ...state,\r\n SelectedYear: action.payload,\r\n };\r\n\r\n case ActionTypes.UPDATE_AUTH_TOKEN:\r\n return {\r\n ...state,\r\n AuthToken: action.payload,\r\n };\r\n case ActionTypes.UPDATE_LOGIN:\r\n return {\r\n ...state,\r\n IsLogin: action.payload,\r\n };\r\n }\r\n}\r\n\r\nexport const StoreContext = createContext({\r\n ...initialState,\r\n dispatch: undefined,\r\n});\r\n\r\nconst StoreProvider = ({ children }) => {\r\n const [state, dispatch] = useReducer(reducer, initialState);\r\n\r\n return (\r\n \r\n {children}\r\n \r\n );\r\n};\r\n\r\nexport default StoreProvider;\r\n","import axios from \"axios\";\r\nimport React, { useState, useContext, useEffect } from \"react\";\r\n\r\nimport { StoreContext, initialState, SelectedYear } from \"./store\";\r\nimport ActionTypes from \"./actionTypes\";\r\nimport { findDOMNode } from \"react-dom\";\r\n\r\nconst accountID = 1;\r\nconst AuthStr = \"Bearer \".concat(accountID);\r\n//const AuthStr = { AccountID: accountID, Token: initialState.Token };\r\nconst config = { headers: { Authorization: AuthStr } };\r\nconst baseUrl = \"http://api.pigeonconnect.com/api/\";\r\n//const baseUrl = \"http://localhost:64567/api/\";\r\n\r\nexport function PopulateRaceForm(raceResult, dispatch) {\r\n dispatch({\r\n actionType: ActionTypes.POPULATE_RACE_FORM,\r\n payload: raceResult,\r\n });\r\n}\r\nlet fileReader;\r\n\r\nexport function UpdateRace(dispatch, Race) {\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_RACE_OBJECT,\r\n payload: Race,\r\n });\r\n}\r\n\r\nexport function GetRace() {\r\n return initialState.Race;\r\n}\r\n\r\nexport function DeletePost(dispatch, post, authToken) {\r\n var endPoint = baseUrl + `Post/Remove`;\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n const config = { headers: { Authorization: AuthStr } };\r\n\r\n return axios\r\n .post(endPoint, post, config)\r\n .then(function (response) {\r\n GetPosts(dispatch);\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\n\r\nexport function SavePost(dispatch, post, authToken) {\r\n post.AccountID = accountID;\r\n var endPoint = baseUrl + `Post/SavePost`;\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n const config = { headers: { Authorization: AuthStr } };\r\n\r\n return axios\r\n .post(endPoint, post, config)\r\n .then(function (response) {\r\n GetPosts(dispatch);\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\nexport function SavePostWithAttachment(dispatch, post, authToken) {\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n const config = {\r\n headers: {\r\n \"Content-Type\": \"multipart/form-data\",\r\n Authorization: AuthStr,\r\n },\r\n };\r\n\r\n const fd = new FormData();\r\n fd.append(\"attachedTXT\", post.FileData, post.FileData.name);\r\n fd.append(\"title\", post.Title);\r\n fd.append(\"detail\", post.Detail);\r\n fd.append(\"fileName\", post.Attached);\r\n\r\n var endPoint = baseUrl + `Post/SavePostWithUpload`;\r\n return axios\r\n .post(endPoint, fd, config)\r\n .then(function (response) {\r\n GetPosts(dispatch);\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\n\r\nexport function GetPosts(dispatch) {\r\n var endpoint = baseUrl + \"Post/GetPosts\";\r\n\r\n return axios\r\n .get(endpoint, config)\r\n .then(function (response) {\r\n dispatch({\r\n actionType: ActionTypes.LOAD_POSTS,\r\n payload: response.data,\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\n\r\nexport function GetAPIVersion(dispatch) {\r\n var endPoint = baseUrl + `Account/GetAPIVersion`;\r\n\r\n return axios\r\n .get(endPoint, config)\r\n .then(function (response) {\r\n dispatch({\r\n actionType: ActionTypes.GET_API_VERSION,\r\n payload: response.data,\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\n\r\nfunction ValidateRace(Race) {\r\n if (Race.FileData === null) return false;\r\n\r\n return true;\r\n}\r\n\r\nexport function EditRace(Race, dispatch, authToken) {\r\n Race.AccountID = accountID;\r\n\r\n var endPoint = baseUrl + `RaceResults/EditRace`;\r\n\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n const config = { headers: { Authorization: AuthStr } };\r\n\r\n return axios\r\n .post(endPoint, Race, config)\r\n .then(function (response) {\r\n RequestResults(dispatch, new Date(Race.RaceDate).getFullYear());\r\n PopulateRaceForm(initialState.ResetRace, dispatch);\r\n GetYears(dispatch);\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\n\r\nexport function SaveRace(Race, dispatch, authToken) {\r\n Race.AccountID = accountID;\r\n\r\n if (!ValidateRace(Race)) {\r\n alert(\"choose a valid file to upload\");\r\n return;\r\n }\r\n const fd = new FormData();\r\n fd.append(\"attachedTXT\", Race.FileData, Race.FileData.name);\r\n fd.set(\"raceName\", Race.RaceName);\r\n fd.append(\"winner\", Race.Winner);\r\n fd.append(\"releaseStation\", Race.ReleaseStation);\r\n fd.append(\"raceDate\", Race.RaceDate);\r\n fd.append(\"fileName\", Race.FName);\r\n\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n const config = { headers: { Authorization: AuthStr } };\r\n\r\n var endPoint = baseUrl + `RaceResults/SaveRace`;\r\n\r\n return axios\r\n .post(endPoint, fd, config)\r\n .then(function (response) {\r\n GetYears(dispatch);\r\n PopulateRaceForm(initialState.ResetRace, dispatch);\r\n RequestResults(dispatch, new Date(Race.RaceDate).getFullYear());\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\n\r\nexport function DeleteRace(Race, dispatch, authToken) {\r\n Race.AccountID = accountID;\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n var endPoint = baseUrl + `RaceResults/Remove`;\r\n const config = { headers: { Authorization: AuthStr } };\r\n\r\n return axios\r\n .post(endPoint, Race, config)\r\n .then(function (response) {\r\n GetYears(dispatch);\r\n RequestResults(dispatch, new Date(Race.RaceDate).getFullYear());\r\n PopulateRaceForm(initialState.ResetRace, dispatch);\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\nexport function ResetRace(Race, dispatch) {\r\n dispatch({\r\n actionType: ActionTypes.RESET_RACE,\r\n payload: Race,\r\n });\r\n}\r\nexport function SetSelectedYear(dispatch, year) {\r\n dispatch({\r\n actionType: ActionTypes.SET_SELECTED_YEAR,\r\n payload: year,\r\n });\r\n}\r\n\r\nexport function RequestResults(dispatch, selectedYear) {\r\n \r\n if (selectedYear == undefined || selectedYear===\"\") return;\r\n \r\n var endPoint = baseUrl + `RaceResults/GetResults`;\r\n\r\n const config = {\r\n headers: { Authorization: AuthStr },\r\n params: { year: selectedYear },\r\n };\r\n\r\n return axios\r\n .get(endPoint, config)\r\n .then(function (response) {\r\n dispatch({\r\n actionType: ActionTypes.LOAD_RACES,\r\n payload: response.data,\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\n\r\nexport function GetYears(dispatch) {\r\n var endPoint = baseUrl + `RaceResults/GetYears`;\r\n\r\n return axios\r\n .get(endPoint, config)\r\n .then(function (response) {\r\n dispatch({\r\n actionType: ActionTypes.GET_YEARS,\r\n payload: response.data,\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\n\r\n//ROSTERS\r\nexport function SaveRoster(dispatch, Roster, authToken) {\r\n Roster.AccountID = accountID;\r\n var endPoint = baseUrl + `ClubRoster/SaveRoster`;\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n const config = { headers: { Authorization: AuthStr } };\r\n return axios\r\n .post(endPoint, Roster, config)\r\n .then(function (response) {\r\n GetRosters(dispatch);\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\n\r\nexport function GetRosters(dispatch) {\r\n var endPoint = baseUrl + `ClubRoster/GetRosters`;\r\n return axios\r\n .get(endPoint, config)\r\n .then(function (response) {\r\n dispatch({\r\n actionType: ActionTypes.LOAD_ROSTERS,\r\n payload: response.data,\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\nexport function DeleteRoster(dispatch, Roster, authToken) {\r\n var endPoint = baseUrl + `ClubRoster/Remove`;\r\n const AuthStr = \"Token \".concat(authToken.Token + \"_\" + accountID);\r\n const config = { headers: { Authorization: AuthStr } };\r\n\r\n return axios\r\n .post(endPoint, Roster, config)\r\n .then(function (response) {\r\n GetRosters(dispatch);\r\n })\r\n .catch(function (error) {\r\n ErrorHandler(error);\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n });\r\n}\r\nexport function Logout(dispatch) {\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_AUTH_TOKEN,\r\n payload: {},\r\n });\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: false,\r\n });\r\n}\r\nexport function Logging(dispatch, userName, password) {\r\n var endPoint = baseUrl + `Account/Authenticate`;\r\n\r\n //const AuthStr = \"Bearer \".concat(accountID); //+ \", Token \".concat(initialState.Token);\r\n const config = {\r\n headers: { Authorization: AuthStr },\r\n params: { userName, password },\r\n };\r\n return axios\r\n .get(endPoint, config)\r\n .then(function (response) {\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_AUTH_TOKEN,\r\n payload: response.data,\r\n });\r\n\r\n dispatch({\r\n actionType: ActionTypes.UPDATE_LOGIN,\r\n payload: response.data.Token.length > 0 ? true : false,\r\n });\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\n\r\nexport function UpdateLogin(dispatch, userName, password) {\r\n var endPoint = baseUrl + `Account/Login`;\r\n var x = \" Token\";\r\n const AuthStr = \"Bearer \".concat(accountID, x); //+ \", Token \".concat(initialState.Token);\r\n const config = {\r\n headers: { Authorization: AuthStr },\r\n params: { userName, password },\r\n };\r\n return axios\r\n .get(endPoint, config)\r\n .then(function (response) {})\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\n\r\nexport function SendMessage(dispatch, message, authToken) {\r\n message.AccountID = accountID;\r\n message.Recipient = \"Lyndhurstpigeon@gmail.com\";\r\n var endPoint = baseUrl + `Account/SendMessage`;\r\n\r\n return axios\r\n .post(endPoint, message, config)\r\n .then(function (response) {\r\n console.log(response.data);\r\n })\r\n .catch(function (error) {\r\n console.log(error);\r\n });\r\n}\r\n\r\nfunction ErrorHandler(error) {\r\n var msg = \"\";\r\n if (error.toString().includes(\"401\")) {\r\n msg = \"Invalid Authentication or token expired. Please Login to continue.\";\r\n } else {\r\n msg = error.toString();\r\n }\r\n alert(msg);\r\n}\r\n","import React, { useState } from \"react\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport Modal from \"react-bootstrap/Modal\";\r\n\r\nlet ModalWrapper = (props) => {\r\n // const [show, setShow] = useState(props.show);\r\n\r\n // if (show !== props.show) setShow(props.show);\r\n\r\n // const handleClose = () => setShow(false);\r\n // const handleShow = () => setShow(true);\r\n\r\n // const handleOnClickClose = () => {\r\n // handleClose();\r\n // };\r\n\r\n const handleSave = (event) => {\r\n if (props.handleOnClick(event)) {\r\n // handleClose();\r\n props.closeModal();\r\n }\r\n };\r\n\r\n const renderModal = () => {\r\n return (\r\n \r\n \r\n {props.title}\r\n \r\n {props.children}\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 {props.show ? renderModal() : null}\r\n \r\n );\r\n};\r\n\r\nexport default ModalWrapper;\r\n","import React from \"react\";\r\n\r\nconst DeleteConfirmation = (props) => {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default DeleteConfirmation;\r\n","import React, { useContext, useState, useEffect } from \"react\";\r\nimport { OpenFile, PopulateRaceForm, UpdateRace } from \"../../../actions\";\r\nimport { StoreContext } from \"../../../store\";\r\nimport \"./upload.css\";\r\n\r\nlet Upload = (props) => {\r\n const { dispatch, Race, FormData } = useContext(StoreContext);\r\n\r\n let raceResult = Race;\r\n let fileReader;\r\n let file = Race.FileData;\r\n\r\n const [fileName, setFileName] = useState(\"\");\r\n const [fileData, setFileData] = useState({});\r\n\r\n useEffect(() => {\r\n let mounted = true;\r\n if (file != null) {\r\n setFileName(file.name);\r\n setFileData(file);\r\n }\r\n }, [fileName]);\r\n\r\n const handleFileRead = (sender) => {\r\n const content = fileReader.result;\r\n // exit if not WinSpeed\r\n if (!content.includes(\"WinSpeed\")) return;\r\n\r\n var lines = content.split(\"\\n\");\r\n\r\n for (var line = 0; line < lines.length; line++) {\r\n //console.log(\"line \" + line + \"=\" + lines[line]);\r\n const row = lines[line].trim();\r\n //get raceName and raceDate\r\n if (raceResult.RaceName == \"\" && row.includes(\"Name:\")) {\r\n var cols = row.split(\":\");\r\n console.log(cols[1]);\r\n const raceName = cols[1].substring(0, 30);\r\n raceResult.RaceName = raceName.length > 0 ? raceName : \"\";\r\n\r\n const raceDate = cols[2].substring(0, 12).trim();\r\n\r\n if (raceDate.length > 0) {\r\n var convertedDate = new Date(raceDate);\r\n const day = convertedDate.getDate();\r\n const month = convertedDate.getMonth() + 1;\r\n const year = convertedDate.getFullYear();\r\n\r\n raceResult.RaceDate = new Date(month + \"/\" + day + \"/\" + year);\r\n } else {\r\n raceResult.raceDate = \"\";\r\n }\r\n }\r\n\r\n //get releaseStation\r\n if (row.includes(\"Station:\")) {\r\n var cols = row.split(\":\");\r\n const releaseStation = cols[5].substring(0, 30);\r\n raceResult.ReleaseStation =\r\n releaseStation.length > 0 ? releaseStation : \"\";\r\n }\r\n\r\n //get first place\r\n if (row.charAt(0) == 1 && row.endsWith(100)) {\r\n var winner = row.split(\"/\");\r\n raceResult.Winner = winner[0].substring(1);\r\n }\r\n //s\r\n }\r\n raceResult.FName = file.name;\r\n raceResult.FileData = file;\r\n PopulateRaceForm(raceResult, dispatch);\r\n\r\n //reset the input type file\r\n };\r\n const ReadFile = (sender) => {\r\n file = sender.target.files[0];\r\n setFileData(file);\r\n setFileName(file.name);\r\n if (file.name.includes(\".txt\")) {\r\n fileReader = new FileReader();\r\n fileReader.onloadend = () => handleFileRead(sender);\r\n fileReader.readAsText(file);\r\n } else {\r\n raceResult.FName = file.name;\r\n raceResult.FileData = file;\r\n PopulateRaceForm(raceResult, dispatch);\r\n }\r\n //sender.target.value = null;\r\n };\r\n\r\n // const filesOnChange = (sender) => {\r\n // file = sender.target.files[0];\r\n // Race.FileData = file;\r\n // console.log(`file ${Race.FileData}`);\r\n // //FormData.append(\"file\", sender.target.files);\r\n // };\r\n\r\n return (\r\n
\r\n ReadFile(sender)} />\r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Upload;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { StoreContext, initialState } from \"../../../store\";\r\nimport ModalWrapper from \"../modal/Modal\";\r\nimport DeleteConfirmation from \"../molecules/DeleteConfirmation\";\r\nimport { SavePost, SavePostWithAttachment, DeletePost } from \"../../../actions\";\r\nimport Upload from \"../upload/Upload\";\r\n\r\nconst AddEditPostModal = (props) => {\r\n const { dispatch, AuthToken } = useContext(StoreContext);\r\n console.log(\"load addeditpost modal\");\r\n //roster form\r\n const [IsPinned, setIsPinned] = useState(\"\");\r\n\r\n const [Title, setTitle] = useState(\"\");\r\n const [Detail, setDetail] = useState(\"\");\r\n const [Attached, setAttachment] = useState(\"\");\r\n\r\n const post = props.FormData;\r\n const [FormData, setFormData] = useState(\"\");\r\n const [FileData, setFileData] = useState(\"\");\r\n\r\n const ReadFile = (sender) => {\r\n let file = sender.target.files[0];\r\n setAttachment(file.name);\r\n setFileData(file);\r\n };\r\n\r\n //this is triggered when upload file is used or when racedata already exists\r\n useEffect(() => {\r\n setTitle(post.Title);\r\n setDetail(post.Detail);\r\n setFormData(post);\r\n setAttachment(post.Attached);\r\n setIsPinned(post.IsPinned);\r\n }, [post.Title]);\r\n\r\n //redundant maybe create modal wrapper\r\n const deleteConfirmed = (event) => {\r\n DeletePost(dispatch, post, AuthToken);\r\n props.closeModal();\r\n };\r\n\r\n const handleSave = () => {\r\n let Post = {\r\n GUID: post.GUID,\r\n Title: Title,\r\n Detail: Detail,\r\n Attached: Attached,\r\n IsPinned: IsPinned,\r\n };\r\n\r\n if (Attached == \"\" || Post.GUID != \"\") SavePost(dispatch, Post, AuthToken);\r\n else {\r\n Post.FileData = FileData;\r\n SavePostWithAttachment(dispatch, Post, AuthToken);\r\n }\r\n };\r\n\r\n const validateForm = (event) => {\r\n event.preventDefault();\r\n let valid = true;\r\n if (Title == \"\" && Detail == \"\") {\r\n valid = false;\r\n }\r\n\r\n if (valid) handleSave();\r\n\r\n return valid;\r\n };\r\n //end redundant\r\n\r\n const renderForm = () => {\r\n return (\r\n
\r\n
\r\n {/* hide this on edit */}\r\n {FormData.GUID == \"\" ? (\r\n
\r\n ReadFile(sender)}\r\n />\r\n \r\n
\r\n ) : (\r\n \r\n If you need to re-upload file, delete this post and just add a New\r\n Post\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n setTitle(e.target.value)}\r\n required\r\n />\r\n
  • \r\n
  • \r\n \r\n\r\n setDetail(e.target.value)}\r\n placeholder=\"Enter Detail\"\r\n />\r\n
  • \r\n
  • \r\n setIsPinned(!IsPinned)}\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 {props.toDelete ? (\r\n \r\n ) : (\r\n renderForm()\r\n )}\r\n \r\n );\r\n};\r\nexport default AddEditPostModal;\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport \"bootstrap/dist/css/bootstrap.min.css\";\r\nimport { GetPosts } from \"../actions\";\r\nimport { StoreContext, initialState } from \"../store\";\r\nimport queryString from \"query-string\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlus, faEdit, faTrashAlt } from \"@fortawesome/free-solid-svg-icons\";\r\nimport AddEditPostModal from \"../components/atoms/molecules/AddEditPostModal\";\r\n\r\nconst openFile = (fName) => {\r\n window.open(\r\n \"http://api.pigeonconnect.com/UploadedFiles/lyndhurst/posts/\" + fName,\r\n \"_blank\"\r\n );\r\n};\r\n\r\nlet Home = (props) => {\r\n const { Posts, IsLogin, dispatch } = useContext(StoreContext);\r\n //const values = queryString.parse(window.location.search);\r\n\r\n let [isAdmin, setIsAdmin] = useState(false);\r\n const [deleteFlag, setDeleteFlag] = useState(false);\r\n const [showModal, setShowModal] = useState(false);\r\n const [modalTitle, setModalTitle] = useState(\"\");\r\n const [formData, setFormData] = useState(\"\");\r\n\r\n useEffect(() => {\r\n setIsAdmin(IsLogin);\r\n }, [IsLogin]);\r\n\r\n const initialPost = {\r\n GUID: \"\",\r\n Title: \"\",\r\n Detail: \"\",\r\n Attached: \"\",\r\n };\r\n\r\n useEffect(() => {\r\n GetPosts(dispatch);\r\n }, []);\r\n\r\n const addEditClick = (post) => {\r\n setFormData(post);\r\n setShowModal(true);\r\n setModalTitle(\"Edit Race\");\r\n setDeleteFlag(false);\r\n };\r\n const addNewClick = (post) => {\r\n setFormData(post);\r\n\r\n setModalTitle(\"Post Announcement\");\r\n setShowModal(true);\r\n\r\n setDeleteFlag(false);\r\n };\r\n\r\n const deletePostClick = (post) => {\r\n setFormData(post);\r\n setModalTitle(\"Please Confirm\");\r\n setShowModal(true);\r\n setDeleteFlag(true);\r\n // setRaceData(race);\r\n };\r\n\r\n const hideModalClick = () => {\r\n setShowModal(false);\r\n };\r\n\r\n const renderEditDeleteBtn = (post) => {\r\n return (\r\n
\r\n \r\n addEditClick(post)}\r\n />\r\n \r\n deletePostClick(post)}>\r\n \r\n \r\n
\r\n );\r\n };\r\n\r\n const renderAdminBtn = () => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n {showModal ? (\r\n hideModalClick()}\r\n FormData={formData}\r\n title={modalTitle}\r\n toDelete={deleteFlag}\r\n >\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n
\r\n );\r\n };\r\n let render;\r\n if (Posts.length <= 0) {\r\n render = (\r\n
\r\n
\r\n

Welcome to Lyndhurst Pigeon Club Website!

\r\n

\r\n There's no announcement at the moment, please check back later.\r\n

\r\n
\r\n
\r\n );\r\n } else {\r\n render = Posts.map((item) => {\r\n if (item.Attached.length > 3) {\r\n return (\r\n
\r\n {isAdmin ? renderEditDeleteBtn(item) : \"\"}\r\n\r\n
\r\n

{item.Title}

\r\n

{item.Detail}

\r\n

\r\n openFile(item.Attached)}\r\n role=\"button\"\r\n target=\"blank\"\r\n >\r\n Read more\r\n \r\n

\r\n
\r\n
\r\n );\r\n } else {\r\n return (\r\n
\r\n {isAdmin ? renderEditDeleteBtn(item) : \"\"}\r\n
\r\n

{item.Title}

\r\n

{item.Detail}

\r\n
\r\n
\r\n );\r\n }\r\n });\r\n }\r\n\r\n return (\r\n
\r\n
{isAdmin ? renderAdminBtn() : \"\"}
\r\n {render}\r\n
\r\n );\r\n};\r\n\r\nexport default Home;\r\n","import React from \"react\";\r\n\r\nclass Members extends React.Component {\r\n render() {\r\n const renderMembersTR = memberList.map((item, index) => {\r\n return (\r\n \r\n {index + 1}\r\n {item.name}\r\n {item.loftName}\r\n \r\n );\r\n });\r\n return (\r\n
\r\n

Members

\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {renderMembersTR}\r\n
#NameLoft Name
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Members;\r\n\r\nconst memberList = [\r\n { name: \"John Baginski\", loftName: \"Crown\" },\r\n { name: \"Vinnie Torre\", loftName: \"Hillside Loft\" },\r\n];\r\n","import React, { useState, useContext } from \"react\";\r\nimport { StoreContext } from \"../../../store\";\r\n\r\nimport Button from \"react-bootstrap/Button\";\r\nimport \"../../../../src/styles.less\";\r\nimport ModalWrapper from \"../modal/Modal\";\r\nimport { SendMessage } from \"../../../actions\";\r\n\r\nconst ContactUsModal = (props) => {\r\n const { dispatch } = useContext(StoreContext);\r\n\r\n const [Name, setName] = useState(\"\");\r\n const [Email, setEmail] = useState(\"\");\r\n const [Phone, setPhone] = useState(\"\");\r\n const [MessageBody, setMessageBody] = useState(\"\");\r\n\r\n let handleSend = () => {\r\n var Message = { Name: \"\", Email: \"\", Phone: \"\", MessageBody: \"\" };\r\n Message.Name = Name;\r\n Message.Email = Email;\r\n Message.Phone = Phone;\r\n Message.MessageBody = MessageBody;\r\n\r\n SendMessage(dispatch, Message);\r\n props.closeModal();\r\n };\r\n return (\r\n handleSend()}\r\n >\r\n
\r\n
\r\n
\r\n 20 Stuyvesant Ave Lyndhurst, NJ 07071\r\n
\r\n
\r\n
\r\n
\r\n Email\r\n\r\n \r\n {\" \"}\r\n \r\n Lyndhurstpigeon@gmail.com\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n Phone\r\n 201-933-3764\r\n
\r\n
\r\n Fax\r\n 201-933-3764\r\n
\r\n
\r\n
\r\n You can also use the form below\r\n
\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n setName(e.target.value)}\r\n required\r\n />\r\n
  • \r\n
  • \r\n \r\n setEmail(e.target.value)}\r\n required\r\n />\r\n
  • \r\n
  • \r\n \r\n setPhone(e.target.value)}\r\n required\r\n />\r\n
  • \r\n\r\n
  • \r\n \r\n\r\n setMessageBody(e.target.value)}\r\n />\r\n
  • \r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\nexport default ContactUsModal;\r\n","import React, { useContext, useState, useEffect } from \"react\";\r\nimport { NavLink } from \"react-router-dom\";\r\nimport logo from \"../images/banner.png\";\r\nimport \"../App.css\";\r\nimport {\r\n Navbar,\r\n NavItem,\r\n NavDropdown,\r\n MenuItem,\r\n Nav,\r\n NavbarBrand,\r\n} from \"react-bootstrap\";\r\nimport { StoreContext } from \"../store\";\r\nimport { faBold, faFlagUsa } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { UpdateLogin, Logout } from \"../actions\";\r\nimport { Link } from \"react-router-dom\";\r\nimport ContactUsModal from \"./atoms/molecules/ContactUsModal\";\r\n\r\nconst Navigation = () => {\r\n const { IsLogin, APIVersion, dispatch } = useContext(StoreContext);\r\n\r\n const [showContactModal, setShowContactModal] = useState(false);\r\n\r\n const hideModalClick = () => {\r\n setShowContactModal(false);\r\n };\r\n\r\n const handleLogout = () => {\r\n Logout(dispatch);\r\n };\r\n\r\n const handleShowContact = () => {\r\n setShowContactModal(true);\r\n };\r\n\r\n const handleLogin = () => {\r\n //UpdateLogin(dispatch, true);\r\n };\r\n useEffect(() => {\r\n //console.log(\"is login\" + IsLogin);\r\n }, IsLogin);\r\n\r\n return (\r\n
\r\n
\r\n {IsLogin ? (\r\n handleLogout()}>\r\n Logout\r\n {/* \r\n Logout\r\n */}\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n {showContactModal ? (\r\n hideModalClick()}\r\n />\r\n ) : null}\r\n
\r\n );\r\n};\r\nexport default Navigation;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport Moment from \"react-moment\";\r\nimport DatePicker from \"react-datepicker\";\r\nimport \"react-datepicker/dist/react-datepicker.css\";\r\nimport {\r\n OpenFile,\r\n GetRace,\r\n SaveRace,\r\n ResetRace,\r\n EditRace,\r\n UpdateRace,\r\n PopulateRaceForm,\r\n DeleteRace,\r\n} from \"../../../actions\";\r\nimport Upload from \"../upload/Upload\";\r\nimport TextBox from \"../textboxes/TextBox\";\r\nimport { StoreContext } from \"../../../store\";\r\nimport Button from \"react-bootstrap/Button\";\r\nimport \"../../../../src/styles.less\";\r\nimport ModalWrapper from \"../modal/Modal\";\r\nimport RaceForm from \"../molecules/RaceForm\";\r\nimport { useAccordionToggle } from \"react-bootstrap\";\r\nimport DeleteConfirmation from \"../molecules/DeleteConfirmation\";\r\nconst AddEditRaceModal = (props) => {\r\n const moment = require(\"moment\");\r\n const { dispatch, Race, AuthToken } = useContext(StoreContext);\r\n\r\n //form fields\r\n let [RaceDate, setRaceDate] = useState(new Date());\r\n let [Name, setName] = useState(\"\");\r\n let [Winner, setWinner] = useState(\"\");\r\n let [Station, setStation] = useState(\"\");\r\n let [ErrorMsg, setErrorMsg] = useState(false);\r\n let [FName, setFName] = useState(\"\");\r\n let [FData, setFData] = useState(\"\");\r\n const [validForm, setValidForm] = useState(true);\r\n const [formData, setFormData] = useState(props.raceData);\r\n useEffect(() => {\r\n PopulateRaceForm(props.raceData, dispatch);\r\n }, [props.raceData]);\r\n\r\n const showErrorMessage = () => {\r\n if (!validForm && Name.length == 0)\r\n return
Race Name is Required.
;\r\n };\r\n\r\n // //check if adding or editing race\r\n // if (props.raceData.GUID == \"\" || props.raceData.GUID == Race.GUID) {\r\n // } else {\r\n // //set formfields\r\n // PopulateRaceForm(props.raceData, dispatch);\r\n // }\r\n\r\n // if (raceData.GUID !== Race.GUID) PopulateRaceForm(raceData, dispatch);\r\n //setEditFlag(true);\r\n // useEffect(() => {\r\n // setRace(props.raceData);\r\n // }, [raceData]);\r\n\r\n //this is triggered when upload file is used or when racedata already exists\r\n useEffect(() => {\r\n let dt = Race.RaceDate;\r\n\r\n if (dt == \"\") setRaceDate(new Date());\r\n else setRaceDate(new Date(dt));\r\n\r\n setName(Race.RaceName.trim());\r\n setWinner(Race.Winner.trim());\r\n setStation(Race.ReleaseStation.trim());\r\n setFName(Race.FName.trim());\r\n setFData(Race.FileData);\r\n setFormData(Race);\r\n }, [Race.RaceName, Race.GUID, Race.FName]);\r\n\r\n let handleSave = () => {\r\n formData.RaceName = Name;\r\n formData.Winner = Winner;\r\n formData.RaceDate = `${\r\n RaceDate.getMonth() + 1\r\n }/${RaceDate.getDate()}/${RaceDate.getFullYear()}`;\r\n formData.ReleaseStation = Station;\r\n\r\n if (formData.GUID == \"\") SaveRace(formData, dispatch, AuthToken);\r\n else EditRace(formData, dispatch, AuthToken);\r\n };\r\n\r\n const validateForm = (event) => {\r\n event.preventDefault();\r\n let valid = true;\r\n\r\n if (Name.length == 0) {\r\n valid = false;\r\n setValidForm(false);\r\n }\r\n\r\n if (valid) handleSave();\r\n\r\n return valid;\r\n };\r\n\r\n const deleteConfirmed = (event) => {\r\n DeleteRace(Race, dispatch, AuthToken);\r\n props.closeModal();\r\n };\r\n\r\n const dt = new Date();\r\n\r\n const renderRaceForm = () => {\r\n return (\r\n
\r\n
\r\n {/* hide this on edit */}\r\n {formData.GUID == \"\" ? (\r\n \r\n ) : (\r\n \r\n If you need to re-upload file, delete this race and just add a New\r\n Race\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
    \r\n
  • \r\n \r\n\r\n setRaceDate(date)}\r\n />\r\n
  • \r\n
  • \r\n \r\n setName(e.target.value)}\r\n required\r\n />\r\n
  • \r\n
  • \r\n \r\n setWinner(e.target.value)}\r\n />\r\n
  • \r\n
  • \r\n \r\n setStation(e.target.value)}\r\n />\r\n
  • \r\n {showErrorMessage()}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n };\r\n\r\n const handeClose = () => {};\r\n\r\n return (\r\n \r\n {props.toDelete ? (\r\n \r\n ) : (\r\n renderRaceForm(props.GUID)\r\n )}\r\n \r\n );\r\n};\r\nexport default AddEditRaceModal;\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport { RequestResults, GetYears, SetSelectedYear } from \"../actions\";\r\nimport { StoreContext, initialState } from \"../store\";\r\nimport Table from \"./atoms/tables/Table\";\r\nimport Upload from \"./atoms/upload/Upload\";\r\nimport ToggleDisplay from \"react-toggle-display\";\r\nimport AddEditRaceModal from \"./atoms/molecules/AddEditRaceModal\";\r\nimport { Button, DropdownButton, Dropdown } from \"react-bootstrap\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlus, faEdit, faTrashAlt } from \"@fortawesome/free-solid-svg-icons\";\r\nimport queryString from \"query-string\";\r\nimport { relativeTimeRounding } from \"moment\";\r\n\r\nlet Races = (props) => {\r\n //const values = queryString.parse(window.location.search);\r\n const {\r\n Races,\r\n SelectedYear,\r\n Years,\r\n IsLogin,\r\n dispatch,\r\n RacesUpdated,\r\n } = useContext(StoreContext);\r\n\r\n let [isAdmin, setIsAdmin] = useState(false);\r\n\r\n useEffect(() => {\r\n setIsAdmin(IsLogin);\r\n }, [IsLogin]);\r\n\r\n useEffect(() => {\r\n SetSelectedYear(dispatch, Years[0]);\r\n }, [Years[0]]);\r\n\r\n useEffect(() => {\r\n RequestResults(dispatch, SelectedYear);\r\n }, [SelectedYear]);\r\n\r\n const [reloadRaces, setReloadRace] = useState(true);\r\n const [showTop3, setShowTop3] = useState();\r\n const [visible, setVisible] = useState([]);\r\n\r\n const top3WinnersHandleClick = (evt, guid) => {\r\n if (evt.currentTarget == \"svg\") return;\r\n if (visible.includes(guid)) setVisible(visible.filter((i) => i != guid));\r\n else setVisible([...visible, guid]);\r\n };\r\n\r\n useEffect(() => {\r\n RequestResults(dispatch,SelectedYear);\r\n GetYears(dispatch);\r\n }, []);\r\n\r\n let renderracesTR;\r\n const initialRaceData = {\r\n GUID: \"\",\r\n RaceName: \"\",\r\n Winner: \"\",\r\n ReleaseStation: \"\",\r\n RaceDate: new Date(),\r\n FName: \"\",\r\n };\r\n\r\n const [raceData, setRaceData] = useState(initialRaceData);\r\n const [showModal, setShowModal] = useState(false);\r\n const [modalTitle, setModalTitle] = useState(\"\");\r\n const [deleteFlag, setDeleteFlag] = useState(false);\r\n\r\n const addEditClick = (evt, race) => {\r\n evt.stopPropagation();\r\n setRaceData(race);\r\n setShowModal(true);\r\n setModalTitle(\"Edit Race\");\r\n setDeleteFlag(false);\r\n };\r\n const addNewClick = (race) => {\r\n setRaceData(race);\r\n setShowModal(true);\r\n setModalTitle(\"Add Race\");\r\n setDeleteFlag(false);\r\n };\r\n\r\n const deleteRaceClick = (evt, race) => {\r\n evt.stopPropagation();\r\n\r\n setModalTitle(\"Please Confirm\");\r\n setShowModal(true);\r\n setDeleteFlag(true);\r\n setRaceData(race);\r\n };\r\n\r\n const hideModalClick = () => {\r\n setShowModal(false);\r\n };\r\n\r\n if (Races.length == 0) {\r\n renderracesTR = (\r\n \r\n No Race Results Found \r\n \r\n );\r\n } else {\r\n const sortedRaces = Races.sort(\r\n (a, b) => new Date(b.RaceDate) - new Date(a.RaceDate)\r\n );\r\n renderracesTR = sortedRaces.map((item, index) => {\r\n const dT = new Date(item.RaceDate);\r\n return (\r\n \r\n top3WinnersHandleClick(event, item.GUID)}\r\n key={index}\r\n >\r\n {isAdmin ? (\r\n \r\n addEditClick(event, item)}\r\n />\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {isAdmin ? (\r\n \r\n deleteRaceClick(event, item)}\r\n />\r\n \r\n ) : (\r\n \"\"\r\n )}\r\n\r\n {index + 1}\r\n\r\n {`${\r\n dT.getMonth() + 1\r\n }/${dT.getDate()}/${dT.getFullYear()}`}\r\n {item.Winner}\r\n \r\n {item.RaceName} ({item.ReleaseStation})\r\n \r\n \r\n openFile(item.FName)}\r\n role=\"button\"\r\n target=\"blank\"\r\n >\r\n \r\n \r\n \r\n {\" \"}\r\n \r\n \r\n \r\n {item.Top3.length < 1 ? (\r\n \"\"\r\n ) : (\r\n \r\n \r\n

Top 3 Winners

\r\n {displayTop3(item.Top3)}\r\n \r\n \r\n )}\r\n
\r\n );\r\n });\r\n }\r\n\r\n const renderAdminBtn = () => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n {showModal ? (\r\n hideModalClick()}\r\n raceData={raceData}\r\n toDelete={deleteFlag}\r\n >\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n
\r\n );\r\n };\r\n\r\n const cols = [\"#\", \"Date\", \"Winner\", \"Race\", \"Result\"];\r\n return (\r\n
\r\n {isAdmin ? renderAdminBtn() : \"\"}\r\n
\r\n
\r\n \r\n {Years.map((item) => (\r\n SetSelectedYear(dispatch, item)}\r\n >\r\n {item}\r\n \r\n ))}\r\n \r\n View Archive\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n {isAdmin ? : \"\"}\r\n {isAdmin ? : \"\"}\r\n {cols.map((item) => (\r\n \r\n ))}\r\n \r\n \r\n {renderracesTR}\r\n
\r\n {SelectedYear == undefined\r\n ? \"\"\r\n : `List of races for ${SelectedYear}`}\r\n
editdelete{item}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default Races;\r\n\r\nconst openFile = (fName) => {\r\n //window.open(\"../../files/races/\" + fName, \"_blank\");\r\n window.open(\r\n \"http://api.pigeonconnect.com/UploadedFiles/lyndhurst/raceresults/\" + fName,\r\n \"_blank\"\r\n );\r\n};\r\n\r\nlet fileReader;\r\nlet raceResult = {};\r\n\r\nconst displayTop3 = (winners) => {\r\n var newWinners = winners.split(\",\");\r\n\r\n return newWinners.map((winner) =>

{winner}

);\r\n};\r\n","import React from \"react\";\r\nimport { BrowserRouter, Link } from \"react-router-dom\";\r\n\r\nlet AdminCards = () => {\r\n //const token = \"xyz\";\r\n\r\n const goToRoster = () => {\r\n BrowserRouter.push(\"/roster\");\r\n };\r\n return (\r\n \r\n
\r\n
Manage Races
\r\n
\r\n
Add, Edit, or Delete Races
\r\n

\r\n You can add, edit, delete races. Edit only works for updating race\r\n info, if you need to update the attached race, delete the race and\r\n re-add it. If you upload winspeed result in \".txt\" format the race\r\n fields will be automatically populated. Another new feature,\r\n clicking on the race row will show you the top 3 birds on the list.\r\n

\r\n \r\n \r\n Go to races\r\n \r\n \r\n
\r\n
\r\n
\r\n
Manage Announcements
\r\n
\r\n
Add, Edit, or Delete announcement
\r\n

\r\n You can add, edit, delete announcement. Your announcement can just\r\n be all text or with attachment. Announcements are sorted by created\r\n date, latest on top. You're allowed to pick one announcement that\r\n can stay on top of the list by clicking on the checkbox for \"keep\r\n this on top\".\r\n

\r\n \r\n \r\n Go to announcements\r\n \r\n \r\n
\r\n
\r\n
\r\n
Manage Members
\r\n
\r\n
Add, Edit, or Delete Member
\r\n

\r\n You can add, edit, delete member. You can also enable notification\r\n so your members can receive an email when new announcement or result\r\n is posted on the website.\r\n

\r\n \r\n \r\n Go to members\r\n \r\n \r\n
\r\n
\r\n
\r\n );\r\n};\r\nexport default AdminCards;\r\n","import React, { useContext, useState, useEffect } from \"react\";\r\nimport { Button, FormGroup, FormControl, FormLabel } from \"react-bootstrap\";\r\nimport { Logging } from \"../../../actions\";\r\nimport { StoreContext } from \"../../../store\";\r\n\r\nexport default function Login() {\r\n const { AuthToken, dispatch } = useContext(StoreContext);\r\n\r\n const [userName, setuserName] = useState(\"\");\r\n const [password, setPassword] = useState(\"\");\r\n const [loginStatus, setLoginStatus] = useState(\"\");\r\n const [btnSubmitText, setBtnSubmitText] = useState(\"Submit\");\r\n\r\n function validateForm() {\r\n return userName.length > 0 && password.length > 0;\r\n }\r\n\r\n useEffect(() => {\r\n if (AuthToken == null) setLoginStatus(\"Invalid Credentials\");\r\n\r\n setBtnSubmitText(\"Submit\");\r\n }, AuthToken);\r\n const handleSubmit = (event) => {\r\n event.preventDefault();\r\n //UpdateLogin(dispatch, userName, password);\r\n setBtnSubmitText(\"Processing...\");\r\n\r\n if (userName.length > 1 && password.length > 1) {\r\n Logging(dispatch, userName, password);\r\n } else {\r\n setLoginStatus(\"Invalid Credentials. Try Again.\");\r\n }\r\n };\r\n\r\n // function handleSubmit(event) {\r\n // event.preventDefault();\r\n // if (userName == \"admin\" && password == \"acepigeon\")\r\n // UpdateLogin(dispatch, false);\r\n // else alert(\"invalid username or password\");\r\n // }\r\n\r\n return (\r\n
\r\n
\r\n \r\n User ID\r\n setuserName(e.target.value)}\r\n />\r\n \r\n \r\n Password\r\n setPassword(e.target.value)}\r\n type=\"password\"\r\n />\r\n \r\n \r\n {btnSubmitText}\r\n \r\n {loginStatus}\r\n \r\n
\r\n );\r\n}\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport { StoreContext } from \"../store\";\r\nimport \"../App.css\";\r\nimport AdminCards from \"../components/atoms/molecules/AdminCards\";\r\nimport Login from \"./atoms/molecules/Login\";\r\n\r\nlet Admin = () => {\r\n const { IsLogin } = useContext(StoreContext);\r\n return (\r\n
\r\n {IsLogin ? : }\r\n
\r\n );\r\n};\r\nexport default Admin;\r\n","import React, { useContext, useEffect, useState } from \"react\";\r\nimport { StoreContext, initialState } from \"../../../store\";\r\nimport ModalWrapper from \"../modal/Modal\";\r\nimport DeleteConfirmation from \"../molecules/DeleteConfirmation\";\r\nimport { SaveRoster, DeleteRoster } from \"../../../actions\";\r\n\r\nconst AddEditRosterModal = (props) => {\r\n const { dispatch, AuthToken } = useContext(StoreContext);\r\n\r\n //roster form\r\n const [IsRosterVisible, setIsRosterVisible] = useState(false);\r\n const [Name, setName] = useState(\"\");\r\n const [LoftName, setLoftName] = useState(\"\");\r\n const [Email, setEmail] = useState(\"\");\r\n const [IsEmailVisible, setIsEmailVisible] = useState(true);\r\n const [Phone, setPhone] = useState(\"\");\r\n const [IsPhoneVisible, setIsPhoneVisible] = useState(true);\r\n const [SubscribedNotification, setSubscribedNotification] = useState(false);\r\n\r\n const roster = props.formData;\r\n const [FormData, setFormData] = useState(\"\");\r\n\r\n //this is triggered when upload file is used or when racedata already exists\r\n useEffect(() => {\r\n setName(roster.Name.trim());\r\n setLoftName(roster.LoftName.trim());\r\n setEmail(roster.Email.trim());\r\n setPhone(roster.Phone.trim());\r\n //setIsEmailVisible(roster.IsEmailVisible);\r\n //setIsPhoneVisible(roster.IsPhoneVisible);\r\n setSubscribedNotification(roster.SubscribedNotification);\r\n setIsRosterVisible(roster.IsRosterVisible);\r\n setFormData(roster);\r\n }, [roster.Name]);\r\n\r\n //redundant maybe create modal wrapper\r\n const deleteConfirmed = (event) => {\r\n DeleteRoster(dispatch, roster, AuthToken);\r\n props.closeModal();\r\n };\r\n\r\n const handleSave = () => {\r\n let Roster = {\r\n GUID: roster.GUID,\r\n Name: Name,\r\n LoftName: LoftName,\r\n Email: Email,\r\n Phone: Phone,\r\n //IsEmailVisible: IsEmailVisible,\r\n //IsPhoneVisible: IsPhoneVisible,\r\n SubscribedNotification: SubscribedNotification,\r\n IsRosterVisible: IsRosterVisible,\r\n };\r\n SaveRoster(dispatch, Roster, AuthToken);\r\n };\r\n\r\n const validateForm = (event) => {\r\n event.preventDefault();\r\n let valid = true;\r\n if (Name == \"\") {\r\n valid = false;\r\n }\r\n\r\n if (valid) handleSave();\r\n\r\n return valid;\r\n };\r\n //end redundant\r\n\r\n const renderRosterForm = () => {\r\n return (\r\n
\r\n
\r\n
    \r\n
  • \r\n setIsRosterVisible(!IsRosterVisible)}\r\n />\r\n \r\n
  • \r\n
  • \r\n \r\n setName(e.target.value)}\r\n required\r\n />\r\n
  • \r\n
  • \r\n \r\n setLoftName(e.target.value)}\r\n />\r\n
  • \r\n
  • \r\n \r\n setEmail(e.target.value)}\r\n />\r\n
  • \r\n {/*
  • \r\n setIsEmailVisible(!IsEmailVisible)}\r\n style={{ width: 25, height: 25 }}\r\n />\r\n \r\n
  • */}\r\n
  • \r\n \r\n setPhone(e.target.value)}\r\n />\r\n
  • \r\n {/*
  • \r\n setIsPhoneVisible(!IsPhoneVisible)}\r\n />\r\n \r\n
  • */}\r\n
  • \r\n \r\n setSubscribedNotification(!SubscribedNotification)\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 {props.toDelete ? (\r\n \r\n ) : (\r\n renderRosterForm(props.GUID)\r\n )}\r\n \r\n );\r\n};\r\nexport default AddEditRosterModal;\r\n","import React, { useState, useContext, useEffect } from \"react\";\r\nimport { StoreContext } from \"../store\";\r\n\r\nimport AddEditRosterModal from \"./atoms/molecules/AddEditRosterModal\";\r\nimport { Button } from \"react-bootstrap\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\nimport { faPlus, faEdit, faTrashAlt } from \"@fortawesome/free-solid-svg-icons\";\r\nimport queryString from \"query-string\";\r\nimport { GetRosters } from \"../actions\";\r\n\r\nlet Rosters = () => {\r\n const { Rosters, IsLogin, dispatch, Roster } = useContext(StoreContext);\r\n\r\n //const values = queryString.parse(window.location.search);\r\n\r\n let [isAdmin, setIsAdmin] = useState(false);\r\n useEffect(() => {\r\n setIsAdmin(IsLogin);\r\n }, [IsLogin]);\r\n\r\n useEffect(() => {\r\n GetRosters(dispatch);\r\n }, []);\r\n\r\n const [showModal, setShowModal] = useState(false);\r\n const [modalTitle, setModalTitle] = useState(\"\");\r\n const [deleteFlag, setDeleteFlag] = useState(false);\r\n const [fieldData, setFieldData] = useState(Roster);\r\n //handlers\r\n const hideModalClick = () => {\r\n setShowModal(false);\r\n };\r\n const addNewClick = () => {\r\n setShowModal(true);\r\n setModalTitle(\"Add Roster\");\r\n setFieldData({ GUID: \"\", Name: \"\", LoftName: \"\", Email: \"\", Phone: \"\" });\r\n // setDeleteFlag(false);\r\n };\r\n const addEditClick = (item) => {\r\n setFieldData(item);\r\n setShowModal(true);\r\n setDeleteFlag(false);\r\n setModalTitle(\"Edit Race\");\r\n };\r\n const deleteClick = (roster) => {\r\n setModalTitle(\"Please Confirm\");\r\n setShowModal(true);\r\n setDeleteFlag(true);\r\n setFieldData(roster);\r\n };\r\n //end handlers\r\n\r\n const renderAdminBtn = () => {\r\n return (\r\n
\r\n
\r\n \r\n \r\n {showModal ? (\r\n hideModalClick()}\r\n toDelete={deleteFlag}\r\n formData={fieldData}\r\n >\r\n ) : (\r\n \"\"\r\n )}\r\n
\r\n
\r\n );\r\n };\r\n\r\n const addEdit = (item) => {\r\n return (\r\n \r\n \r\n addEditClick(item)}\r\n />\r\n \r\n \r\n deleteClick(item)}\r\n />\r\n \r\n \r\n );\r\n };\r\n\r\n const contactInfo = (item) => {\r\n return (\r\n \r\n {item.Email}\r\n {item.Phone}\r\n \r\n );\r\n };\r\n\r\n const renderNoMembersTR = () => {\r\n return (\r\n \r\n No Members Found\r\n \r\n );\r\n };\r\n let counter = 0;\r\n const renderMembersTR = Rosters.map((item, index) => {\r\n if (!isAdmin && item.IsRosterVisible) return null;\r\n\r\n counter++;\r\n return (\r\n \r\n {isAdmin ? addEdit(item) : \"\"}\r\n {counter}\r\n {item.Name}\r\n {item.LoftName}\r\n {isAdmin ? contactInfo(item) : \"\"}\r\n \r\n );\r\n });\r\n\r\n return (\r\n
\r\n
\r\n
{isAdmin ? renderAdminBtn() : \"\"}
\r\n
\r\n \r\n \r\n \r\n \r\n {isAdmin ? : \"\"}\r\n {isAdmin ? : \"\"}\r\n \r\n \r\n \r\n {isAdmin ? : \"\"}\r\n {isAdmin ? : \"\"}\r\n \r\n \r\n \r\n {Rosters.length > 0 ? renderMembersTR : renderNoMembersTR()}\r\n \r\n
List of members sorted by loft name
editdelete#NameLoft NameEmailPhone
\r\n
\r\n );\r\n};\r\n\r\nexport default Rosters;\r\n\r\nconst memberList = [\r\n { name: \"John Baginski\", loftName: \"Crown\" },\r\n { name: \"Vinnie Torre\", loftName: \"Hillside Loft\" },\r\n];\r\n","import React, { useContext, useEffect } from \"react\";\r\nimport { StoreContext } from \"../../../store\";\r\nimport { GetAPIVersion, UpdateLogin, Logout } from \"../../../actions\";\r\nimport { Link } from \"react-router-dom\";\r\nimport { faBold, faFlagUsa } from \"@fortawesome/free-solid-svg-icons\";\r\nimport { FontAwesomeIcon } from \"@fortawesome/react-fontawesome\";\r\n\r\nconst Footer = () => {\r\n const { APIVersion, dispatch, IsLogin } = useContext(StoreContext);\r\n\r\n useEffect(() => {\r\n GetAPIVersion(dispatch);\r\n }, []);\r\n\r\n const handleLogout = () => {\r\n Logout(dispatch);\r\n };\r\n\r\n const handleLogin = () => {\r\n //UpdateLogin(dispatch, true);\r\n };\r\n // useEffect(() => {\r\n // console.log(\"is login\" + IsLogin);\r\n // }, IsLogin);\r\n\r\n return (\r\n
\r\n
\r\n

\r\n Lyndurst Homing Pigeon Club

\r\n Copyright © {new Date().getFullYear()}\r\n {/* 20 Stuyvesant Avenue Lyndhurst, NJ 07071

\r\n Phone 201-933-3764 */}\r\n

\r\n\r\n

handleLogin()}>\r\n \r\n \r\n \r\n

\r\n\r\n

\r\n Developed and maintained by\r\n \r\n {\" \"}\r\n CharmedCoder\r\n \r\n

\r\n
\r\n
\r\n\r\n
api V{APIVersion} - app V2.0
\r\n
\r\n );\r\n};\r\nexport default Footer;\r\n","import React from \"react\";\r\n\r\nconst NoMatch = () => {\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n Oops! The page you’re looking for can’t be found. You may have\r\n mistyped the address or the page may have moved.\r\n

\r\n
\r\n \r\n
\r\n );\r\n};\r\nexport default NoMatch;\r\n","import React from \"react\";\r\n\r\nclass RacesEdit extends React.Component {\r\n render() {\r\n return (\r\n
\r\n

Races

\r\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 RacesEdit;\r\n\r\nconst raceList = [\r\n {\r\n Id: 1,\r\n Date: \"2019-09-08\",\r\n Winner: \"Crown\",\r\n Race: \"1st 150m YB Carlisle PA\",\r\n Result: \"view result\"\r\n },\r\n {\r\n Id: 2,\r\n Date: \"2019-09-08\",\r\n Winner: \"Hillside\",\r\n Race: \"2nd 150m YB Carlisle PA\",\r\n Result: \"view result\"\r\n }\r\n];\r\n","import React from \"react\";\r\nimport { BrowserRouter as Router, Route, Switch } from \"react-router-dom\";\r\nimport Home from \"./components/home\";\r\nimport Members from \"./components/members\";\r\nimport Navigation from \"./components/navigation\";\r\nimport Races from \"./components/races\";\r\nimport Admin from \"./components/admin\";\r\nimport Rosters from \"./components/rosters\";\r\nimport Footer from \"./components/atoms/molecules/Footer\";\r\n//import \"bootstrap/dist/css/bootstrap.css\";\r\n//import \"bootstrap/dist/js/bootstrap.js\";\r\nimport RacesEdit from \"./components/races-edit\";\r\nimport StoreProvider from \"./store\";\r\nimport NoMatch from \"./components/atoms/NoMatch\";\r\n//import \"bootstrap/dist/css/bootstrap.min.css\";\r\n\r\nfunction App() {\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\nexport default App;\r\n\r\n//const element =

Hello, world!

;\r\n","import React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport \"./index.css\";\r\nimport App from \"./App\";\r\n//import * as serviceWorker from \"./serviceWorker\";\r\n\r\nReactDOM.render(, document.getElementById(\"root\"));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\n//serviceWorker.unregister();\r\n"],"sourceRoot":""}