{"version":3,"sources":["images/Logo_and_strapline.png","components/osgb.js","components/api-authorization/ApiAuthorizationConstants.js","components/api-authorization/AuthorizeService.js","components/api-authorization/LoginMenu.js","components/NavMenu.js","components/Layout.js","components/Home.js","components/api-authorization/AuthorizeRoute.js","components/api-authorization/Login.js","components/api-authorization/Logout.js","components/api-authorization/ApiAuthorizationRoutes.js","components/users/UserService.js","components/Pager.js","components/users/UserActivate.js","components/users/UserList.js","components/users/UserAdd.js","components/users/UserDelete.js","components/volunteergroups/VolunteerGroupService.js","components/users/UserEdit.js","components/users/UserPasswordChange.js","components/users/UserRouter.js","components/workprograms/WorkProgramService.js","components/pathmap/GeoLocation.js","components/pathmap/PathMap.js","components/paths/PathService.js","components/pathmap/GridrefSelector.js","components/workprogramcalendar/WorkProgramCalendar.js","components/workprograms/WorkProgramList.js","components/pathstates/PathStateService.js","components/pathworks/PathWorkService.js","components/volunteergroups/VolunteerGroupSelect.js","components/workprograms/WorkProgramAdd.js","components/workprograms/WorkProgramDelete.js","components/workprograms/WorkProgramEdit.js","components/workprograms/WorkProgramRouter.js","components/volunteergroups/VolunteerGroupList.js","components/volunteergroups/VolunteerGroupAdd.js","components/volunteergroups/VolunteerGroupDelete.js","components/volunteergroups/VolunteerGroupEdit.js","components/volunteergroups/VolunteerGroupRouter.js","components/volunteersections/VolunteerSectionService.js","components/volunteersections/VolunteerSectionList.js","components/volunteersections/VolunteerSectionAdd.js","components/volunteersections/VolunteerSectionDelete.js","components/volunteersections/VolunteerSectionEdit.js","components/volunteersections/VolunteerSectionRouter.js","components/paths/PathList.js","components/paths/PathAdd.js","components/paths/PathDelete.js","components/paths/PathEdit.js","components/paths/PathRouter.js","components/pathworks/PathWorkList.js","components/pathworks/PathWorkAdd.js","components/pathworks/PathWorkDelete.js","components/pathworks/PathWorkEdit.js","components/pathworks/PathWorkRouter.js","components/pathstates/PathStateList.js","components/pathstates/PathStateAdd.js","components/pathstates/PathStateDelete.js","components/pathstates/PathStateEdit.js","components/pathstates/PathStateRouter.js","components/reportedissues/ReportedIssueService.js","components/reportedissues/ReportedIssueList.js","components/reportedissues/ReportedIssueDelete.js","components/reportedissues/ReportedIssueEdit.js","components/reportedissues/ReportedIssueRouter.js","components/pathmap/PathMapPage.js","components/pathmap/ReportIssueMapPage.js","App.js","index.js"],"names":["module","exports","GT_OSGB","this","northings","eastings","status","GT_WGS84","latitude","longitude","GT_Math","prefixes","prototype","setGridCoordinates","setError","msg","_zeropad","num","len","str","String","length","getGridRef","precision","e","n","y","Math","floor","x","div","pow","parseGridRef","landranger","ok","pattern","RegExp","gridRef","match","gridSheet","gridEast","gridNorth","mult","parseInt","search","getWGS84","lat1","E_N_to_Lat","lon1","E_N_to_Long","x1","Lat_Long_H_to_X","y1","Lat_Long_H_to_Y","z1","Lat_H_to_Z","x2","Helmert_X","y2","Helmert_Y","z2","Helmert_Z","XYZ_to_Lat","XYZ_to_Long","wgs84","setDegrees","parseString","text","matches","latsign","longsign","d1","parseFloat","m1","d2","m2","isGreatBritain","isIreland","isIreland2","points","j","oddNodes","i","getOSGB","uselevel2","osgb","latitude2","longitude2","Lat_Long_to_East","Lat_Long_to_North","round","East","North","a","b","e0","n0","f0","PHI0","LAM0","Pi","RadPHI0","af0","bf0","e2","Et","PHId","InitialLat","nu","sqrt","sin","rho","eta2","VII","tan","VIII","IX","RadLAM0","X","cos","XI","XII","XIIA","afo","bfo","PHI1","M","Marc","PHI2","abs","PHI","LAM","H","RadPHI","RadLAM","Y","Z","DX","Y_Rot","Z_Rot","s","DY","X_Rot","DZ","RootXYSqr","atan2","Iterate_XYZ_to_Lat","V","p","IV","VI","I","II","III","IIIA","QueryParameterNames","LogoutActions","LoginActions","prefix","ApplicationPaths","DefaultLoginRedirectPath","ApiAuthorizationClientConfigurationUrl","ApiAuthorizationPrefix","Login","LoginFailed","LoginCallback","Register","Profile","LogOut","LoggedOut","LogOutCallback","IdentityRegisterPath","IdentityManagePath","UserRoles","authService","_callbacks","_nextSubscriptionId","_user","_isAuthenticated","_popUpDisabled","getUser","user","profile","ensureUserManagerInitialized","userManager","access_token","role","Array","includes","state","signinSilent","createArguments","silentUser","updateState","success","console","log","Error","signinPopup","popUpUser","message","error","signinRedirect","redirect","url","signinCallback","signoutPopup","undefined","signoutRedirect","signoutCallback","response","data","notifySubscribers","callback","push","subscription","subscriptionId","subscriptionIndex","map","element","index","found","filter","splice","useReplaceToNavigate","AuthenticationResultStatus","Fail","Success","Redirect","fetch","json","settings","automaticSilentRenew","includeIdTokenInSilentRenew","userStore","WebStorageStateStore","UserManager","events","addUserSignedOut","removeUser","LoginMenu","props","isAuthenticated","userName","firstname","surname","_subscription","subscribe","populateState","unsubscribe","Promise","all","setState","name","profilePath","logoutPath","pathname","local","authenticatedView","registerPath","loginPath","anonymousView","NavItem","NavLink","tag","Link","className","to","Component","NavMenuPlain","toggle","dropdownOpen","updateDimensions","width","window","innerWidth","height","innerHeight","toggleNavbar","bind","collapsed","addEventListener","removeEventListener","t","Container","fluid","style","backgroundImage","backgroundRepeat","backgroundSize","paddingLeft","paddingRight","NavbarBrand","src","require","paddingTop","min","paddingBottom","Navbar","dark","NavbarToggler","onClick","Collapse","isOpen","navbar","Nav","Dropdown","nav","DropdownToggle","caret","DropdownMenu","DropdownItem","displayName","NavMenu","withTranslation","Layout","children","HomePlain","CardDeck","Card","CardHeader","CardTitle","CardBody","CardText","CardFooter","minWidth","href","Home","AuthorizeRoute","ready","authenticated","authenticationChanged","populateAuthenticationState","link","document","createElement","path","returnUrl","protocol","host","hash","redirectUrl","encodeURIComponent","component","rest","render","action","login","getReturnUrl","processLoginCallback","URLSearchParams","location","get","redirectToProfile","redirectToRegister","signIn","result","navigateToReturnUrl","completeSignIn","fromQuery","startsWith","origin","redirectToApiAuthorizationPath","encodeURI","apiAuthorizationPath","replace","Logout","isReady","history","logout","processLogoutCallback","signOut","completeSignOut","ApiAuthorizationRoutes","loginAction","logoutAction","userService","page","pageSize","sortOrder","searchString","getAccessToken","token","headers","jsonData","userId","method","body","JSON","stringify","userPasswords","offset","id","Pager","handlePageChange","newPage","startPage","endPage","totalItems","maxPages","currentPage","totalPages","ceil","maxPagesBeforeCurrentPage","maxPagesAfterCurrentPage","startIndex","endIndex","pages","from","keys","paginate","Pagination","PaginationItem","disabled","PaginationLink","first","aria-label","previous","value","active","key","next","last","defaultProps","UserActivate","onActivateClick","activateUser","populateUserData","users","loading","selecteduser","params","getRecruits","activateRecruit","filteredusers","o","aria-labelledby","colSpan","email","Button","color","contents","renderUsersTable","UserList","handleHeaderClick","event","header","preventDefault","newSortOrder","handleInputChange","target","type","checked","handleSearchFormSubmit","handleSearchFormReset","totalUsers","Form","inline","onSubmit","FormGroup","Input","onChange","placeholder","getUsers","UserAddPlain","handleClickCancel","handleValidSubmit","values","addUser","i18n","onValidSubmit","label","required","errorMessage","validate","minLength","UserAdd","UserDeletePlain","handleClickOk","deleteUser","UserDelete","withRouter","volunteerGroupService","entityId","entity","UserEditPlain","postvalues","volunteerGroups","group","updateUser","retrieveFormData","model","Label","htmlFor","volunteerGroupsvalue","loadOptions","loadedVolunteerGroupsOptions","selectlist","responseJSON","options","hasMore","hasmore","additional","handleVolunteerGroupsSelectChange","isMulti","renderUserForm","UserEdit","UserPasswordChangePlain","changeUserPassword","UserPasswordChange","UserRouter","useRouteMatch","workProgramService","start","end","workProgramId","emailSubject","emailText","pathid","GeoLocation","updateLocation","locate","toggleState","enabled","watchId","forceUpdate","navigator","geolocation","stop","alert","clearWatch","watchPosition","enableHighAccuracy","position","withinParkBoundary","lat","coords","lng","enabledStateStyle","enabledStateIconStyle","locationMarker","latlng","L","latLng","Fragment","CircleMarker","radius","accuracy","center","stroke","fillOpacity","fillColor","leaflet","setView","title","backgroundColor","size","React","withLeaflet","BaseLayer","MeasureControlDefault","LayersControl","Overlay","crs","Proj","CRS","scales","DEFAULT_VIEWPORT","zoom","Icon","Default","_getIconUrl","mergeOptions","iconRetinaUrl","iconUrl","shadowUrl","PathMap","mouseMoved","toFixed","current","leafletElement","attributionControl","setPrefix","handleClickMap","createRef","setviewport","selectedLocation","LatLng","featureCollection","showLegend","showIntro","showReportForm","usersLocation","viewport","isStatic","getFeatureInfoUrl","then","collections","catch","point","latLngToContainerPoint","getZoom","getSize","sw","project","getBounds","getSouthWest","ne","getNorthEast","request","service","srs","code","version","feature_count","bbox","buffer","layers","query_layers","info_format","Util","getParamString","nextProps","newviewport","selectZoom","marker","Marker","autoPan","Map","onMouseMove","onViewportChanged","ref","maxZoom","zoomControl","ZoomControl","zoomInTitle","zoomOutTitle","WMSTileLayer","format","attribution","styles","transparent","pathService","GridrefSelector","onClickHandler","features","osgbref","numberReturned","onChangePath","getPathData","properties","path_name","selectedfeature","selectedgridref","selectedlocation","getbyname","wgs84ref","invalid","hideInvalid","locales","enGB","localizer","dateFnsLocalizer","parse","startOfWeek","Date","weekStartsOn","getDay","CustomToolbar","view","onView","navigate","onNavigate","messages","date","viewNamesGroup","viewNames","views","cn","WorkProgramCalendarPlain","eventSelected","selectedevent","showselectedevent","onAddWorkProgramClick","onCancelClick","onDeleteClick","onEditClick","onEmailFormChange","onShowSendEmail","emailsubject","emailtext","showEmailModal","onSendEmail","valid","sendEmail","sub","onJoinWorkProgram","joinWorkProgram","onLeaveWorkProgram","leaveWorkProgram","onLimitToMyWorkPrograms","limitToMyWorkPrograms","onLimitToMyGroup","limitToMyGroup","currentMonth","startOfMonth","leader","going","applicationcomment","datadate","toggleModal","toggleEmailModal","showModal","userStateReturned","populateData","find","formatISO9075","representation","endOfWeek","endOfMonth","calendareventlist","calendareventlistlimited","forEach","item","userisgoing","persongoing","emailParticipants","isSelected","hexcolour","borderRadius","opacity","border","fontWeight","display","whosGoing","concat","sort","d","InputGroup","check","defaultChecked","ev","mygroup","startAccessor","endAccessor","minHeight","defaultDate","onSelectSlot","slotSelected","onSelectEvent","eventPropGetter","eventStyleGetter","defaultView","popup","components","toolbar","culture","Modal","ModalHeader","ModalBody","Row","Col","xs","gridref","information","surveycomment","expired","timespenthours","leaderid","ModalFooter","trim","defaultValue","WorkProgramCalendar","WorkProgramList","entities","total","substring","toLocaleDateString","renderTable","getData","pathStateService","pathWorkService","VolunteerGroupOption","Option","colour","VolunteerGroupValueContainer","getValue","hasValue","ValueContainer","WorkProgramAddPlain","goBack","goingvalue","person","leadervalue","pathvalue","pathstatevalue","workrequiredvalue","volunteergroupvalue","timeSpentHours","isNaN","add","populateUserState","loadedLeaderOptions","handleLeaderSelectChange","loadedVolunteerGroupOptions","handleVolunteerGroupSelectChange","loadedGoingOptions","handleGoingSelectChange","loadedPathOptions","handlePathSelectChange","handleWorkRequiredSelectChange","loadedPathStateOptions","handlePathStateSelectChange","WorkProgramAdd","WorkProgramDeletePlain","delete","WorkProgramDelete","WorkProgramEditPlain","handlePathMapChange","handleGridrefChange","handleGridrefMapChange","newgridref","timeSpenHours","update","renderForm","split","pathState","workRequired","volunteerGroup","WorkProgramEdit","WorkProgramRouter","VolunteerGroupList","VolunteerGroupAddPlain","handleColourChange","hex","handleColourTextChange","VolunteerGroupAdd","VolunteerGroupDeletePlain","VolunteerGroupDelete","VolunteerGroupEditPlain","processedValues","volunteers","volunteersvalue","loadedVolunteersOptions","handleVolunteersSelectChange","VolunteerGroupEdit","VolunteerGroupRouter","volunteerSectionService","VolunteerSectionList","VolunteerSectionAddPlain","VolunteerSectionAdd","VolunteerSectionDeletePlain","VolunteerSectionDelete","VolunteerSectionEditPlain","VolunteerSectionEdit","VolunteerSectionRouter","PathList","lengthInKilometres","surveyIntervalMonths","PathAddPlain","step","PathAdd","PathDeletePlain","PathDelete","PathEditPlain","PathEdit","PathRouter","PathWorkList","PathWorkAddPlain","PathWorkAdd","PathWorkDeletePlain","PathWorkDelete","PathWorkEditPlain","PathWorkEdit","PathWorkRouter","PathStateList","PathStateAddPlain","PathStateAdd","PathStateDeletePlain","PathStateDelete","PathStateEditPlain","PathStateEdit","PathStateRouter","reportedIssueService","ReportedIssueList","createdOn","toLocaleString","ReportedIssueDeletePlain","ReportedIssueDelete","ReportedIssueEditPlain","Table","comment","photo","CardImg","alt","bottom","ReportedIssueEdit","ReportedIssueRouter","PathMapPage","handleCancel","feature","workprograms","getWorkPrograms","bypathid","left","scrollable","lengthKilometres","striped","responsive","wp","substr","surveyComment","ReportIssueMapPage","handleFileChange","file","files","handleSend","reportedissue","volunteer","postEntity","handleFormUpdate","showSentModal","fileupload","toggleSentModal","saveresponse","formdata","FormData","append","accept","App","exact","routeProps","baseUrl","getElementsByTagName","getAttribute","rootElement","getElementById","ReactDOM","basename"],"mappings":"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","file":"static/js/main.5296649a.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/Logo_and_strapline.dd83acf3.png\";","/**\r\n * GeoTools javascript coordinate transformations\r\n * http://files.dixo.net/geotools.html\r\n *\r\n * This file copyright (c)2005 Paul Dixon (paul@elphin.com)\r\n *\r\n\r\n * This program is free software; you can redistribute it and/or\r\n * modify it under the terms of the GNU General Public License\r\n * as published by the Free Software Foundation; either version 2\r\n * of the License, or (at your option) any later version.\r\n * \r\n * This program is distributed in the hope that it will be useful,\r\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\r\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\r\n * GNU General Public License for more details.\r\n * \r\n * You should have received a copy of the GNU General Public License\r\n * along with this program; if not, write to the Free Software\r\n * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.\r\n * \r\n\r\n * --------------------------------------------------------------------------- \r\n * \r\n * Credits\r\n\r\n *\r\n\r\n * The algorithm used by the script for WGS84-OSGB36 conversions is derived \r\n * from an OSGB spreadsheet (www.gps.gov.uk) with permission. This has been\r\n * adapted into PHP by Ian Harris, and Irish added by Barry Hunter. Conversion\r\n * accuracy is in the order of 7m for 90% of Great Britain, and should be \r\n * be similar to the conversion made by a typical GPSr\r\n *\r\n\r\n * See accompanying documentation for more information\r\n * http://www.nearby.org.uk/tests/GeoTools2.html\r\n */\r\n\r\n/*****************************************************************************\r\n *\r\n * GT_OSGB holds OSGB grid coordinates\r\n *\r\n *****************************************************************************/\r\n\r\nfunction GT_OSGB() {\r\n this.northings = 0;\r\n this.eastings = 0;\r\n this.status = \"Undefined\";\r\n}\r\n\r\nGT_OSGB.prefixes = [\r\n [\"SV\", \"SW\", \"SX\", \"SY\", \"SZ\", \"TV\", \"TW\"],\r\n [\"SQ\", \"SR\", \"SS\", \"ST\", \"SU\", \"TQ\", \"TR\"],\r\n [\"SL\", \"SM\", \"SN\", \"SO\", \"SP\", \"TL\", \"TM\"],\r\n [\"SF\", \"SG\", \"SH\", \"SJ\", \"SK\", \"TF\", \"TG\"],\r\n [\"SA\", \"SB\", \"SC\", \"SD\", \"SE\", \"TA\", \"TB\"],\r\n [\"NV\", \"NW\", \"NX\", \"NY\", \"NZ\", \"OV\", \"OW\"],\r\n [\"NQ\", \"NR\", \"NS\", \"NT\", \"NU\", \"OQ\", \"OR\"],\r\n [\"NL\", \"NM\", \"NN\", \"NO\", \"NP\", \"OL\", \"OM\"],\r\n [\"NF\", \"NG\", \"NH\", \"NJ\", \"NK\", \"OF\", \"OG\"],\r\n [\"NA\", \"NB\", \"NC\", \"ND\", \"NE\", \"OA\", \"OB\"],\r\n [\"HV\", \"HW\", \"HX\", \"HY\", \"HZ\", \"JV\", \"JW\"],\r\n [\"HQ\", \"HR\", \"HS\", \"HT\", \"HU\", \"JQ\", \"JR\"],\r\n [\"HL\", \"HM\", \"HN\", \"HO\", \"HP\", \"JL\", \"JM\"]\r\n];\r\n\r\nGT_OSGB.prototype.setGridCoordinates = function (eastings, northings) {\r\n this.northings = northings;\r\n this.eastings = eastings;\r\n this.status = \"OK\";\r\n};\r\n\r\nGT_OSGB.prototype.setError = function (msg) {\r\n this.status = msg;\r\n};\r\n\r\nGT_OSGB.prototype._zeropad = function (num, len) {\r\n var str = String(num);\r\n while (str.length < len) {\r\n str = \"0\" + str;\r\n }\r\n return str;\r\n};\r\n\r\nGT_OSGB.prototype.getGridRef = function (precision) {\r\n if (precision < 0) precision = 0;\r\n if (precision > 5) precision = 5;\r\n\r\n var e = \"\";\r\n var n = \"\";\r\n\r\n if (precision > 0) {\r\n var y = Math.floor(this.northings / 100000);\r\n var x = Math.floor(this.eastings / 100000);\r\n\r\n e = Math.floor(this.eastings % 100000);\r\n n = Math.floor(this.northings % 100000);\r\n\r\n var div = 5 - precision;\r\n e = Math.floor(e / Math.pow(10, div));\r\n n = Math.floor(n / Math.pow(10, div));\r\n }\r\n\r\n var prefix = GT_OSGB.prefixes[y][x];\r\n\r\n return (\r\n prefix +\r\n \" \" +\r\n this._zeropad(e, precision) +\r\n \" \" +\r\n this._zeropad(n, precision)\r\n );\r\n};\r\n\r\nGT_OSGB.prototype.parseGridRef = function (landranger) {\r\n var ok = false;\r\n\r\n this.northings = 0;\r\n this.eastings = 0;\r\n\r\n var precision;\r\n\r\n for (precision = 5; precision >= 1; precision--) {\r\n var pattern = new RegExp(\r\n \"^([A-Z]{2})\\\\s*(\\\\d{\" + precision + \"})\\\\s*(\\\\d{\" + precision + \"})$\",\r\n \"i\"\r\n );\r\n var gridRef = landranger.match(pattern);\r\n if (gridRef) {\r\n var gridSheet = gridRef[1];\r\n var gridEast = 0;\r\n var gridNorth = 0;\r\n\r\n //5x1 4x10 3x100 2x1000 1x10000\r\n if (precision > 0) {\r\n var mult = Math.pow(10, 5 - precision);\r\n gridEast = parseInt(gridRef[2], 10) * mult;\r\n gridNorth = parseInt(gridRef[3], 10) * mult;\r\n }\r\n\r\n var x, y;\r\n search: for (y = 0; y < GT_OSGB.prefixes.length; y++) {\r\n for (x = 0; x < GT_OSGB.prefixes[y].length; x++)\r\n if (GT_OSGB.prefixes[y][x] === gridSheet) {\r\n this.eastings = x * 100000 + gridEast;\r\n this.northings = y * 100000 + gridNorth;\r\n ok = true;\r\n break search;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return ok;\r\n};\r\n\r\nGT_OSGB.prototype.getWGS84 = function () {\r\n var height = 0;\r\n\r\n var lat1 = GT_Math.E_N_to_Lat(\r\n this.eastings,\r\n this.northings,\r\n 6377563.396,\r\n 6356256.91,\r\n 400000,\r\n -100000,\r\n 0.999601272,\r\n 49.0,\r\n -2.0\r\n );\r\n var lon1 = GT_Math.E_N_to_Long(\r\n this.eastings,\r\n this.northings,\r\n 6377563.396,\r\n 6356256.91,\r\n 400000,\r\n -100000,\r\n 0.999601272,\r\n 49.0,\r\n -2.0\r\n );\r\n\r\n var x1 = GT_Math.Lat_Long_H_to_X(lat1, lon1, height, 6377563.396, 6356256.91);\r\n var y1 = GT_Math.Lat_Long_H_to_Y(lat1, lon1, height, 6377563.396, 6356256.91);\r\n var z1 = GT_Math.Lat_H_to_Z(lat1, height, 6377563.396, 6356256.91);\r\n\r\n var x2 = GT_Math.Helmert_X(x1, y1, z1, 446.448, 0.247, 0.8421, -20.4894);\r\n var y2 = GT_Math.Helmert_Y(x1, y1, z1, -125.157, 0.1502, 0.8421, -20.4894);\r\n var z2 = GT_Math.Helmert_Z(x1, y1, z1, 542.06, 0.1502, 0.247, -20.4894);\r\n\r\n var latitude = GT_Math.XYZ_to_Lat(x2, y2, z2, 6378137.0, 6356752.313);\r\n var longitude = GT_Math.XYZ_to_Long(x2, y2);\r\n\r\n var wgs84 = new GT_WGS84();\r\n wgs84.setDegrees(latitude, longitude);\r\n return wgs84;\r\n};\r\n\r\n/*****************************************************************************\r\n *\r\n * GT_WGS84 holds WGS84 latitude and longitude\r\n *\r\n *****************************************************************************/\r\n\r\nfunction GT_WGS84() {\r\n this.latitude = 0;\r\n this.longitude = 0;\r\n}\r\n\r\nGT_WGS84.prototype.setDegrees = function (latitude, longitude) {\r\n this.latitude = latitude;\r\n this.longitude = longitude;\r\n};\r\n\r\nGT_WGS84.prototype.parseString = function (text) {\r\n var ok = false;\r\n\r\n var str = String(text);\r\n\r\n //N 51° 53.947 W 000° 10.018\r\n\r\n var pattern = /([ns])\\s*(\\d+)[°\\s]+(\\d+\\.\\d+)\\s+([we])\\s*(\\d+)[°\\s]+(\\d+\\.\\d+)/i;\r\n var matches = str.match(pattern);\r\n if (matches) {\r\n ok = true;\r\n var latsign = matches[1] === \"s\" || matches[1] === \"S\" ? -1 : 1;\r\n var longsign = matches[4] === \"w\" || matches[4] === \"W\" ? -1 : 1;\r\n\r\n var d1 = parseFloat(matches[2]);\r\n var m1 = parseFloat(matches[3]);\r\n var d2 = parseFloat(matches[5]);\r\n var m2 = parseFloat(matches[6]);\r\n\r\n this.latitude = latsign * (d1 + m1 / 60.0);\r\n this.longitude = longsign * (d2 + m2 / 60.0);\r\n }\r\n\r\n return ok;\r\n};\r\n\r\nGT_WGS84.prototype.isGreatBritain = function () {\r\n return (\r\n this.latitude > 49 &&\r\n this.latitude < 62 &&\r\n this.longitude > -9.5 &&\r\n this.longitude < 2.3\r\n );\r\n};\r\n\r\nGT_WGS84.prototype.isIreland = function () {\r\n return (\r\n this.latitude > 51.2 &&\r\n this.latitude < 55.73 &&\r\n this.longitude > -12.2 &&\r\n this.longitude < -4.8\r\n );\r\n};\r\n\r\nGT_WGS84.prototype.isIreland2 = function () {\r\n //rough border for ireland\r\n var points = [\r\n [-12.19, 50.38],\r\n [-6.39, 50.94],\r\n [-5.07, 53.71],\r\n [-5.25, 54.71],\r\n [-6.13, 55.42],\r\n [-10.65, 56.15],\r\n [-12.19, 50.38]\r\n ];\r\n\r\n // ==== A method for testing if a point is inside a polygon\r\n // ==== Returns true if poly contains point\r\n // ==== Algorithm shamelessly stolen from http://alienryderflex.com/polygon/\r\n var j = 0;\r\n var oddNodes = false;\r\n var x = this.longitude;\r\n var y = this.latitude;\r\n for (var i = 0; i < points.length; i++) {\r\n j++;\r\n if (j === points.length) {\r\n j = 0;\r\n }\r\n if (\r\n (points[i][1] < y && points[j][1] >= y) ||\r\n (points[j][1] < y && points[i][1] >= y)\r\n ) {\r\n if (\r\n points[i][0] +\r\n ((y - points[i][1]) / (points[j][1] - points[i][1])) *\r\n (points[j][0] - points[i][0]) <\r\n x\r\n ) {\r\n oddNodes = !oddNodes;\r\n }\r\n }\r\n }\r\n return oddNodes;\r\n};\r\n\r\nGT_WGS84.prototype.getOSGB = function (uselevel2) {\r\n var osgb = new GT_OSGB();\r\n if (this.isGreatBritain()) {\r\n var height = 0;\r\n\r\n var x1 = GT_Math.Lat_Long_H_to_X(\r\n this.latitude,\r\n this.longitude,\r\n height,\r\n 6378137.0,\r\n 6356752.313\r\n );\r\n var y1 = GT_Math.Lat_Long_H_to_Y(\r\n this.latitude,\r\n this.longitude,\r\n height,\r\n 6378137.0,\r\n 6356752.313\r\n );\r\n var z1 = GT_Math.Lat_H_to_Z(this.latitude, height, 6378137.0, 6356752.313);\r\n\r\n var x2 = GT_Math.Helmert_X(x1, y1, z1, -446.448, -0.247, -0.8421, 20.4894);\r\n var y2 = GT_Math.Helmert_Y(x1, y1, z1, 125.157, -0.1502, -0.8421, 20.4894);\r\n var z2 = GT_Math.Helmert_Z(x1, y1, z1, -542.06, -0.1502, -0.247, 20.4894);\r\n\r\n var latitude2 = GT_Math.XYZ_to_Lat(x2, y2, z2, 6377563.396, 6356256.91);\r\n var longitude2 = GT_Math.XYZ_to_Long(x2, y2);\r\n\r\n var e = GT_Math.Lat_Long_to_East(\r\n latitude2,\r\n longitude2,\r\n 6377563.396,\r\n 6356256.91,\r\n 400000,\r\n 0.999601272,\r\n 49.0,\r\n -2.0\r\n );\r\n var n = GT_Math.Lat_Long_to_North(\r\n latitude2,\r\n longitude2,\r\n 6377563.396,\r\n 6356256.91,\r\n 400000,\r\n -100000,\r\n 0.999601272,\r\n 49.0,\r\n -2.0\r\n );\r\n\r\n osgb.setGridCoordinates(Math.round(e), Math.round(n));\r\n } else {\r\n osgb.setError(\"Coordinate not within Great Britain\");\r\n }\r\n\r\n return osgb;\r\n};\r\n\r\n/*****************************************************************************\r\n *\r\n * GT_Math is a collection of static methods doing all the nasty sums\r\n *\r\n *****************************************************************************/\r\n\r\n//GT_Math is just namespace for all the nasty maths functions\r\nfunction GT_Math() { }\r\n\r\nGT_Math.E_N_to_Lat = function (East, North, a, b, e0, n0, f0, PHI0, LAM0) {\r\n //Un-project Transverse Mercator eastings and northings back to latitude.\r\n //Input: - _\r\n //eastings (East) and northings (North) in meters; _\r\n //ellipsoid axis dimensions (a & b) in meters; _\r\n //eastings (e0) and northings (n0) of false origin in meters; _\r\n //central meridian scale factor (f0) and _\r\n //latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n\r\n //'REQUIRES THE \"Marc\" AND \"InitialLat\" FUNCTIONS\r\n\r\n //Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI0 = PHI0 * (Pi / 180);\r\n\r\n //Compute af0, bf0, e squared (e2), n and Et\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var n = (af0 - bf0) / (af0 + bf0);\r\n var Et = East - e0;\r\n\r\n //Compute initial value for latitude (PHI) in radians\r\n var PHId = GT_Math.InitialLat(North, n0, af0, RadPHI0, n, bf0);\r\n\r\n //Compute nu, rho and eta2 using value for PHId\r\n var nu = af0 / Math.sqrt(1 - e2 * Math.pow(Math.sin(PHId), 2));\r\n var rho = (nu * (1 - e2)) / (1 - e2 * Math.pow(Math.sin(PHId), 2));\r\n var eta2 = nu / rho - 1;\r\n\r\n //Compute Latitude\r\n var VII = Math.tan(PHId) / (2 * rho * nu);\r\n var VIII =\r\n (Math.tan(PHId) / (24 * rho * Math.pow(nu, 3))) *\r\n (5 +\r\n 3 * Math.pow(Math.tan(PHId), 2) +\r\n eta2 -\r\n 9 * eta2 * Math.pow(Math.tan(PHId), 2));\r\n var IX =\r\n (Math.tan(PHId) / (720 * rho * Math.pow(nu, 5))) *\r\n (61 + 90 * (Math.tan(PHId) ^ 2) + 45 * Math.pow(Math.tan(PHId), 4));\r\n\r\n var E_N_to_Lat =\r\n (180 / Pi) *\r\n (PHId - Math.pow(Et, 2) * VII + Math.pow(Et, 4) * VIII - (Et ^ 6) * IX);\r\n\r\n return E_N_to_Lat;\r\n};\r\n\r\nGT_Math.E_N_to_Long = function (East, North, a, b, e0, n0, f0, PHI0, LAM0) {\r\n //Un-project Transverse Mercator eastings and northings back to longitude.\r\n //Input: - _\r\n //eastings (East) and northings (North) in meters; _\r\n //ellipsoid axis dimensions (a & b) in meters; _\r\n //eastings (e0) and northings (n0) of false origin in meters; _\r\n //central meridian scale factor (f0) and _\r\n //latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n\r\n //REQUIRES THE \"Marc\" AND \"InitialLat\" FUNCTIONS\r\n\r\n //Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI0 = PHI0 * (Pi / 180);\r\n var RadLAM0 = LAM0 * (Pi / 180);\r\n\r\n //Compute af0, bf0, e squared (e2), n and Et\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var n = (af0 - bf0) / (af0 + bf0);\r\n var Et = East - e0;\r\n\r\n //Compute initial value for latitude (PHI) in radians\r\n var PHId = GT_Math.InitialLat(North, n0, af0, RadPHI0, n, bf0);\r\n\r\n //Compute nu, rho and eta2 using value for PHId\r\n var nu = af0 / Math.sqrt(1 - e2 * Math.pow(Math.sin(PHId), 2));\r\n var rho = (nu * (1 - e2)) / (1 - e2 * Math.pow(Math.sin(PHId), 2));\r\n\r\n //Compute Longitude\r\n var X = Math.pow(Math.cos(PHId), -1) / nu;\r\n var XI =\r\n (Math.pow(Math.cos(PHId), -1) / (6 * Math.pow(nu, 3))) *\r\n (nu / rho + 2 * Math.pow(Math.tan(PHId), 2));\r\n var XII =\r\n (Math.pow(Math.cos(PHId), -1) / (120 * Math.pow(nu, 5))) *\r\n (5 + 28 * Math.pow(Math.tan(PHId), 2) + 24 * Math.pow(Math.tan(PHId), 4));\r\n var XIIA =\r\n (Math.pow(Math.cos(PHId), -1) / (5040 * Math.pow(nu, 7))) *\r\n (61 +\r\n 662 * Math.pow(Math.tan(PHId), 2) +\r\n 1320 * Math.pow(Math.tan(PHId), 4) +\r\n 720 * Math.pow(Math.tan(PHId), 6));\r\n\r\n var E_N_to_Long =\r\n (180 / Pi) *\r\n (RadLAM0 +\r\n Et * X -\r\n Math.pow(Et, 3) * XI +\r\n Math.pow(Et, 5) * XII -\r\n Math.pow(Et, 7) * XIIA);\r\n\r\n return E_N_to_Long;\r\n};\r\n\r\nGT_Math.InitialLat = function (North, n0, afo, PHI0, n, bfo) {\r\n //Compute initial value for Latitude (PHI) IN RADIANS.\r\n //Input: - _\r\n //northing of point (North) and northing of false origin (n0) in meters; _\r\n //semi major axis multiplied by central meridian scale factor (af0) in meters; _\r\n //latitude of false origin (PHI0) IN RADIANS; _\r\n //n (computed from a, b and f0) and _\r\n //ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters.\r\n\r\n //REQUIRES THE \"Marc\" FUNCTION\r\n //THIS FUNCTION IS CALLED BY THE \"E_N_to_Lat\", \"E_N_to_Long\" and \"E_N_to_C\" FUNCTIONS\r\n //THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE \"Projection and Transformation Calculations.xls\" SPREADSHEET\r\n\r\n //First PHI value (PHI1)\r\n var PHI1 = (North - n0) / afo + PHI0;\r\n\r\n //Calculate M\r\n var M = GT_Math.Marc(bfo, n, PHI0, PHI1);\r\n\r\n //Calculate new PHI value (PHI2)\r\n var PHI2 = (North - n0 - M) / afo + PHI1;\r\n\r\n //Iterate to get final value for InitialLat\r\n while (Math.abs(North - n0 - M) > 0.00001) {\r\n PHI2 = (North - n0 - M) / afo + PHI1;\r\n M = GT_Math.Marc(bfo, n, PHI0, PHI2);\r\n PHI1 = PHI2;\r\n }\r\n return PHI2;\r\n};\r\n\r\nGT_Math.Lat_Long_H_to_X = function (PHI, LAM, H, a, b) {\r\n // Convert geodetic coords lat (PHI), long (LAM) and height (H) to cartesian X coordinate.\r\n // Input: - _\r\n // Latitude (PHI)& Longitude (LAM) both in decimal degrees; _\r\n // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters.\r\n\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n\r\n // Compute eccentricity squared and nu\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var V = a / Math.sqrt(1 - e2 * Math.pow(Math.sin(RadPHI), 2));\r\n\r\n // Compute X\r\n return (V + H) * Math.cos(RadPHI) * Math.cos(RadLAM);\r\n};\r\n\r\nGT_Math.Lat_Long_H_to_Y = function (PHI, LAM, H, a, b) {\r\n // Convert geodetic coords lat (PHI), long (LAM) and height (H) to cartesian Y coordinate.\r\n // Input: - _\r\n // Latitude (PHI)& Longitude (LAM) both in decimal degrees; _\r\n // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters.\r\n\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n\r\n // Compute eccentricity squared and nu\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var V = a / Math.sqrt(1 - e2 * Math.pow(Math.sin(RadPHI), 2));\r\n\r\n // Compute Y\r\n return (V + H) * Math.cos(RadPHI) * Math.sin(RadLAM);\r\n};\r\n\r\nGT_Math.Lat_H_to_Z = function (PHI, H, a, b) {\r\n // Convert geodetic coord components latitude (PHI) and height (H) to cartesian Z coordinate.\r\n // Input: - _\r\n // Latitude (PHI) decimal degrees; _\r\n // Ellipsoidal height (H) and ellipsoid axis dimensions (a & b) all in meters.\r\n\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n\r\n // Compute eccentricity squared and nu\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var V = a / Math.sqrt(1 - e2 * Math.pow(Math.sin(RadPHI), 2));\r\n\r\n // Compute X\r\n return (V * (1 - e2) + H) * Math.sin(RadPHI);\r\n};\r\n\r\nGT_Math.Helmert_X = function (X, Y, Z, DX, Y_Rot, Z_Rot, s) {\r\n // (X, Y, Z, DX, Y_Rot, Z_Rot, s)\r\n // Computed Helmert transformed X coordinate.\r\n // Input: - _\r\n // cartesian XYZ coords (X,Y,Z), X translation (DX) all in meters ; _\r\n // Y and Z rotations in seconds of arc (Y_Rot, Z_Rot) and scale in ppm (s).\r\n\r\n // Convert rotations to radians and ppm scale to a factor\r\n var Pi = 3.14159265358979;\r\n var sfactor = s * 0.000001;\r\n\r\n var RadY_Rot = (Y_Rot / 3600) * (Pi / 180);\r\n\r\n var RadZ_Rot = (Z_Rot / 3600) * (Pi / 180);\r\n\r\n //Compute transformed X coord\r\n return X + X * sfactor - Y * RadZ_Rot + Z * RadY_Rot + DX;\r\n};\r\n\r\nGT_Math.Helmert_Y = function (X, Y, Z, DY, X_Rot, Z_Rot, s) {\r\n // (X, Y, Z, DY, X_Rot, Z_Rot, s)\r\n // Computed Helmert transformed Y coordinate.\r\n // Input: - _\r\n // cartesian XYZ coords (X,Y,Z), Y translation (DY) all in meters ; _\r\n // X and Z rotations in seconds of arc (X_Rot, Z_Rot) and scale in ppm (s).\r\n\r\n // Convert rotations to radians and ppm scale to a factor\r\n var Pi = 3.14159265358979;\r\n var sfactor = s * 0.000001;\r\n var RadX_Rot = (X_Rot / 3600) * (Pi / 180);\r\n var RadZ_Rot = (Z_Rot / 3600) * (Pi / 180);\r\n\r\n // Compute transformed Y coord\r\n return X * RadZ_Rot + Y + Y * sfactor - Z * RadX_Rot + DY;\r\n};\r\n\r\nGT_Math.Helmert_Z = function (X, Y, Z, DZ, X_Rot, Y_Rot, s) {\r\n // (X, Y, Z, DZ, X_Rot, Y_Rot, s)\r\n // Computed Helmert transformed Z coordinate.\r\n // Input: - _\r\n // cartesian XYZ coords (X,Y,Z), Z translation (DZ) all in meters ; _\r\n // X and Y rotations in seconds of arc (X_Rot, Y_Rot) and scale in ppm (s).\r\n //\r\n // Convert rotations to radians and ppm scale to a factor\r\n var Pi = 3.14159265358979;\r\n var sfactor = s * 0.000001;\r\n var RadX_Rot = (X_Rot / 3600) * (Pi / 180);\r\n var RadY_Rot = (Y_Rot / 3600) * (Pi / 180);\r\n\r\n // Compute transformed Z coord\r\n return -1 * X * RadY_Rot + Y * RadX_Rot + Z + Z * sfactor + DZ;\r\n};\r\n\r\nGT_Math.XYZ_to_Lat = function (X, Y, Z, a, b) {\r\n // Convert XYZ to Latitude (PHI) in Dec Degrees.\r\n // Input: - _\r\n // XYZ cartesian coords (X,Y,Z) and ellipsoid axis dimensions (a & b), all in meters.\r\n\r\n // THIS FUNCTION REQUIRES THE \"Iterate_XYZ_to_Lat\" FUNCTION\r\n // THIS FUNCTION IS CALLED BY THE \"XYZ_to_H\" FUNCTION\r\n\r\n var RootXYSqr = Math.sqrt(Math.pow(X, 2) + Math.pow(Y, 2));\r\n var e2 = (Math.pow(a, 2) - Math.pow(b, 2)) / Math.pow(a, 2);\r\n var PHI1 = Math.atan2(Z, RootXYSqr * (1 - e2));\r\n\r\n var PHI = GT_Math.Iterate_XYZ_to_Lat(a, e2, PHI1, Z, RootXYSqr);\r\n\r\n var Pi = 3.14159265358979;\r\n\r\n return PHI * (180 / Pi);\r\n};\r\n\r\nGT_Math.Iterate_XYZ_to_Lat = function (a, e2, PHI1, Z, RootXYSqr) {\r\n // Iteratively computes Latitude (PHI).\r\n // Input: - _\r\n // ellipsoid semi major axis (a) in meters; _\r\n // eta squared (e2); _\r\n // estimated value for latitude (PHI1) in radians; _\r\n // cartesian Z coordinate (Z) in meters; _\r\n // RootXYSqr computed from X & Y in meters.\r\n\r\n // THIS FUNCTION IS CALLED BY THE \"XYZ_to_PHI\" FUNCTION\r\n // THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE _\r\n // \"Projection and Transformation Calculations.xls\" SPREADSHEET\r\n\r\n var V = a / Math.sqrt(1 - e2 * Math.pow(Math.sin(PHI1), 2));\r\n var PHI2 = Math.atan2(Z + e2 * V * Math.sin(PHI1), RootXYSqr);\r\n\r\n while (Math.abs(PHI1 - PHI2) > 0.000000001) {\r\n PHI1 = PHI2;\r\n V = a / Math.sqrt(1 - e2 * Math.pow(Math.sin(PHI1), 2));\r\n PHI2 = Math.atan2(Z + e2 * V * Math.sin(PHI1), RootXYSqr);\r\n }\r\n\r\n return PHI2;\r\n};\r\n\r\nGT_Math.XYZ_to_Long = function (X, Y) {\r\n // Convert XYZ to Longitude (LAM) in Dec Degrees.\r\n // Input: - _\r\n // X and Y cartesian coords in meters.\r\n\r\n var Pi = 3.14159265358979;\r\n return Math.atan2(Y, X) * (180 / Pi);\r\n};\r\n\r\nGT_Math.Marc = function (bf0, n, PHI0, PHI) {\r\n //Compute meridional arc.\r\n //Input: - _\r\n // ellipsoid semi major axis multiplied by central meridian scale factor (bf0) in meters; _\r\n // n (computed from a, b and f0); _\r\n // lat of false origin (PHI0) and initial or final latitude of point (PHI) IN RADIANS.\r\n\r\n //THIS FUNCTION IS CALLED BY THE - _\r\n // \"Lat_Long_to_North\" and \"InitialLat\" FUNCTIONS\r\n // THIS FUNCTION IS ALSO USED ON IT'S OWN IN THE \"Projection and Transformation Calculations.xls\" SPREADSHEET\r\n\r\n return (\r\n bf0 *\r\n ((1 + n + (5 / 4) * Math.pow(n, 2) + (5 / 4) * Math.pow(n, 3)) *\r\n (PHI - PHI0) -\r\n (3 * n + 3 * Math.pow(n, 2) + (21 / 8) * Math.pow(n, 3)) *\r\n Math.sin(PHI - PHI0) *\r\n Math.cos(PHI + PHI0) +\r\n ((15 / 8) * Math.pow(n, 2) + (15 / 8) * Math.pow(n, 3)) *\r\n Math.sin(2 * (PHI - PHI0)) *\r\n Math.cos(2 * (PHI + PHI0)) -\r\n (35 / 24) *\r\n Math.pow(n, 3) *\r\n Math.sin(3 * (PHI - PHI0)) *\r\n Math.cos(3 * (PHI + PHI0)))\r\n );\r\n};\r\n\r\nGT_Math.Lat_Long_to_East = function (PHI, LAM, a, b, e0, f0, PHI0, LAM0) {\r\n //Project Latitude and longitude to Transverse Mercator eastings.\r\n //Input: - _\r\n // Latitude (PHI) and Longitude (LAM) in decimal degrees; _\r\n // ellipsoid axis dimensions (a & b) in meters; _\r\n // eastings of false origin (e0) in meters; _\r\n // central meridian scale factor (f0); _\r\n // latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n var RadLAM0 = LAM0 * (Pi / 180);\r\n\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var nu = af0 / Math.sqrt(1 - e2 * Math.pow(Math.sin(RadPHI), 2));\r\n var rho = (nu * (1 - e2)) / (1 - e2 * Math.pow(Math.sin(RadPHI), 2));\r\n var eta2 = nu / rho - 1;\r\n var p = RadLAM - RadLAM0;\r\n\r\n var IV = nu * Math.cos(RadPHI);\r\n var V =\r\n (nu / 6) *\r\n Math.pow(Math.cos(RadPHI), 3) *\r\n (nu / rho - Math.pow(Math.tan(RadPHI), 2));\r\n var VI =\r\n (nu / 120) *\r\n Math.pow(Math.cos(RadPHI), 5) *\r\n (5 -\r\n 18 * Math.pow(Math.tan(RadPHI), 2) +\r\n Math.pow(Math.tan(RadPHI), 4) +\r\n 14 * eta2 -\r\n 58 * Math.pow(Math.tan(RadPHI), 2) * eta2);\r\n\r\n return e0 + p * IV + Math.pow(p, 3) * V + Math.pow(p, 5) * VI;\r\n};\r\n\r\nGT_Math.Lat_Long_to_North = function (PHI, LAM, a, b, e0, n0, f0, PHI0, LAM0) {\r\n // Project Latitude and longitude to Transverse Mercator northings\r\n // Input: - _\r\n // Latitude (PHI) and Longitude (LAM) in decimal degrees; _\r\n // ellipsoid axis dimensions (a & b) in meters; _\r\n // eastings (e0) and northings (n0) of false origin in meters; _\r\n // central meridian scale factor (f0); _\r\n // latitude (PHI0) and longitude (LAM0) of false origin in decimal degrees.\r\n\r\n // REQUIRES THE \"Marc\" FUNCTION\r\n\r\n // Convert angle measures to radians\r\n var Pi = 3.14159265358979;\r\n var RadPHI = PHI * (Pi / 180);\r\n var RadLAM = LAM * (Pi / 180);\r\n var RadPHI0 = PHI0 * (Pi / 180);\r\n var RadLAM0 = LAM0 * (Pi / 180);\r\n\r\n var af0 = a * f0;\r\n var bf0 = b * f0;\r\n var e2 = (Math.pow(af0, 2) - Math.pow(bf0, 2)) / Math.pow(af0, 2);\r\n var n = (af0 - bf0) / (af0 + bf0);\r\n var nu = af0 / Math.sqrt(1 - e2 * Math.pow(Math.sin(RadPHI), 2));\r\n var rho = (nu * (1 - e2)) / (1 - e2 * Math.pow(Math.sin(RadPHI), 2));\r\n var eta2 = nu / rho - 1;\r\n var p = RadLAM - RadLAM0;\r\n var M = GT_Math.Marc(bf0, n, RadPHI0, RadPHI);\r\n\r\n var I = M + n0;\r\n var II = (nu / 2) * Math.sin(RadPHI) * Math.cos(RadPHI);\r\n var III =\r\n (nu / 24) *\r\n Math.sin(RadPHI) *\r\n Math.pow(Math.cos(RadPHI), 3) *\r\n (5 - Math.pow(Math.tan(RadPHI), 2) + 9 * eta2);\r\n var IIIA =\r\n (nu / 720) *\r\n Math.sin(RadPHI) *\r\n Math.pow(Math.cos(RadPHI), 5) *\r\n (61 - 58 * Math.pow(Math.tan(RadPHI), 2) + Math.pow(Math.tan(RadPHI), 4));\r\n\r\n return I + Math.pow(p, 2) * II + Math.pow(p, 4) * III + Math.pow(p, 6) * IIIA;\r\n};\r\n\r\nmodule.exports = {\r\n osgb: GT_OSGB,\r\n wgs84: GT_WGS84\r\n};\r\n","export const ApplicationName = 'volunteers';\r\n\r\nexport const QueryParameterNames = {\r\n ReturnUrl: 'returnUrl',\r\n Message: 'message'\r\n};\r\n\r\nexport const LogoutActions = {\r\n LogoutCallback: 'logout-callback',\r\n Logout: 'logout',\r\n LoggedOut: 'logged-out'\r\n};\r\n\r\nexport const LoginActions = {\r\n Login: 'login',\r\n LoginCallback: 'login-callback',\r\n LoginFailed: 'login-failed',\r\n Profile: 'profile',\r\n Register: 'register'\r\n};\r\n\r\nconst prefix = '/authentication';\r\n\r\nexport const ApplicationPaths = {\r\n DefaultLoginRedirectPath: '/',\r\n ApiAuthorizationClientConfigurationUrl: `_configuration/${ApplicationName}`,\r\n ApiAuthorizationPrefix: prefix,\r\n Login: `${prefix}/${LoginActions.Login}`,\r\n LoginFailed: `${prefix}/${LoginActions.LoginFailed}`,\r\n LoginCallback: `${prefix}/${LoginActions.LoginCallback}`,\r\n Register: `${prefix}/${LoginActions.Register}`,\r\n Profile: `${prefix}/${LoginActions.Profile}`,\r\n LogOut: `${prefix}/${LogoutActions.Logout}`,\r\n LoggedOut: `${prefix}/${LogoutActions.LoggedOut}`,\r\n LogOutCallback: `${prefix}/${LogoutActions.LogoutCallback}`,\r\n IdentityRegisterPath: 'Identity/Account/Register',\r\n IdentityManagePath: 'Identity/Account/Manage'\r\n};\r\n\r\nexport const UserRoles = {\r\n\tAdministrator: 'Administrator',\r\n\tVolunteerLeader: 'Volunteer Leader',\r\n\tVolunteer: 'Volunteer',\r\n Recruit: 'Recruit'\r\n};","import { UserManager, WebStorageStateStore } from 'oidc-client';\r\nimport { ApplicationPaths, ApplicationName, UserRoles } from './ApiAuthorizationConstants';\r\n\r\nexport class AuthorizeService {\r\n _callbacks = [];\r\n _nextSubscriptionId = 0;\r\n _user = null;\r\n _isAuthenticated = false;\r\n\r\n // By default pop ups are disabled because they don't work properly on Edge.\r\n // If you want to enable pop up authentication simply set this flag to false.\r\n _popUpDisabled = true;\r\n\r\n async isAuthenticated() {\r\n const user = await this.getUser();\r\n return !!user;\r\n }\r\n\r\n async getUser() {\r\n if (this._user && this._user.profile) {\r\n return this._user.profile;\r\n }\r\n\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.profile;\r\n }\r\n\r\n async getAccessToken() {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.getUser();\r\n return user && user.access_token;\r\n }\r\n\r\n async hasRole(role) {\r\n\t\tconst user = await this.getUser();\r\n\r\n\t\tif (user) {\r\n\t\t\tif (user.role instanceof Array) // if it has many roles role is an array\r\n\t\t\t\treturn user.role.includes(UserRoles.Administrator); // beware that UserRoles apears as undefined when debugging, though it works fine\r\n\t\t\telse // otherwise it is a string\r\n\t\t\t\treturn user.role == UserRoles.Administrator;\r\n\t\t}\r\n\t\telse\r\n\t\t\treturn false;\r\n\t}\r\n // We try to authenticate the user in three different ways:\r\n // 1) We try to see if we can authenticate the user silently. This happens\r\n // when the user is already logged in on the IdP and is done using a hidden iframe\r\n // on the client.\r\n // 2) We try to authenticate the user using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 3) If the two methods above fail, we redirect the browser to the IdP to perform a traditional\r\n // redirect flow.\r\n async signIn(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const silentUser = await this.userManager.signinSilent(this.createArguments());\r\n this.updateState(silentUser);\r\n return this.success(state);\r\n } catch (silentError) {\r\n // User might not be authenticated, fallback to popup authentication\r\n console.log(\"Silent authentication error: \", silentError);\r\n\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n const popUpUser = await this.userManager.signinPopup(this.createArguments());\r\n this.updateState(popUpUser);\r\n return this.success(state);\r\n } catch (popUpError) {\r\n if (popUpError.message === \"Popup window closed\") {\r\n // The user explicitly cancelled the login action by closing an opened popup.\r\n return this.error(\"The user closed the window.\");\r\n } else if (!this._popUpDisabled) {\r\n console.log(\"Popup authentication error: \", popUpError);\r\n }\r\n\r\n // PopUps might be blocked by the user, fallback to redirect\r\n try {\r\n await this.userManager.signinRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectError) {\r\n console.log(\"Redirect authentication error: \", redirectError);\r\n return this.error(redirectError);\r\n }\r\n }\r\n }\r\n }\r\n\r\n async completeSignIn(url) {\r\n try {\r\n await this.ensureUserManagerInitialized();\r\n const user = await this.userManager.signinCallback(url);\r\n this.updateState(user);\r\n return this.success(user && user.state);\r\n } catch (error) {\r\n console.log('There was an error signing in: ', error);\r\n return this.error('There was an error signing in.');\r\n }\r\n }\r\n\r\n // We try to sign out the user in two different ways:\r\n // 1) We try to do a sign-out using a PopUp Window. This might fail if there is a\r\n // Pop-Up blocker or the user has disabled PopUps.\r\n // 2) If the method above fails, we redirect the browser to the IdP to perform a traditional\r\n // post logout redirect flow.\r\n async signOut(state) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n if (this._popUpDisabled) {\r\n throw new Error('Popup disabled. Change \\'AuthorizeService.js:AuthorizeService._popupDisabled\\' to false to enable it.')\r\n }\r\n\r\n await this.userManager.signoutPopup(this.createArguments());\r\n this.updateState(undefined);\r\n return this.success(state);\r\n } catch (popupSignOutError) {\r\n console.log(\"Popup signout error: \", popupSignOutError);\r\n try {\r\n await this.userManager.signoutRedirect(this.createArguments(state));\r\n return this.redirect();\r\n } catch (redirectSignOutError) {\r\n console.log(\"Redirect signout error: \", redirectSignOutError);\r\n return this.error(redirectSignOutError);\r\n }\r\n }\r\n }\r\n\r\n async completeSignOut(url) {\r\n await this.ensureUserManagerInitialized();\r\n try {\r\n const response = await this.userManager.signoutCallback(url);\r\n this.updateState(null);\r\n return this.success(response && response.data);\r\n } catch (error) {\r\n console.log(`There was an error trying to log out '${error}'.`);\r\n return this.error(error);\r\n }\r\n }\r\n\r\n updateState(user) {\r\n this._user = user;\r\n this._isAuthenticated = !!this._user;\r\n this.notifySubscribers();\r\n }\r\n\r\n subscribe(callback) {\r\n this._callbacks.push({ callback, subscription: this._nextSubscriptionId++ });\r\n return this._nextSubscriptionId - 1;\r\n }\r\n\r\n unsubscribe(subscriptionId) {\r\n const subscriptionIndex = this._callbacks\r\n .map((element, index) => element.subscription === subscriptionId ? { found: true, index } : { found: false })\r\n .filter(element => element.found === true);\r\n if (subscriptionIndex.length !== 1) {\r\n throw new Error(`Found an invalid number of subscriptions ${subscriptionIndex.length}`);\r\n }\r\n\r\n this._callbacks.splice(subscriptionIndex[0].index, 1);\r\n }\r\n\r\n notifySubscribers() {\r\n for (let i = 0; i < this._callbacks.length; i++) {\r\n const callback = this._callbacks[i].callback;\r\n callback();\r\n }\r\n }\r\n\r\n createArguments(state) {\r\n return { useReplaceToNavigate: true, data: state };\r\n }\r\n\r\n error(message) {\r\n return { status: AuthenticationResultStatus.Fail, message };\r\n }\r\n\r\n success(state) {\r\n return { status: AuthenticationResultStatus.Success, state };\r\n }\r\n\r\n redirect() {\r\n return { status: AuthenticationResultStatus.Redirect };\r\n }\r\n\r\n async ensureUserManagerInitialized() {\r\n if (this.userManager !== undefined) {\r\n return;\r\n }\r\n\r\n let response = await fetch(ApplicationPaths.ApiAuthorizationClientConfigurationUrl);\r\n if (!response.ok) {\r\n throw new Error(`Could not load settings for '${ApplicationName}'`);\r\n }\r\n\r\n let settings = await response.json();\r\n settings.automaticSilentRenew = true;\r\n settings.includeIdTokenInSilentRenew = true;\r\n settings.userStore = new WebStorageStateStore({\r\n prefix: ApplicationName\r\n });\r\n\r\n this.userManager = new UserManager(settings);\r\n\r\n this.userManager.events.addUserSignedOut(async () => {\r\n await this.userManager.removeUser();\r\n this.updateState(undefined);\r\n });\r\n }\r\n\r\n static get instance() { return authService }\r\n}\r\n\r\nconst authService = new AuthorizeService();\r\n\r\nexport default authService;\r\n\r\nexport const AuthenticationResultStatus = {\r\n Redirect: 'redirect',\r\n Success: 'success',\r\n Fail: 'fail'\r\n};\r\n","import React, { Component, Fragment } from 'react';\r\nimport { NavItem, NavLink } from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport authService from './AuthorizeService';\r\nimport { ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\nexport class LoginMenu extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n isAuthenticated: false,\r\n userName: null,\r\n firstname:null,\r\n surname: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n this.populateState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n async populateState() {\r\n const [isAuthenticated, user] = await Promise.all([\r\n authService.isAuthenticated(),\r\n authService.getUser(),\r\n ]);\r\n this.setState({\r\n isAuthenticated,\r\n role: user && user.role,\r\n userName: user && user.name,\r\n firstname: user && user.firstname\r\n });\r\n\r\n /*const [isAuthenticated, user] = await Promise.all([authService.isAuthenticated(), authService.getUser()])\r\n this.setState({\r\n isAuthenticated,\r\n userName: user && user.name\r\n });*/\r\n }\r\n\r\n render() {\r\n const { isAuthenticated, userName, firstname } = this.state;\r\n if (!isAuthenticated) {\r\n const registerPath = `${ApplicationPaths.Register}`;\r\n const loginPath = `${ApplicationPaths.Login}`;\r\n return this.anonymousView(registerPath, loginPath);\r\n } else {\r\n const profilePath = `${ApplicationPaths.Profile}`;\r\n const logoutPath = { pathname: `${ApplicationPaths.LogOut}`, state: { local: true } };\r\n return this.authenticatedView(firstname, profilePath, logoutPath);\r\n }\r\n }\r\n\r\n authenticatedView(userName, profilePath, logoutPath) {\r\n return (\r\n \r\n Hello {userName}\r\n \r\n \r\n Logout\r\n \r\n );\r\n }\r\n\r\n anonymousView(registerPath, loginPath) {\r\n return (\r\n \r\n Register\r\n \r\n \r\n Login\r\n \r\n );\r\n }\r\n}\r\n","import React, { Component, useState, useEffect } from 'react';\r\nimport {\r\n Collapse, Container, Nav, Navbar, NavbarBrand, NavbarToggler, NavItem, NavLink,\r\n Dropdown, DropdownMenu, DropdownToggle, DropdownItem\r\n} from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport { LoginMenu } from './api-authorization/LoginMenu';\r\nimport './NavMenu.css';\r\nimport authService from './api-authorization/AuthorizeService'\r\n//import { UserRoles } from './api-authorization/ApiAuthorizationConstants';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { FaWrench, FaHome, FaCalendarAlt, FaMapMarkerAlt, FaPencilAlt } from 'react-icons/fa';\r\n\r\n/*export default function useOnScreen(ref) {\r\n\r\n const [isIntersecting, setIntersecting] = useState(false)\r\n\r\n const observer = new IntersectionObserver(\r\n ([entry]) => setIntersecting(entry.isIntersecting)\r\n )\r\n\r\n useEffect(() => {\r\n observer.observe(ref.current)\r\n // Remove the observer as soon as the component is unmounted\r\n return () => { observer.disconnect() }\r\n }, [])\r\n\r\n return isIntersecting\r\n}*/\r\n\r\nclass NavMenuPlain extends Component {\r\n static displayName = NavMenuPlain.name;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.toggleNavbar = this.toggleNavbar.bind(this);\r\n this.state = {\r\n collapsed: true,\r\n isAuthenticated: false,\r\n role: null,\r\n user: null,\r\n firstname: null,\r\n width: window.innerWidth, height: window.innerHeight,\r\n dropdownOpen: false,\r\n //document.getElementsByClassName('navbar-toggler-icon')[0].\r\n };\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n window.addEventListener('resize', this.updateDimensions);\r\n this.populateState();\r\n }\r\n componentWillUnmount() {\r\n window.removeEventListener('resize', this.updateDimensions);\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n async populateState() {\r\n const [isAuthenticated, user] = await Promise.all([\r\n authService.isAuthenticated(),\r\n authService.getUser(),\r\n ]);\r\n this.setState({\r\n isAuthenticated,\r\n role: user && user.role,\r\n user: user,\r\n firstname: user && user.firstname\r\n });\r\n }\r\n\r\n toggleNavbar() {\r\n this.setState({\r\n collapsed: !this.state.collapsed\r\n });\r\n }\r\n\r\n toggle = () => {\r\n this.setState({\r\n dropdownOpen: !this.state.dropdownOpen\r\n });\r\n }\r\n\r\n updateDimensions = () => {\r\n this.setState({ width: window.innerWidth, height: window.innerHeight });\r\n };\r\n\r\n render() {\r\n //const { t, i18n } = this.props; \r\n const { t } = this.props;\r\n const { collapsed, role } = this.state;\r\n return (\r\n
\r\n \r\n \r\n 500 ? '' : (this.state.width - 50) + 'px',\r\n paddingTop: this.state.width > 720 ?\r\n Math.min(((this.state.width - 720) / 10), 30) + 'px' : '0px',\r\n paddingBottom: this.state.width > 720 ?\r\n Math.min(((this.state.width - 720) / 10), 40) + 'px' : '0px',\r\n paddingLeft: '0px',\r\n paddingRight: '0px'\r\n }} />\r\n \r\n \r\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 const NavMenu = withTranslation()(NavMenuPlain);\r\n","import React, { Component } from 'react';\r\nimport { Container } from 'reactstrap';\r\nimport { NavMenu } from './NavMenu';\r\n\r\nexport class Layout extends Component {\r\n static displayName = Layout.name;\r\n\r\n render () {\r\n return (\r\n
\r\n \r\n \r\n {this.props.children}\r\n \r\n
\r\n );\r\n }\r\n}\r\n","import React, { Component } from 'react';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { FaCalendar, FaCalendarAlt, FaMapMarkerAlt, FaPencilAlt, FaBook } from 'react-icons/fa';\r\nimport {\r\n Container, Row, Col,\r\n CardDeck, Card, CardImg, CardText, CardBody, CardFooter, CardHeader,\r\n CardTitle, CardSubtitle, Button, CardLink\r\n} from 'reactstrap';\r\nimport { Link } from 'react-router-dom';\r\nimport authService from './api-authorization/AuthorizeService'\r\n\r\nexport class HomePlain extends Component {\r\n static displayName = HomePlain.name;\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n isAuthenticated: false,\r\n role: null,\r\n user: null,\r\n firstname: null,\r\n };\r\n }\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.populateState());\r\n this.populateState();\r\n }\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n async populateState() {\r\n const [isAuthenticated, user] = await Promise.all([\r\n authService.isAuthenticated(),\r\n authService.getUser(),\r\n ]);\r\n this.setState({\r\n isAuthenticated,\r\n role: user && user.role,\r\n user: user,\r\n firstname: user && user.firstname\r\n });\r\n }\r\n render() {\r\n return (\r\n
\r\n \r\n\r\n \r\n Work Programs\r\n \r\n \r\n
Here you can:
\r\n
    \r\n
  • Find our next meetup
  • \r\n
  • See who is going
  • \r\n
  • Manage new events
  • \r\n
  • Complete survey reports
  • \r\n
\r\n {this.state.isAuthenticated ? (\r\n Open Work Program Calendar\r\n ) : (\r\n Open Work Program Calendar\r\n )}\r\n\r\n
\r\n
\r\n Certain actions are only available to registered volunteers and require certain privilages.\r\n
\r\n\r\n \r\n Paths Map\r\n \r\n
Here you can:
\r\n
    \r\n
  • Explore our paths map
  • \r\n
  • View previous surveys on paths
  • \r\n
\r\n Open Paths Map\r\n
\r\n
\r\n\r\n \r\n Report Issues\r\n \r\n

\r\n Tell us about problems you have experienced while walking in the park.\r\n

\r\n Report An Issue\r\n
\r\n
\r\n\r\n\r\n \r\n Handbook and Facebook\r\n \r\n

Please find the online BBNPA volunteer e-handbook here (Welsh) and here (English).\r\n The handbook contains information such as policies, procedures and contacts that will be useful during your volunteering.

\r\n\r\n

If you use social media, you may be interested in joining our closed volunteers Facebook group, which can be found Here.\r\n The group is a friendly forum for BBNPA volunteers to share news and photos about what they've been up to during their volunteering.

\r\n
\r\n
\r\n\r\n\r\n
\r\n
\r\n );\r\n }\r\n}\r\nexport const Home = withTranslation('en')(HomePlain);","import React from 'react'\r\nimport { Component } from 'react'\r\nimport { Route, Redirect } from 'react-router-dom'\r\nimport { ApplicationPaths, QueryParameterNames } from './ApiAuthorizationConstants'\r\nimport authService from './AuthorizeService'\r\n\r\nexport default class AuthorizeRoute extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n ready: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n this.populateAuthenticationState();\r\n }\r\n\r\n componentWillUnmount() {\r\n authService.unsubscribe(this._subscription);\r\n }\r\n\r\n render() {\r\n const { ready, authenticated } = this.state;\r\n var link = document.createElement(\"a\");\r\n link.href = this.props.path;\r\n const returnUrl = `${link.protocol}//${link.host}${link.pathname}${link.search}${link.hash}`;\r\n const redirectUrl = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURIComponent(returnUrl)}`\r\n if (!ready) {\r\n return
;\r\n } else {\r\n const { component: Component, ...rest } = this.props;\r\n return {\r\n if (authenticated) {\r\n return \r\n } else {\r\n return \r\n }\r\n }} />\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ ready: true, authenticated });\r\n }\r\n\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { LoginActions, QueryParameterNames, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's login process.\r\n// This is the starting point for the login process. Any component that needs to authenticate\r\n// a user can simply perform a redirect to this component with a returnUrl query parameter and\r\n// let the component perform the login and return back to the return url.\r\nexport class Login extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LoginActions.Login:\r\n this.login(this.getReturnUrl());\r\n break;\r\n case LoginActions.LoginCallback:\r\n this.processLoginCallback();\r\n break;\r\n case LoginActions.LoginFailed:\r\n const params = new URLSearchParams(window.location.search);\r\n const error = params.get(QueryParameterNames.Message);\r\n this.setState({ message: error });\r\n break;\r\n case LoginActions.Profile:\r\n this.redirectToProfile();\r\n break;\r\n case LoginActions.Register:\r\n this.redirectToRegister();\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n\r\n render() {\r\n const action = this.props.action;\r\n const { message } = this.state;\r\n\r\n if (!!message) {\r\n return
{message}
\r\n } else {\r\n switch (action) {\r\n case LoginActions.Login:\r\n return (
Processing login
);\r\n case LoginActions.LoginCallback:\r\n return (
Processing login callback
);\r\n case LoginActions.Profile:\r\n case LoginActions.Register:\r\n return (
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async login(returnUrl) {\r\n const state = { returnUrl };\r\n const result = await authService.signIn(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid status result ${result.status}.`);\r\n }\r\n }\r\n\r\n async processLoginCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignIn(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeSignIn finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(`Invalid authentication result status '${result.status}'.`);\r\n }\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) || fromQuery || `${window.location.origin}/`;\r\n }\r\n\r\n redirectToRegister() {\r\n this.redirectToApiAuthorizationPath(`${ApplicationPaths.IdentityRegisterPath}?${QueryParameterNames.ReturnUrl}=${encodeURI(ApplicationPaths.Login)}`);\r\n }\r\n\r\n redirectToProfile() {\r\n this.redirectToApiAuthorizationPath(ApplicationPaths.IdentityManagePath);\r\n }\r\n\r\n redirectToApiAuthorizationPath(apiAuthorizationPath) {\r\n const redirectUrl = `${window.location.origin}/${apiAuthorizationPath}`;\r\n // It's important that we do a replace here so that when the user hits the back arrow on the\r\n // browser they get sent back to where it was on the app instead of to an endpoint on this\r\n // component.\r\n window.location.replace(redirectUrl);\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n // It's important that we do a replace here so that we remove the callback uri with the\r\n // fragment containing the tokens from the browser history.\r\n window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React from 'react'\r\nimport { Component } from 'react';\r\nimport authService from './AuthorizeService';\r\nimport { AuthenticationResultStatus } from './AuthorizeService';\r\nimport { QueryParameterNames, LogoutActions, ApplicationPaths } from './ApiAuthorizationConstants';\r\n\r\n// The main responsibility of this component is to handle the user's logout process.\r\n// This is the starting point for the logout process, which is usually initiated when a\r\n// user clicks on the logout button on the LoginMenu component.\r\nexport class Logout extends Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n message: undefined,\r\n isReady: false,\r\n authenticated: false\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n if (!!window.history.state.state.local) {\r\n this.logout(this.getReturnUrl());\r\n } else {\r\n // This prevents regular links to /authentication/logout from triggering a logout\r\n this.setState({ isReady: true, message: \"The logout was not initiated from within the page.\" });\r\n }\r\n break;\r\n case LogoutActions.LogoutCallback:\r\n this.processLogoutCallback();\r\n break;\r\n case LogoutActions.LoggedOut:\r\n this.setState({ isReady: true, message: \"You successfully logged out!\" });\r\n break;\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n\r\n this.populateAuthenticationState();\r\n }\r\n\r\n render() {\r\n const { isReady, message } = this.state;\r\n if (!isReady) {\r\n return
\r\n }\r\n if (!!message) {\r\n return (
{message}
);\r\n } else {\r\n const action = this.props.action;\r\n switch (action) {\r\n case LogoutActions.Logout:\r\n return (
Processing logout
);\r\n case LogoutActions.LogoutCallback:\r\n return (
Processing logout callback
);\r\n case LogoutActions.LoggedOut:\r\n return (
{message}
);\r\n default:\r\n throw new Error(`Invalid action '${action}'`);\r\n }\r\n }\r\n }\r\n\r\n async logout(returnUrl) {\r\n const state = { returnUrl };\r\n const isauthenticated = await authService.isAuthenticated();\r\n if (isauthenticated) {\r\n const result = await authService.signOut(state);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n break;\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(returnUrl);\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n } else {\r\n this.setState({ message: \"You successfully logged out!\" });\r\n }\r\n }\r\n\r\n async processLogoutCallback() {\r\n const url = window.location.href;\r\n const result = await authService.completeSignOut(url);\r\n switch (result.status) {\r\n case AuthenticationResultStatus.Redirect:\r\n // There should not be any redirects as the only time completeAuthentication finishes\r\n // is when we are doing a redirect sign in flow.\r\n throw new Error('Should not redirect.');\r\n case AuthenticationResultStatus.Success:\r\n await this.navigateToReturnUrl(this.getReturnUrl(result.state));\r\n break;\r\n case AuthenticationResultStatus.Fail:\r\n this.setState({ message: result.message });\r\n break;\r\n default:\r\n throw new Error(\"Invalid authentication result status.\");\r\n }\r\n }\r\n\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n this.setState({ isReady: true, authenticated });\r\n }\r\n\r\n getReturnUrl(state) {\r\n const params = new URLSearchParams(window.location.search);\r\n const fromQuery = params.get(QueryParameterNames.ReturnUrl);\r\n if (fromQuery && !fromQuery.startsWith(`${window.location.origin}/`)) {\r\n // This is an extra check to prevent open redirects.\r\n throw new Error(\"Invalid return url. The return url needs to have the same origin as the current page.\")\r\n }\r\n return (state && state.returnUrl) ||\r\n fromQuery ||\r\n `${window.location.origin}${ApplicationPaths.LoggedOut}`;\r\n }\r\n\r\n navigateToReturnUrl(returnUrl) {\r\n return window.location.replace(returnUrl);\r\n }\r\n}\r\n","import React, { Component, Fragment } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Login } from './Login'\r\nimport { Logout } from './Logout'\r\nimport { ApplicationPaths, LoginActions, LogoutActions } from './ApiAuthorizationConstants';\r\n\r\nexport default class ApiAuthorizationRoutes extends Component {\r\n\r\n render () {\r\n return(\r\n \r\n loginAction(LoginActions.Login)} />\r\n loginAction(LoginActions.LoginFailed)} />\r\n loginAction(LoginActions.LoginCallback)} />\r\n loginAction(LoginActions.Profile)} />\r\n loginAction(LoginActions.Register)} />\r\n logoutAction(LogoutActions.Logout)} />\r\n logoutAction(LogoutActions.LogoutCallback)} />\r\n logoutAction(LogoutActions.LoggedOut)} />\r\n );\r\n }\r\n}\r\n\r\nfunction loginAction(name){\r\n return ();\r\n}\r\n\r\nfunction logoutAction(name) {\r\n return ();\r\n}\r\n","import authService from '../api-authorization/AuthorizeService';\r\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\r\n\r\nexport class UserService {\r\n\tasync getUsers(page, pageSize, sortOrder, searchString) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\t\tconst offset = (page - 1) * pageSize;\r\n\r\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\r\n\t\tlet url = \"user?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\r\n\t\tif (searchString !== \"\")\r\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(url, {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\r\n\t\t\t\t\twindow.location.href =\r\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync deleteUser(userId) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst headers = { 'content-type': 'application/json' };\r\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\r\n\r\n\t\t\tconst response = await fetch('user/' + userId, {\r\n\t\t\t\tmethod: 'DELETE',\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync getUser(userId) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('user/' + userId, {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync addUser(user) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst headers = { 'content-type': 'application/json' };\r\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\r\n\r\n\t\t\tconst response = await fetch('user', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: JSON.stringify(user),\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync updateUser(userId, user) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst headers = { 'content-type': 'application/json' };\r\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\r\n\r\n\t\t\tconst response = await fetch('user/' + userId, {\r\n\t\t\t\tmethod: 'PUT',\r\n\t\t\t\tbody: JSON.stringify(user),\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync changeUserPassword(userId, userPasswords) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst headers = { 'content-type': 'application/json' };\r\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\r\n\r\n\t\t\tconst response = await fetch('user/' + userId + '/change-password', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: JSON.stringify(userPasswords),\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t\t\r\n\t}\r\n\tasync selectlist(search, page, offset) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('user/selectlist?search=' + search + '&page=' + page + '&offset=0', {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\tasync getRecruits() {\r\n\t\tconst token = await authService.getAccessToken();\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('user/recruits', {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\tasync activateRecruit(id) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('user/activaterecruit?id=' + id, {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n }\r\n\tstatic get instance() { return userService; } // TODO: Check singleton/lifetime\r\n}\r\n\r\nconst userService = new UserService();\r\n\r\nexport default userService;","import React, { Component } from 'react';\nimport { Pagination, PaginationItem, PaginationLink } from 'reactstrap';\n\nexport class Pager extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t}\n\n\tstatic defaultProps = {\n\t\tpage: 1,\n\t\ttotalItems: 100,\n\t\tpageSize: 10,\n\t\tmaxPages: 5\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\tpaginate() {\n\t\tconst { totalItems, page, pageSize, maxPages } = this.props;\n\t\tlet currentPage = page;\n\n\t\t// calculate total pages\n\t\tlet totalPages = Math.ceil(totalItems / pageSize);\n\n\t\t// ensure current page isn't out of range\n\t\tif (currentPage < 1) {\n\t\t\tcurrentPage = 1;\n\t\t} else if (currentPage > totalPages) {\n\t\t\tcurrentPage = totalPages;\n\t\t}\n\n\t\tlet startPage, endPage;\n\n\t\tif (totalPages <= maxPages) {\n\t\t\t// total pages less than max so show all pages\n\t\t\tstartPage = 1;\n\t\t\tendPage = totalPages;\n\t\t} else {\n\t\t\t// total pages more than max so calculate start and end pages\n\t\t\tlet maxPagesBeforeCurrentPage = Math.floor(maxPages / 2);\n\t\t\tlet maxPagesAfterCurrentPage = Math.ceil(maxPages / 2) - 1;\n\t\t\tif (currentPage <= maxPagesBeforeCurrentPage) {\n\t\t\t\t// current page near the start\n\t\t\t\tstartPage = 1;\n\t\t\t\tendPage = maxPages;\n\t\t\t} else if (currentPage + maxPagesAfterCurrentPage >= totalPages) {\n\t\t\t\t// current page near the end\n\t\t\t\tstartPage = totalPages - maxPages + 1;\n\t\t\t\tendPage = totalPages;\n\t\t\t} else {\n\t\t\t\t// current page somewhere in the middle\n\t\t\t\tstartPage = currentPage - maxPagesBeforeCurrentPage;\n\t\t\t\tendPage = currentPage + maxPagesAfterCurrentPage;\n\t\t\t}\n\t\t}\n\n\t\t// calculate start and end item indexes\n\t\tlet startIndex = (currentPage - 1) * pageSize;\n\t\tlet endIndex = Math.min(startIndex + pageSize - 1, totalItems - 1);\n\n\t\t// create an array of pages to ng-repeat in the pager control\n\t\tlet pages = Array.from(Array((endPage + 1) - startPage).keys()).map(i => startPage + i);\n\n\t\t// return object with all pager properties required by the view\n\t\treturn {\n\t\t\ttotalItems: totalItems,\n\t\t\tcurrentPage: currentPage,\n\t\t\tpageSize: pageSize,\n\t\t\ttotalPages: totalPages,\n\t\t\tstartPage: startPage,\n\t\t\tendPage: endPage,\n\t\t\tstartIndex: startIndex,\n\t\t\tendIndex: endIndex,\n\t\t\tpages: pages\n\t\t}\n\t}\n\n\thandlePageChange = (newPage) => {\n\t\tthis.props.handlePageChange(newPage);\n\t}\n\n\trender() {\n\t\tconst { currentPage, totalPages, pages } = this.paginate();\n\n\t\treturn (\n\t\t\t\n\t\t\t\t currentPage > 1 && this.handlePageChange(1)}>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t currentPage > 1 && this.handlePageChange(currentPage - 1)} >\n\t\t\t\t\t\n\t\t\t\t\n\n\t\t\t\t{pages.map((value, index) =>\n\t\t\t\t\t this.handlePageChange(value)}>\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t{value}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t)}\n\n\t\t\t\t currentPage < totalPages && this.handlePageChange(currentPage + 1)} >\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t currentPage < totalPages && this.handlePageChange(totalPages)}>\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t)\n\t}\n}","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport userService from './UserService';\r\nimport { Pager } from '../Pager';\r\nimport { FormGroup, Form, Input, Button, Table } from 'reactstrap';\r\nimport { FaKey, FaSortAlphaDown, FaSortAlphaUp, FaEdit, FaTrash } from 'react-icons/fa';\r\n\r\nexport class UserActivate extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { users: [], loading: true, selecteduser: this.props.match.params.userId ? props.userId : null };\r\n \r\n }\r\n\r\n componentDidMount() {\r\n this.populateUserData();\r\n }\r\n async populateUserData() {\r\n try {\r\n\r\n const data = await userService.getRecruits();\r\n this.setState({ users: data.result, loading: false });\r\n }\r\n catch (error) {\r\n // Handle error\r\n }\r\n }\r\n async activateUser(id) {\r\n await userService.activateRecruit(id);\r\n }\r\n onActivateClick = (id) => {\r\n this.activateUser(id);\r\n this.populateUserData();\r\n }\r\n renderUsersTable() {\r\n const { users, selecteduser } = this.state;\r\n const filteredusers = users.filter(o => this.props.match.params.userId ? o.id == this.props.match.params.userId : true);\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {filteredusers.length == 0 && users.length == 0 ? (\r\n \r\n ) : \"\"}\r\n {filteredusers.length == 0 && users.length > 0 ? (\r\n \r\n ): \"\"}\r\n\r\n {filteredusers.map(user =>\r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
NameEmailActivate
No users to activate
List is filtered click here show results
{user.firstname + ' ' + user.surname}{user.email}
\r\n );\r\n }\r\n render() {\r\n let contents = this.state.loading\r\n ?

Loading...

\r\n : this.renderUsersTable();\r\n\r\n return (\r\n
\r\n

User Activation

\r\n { this.props.match.params.userId ? (\r\n List is filtered to a one recruit, click to remove filter\r\n ): \"\" }\r\n {contents}\r\n
\r\n );\r\n }\r\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport userService from './UserService';\nimport { Pager } from '../Pager';\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\nimport { FaKey,FaSortAlphaDown,FaSortAlphaUp,FaEdit,FaTrash } from 'react-icons/fa';\n\nexport class UserList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"Fname\", searchString: \"\", loading: true };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.populateUserData();\n\t}\n\n\thandlePageChange = (page) => {\n\t\tthis.setState({ page: page }, () => this.populateUserData() );\n\t}\n\n\thandleHeaderClick = (event, header) => {\n\t\tevent.preventDefault();\n\n\t\tlet newSortOrder = this.state.sortOrder;\n\n\t\tswitch (header) {\n\t\t\tcase 'Fname': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'Fname' ? 'Fname_desc' : 'Fname';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Lname': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'Lname' ? 'Lname_desc' : 'Lname';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Email': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'Email' ? 'Email_desc' : 'Email';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateUserData());\n\t\treturn false;\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.setState({ [name]: value });\n\t}\n\n\thandleSearchFormSubmit = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page: 1 }, () => this.populateUserData());\n\t\t//this.populateUserData();\n\t}\n\n\thandleSearchFormReset = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page:1, searchString: \"\" }, () => this.populateUserData());\n\t}\n\n\trenderUsersTable() {\n\t\tconst { users, totalUsers, sortOrder } = this.state;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{users.map(user =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'Fname')} >\n\t\t\t\t\t\t\t\t\tFirst Name \n\t\t\t\t\t\t\t\t\t{sortOrder == 'Fname' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'Fname_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'Lname')} >\n\t\t\t\t\t\t\t\t\tLast Name \n\t\t\t\t\t\t\t\t\t{sortOrder == 'Lname' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'Lname_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'Email')} >\n\t\t\t\t\t\t\t\t\tEmail \n\t\t\t\t\t\t\t\t\t{sortOrder == 'Email' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'Email_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{user.firstname}{user.surname}{user.email}
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderUsersTable();\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Users

\n\t\t\t\tAdd User\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync populateUserData() {\n\t\ttry {\n\n\t\t\tconst data = await userService.getUsers(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\n\t\t\tthis.setState({ totalUsers: data.totalUsers, users: data.users, loading: false });\n\t\t}\n\t\tcatch (error) {\n\t\t\t// Handle error\n\t\t}\n\t}\n}","import React, { Component } from 'react';\nimport userService from './UserService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\n\nclass UserAddPlain extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/users');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait userService.addUser(values);\n\t\t\thistory.push('/users');\n\t\t})();\n\t}\n\n\trender() {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n \n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport const UserAdd = withTranslation()(UserAddPlain);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport userService from './UserService';\nimport { Button } from 'reactstrap';\n\nclass UserDeletePlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.userId = match.params.userId;\n\t}\n\n\tcomponentDidMount() {\n\n\t}\n\n\thandleClickOk = () => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait userService.deleteUser(this.userId);\n\t\t\thistory.push('/users');\n\t\t})();\n\n\t\t//usersService.deleteUser(this.userId)\n\t\t//\t.then(() => history.push('/users'));\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/users');\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Are you sure you want to delete user?

\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\nexport const UserDelete = withRouter(UserDeletePlain);","import authService from '../api-authorization/AuthorizeService';\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\n\nexport class VolunteerGroupService {\n\tasync getData(page, pageSize, sortOrder, searchString) {\n\t\tconst token = await authService.getAccessToken();\n\t\tconst offset = (page - 1) * pageSize;\n\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\n\t\tlet url = \"volunteergroup?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\n\t\tif (searchString !== \"\")\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\n\t\t\t\t\twindow.location.href =\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync delete(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('volunteergroup/' + entityId, {\n\t\t\t\tmethod: 'DELETE',\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync get(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('volunteergroup/' + entityId, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync add(entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('volunteergroup', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\n\t}\n\n\tasync update(id, entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('volunteergroup/' + id, {\n\t\t\t\tmethod: 'PUT',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync selectlist(search, page, offset) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('volunteergroup/selectlist?search=' + search + '&page=' + page + '&offset=0', {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic get instance() { return volunteerGroupService; } // TODO: Check singleton/lifetime\n}\n\nconst volunteerGroupService = new VolunteerGroupService();\n\nexport default volunteerGroupService;","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport userService from './UserService';\r\nimport volunteerGroupService from '../volunteergroups/VolunteerGroupService';\r\nimport { AvForm, AvField,AvInput } from 'availity-reactstrap-validation';\r\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\r\nimport { AsyncPaginate } from 'react-select-async-paginate';\r\nimport { withTranslation } from 'react-i18next';\r\n\r\n\r\nclass UserEditPlain extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = { user: null, loading: true };\r\n\r\n\t\tconst { match } = this.props;\r\n\t\tthis.userId = match.params.userId;\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.retrieveFormData();\r\n\t}\r\n\r\n\thandleInputChange = (event) => {\r\n\t\tconst target = event.target;\r\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\r\n\t\tconst name = target.name;\r\n\r\n\t\tthis.state.user[name] = value;\r\n\t\tthis.setState({ user: this.state.user });\r\n\t}\r\n\r\n\thandleClickCancel = () => {\r\n\t\tconst { history } = this.props;\r\n\r\n\t\thistory.push('/users');\r\n\t}\r\n\thandleVolunteerGroupsSelectChange(e) {\r\n\t\tthis.state.user[\"volunteerGroupsvalue\"] = e;\r\n\t\tthis.setState({ entity: this.state.user });\r\n }\r\n\thandleValidSubmit = (event, values) => {\r\n\t\tconst { history } = this.props;\r\n\t\tlet postvalues = values;\r\n\r\n\t\tlet volunteerGroups = [];\r\n\t\tfor (let group of this.state.user[\"volunteerGroupsvalue\"]) {\r\n\t\t\tvolunteerGroups.push({ id: group.value });\r\n\t\t}\r\n\t\tpostvalues[\"volunteerGroups\"] = volunteerGroups;\r\n\r\n\r\n\t\t(async () => {\r\n\t\t\tawait userService.updateUser(this.userId, postvalues);\r\n\t\t\thistory.push('/users');\r\n\t\t})();\r\n\t}\r\n\r\n\trenderUserForm(user) {\r\n\t\tconst { t, i18n } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n \r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n \r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tconst responseJSON = await volunteerGroupService.selectlist(search, page, 0);\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\toptions: responseJSON.result,\r\n\t\t\t\t\t\t\t\thasMore: responseJSON.hasmore,\r\n\t\t\t\t\t\t\t\tadditional: {\r\n\t\t\t\t\t\t\t\t\tpage: page + 1,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonChange={this.handleVolunteerGroupsSelectChange.bind(this)}\r\n\t\t\t\t\t\tadditional={\r\n\t\t\t\t\t\t\t{ page: 1, }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tisMulti='true'\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet contents = this.state.loading\r\n\t\t\t?

Loading...

\r\n\t\t\t: this.renderUserForm(this.state.user);\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t

Users

\r\n\t\t\t\t{contents}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\tasync retrieveFormData() {\r\n\t\tconst data = await userService.getUser(this.userId);\r\n\r\n\t\tlet volunteerGroups = [];\r\n\t\tfor (let group of data.volunteerGroups) {\r\n\t\t\tvolunteerGroups.push({ value: group.id, label: group.name });\r\n\t\t}\r\n\t\tdata.volunteerGroupsvalue = volunteerGroups;\r\n\r\n\t\tthis.setState({ user: data, loading: false });\r\n\t}\r\n}\r\n\r\nexport const UserEdit = withTranslation()(withRouter(UserEditPlain));","import React, { Component } from 'react';\nimport userService from './UserService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\n\nclass UserPasswordChangePlain extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\n\t\tconst { match } = this.props;\n\t\tthis.userId = match.params.userId;\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/users');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait userService.changeUserPassword(this.userId, values);\n\t\t\thistory.push('/users');\n\t\t})();\n\t}\n\n\trender() {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport const UserPasswordChange = withTranslation()(UserPasswordChangePlain);","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\n\nimport { UserActivate } from './UserActivate';\nimport { UserList } from './UserList';\nimport { UserAdd } from './UserAdd';\nimport { UserDelete } from './UserDelete';\nimport { UserEdit } from './UserEdit';\nimport { UserPasswordChange } from './UserPasswordChange';\n\nexport function UserRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import authService from '../api-authorization/AuthorizeService';\r\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\r\n\r\nexport class WorkProgramService {\r\n\tasync getData(page, pageSize, sortOrder, searchString) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\t\tconst offset = (page - 1) * pageSize;\r\n\r\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\r\n\t\tlet url = \"workprogram?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\r\n\t\tif (searchString !== \"\")\r\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch(url, {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\r\n\t\t\t\t\twindow.location.href =\r\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync delete(entityId) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst headers = { 'content-type': 'application/json' };\r\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\r\n\r\n\t\t\tconst response = await fetch('workprogram/' +entityId, {\r\n\t\t\t\tmethod: 'DELETE',\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync get(entityId) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('workprogram/' + entityId, {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync add(entity) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst headers = { 'content-type': 'application/json' };\r\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\r\n\r\n\t\t\tconst response = await fetch('workprogram', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: JSON.stringify(entity),\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\r\n\t}\r\n\r\n\tasync update(id, entity) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst headers = { 'content-type': 'application/json' };\r\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\r\n\r\n\t\t\tconst response = await fetch('workprogram/' + id, {\r\n\t\t\t\tmethod: 'PUT',\r\n\t\t\t\tbody: JSON.stringify(entity),\r\n\t\t\t\theaders: headers,\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\treturn;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync calendareventlist(start, end, group) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('workprogram/calendarevents?start=' + start + '&end=' + end+ '&offset=0', {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\twindow.location.href = `${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\t// not authenticated or recruit\r\n\tasync calendareventlistlimited(start, end, group) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('workprogram/calendareventslimited?start=' + start + '&end=' + end + '&offset=0', {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\t//\r\n\tasync joinWorkProgram(workProgramId, userId) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('workprogram/joinworkprogram?workprogramid=' + workProgramId + '&userid=' + userId, {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\tasync leaveWorkProgram(workProgramId, userId) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('workprogram/leaveworkprogram?workprogramid=' + workProgramId + '&userid=' + userId, {\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\tasync emailParticipants(workProgramId, userId, emailSubject,emailText) {\r\n\t\tconst token = await authService.getAccessToken();\r\n\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('workprogram/emailparticipants', {\r\n\t\t\t\tmethod: 'POST',\r\n\t\t\t\tbody: JSON.stringify({ workProgramId, userId, emailSubject, emailText }),\r\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}`, \"Content-Type\": \"application/json\" }\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n\t}\r\n\r\n\tasync bypathid(pathid) {\r\n\t\ttry {\r\n\t\t\tconst response = await fetch('workprogram/path/' + pathid, {\r\n\t\t\t\theaders: {}\r\n\t\t\t});\r\n\r\n\t\t\tif (response.ok) {\r\n\t\t\t\tconst jsonData = await response.json();\r\n\t\t\t\treturn jsonData;\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\r\n\t\t\t}\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\tconsole.log(error);\r\n\t\t\tthrow error;\r\n\t\t}\r\n }\r\n\r\n\tstatic get instance() { return workProgramService; } // TODO: Check singleton/lifetime\r\n}\r\n\r\nconst workProgramService = new WorkProgramService();\r\n\r\nexport default workProgramService;","import React from \"react\";\r\nimport { withLeaflet, CircleMarker } from \"react-leaflet\";\r\nimport Control from \"react-leaflet-control\";\r\nimport { FaLocationArrow } from \"react-icons/fa\";\r\nimport { Button } from \"reactstrap\";\r\nimport L from \"leaflet\";\r\n//import { withNamespaces } from \"react-i18next\";\r\n\r\nclass GeoLocation extends React.Component {\r\n constructor(props) {\r\n super(props);\r\n\r\n this.updateLocation = this.updateLocation.bind(this);\r\n this.locate = this.locate.bind(this);\r\n this.toggleState = this.toggleState.bind(this);\r\n\r\n this.state = {\r\n enabled: false,\r\n location: null,\r\n watchId: null\r\n };\r\n }\r\n\r\n componentDidMount() {\r\n this.forceUpdate();\r\n }\r\n\r\n toggleState() {\r\n if (!navigator.geolocation) {\r\n alert(\"GeoLocation not supported on your device\");\r\n return;\r\n }\r\n\r\n if (!this.state.enabled) {\r\n this.locate();\r\n } else {\r\n this.stop();\r\n }\r\n }\r\n\r\n stop() {\r\n navigator.geolocation.clearWatch(this.watchId);\r\n this.setState({ enabled: false, watchId: null, location: null });\r\n }\r\n\r\n locate() {\r\n let geoOptions = {\r\n enableHighAccuracy: true\r\n };\r\n\r\n this.watchId = navigator.geolocation.watchPosition(\r\n this.updateLocation,\r\n function (e) {\r\n console.log(e);\r\n },\r\n geoOptions\r\n );\r\n }\r\n\r\n updateLocation(position) {\r\n if (!this.withinParkBoundary(position)) {\r\n alert(\"You must be within the National Park to use your location.\");\r\n this.stop();\r\n } else {\r\n this.setState({ location: position, enabled: true });\r\n }\r\n }\r\n\r\n withinParkBoundary(position) {\r\n const lat = position.coords.latitude;\r\n const lng = position.coords.longitude;\r\n\r\n return lng > -4 && lng < -2.9 && lat < 52.08 && lat > 51.5;\r\n }\r\n\r\n render() {\r\n let enabledStateStyle = \"secondary\";\r\n let enabledStateIconStyle = \"grey\";\r\n if (this.state.enabled) {\r\n enabledStateStyle = \"primary\";\r\n enabledStateIconStyle = \"#007bff\";\r\n }\r\n\r\n let locationMarker = null;\r\n if (this.state.location) {\r\n const latlng = L.latLng(\r\n this.state.location.coords.latitude,\r\n this.state.location.coords.longitude\r\n );\r\n locationMarker = (\r\n \r\n \r\n \r\n \r\n );\r\n this.props.leaflet.map.setView(latlng, 6);\r\n }\r\n //const t = this.props.t;\r\n let t = (s) => s;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {locationMarker}\r\n \r\n );\r\n }\r\n}\r\n\r\n//export default withNamespaces()(withLeaflet(GeoLocation));\r\nexport default withLeaflet(GeoLocation);\r\n","import \"proj4leaflet\";\r\n\r\nimport proj4 from \"proj4\";\r\n\r\nimport React, { Component } from \"react\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport {\r\n Map,\r\n WMSTileLayer,\r\n LayersControl,\r\n Polyline,\r\n Popup,\r\n Marker,\r\n withLeaflet,\r\n ZoomControl\r\n} from \"react-leaflet\";\r\nimport { Button } from \"reactstrap\";\r\nimport L from \"leaflet\";\r\nimport Control from \"react-leaflet-control\";\r\nimport 'leaflet/dist/leaflet.css';\r\n\r\n\r\n\r\n\r\n\r\n//import PopupContent from \"./PopupContent\";\r\n//import Legend from \"./Legend\";\r\n//import Welcome from \"./Welcome\";\r\n//import Report from \"./Report\";\r\nimport { withNamespaces } from \"react-i18next\";\r\n//import AutoOpenPopupMarker from \"./AutoOpenPopupMarker\";\r\nimport GeoLocation from \"./GeoLocation\";\r\nimport MeasureControlDefault from \"react-leaflet-measure\";\r\n//import Lockr from \"lockr\";\r\nimport { wgs84, osgb } from \"../osgb\";\r\n\r\nconst MeasureControl = withLeaflet(MeasureControlDefault);\r\nconst { BaseLayer, Overlay } = LayersControl;\r\n\r\nvar EPSG27700 =\r\n \"+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +datum=OSGB36 +units=m +no_defs\";\r\n\r\nvar crs = new L.Proj.CRS(\"EPSG:27700\", EPSG27700, {\r\n //scales: [1600,800,400,200,100,50,25,10,5,2.5,1,0.5,0.25,0.125,0.0625]\r\n scales: [0.03125, 0.0625, 0.125, 0.25, 0.5, 1, 2.5, 5]\r\n //resolutions: [250, 80, 35, 12.35, 8, 4, 2, 1]\r\n});\r\n\r\nconst DEFAULT_VIEWPORT = {\r\n center: [51.87, -3.45],\r\n zoom: 0\r\n};\r\n\r\ndelete L.Icon.Default.prototype._getIconUrl;\r\n\r\nL.Icon.Default.mergeOptions({\r\n iconRetinaUrl: require('leaflet/dist/images/marker-icon-2x.png'),\r\n iconUrl: require('leaflet/dist/images/marker-icon.png'),\r\n shadowUrl: require('leaflet/dist/images/marker-shadow.png')\r\n});\r\n\r\nclass PathMap extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.handleClickMap = this.handleClickMap.bind(this);\r\n\r\n //this.toggleLegend = this.toggleLegend.bind(this);\r\n //this.toggleIntro = this.toggleIntro.bind(this);\r\n //this.toggleReportForm = this.toggleReportForm.bind(this);\r\n //this.getSelectedPRoW = this.getSelectedPRoW.bind(this);\r\n\r\n this.leaflet = React.createRef();\r\n this.wgs84 = new wgs84();\r\n this.osgb = new osgb();\r\n let setviewport = DEFAULT_VIEWPORT;\r\n if (this.props.selectedLocation) {\r\n\r\n let latlng = new L.LatLng(\r\n props.selectedLocation.lat,\r\n props.selectedLocation.lng\r\n );\r\n setviewport = { center: latlng, zoom: 1 };\r\n\r\n }\r\n\r\n this.state = {\r\n featureCollection: {},\r\n selectedLocation: props.selectedLocation,\r\n showLegend: false,\r\n showIntro: this.showIntro(),\r\n showReportForm: false,\r\n usersLocation: null,\r\n viewport: setviewport\r\n };\r\n }\r\n showIntro() {\r\n return false;\r\n // //let hasSeenIntro = Lockr.get(\"hasSeenIntro\");\r\n // let hasSeenIntro = false;\r\n // //User has already accepted terms, no need to show welcome\r\n // if (hasSeenIntro) {\r\n // return false;\r\n // } else {\r\n // Lockr.set(\"hasSeenIntro\", true);\r\n // return true;\r\n // }\r\n }\r\n handleClickMap(event) {\r\n if (this.props.isStatic) {\r\n\r\n }\r\n else {\r\n let url = this.getFeatureInfoUrl(event.latlng, event.target);\r\n\r\n this.wgs84.setDegrees(event.latlng.lat, event.latlng.lng);\r\n\r\n this.setState({\r\n selectedLocation: event.latlng\r\n });\r\n\r\n fetch(url).then(collections => {\r\n collections\r\n .json()\r\n .then(json => {\r\n this.setState({\r\n featureCollection: json,\r\n selectedLocation: event.latlng\r\n });\r\n if (this.props.onClick) {\r\n this.props.onClick(event, json);\r\n }\r\n })\r\n .catch(e => {\r\n console.log(\"Failed to get response\" + e);\r\n });\r\n });\r\n }\r\n }\r\n\r\n //showFeature() { }\r\n\r\n //getSelectedPRoW() {\r\n // if (\r\n // this.state.featureCollection.hasOwnProperty(\"features\") &&\r\n // this.state.featureCollection.features.length > 0 &&\r\n // this.state.featureCollection.features[0].id.startsWith(\r\n // \"public_rights_of_ways\"\r\n // )\r\n // ) {\r\n // return this.state.featureCollection.features[0];\r\n // }\r\n //}\r\n //translateFeatureGeomToLatLon(feature) {\r\n // let pathSections = [];\r\n // for (\r\n // var pathSection = 0;\r\n // pathSection < feature.geometry.coordinates.length;\r\n // pathSection++\r\n // ) {\r\n // let pathPoints = [];\r\n\r\n // for (\r\n // var pathPointsCount = 0;\r\n // pathPointsCount < feature.geometry.coordinates[pathSection].length;\r\n // pathPointsCount++\r\n // ) {\r\n // let reprojectedCoords = proj4(\r\n // EPSG27700,\r\n // \"WGS84\",\r\n // feature.geometry.coordinates[pathSection][pathPointsCount]\r\n // );\r\n\r\n // pathPoints.push([reprojectedCoords[1], reprojectedCoords[0]]);\r\n // }\r\n\r\n // pathSections.push(pathPoints);\r\n // }\r\n // return pathSections;\r\n //}\r\n\r\n getFeatureInfoUrl(latlng, map) {\r\n // Construct a GetFeatureInfo request URL given a point\r\n\r\n var point = map.latLngToContainerPoint(latlng, map.getZoom()),\r\n size = map.getSize(),\r\n // this crs is used to show layer added to map\r\n crs = map.options.crs,\r\n // these are the SouthWest and NorthEast points\r\n // projected from LatLng into used crs\r\n sw = crs.project(map.getBounds().getSouthWest()),\r\n ne = crs.project(map.getBounds().getNorthEast()),\r\n params = {\r\n request: \"GetFeatureInfo\",\r\n service: \"WMS\",\r\n\r\n // this is the code of used crs\r\n srs: crs.code,\r\n version: \"1.3.0\",\r\n feature_count: 1,\r\n\r\n // these are bbox defined by SouthWest and NorthEast coords\r\n bbox: sw.x + \",\" + sw.y + \",\" + ne.x + \",\" + ne.y,\r\n height: size.y,\r\n width: size.x,\r\n buffer: 5,\r\n layers: [\r\n //\"bbnpa_external:prow_ongoing_pathworks\",\r\n //\"inspire:public_rights_of_ways\"\r\n \"volunteers:volunteer_work_programme\"\r\n ],\r\n query_layers: [\r\n //\"bbnpa_external:prow_ongoing_pathworks\",\r\n //\"inspire:public_rights_of_ways\"\r\n \"volunteers:volunteer_work_programme\"\r\n ],\r\n info_format: \"application/json\"\r\n };\r\n\r\n params[params.version === \"1.3.0\" ? \"i\" : \"x\"] = Math.round(point.x);\r\n params[params.version === \"1.3.0\" ? \"j\" : \"y\"] = Math.round(point.y);\r\n\r\n return (\r\n \"https://gis.beacons-npa.gov.uk/geoserver/ows/\" +\r\n L.Util.getParamString(params, null, true)\r\n );\r\n }\r\n\r\n //toggleLegend() {\r\n // this.setState({ showLegend: !this.state.showLegend });\r\n //}\r\n\r\n //toggleIntro() {\r\n // this.setState({ showIntro: !this.state.showIntro });\r\n //}\r\n\r\n //toggleReportForm() {\r\n // this.setState({ showReportForm: !this.state.showReportForm });\r\n //}\r\n\r\n //onViewportChanged = viewport => {\r\n // if (JSON.stringify(viewport) !== JSON.stringify(this.state.viewport)) {\r\n // this.setState({ viewport });\r\n // }\r\n //};\r\n\r\n componentWillReceiveProps(nextProps) {\r\n if (nextProps.selectedLocation) {\r\n let latlng = new L.LatLng(\r\n nextProps.selectedLocation.lat,\r\n nextProps.selectedLocation.lng\r\n );\r\n let newviewport = { center: latlng };\r\n if (this.props.selectZoom) {\r\n newviewport.zoom = this.props.selectZoom;\r\n }\r\n this.setState({ selectedLocation: nextProps.selectedLocation, viewport: newviewport });\r\n }\r\n else {\r\n this.setState({ selectedLocation: null });\r\n }\r\n // if (nextProps.searchSelection) {\r\n // let latlng = new L.LatLng(\r\n // nextProps.searchSelection.location[0],\r\n // nextProps.searchSelection.location[1]\r\n // );\r\n // this.setState({ viewport: { center: latlng, zoom: 5 } });\r\n // }\r\n }\r\n\r\n mouseMoved = e => {\r\n if (this.leaflet) {\r\n this.wgs84.setDegrees(e.latlng.lat, e.latlng.lng);\r\n let osgb = this.wgs84.getOSGB();\r\n let prefix = \"\";\r\n try {\r\n prefix = osgb.getGridRef(6) +\r\n \" | \" +\r\n e.latlng.lat.toFixed(4) +\r\n \" \" +\r\n e.latlng.lng.toFixed(4)\r\n } catch (e) {\r\n\r\n }\r\n this.leaflet.current.leafletElement.attributionControl.setPrefix(\r\n prefix\r\n );\r\n }\r\n };\r\n\r\n //removeFeature = () => {\r\n // this.setState({ featureCollection: [] });\r\n //};\r\n\r\n render() {\r\n //let feature = this.getSelectedPRoW();\r\n //const { t } = i18next.t;//this.props;\r\n let t = (s) => s;\r\n let marker;\r\n if (this.state.selectedLocation) {\r\n marker = (\r\n \r\n \r\n )\r\n }\r\n //if (feature) {\r\n // marker = (\r\n // \r\n // \r\n // \r\n // \r\n // \r\n // );\r\n //}\r\n\r\n //var renderedLine = null;\r\n //if (feature) {\r\n // if (feature.properties.hasOwnProperty(\"status\")) {\r\n // var lineColour = \"\";\r\n // var dashArray = \"1\";\r\n // switch (feature.properties.status) {\r\n // case 1: //Footpath\r\n // lineColour = \"#B141E3\";\r\n // break;\r\n // case 2: //Bridleway\r\n // lineColour = \"#1FAE0E\";\r\n // break;\r\n // case 3: //BOAT\r\n // lineColour = \"#7F4229\";\r\n // break;\r\n // case 4: //RB\r\n // dashArray = \"4 8\";\r\n // lineColour = \"#31EE03\";\r\n // break;\r\n // default:\r\n // lineColour = \"#000000\";\r\n // }\r\n // }\r\n // renderedLine = (\r\n // \r\n // );\r\n //}\r\n\r\n //let searchMarker = null;\r\n //if (this.props.searchSelection) {\r\n // let latlng = new L.LatLng(\r\n // this.props.searchSelection.location[0],\r\n // this.props.searchSelection.location[1]\r\n // );\r\n // searchMarker = (\r\n // \r\n // \r\n //

{this.props.searchSelection.term}

\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 {/* {t(\"explorer-map-legend\")}*/}\r\n {/* */}\r\n {/**/}\r\n\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n\r\n {/**/}\r\n {/* */}\r\n {/**/}\r\n \r\n \r\n \r\n \r\n {/**/}\r\n {/*{renderedLine}*/}\r\n {/*{searchMarker}*/}\r\n {marker}\r\n \r\n );\r\n }\r\n}\r\n\r\nexport default withTranslation('en')(PathMap);","import authService from '../api-authorization/AuthorizeService';\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\n\nexport class PathService {\n\tasync getData(page, pageSize, sortOrder, searchString) {\n\t\tconst token = await authService.getAccessToken();\n\t\tconst offset = (page - 1) * pageSize;\n\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\n\t\tlet url = \"path?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\n\t\tif (searchString !== \"\")\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\n\t\t\t\t\twindow.location.href =\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync delete(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('path/' + entityId, {\n\t\t\t\tmethod: 'DELETE',\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync get(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('path/' + entityId, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync add(entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('path', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\n\t}\n\n\tasync update(id, entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('path/' + id, {\n\t\t\t\tmethod: 'PUT',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync selectlist(search, page, offset) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('path/selectlist?search=' + search + '&page=' + page + '&offset=0', {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\tasync getbyname(name) {\n\t\ttry {\n\t\t\tconst response = await fetch('path/getbyname?name=' +name , {\n\t\t\t\theaders: {} \n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic get instance() { return pathService; } // TODO: Check singleton/lifetime\n}\n\nconst pathService = new PathService();\n\nexport default pathService;","import React, { Component } from \"react\";\r\nimport { wgs84, osgb } from \"../osgb\";\r\nimport PathMap from \"./PathMap\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport pathService from '../paths/PathService';\r\n\r\nclass GridrefSelector extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.wgs84 = new wgs84();\r\n this.osgb = new osgb();\r\n this.state = {\r\n selectedfeature: null,\r\n selectedgridref: null,\r\n selectedlocation: null\r\n };\r\n }\r\n onClickHandler = (event, features) => {\r\n this.wgs84.setDegrees(event.latlng.lat, event.latlng.lng);\r\n //convert to OSGB\r\n let osgbref = this.wgs84.getOSGB();\r\n //this.osgb.parseGridRef(osgbref.getGridRef(6));\r\n // let wgs84ref = this.osgb.getWGS84();\r\n \r\n if (this.props.onChange) {\r\n this.props.onChange(osgbref.getGridRef(6));\r\n }\r\n if (features.numberReturned > 0 && this.props.onChangePath) {\r\n this.getPathData(features.features[0].properties.path_name);\r\n }\r\n }\r\n async getPathData(name) {\r\n try {\r\n const data = await pathService.getbyname(name);\r\n this.props.onChangePath(data.result);\r\n }\r\n catch (error) {\r\n console.log(error);\r\n // Handle error\r\n }\r\n }\r\n render() {\r\n let wgs84ref = null;\r\n let invalid = false;\r\n try {\r\n if (this.osgb.parseGridRef(this.props.value)) {\r\n wgs84ref = this.osgb.getWGS84();\r\n } else {\r\n invalid = true;\r\n }\r\n } catch (e) {\r\n invalid = true;\r\n }\r\n if (invalid && this.props.hideInvalid) {\r\n return (
);\r\n }\r\n else {\r\n return (\r\n
\r\n \r\n \r\n
\r\n );\r\n }\r\n \r\n }\r\n}\r\nexport default withTranslation('en')(GridrefSelector);","import {\r\n format,\r\n parse,\r\n startOfWeek,\r\n endOfWeek,\r\n getDay,\r\n startOfMonth,\r\n endOfMonth,\r\n addDays,\r\n formatISO9075,\r\n} from 'date-fns';\r\nimport { enGB } from 'date-fns/locale';\r\nimport PropTypes from 'prop-types';\r\nimport { FaAngleLeft, FaAngleRight, } from 'react-icons/fa';\r\nimport { Calendar, dateFnsLocalizer, BigCalendar } from 'react-big-calendar';\r\nimport cn from 'classnames';\r\n//import Toolbar from 'react-big-calendar';\r\nimport workProgramService from '../workprograms/WorkProgramService';\r\nimport React, { Component, Link } from 'react';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport GridrefSelector from '../pathmap/GridrefSelector';\r\nimport {\r\n FormGroup, Form, Label, Input, Button,\r\n Modal, ModalBody, ModalHeader, ModalFooter, Row, Col, ButtonGroup,\r\n InputGroup\r\n} from 'reactstrap';\r\nimport { withTranslation } from 'react-i18next';\r\nimport \"react-big-calendar/lib/css/react-big-calendar.css\";\r\nconst locales = {\r\n 'en-GB': enGB//require('date-fns/locale/en-GB'),\r\n}\r\nconst localizer = dateFnsLocalizer({\r\n format,\r\n parse,\r\n startOfWeek: () => {\r\n startOfWeek(new Date(), { weekStartsOn: 1 })\r\n }, // week start on 0-sun 1-mon\r\n getDay,\r\n locales,\r\n});\r\nconst propTypes = {\r\n view: PropTypes.string.isRequired,\r\n views: PropTypes.arrayOf(PropTypes.string).isRequired,\r\n label: PropTypes.node.isRequired,\r\n localizer: PropTypes.object,\r\n onNavigate: PropTypes.func.isRequired,\r\n onView: PropTypes.func.isRequired\r\n};\r\nclass CustomToolbar extends Component {\r\n static propTypes = propTypes;\r\n view = view => {\r\n this.props.onView(view);\r\n };\r\n render() {\r\n let {\r\n localizer: { messages },\r\n label,\r\n date\r\n } = this.props;\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {this.props.label}\r\n \r\n {this.viewNamesGroup(messages)}\r\n \r\n
\r\n );\r\n }\r\n viewNamesGroup(messages) {\r\n let viewNames = this.props.views;\r\n const view = this.props.view;\r\n\r\n if (viewNames.length > 1) {\r\n return viewNames.map(name => (\r\n \r\n {messages[name]}\r\n \r\n ));\r\n }\r\n }\r\n navigate = action => {\r\n console.log(action);\r\n\r\n this.props.onNavigate(action)\r\n }\r\n}\r\n\r\n\r\n\r\n\r\nclass WorkProgramCalendarPlain extends Component {\r\n\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n loading: false,\r\n currentMonth: startOfMonth(new Date()),\r\n events: [\r\n\r\n ],\r\n selectedevent: {\r\n leader: null,\r\n going: []\r\n },\r\n showselectedevent: false,\r\n applicationcomment: '',\r\n\r\n isAuthenticated: false,\r\n ready: false,\r\n role: null,\r\n user: null,\r\n firstname: null,\r\n datadate: null,\r\n limitToMyWorkPrograms: false,\r\n limitToMyGroup: true,\r\n\r\n emailsubject: \"\",\r\n emailtext:\"\"\r\n };\r\n this.toggleModal = this.toggleModal.bind(this);\r\n this.toggleEmailModal = this.toggleEmailModal(this);\r\n }\r\n\r\n toggleModal(e) {\r\n this.setState({\r\n showModal: !this.state.showModal\r\n });\r\n }\r\n toggleEmailModal(e) {\r\n this.setState({ showEmailModal: !this.state.showEmailModal });\r\n }\r\n\r\n componentDidMount() {\r\n //this.populateUserState();\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n this.populateAuthenticationState();\r\n }\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n const user = await authService.getUser();\r\n this.setState({ ready: true, isAuthenticated: authenticated, user, role: user && user.role, firstname: user && user.firstname });\r\n this.userStateReturned();\r\n }\r\n userStateReturned() {\r\n this.populateData(new Date());\r\n }\r\n //async populateUserState() {\r\n // const [isAuthenticated, user] = await Promise.all([\r\n // authService.isAuthenticated(),\r\n // authService.getUser(),\r\n // ]);\r\n // this.setState({\r\n // isAuthenticated,\r\n // role: user && user.role,\r\n // user: user,\r\n // firstname: user && user.firstname\r\n // });\r\n // this.userStateReturned();\r\n //}\r\n async joinWorkProgram(workProgramId, userId) {\r\n const data = await workProgramService.joinWorkProgram(workProgramId, userId);\r\n if (data.result) {\r\n await this.populateData(this.state.datadate);\r\n this.setState({\r\n selectedevent: this.state.events.find((o) => { return o.id == this.state.selectedevent.id })\r\n });\r\n }\r\n else {\r\n this.setState({ showselectedevent: false });\r\n }\r\n }\r\n async leaveWorkProgram(workProgramId, userId) {\r\n const data = await workProgramService.leaveWorkProgram(workProgramId, userId);\r\n if (data.result) {\r\n await this.populateData(this.state.datadate);\r\n this.setState({\r\n selectedevent: this.state.events.find((o) => { return o.id == this.state.selectedevent.id })\r\n });\r\n }\r\n else {\r\n this.setState({ showselectedevent: false });\r\n }\r\n }\r\n async populateData(date) {\r\n let start = formatISO9075(startOfWeek(startOfMonth(date)), { representation: 'date' });\r\n let end = formatISO9075(endOfWeek(endOfMonth(date)), { representation: 'date' });\r\n //console.log(\"start=\" + start + \", end=\" + end);\r\n try {\r\n const user = this.state.user;\r\n const data = user && this.state.role != 'Recruit' ?\r\n await workProgramService.calendareventlist(start, end)\r\n :\r\n await workProgramService.calendareventlistlimited(start, end);\r\n console.log(\"popdata=\" + (user && this.state.role != 'Recruit'));\r\n data.result.forEach(function (item) {\r\n item.start = new Date(item.start);\r\n item.end = new Date(item.end);\r\n item.userisgoing = false;\r\n if (user) {\r\n item.going.forEach(function (persongoing) {\r\n if (user && persongoing.id == user.sub) {\r\n item.userisgoing = true;\r\n }\r\n });\r\n }\r\n });\r\n console.log(\"###\");\r\n this.setState({ events: data.result, loading: false, datadate: date });\r\n }\r\n catch (error) {\r\n // Handle error\r\n //console.log(\"popdataerror:\" + error);\r\n }\r\n }\r\n async sendEmail(workProgramId, userId, emailSubject, emailText) {\r\n try {\r\n const data = await workProgramService.emailParticipants(workProgramId, userId, emailSubject, emailText);\r\n } catch (error) {}\r\n }\r\n eventStyleGetter(event, start, end, isSelected) {\r\n var backgroundColor = '' + (event.hexcolour.length > 0 ? event.hexcolour : '#7EB1D6');\r\n var style = {\r\n backgroundColor: backgroundColor,\r\n borderRadius: '0px',\r\n opacity: 0.8,\r\n color: 'black',\r\n border: '0px',\r\n fontWeight: event.userisgoing ? 'bold' : 'normal',\r\n display: 'block',\r\n //height: '22px'\r\n };\r\n return {\r\n className: \"\",\r\n style: style\r\n };\r\n }\r\n eventSelected = (e) => {\r\n //e.preventDefault();\r\n this.setState({ selectedevent: e, showselectedevent: true });\r\n\r\n }\r\n slotSelected() { }\r\n onAddWorkProgramClick = () => {\r\n const { history } = this.props;\r\n history.push('/workprograms/add/' + this.state.selectedevent.id);\r\n }\r\n onCancelClick = () => {\r\n\r\n }\r\n onDeleteClick = () => {\r\n const { history } = this.props;\r\n history.push('/workprograms/delete/' + this.state.selectedevent.id);\r\n }\r\n onEditClick = () => {\r\n const { history } = this.props;\r\n history.push('/workprograms/edit/' + this.state.selectedevent.id);\r\n }\r\n\r\n onEmailFormChange = (e) => {\r\n let value = e.target.value;\r\n let name = e.target.name;\r\n this.setState({ [name]: value });\r\n }\r\n onShowSendEmail = () => {\r\n this.setState({ emailsubject: this.state.selectedevent.title, emailtext: \"\" });\r\n this.setState({ showEmailModal: true });\r\n //onsole.log(this.state.selectedevent.title);\r\n }\r\n onSendEmail = () => {\r\n let valid = true;\r\n if (this.state.emailsubject === \"\") {\r\n valid = false;\r\n }\r\n if (this.state.emailtext === \"\") {\r\n valid = false;\r\n }\r\n if (valid) {\r\n this.sendEmail(this.state.selectedevent.id, this.state.user.sub, this.state.emailsubject, this.state.emailtext);\r\n this.setState({ showEmailModal: false });\r\n }\r\n }\r\n onNavigate(date) {\r\n this.populateData(date);\r\n }\r\n onApplicationCommentChange(e) {\r\n this.setState({ applicationcomment: e });\r\n }\r\n onJoinWorkProgram = () => {\r\n this.joinWorkProgram(this.state.selectedevent.id, this.state.user.sub);\r\n }\r\n onLeaveWorkProgram = () => {\r\n this.leaveWorkProgram(this.state.selectedevent.id, this.state.user.sub);\r\n }\r\n onLimitToMyWorkPrograms = () => {\r\n this.setState({ limitToMyWorkPrograms: !this.state.limitToMyWorkPrograms })\r\n }\r\n onLimitToMyGroup = () => {\r\n this.setState({ limitToMyGroup: !this.state.limitToMyGroup })\r\n }\r\n render() {\r\n const { t, i18n } = this.props;\r\n const whosGoing = this.state.selectedevent.going == null ?\r\n []\r\n :\r\n [].concat(this.state.selectedevent.going)\r\n .sort((a, b) => a.name > b.name ? 1 : -1)\r\n .map((d) => d.id == this.state.user.sub ?\r\n
{d.name}
\r\n :\r\n
{d.name}
\r\n );\r\n return (\r\n
\r\n {\r\n this.state.user &&\r\n (\r\n this.state.role == 'Administrator' ||\r\n this.state.role == 'Volunteer Leader'\r\n )\r\n ?\r\n (\r\n \r\n \r\n\r\n ) : \"\"}\r\n {\r\n this.state.user && this.state.role != 'Recruit' ?\r\n (\r\n \r\n \r\n \r\n\r\n \r\n  \r\n \r\n \r\n \r\n \r\n\r\n ) : \"\"}\r\n\r\n \r\n ((ev.userisgoing == true && this.state.limitToMyWorkPrograms) || !this.state.limitToMyWorkPrograms) &&\r\n ((ev.mygroup == true && this.state.limitToMyGroup) || !this.state.limitToMyGroup)\r\n )\r\n : this.state.events\r\n }\r\n startAccessor=\"start\"\r\n endAccessor=\"end\"\r\n style={{ minHeight: 800 }}\r\n defaultDate={new Date()}\r\n onSelectSlot={(this.slotSelected)}\r\n onSelectEvent={this.eventSelected}\r\n eventPropGetter={(this.eventStyleGetter)}\r\n onNavigate={this.onNavigate.bind(this)}\r\n defaultView='month'\r\n views={['month', 'week', 'agenda']}\r\n popup={true}\r\n components={{\r\n toolbar: CustomToolbar\r\n }}\r\n culture={\"en-GB\"}\r\n />\r\n \r\n \r\n\r\n {this.state.selectedevent == null ? \"\" : this.state.selectedevent.title}\r\n\r\n \r\n \r\n \r\n Leader\r\n {this.state.selectedevent.leader == null ? \"\" : this.state.selectedevent.leader}\r\n \r\n \r\n Path\r\n {this.state.selectedevent.path == null ? \"\" : this.state.selectedevent.path}\r\n \r\n \r\n Location\r\n {this.state.selectedevent.location == null ? \"\" : this.state.selectedevent.location}\r\n \r\n \r\n Gridref\r\n {this.state.selectedevent.gridref == null ? \"\" : this.state.selectedevent.gridref}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Information\r\n {this.state.selectedevent.information == null ? \"\" : this.state.selectedevent.information}\r\n \r\n {this.state.selectedevent.surveycomment != null && this.state.selectedevent.surveycomment != \"\" ? (\r\n \r\n Survey Comment\r\n {this.state.selectedevent.surveycomment == null ? \"\" : this.state.selectedevent.surveycomment}\r\n \r\n ) : \"\"}\r\n {this.state.selectedevent.expired ? (\r\n \r\n Time Spent\r\n {this.state.selectedevent.timespenthours == null ? \"\" : this.state.selectedevent.timespenthours} hours\r\n \r\n ) : \"\"}\r\n \r\n Start Date\r\n {this.state.selectedevent.start == null ? \"\" : format(this.state.selectedevent.start, 'dd/MM/yyyy')}\r\n \r\n \r\n End Date\r\n {this.state.selectedevent.end == null ? \"\" : format(this.state.selectedevent.end, 'dd/MM/yyyy')}\r\n \r\n {this.state.user && this.state.role != 'Recruit' ? (\r\n \r\n Who's Going\r\n {whosGoing}\r\n \r\n ) : \"\"}\r\n \r\n  \r\n \r\n \r\n {this.state.selectedevent.start == null ? \"\" : (\r\n \r\n Open Met office forcast in a new tab\r\n \r\n )}\r\n {/*{*/}\r\n {/* this.state.user &&*/}\r\n {/* this.state.role != 'Recruit' &&*/}\r\n {/* (this.state.selectedevent.leader == null || this.state.user.sub != this.state.selectedevent.leader.id) &&*/}\r\n {/* !this.state.selectedevent.expired*/}\r\n {/* ? (*/}\r\n {/* */}\r\n {/* Application Comment*/}\r\n {/* */}\r\n {/* */}\r\n {/* ) : \"\"}*/}\r\n {\r\n this.state.user &&\r\n this.state.role != 'Recruit' &&\r\n (this.state.selectedevent.leader == null || this.state.user.sub != this.state.selectedevent.leaderid) &&\r\n !this.state.selectedevent.expired ?\r\n (\r\n
Joining this event confirms you have read the Risk Assessments
\r\n ) : \"\"}\r\n
\r\n\r\n {\r\n // normal user not the leader of the WP and not expired\r\n this.state.user &&\r\n this.state.role != 'Recruit' &&\r\n (this.state.selectedevent.leader == null || this.state.user.sub != this.state.selectedevent.leaderid) &&\r\n !this.state.selectedevent.expired ? (\r\n \r\n {this.state.selectedevent.going.filter((x) => x.id == this.state.user.sub).length == 0 ?\r\n ()\r\n :\r\n ()\r\n }\r\n \r\n \r\n ) : \"\"}\r\n {\r\n // normal user not the leader of the WP and expired\r\n this.state.user &&\r\n this.state.role != 'Recruit' &&\r\n (this.state.selectedevent.leader == null || this.state.user.sub != this.state.selectedevent.leaderid) &&\r\n this.state.selectedevent.expired ? (\r\n \r\n \r\n \r\n ) : \"\"}\r\n\r\n {\r\n // leader of the WP and not expired\r\n this.state.user &&\r\n this.state.role != 'Recruit' && this.state.role != 'Volunteer' &&\r\n /*(this.state.selectedevent.leader != null && this.state.user.sub == this.state.selectedevent.leaderid) &&*/\r\n !this.state.selectedevent.expired ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ) : \"\"}\r\n {\r\n // leader of the WP and expired\r\n this.state.user &&\r\n this.state.role != 'Recruit' && this.state.role != 'Volunteer' &&\r\n /*(this.state.selectedevent.leader != null && this.state.user.sub == this.state.selectedevent.leaderid) &&*/\r\n this.state.selectedevent.expired ? (\r\n \r\n \r\n \r\n \r\n ) : \"\"}\r\n\r\n {\r\n // Recruit or Not User\r\n this.state.user && this.state.role == 'Recruit' || this.state.user == null ? (\r\n \r\n \r\n \r\n ) : \"\"}\r\n {\r\n // Admin User\r\n this.state.user && this.state.role == 'Administrator' ? (\r\n Admin links\r\n \r\n \r\n \r\n ) : \"\"}\r\n\r\n
\r\n \r\n \r\n Send Email to participants of "\r\n {this.state.selectedevent == null ? \"\" : this.state.selectedevent.title}\r\n "\r\n \r\n \r\n \r\n Subject\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Message\r\n \r\n \r\n \r\n Path\r\n {this.state.selectedevent.path == null ? \"\" : this.state.selectedevent.path}\r\n \r\n \r\n \r\n \r\n \r\n \r\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 const WorkProgramCalendar = withTranslation()(WorkProgramCalendarPlain);\r\n","import React, { Component } from 'react';\r\nimport { Link } from 'react-router-dom';\r\nimport workProgramService from './WorkProgramService';\r\nimport { Pager } from '../Pager';\r\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\r\nimport { FaKey, FaSortAlphaDown, FaSortAlphaUp, FaEdit, FaTrash } from 'react-icons/fa';\r\n\r\nexport class WorkProgramList extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = { entities: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"start\", searchString: \"\", loading: true };\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.populateData();\r\n\t}\r\n\r\n\thandlePageChange = (page) => {\r\n\t\tthis.setState({ page: page }, () => this.populateData());\r\n\t}\r\n\r\n\thandleHeaderClick = (event, header) => {\r\n\t\tevent.preventDefault();\r\n\r\n\t\tlet newSortOrder = this.state.sortOrder;\r\n\r\n\t\tswitch (header) {\r\n\t\t\tcase 'title': {\r\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'title' ? 'title_desc' : 'title';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'leader': {\r\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'leader' ? 'leader_desc' : 'leader';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'location': {\r\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'location' ? 'location_desc' : 'location';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'start': {\r\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'start' ? 'start_desc' : 'start';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t\tcase 'end': {\r\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'end' ? 'end_desc' : 'end';\r\n\t\t\t\tbreak;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateData());\r\n\t\treturn false;\r\n\t}\r\n\r\n\thandleInputChange = (event) => {\r\n\t\tconst target = event.target;\r\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\r\n\t\tconst name = target.name;\r\n\r\n\t\tthis.setState({ [name]: value });\r\n\t}\r\n\r\n\thandleSearchFormSubmit = (event) => {\r\n\t\tevent.preventDefault();\r\n\t\tthis.setState({ page: 1 }, () => this.populateData());\r\n\t\t//this.populateData();\r\n\t}\r\n\r\n\thandleSearchFormReset = (event) => {\r\n\t\tevent.preventDefault();\r\n\t\tthis.setState({ page: 1, searchString: \"\" }, () => this.populateData());\r\n\t}\r\n\r\n\trenderTable() {\r\n\t\tconst { entities, total, sortOrder } = this.state;\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t{entities.map(entity =>\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t)}\r\n\t\t\t\t\t\r\n\t\t\t\t
\r\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'title')} >\r\n\t\t\t\t\t\t\t\t\tTitle \r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'title' && }\r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'title_desc' && }\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'location')} >\r\n\t\t\t\t\t\t\t\t\tLocation \r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'location' && }\r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'location_desc' && }\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'leader')} >\r\n\t\t\t\t\t\t\t\t\tLeader \r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'leader' && }\r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'leader_desc' && }\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'start')} >\r\n\t\t\t\t\t\t\t\t\tDate \r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'start' && }\r\n\t\t\t\t\t\t\t\t\t{sortOrder == 'start_desc' && }\r\n\t\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
{entity.title}{entity.location}{entity.leader}{new Date(entity.start.substring(0, 10)).toLocaleDateString()}
\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet contents = this.state.loading\r\n\t\t\t?

Loading...

\r\n\t\t\t: this.renderTable();\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t

Work Programs

\r\n\t\t\t\tAdd Work Program\r\n\t\t\t\t
\r\n\t\t\t\t\t\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t{contents}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\tasync populateData() {\r\n\t\ttry {\r\n\r\n\t\t\tconst data = await workProgramService.getData(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\r\n\t\t\tdata.entities.forEach(function (item) {\r\n\t\t\t\tvar leader = item.leader;\r\n\t\t\t\tif (leader) {\r\n\t\t\t\t\titem.leader = leader.firstname + \" \" + leader.surname;\r\n\t\t\t\t\titem.leaderid = leader.id;\r\n\t\t\t\t} else {\r\n\t\t\t\t\titem.leader = \"\";\r\n }\r\n\r\n\t\t\t});\r\n\t\t\tthis.setState({ total: data.total, entities: data.entities, loading: false });\r\n\t\t}\r\n\t\tcatch (error) {\r\n\t\t\t// Handle error\r\n\t\t}\r\n\t}\r\n}","import authService from '../api-authorization/AuthorizeService';\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\n\nexport class PathStateService {\n\tasync getData(page, pageSize, sortOrder, searchString) {\n\t\tconst token = await authService.getAccessToken();\n\t\tconst offset = (page - 1) * pageSize;\n\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\n\t\tlet url = \"pathstate?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\n\t\tif (searchString !== \"\")\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\n\t\t\t\t\twindow.location.href =\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync delete(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('pathstate/' + entityId, {\n\t\t\t\tmethod: 'DELETE',\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync get(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('pathstate/' + entityId, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync add(entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('pathstate', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\n\t}\n\n\tasync update(id, entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('pathstate/' + id, {\n\t\t\t\tmethod: 'PUT',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync selectlist(search, page, offset) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('pathstate/selectlist?search=' + search + '&page=' + page + '&offset=0', {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic get instance() { return pathStateService; } // TODO: Check singleton/lifetime\n}\n\nconst pathStateService = new PathStateService();\n\nexport default pathStateService;","import authService from '../api-authorization/AuthorizeService';\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\n\nexport class PathWorkService {\n\tasync getData(page, pageSize, sortOrder, searchString) {\n\t\tconst token = await authService.getAccessToken();\n\t\tconst offset = (page - 1) * pageSize;\n\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\n\t\tlet url = \"pathwork?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\n\t\tif (searchString !== \"\")\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\n\t\t\t\t\twindow.location.href =\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync delete(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('pathwork/' + entityId, {\n\t\t\t\tmethod: 'DELETE',\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync get(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('pathwork/' + entityId, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync add(entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('pathwork', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\n\t}\n\n\tasync update(id, entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('pathwork/' + id, {\n\t\t\t\tmethod: 'PUT',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync selectlist(search, page, offset) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('pathwork/selectlist?search=' + search + '&page=' + page + '&offset=0', {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic get instance() { return pathWorkService; } // TODO: Check singleton/lifetime\n}\n\nconst pathWorkService = new PathWorkService();\n\nexport default pathWorkService;","import React, { Component } from 'react';\r\nimport Select, { components } from 'react-select';\r\nexport const VolunteerGroupOption = props => {\r\n return (\r\n
\r\n {props.label}\r\n
\r\n );\r\n};\r\n\r\nexport const VolunteerGroupValueContainer = ({ children, ...props }) => {\r\n console.log(props);\r\n console.log(props.getValue());\r\n /*{props.label}{children}*/\r\n if (props.hasValue) {\r\n return (\r\n
{props.getValue()[0].label}
\r\n );\r\n }\r\n else {\r\n return (\r\n {children}\r\n );\r\n }\r\n};","import React, { Component } from 'react';\r\nimport workProgramService from './WorkProgramService';\r\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\r\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { AsyncPaginate } from 'react-select-async-paginate';\r\nimport userService from '../users/UserService';\r\nimport pathService from '../paths/PathService';\r\nimport pathStateService from '../pathstates/PathStateService';\r\nimport authService from '../api-authorization/AuthorizeService'\r\nimport pathWorkService from '../pathworks/PathWorkService';\r\nimport volunteerGroupService from '../volunteergroups/VolunteerGroupService';\r\nimport { VolunteerGroupOption, VolunteerGroupValueContainer } from '../volunteergroups/VolunteerGroupSelect'\r\n\r\nclass WorkProgramAddPlain extends Component {\r\n\r\n\tconstructor(props) {\r\n super(props);\r\n this.state = {\r\n leadervalue: null,\r\n goingvalue: [],\r\n pathstatevalue: null,\r\n pathvalue: null,\r\n workrequiredvalue: null,\r\n volunteergroupvalue: null,\r\n\r\n isAuthenticated: false,\r\n role: null,\r\n user: null,\r\n firstname: null,\r\n }\r\n\t}\r\n\r\n componentDidMount() {\r\n this.populateUserState();\r\n\t}\r\n async populateUserState() {\r\n const [isAuthenticated, user] = await Promise.all([\r\n authService.isAuthenticated(),\r\n authService.getUser(),\r\n ]);\r\n if (user) {\r\n this.setState({ leadervalue: { \"label\": user.firstname + \" \" + user.surname, \"value\": user.sub } })\r\n }\r\n this.setState({\r\n isAuthenticated,\r\n role: user && user.role,\r\n user: user,\r\n firstname: user && user.firstname\r\n });\r\n }\r\n\thandleClickCancel = () => {\r\n\t\tconst { history } = this.props;\r\n\r\n\t\t//history.push('/workprograms');\r\n history.goBack();\r\n\t}\r\n\r\n handleLeaderSelectChange(e) {\r\n this.setState({ leadervalue: { value: e.value, label: e.label } });\r\n }\r\n\r\n handleGoingSelectChange(e) {\r\n this.setState({ goingvalue: e });\r\n }\r\n\r\n handlePathSelectChange(e) {\r\n this.setState({ pathvalue:{ value: e.value, label: e.label } });\r\n }\r\n\r\n handlePathStateSelectChange(e) {\r\n this.setState({ pathstatevalue: { value: e.value, label: e.label } });\r\n }\r\n\r\n handleWorkRequiredSelectChange(e) {\r\n this.setState({ workrequiredvalue: { value: e.value, label: e.label } });\r\n }\r\n handleVolunteerGroupSelectChange(e) {\r\n this.setState({ volunteergroupvalue: { value: e.value, label: e.label, colour: e.colour }});\r\n }\r\n \r\n\r\n\thandleValidSubmit = (event, values) => {\r\n\t\tconst { history } = this.props;\r\n\r\n let postvalues = values;\r\n\r\n /*\r\n * goingvalue\r\n * leadervalue\r\n * workrequiredvalue\r\n * pathvalue\r\n * pathstatevalue\r\n * volunteergroupvalue\r\n */\r\n let going = [];\r\n\r\n for (let person of this.state.goingvalue) {\r\n going.push({ id: person.value });\r\n }\r\n postvalues[\"going\"] = going;\r\n\r\n if (this.state.leadervalue) {\r\n postvalues[\"leader\"] = { id: this.state.leadervalue.value };\r\n }\r\n if (this.state.pathvalue) {\r\n postvalues[\"path\"] = { id: this.state.pathvalue.value };\r\n }\r\n if (this.state.pathstatevalue) {\r\n postvalues[\"pathState\"] = { id: this.state.pathstatevalue.value };\r\n }\r\n if (this.state.workrequiredvalue) {\r\n postvalues[\"workRequired\"] = { id: this.state.workrequiredvalue.value };\r\n }\r\n if (this.state.volunteergroupvalue) {\r\n postvalues[\"volunteerGroup\"] = { id: this.state.volunteergroupvalue.value };\r\n }\r\n //debugger;\r\n if (postvalues.timeSpentHours == \"\" || isNaN(postvalues.timeSpentHours)) {\r\n postvalues.timeSpentHours = 0;\r\n }\r\n\t\t(async () => {\r\n\t\t\tawait workProgramService.add(postvalues);\r\n\t\t\t//history.push('/workprograms');\r\n history.goBack();\r\n\t\t})();\r\n\t}\r\n\r\n\trender() {\r\n\t\tconst { t, i18n } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n \r\n \r\n \r\n {\r\n const responseJSON = await userService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleLeaderSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\r\n\r\n {/* ({*/}\r\n {/* options: response.result,*/}\r\n {/* hasMore: response.hasmore*/}\r\n {/* })}*/}\r\n {/* //options={this.state.selectOptions}*/}\r\n {/* onChange={this.handleLeaderSelectChange.bind(this)}*/}\r\n {/*/>*/}\r\n \r\n \r\n \r\n {\r\n const responseJSON = await volunteerGroupService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleVolunteerGroupSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n components={{\r\n Option: VolunteerGroupOption,\r\n ValueContainer: VolunteerGroupValueContainer\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n const responseJSON = await userService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleGoingSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n isMulti='true'\r\n />\r\n \r\n\r\n \r\n \r\n {\r\n const responseJSON = await pathService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handlePathSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n {\r\n const responseJSON = await pathWorkService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleWorkRequiredSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\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 responseJSON = await pathStateService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handlePathStateSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\r\n\t\t);\r\n\t}\r\n}\r\n\r\nexport const WorkProgramAdd = withTranslation()(WorkProgramAddPlain);\r\n","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport workProgramService from './WorkProgramService';\r\nimport { Button } from 'reactstrap';\r\n\r\nclass WorkProgramDeletePlain extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = { entities: [], loading: true };\r\n\r\n\t\tconst { match } = this.props;\r\n\t\tthis.id = match.params.id;\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\r\n\t}\r\n\r\n\thandleClickOk = () => {\r\n\t\tconst { history } = this.props;\r\n\r\n\t\t(async () => {\r\n\t\t\tawait workProgramService.delete(this.id);\r\n\t\t\t//history.push('/workprograms');\r\n\t\t\thistory.goBack();\r\n\t\t})();\r\n\r\n\t\t//usersService.deleteUser(this.userId)\r\n\t\t//\t.then(() => history.push('/users'));\r\n\t}\r\n\r\n\thandleClickCancel = () => {\r\n\t\tconst { history } = this.props;\r\n\t\t//history.push('/workprograms');\r\n\t\thistory.goBack();\r\n\t\t\r\n\t}\r\n\r\n\trender() {\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t

Are you sure you want to cancel and delete this work program ?

\r\n\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n}\r\nexport const WorkProgramDelete = withRouter(WorkProgramDeletePlain);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport workProgramService from './WorkProgramService';\r\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\r\nimport { FormGroup, Form, Label, Input, Button, Badge } from 'reactstrap';\r\nimport { withTranslation } from 'react-i18next';\r\nimport Select, { components } from 'react-select';\r\nimport { SelectFetch } from 'react-select-fetch';\r\nimport { AsyncPaginate } from 'react-select-async-paginate';\r\nimport userService from '../users/UserService';\r\nimport pathService from '../paths/PathService';\r\nimport pathStateService from '../pathstates/PathStateService';\r\nimport pathWorkService from '../pathworks/PathWorkService';\r\nimport volunteerGroupService from '../volunteergroups/VolunteerGroupService';\r\nimport { VolunteerGroupOption, VolunteerGroupValueContainer } from '../volunteergroups/VolunteerGroupSelect'\r\nimport GridrefSelector from '../pathmap/GridrefSelector';\r\n\r\nclass WorkProgramEditPlain extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = { entity: null, loading: true };\r\n\r\n const { match } = this.props;\r\n this.id = match.params.id;\r\n }\r\n\r\n handleLeaderSelectChange(e) {\r\n this.state.entity[\"leadervalue\"] = { value: e.value, label: e.label };\r\n this.setState({ entity: this.state.entity });\r\n }\r\n\r\n handleGoingSelectChange(e) {\r\n this.state.entity[\"goingvalue\"] = e;\r\n this.setState({ entity: this.state.entity });\r\n }\r\n\r\n handlePathSelectChange(e) {\r\n this.state.entity[\"pathvalue\"] = { value: e.value, label: e.label };\r\n this.setState({ entity: this.state.entity });\r\n }\r\n handlePathMapChange = (path) => {\r\n this.state.entity[\"pathvalue\"] = { value: path.id, label: path.name };\r\n this.setState({ entity: this.state.entity });\r\n }\r\n handlePathStateSelectChange(e) {\r\n this.state.entity[\"pathstatevalue\"] = { value: e.value, label: e.label };\r\n this.setState({ entity: this.state.entity });\r\n }\r\n\r\n handleWorkRequiredSelectChange(e) {\r\n this.state.entity[\"workrequiredvalue\"] = { value: e.value, label: e.label };\r\n this.setState({ entity: this.state.entity });\r\n }\r\n handleVolunteerGroupSelectChange(e) {\r\n this.state.entity[\"volunteergroupvalue\"] = { value: e.value, label: e.label, colour: e.colour };\r\n this.setState({ entity: this.state.entity });\r\n }\r\n\r\n async getSelectOptions() {\r\n\r\n }\r\n\r\n componentDidMount() {\r\n this.retrieveFormData();\r\n }\r\n\r\n handleInputChange = (event) => {\r\n const target = event.target;\r\n const value = target.type === 'checkbox' ? target.checked : target.value;\r\n const name = target.name;\r\n\r\n this.state.entity[name] = value;\r\n this.setState({ entity: this.state.entity });\r\n }\r\n\r\n handleClickCancel = () => {\r\n const { history } = this.props;\r\n\r\n //history.push('/workprograms');\r\n history.goBack();\r\n }\r\n\r\n handleGridrefChange = (e) => {\r\n this.state.entity[\"gridref\"] = e.target.value;\r\n this.setState({ entity: this.state.entity });\r\n }\r\n handleGridrefMapChange = (newgridref) => {\r\n this.state.entity[\"gridref\"] = newgridref;\r\n this.setState({ entity: this.state.entity });\r\n }\r\n handleValidSubmit = (event, values) => {\r\n const { history } = this.props;\r\n let postvalues = values;\r\n\r\n /*\r\n * goingvalue\r\n * leadervalue\r\n * workrequiredvalue\r\n * pathvalue\r\n * pathstatevalue\r\n * volunteergroupvalue\r\n */\r\n let going = [];\r\n for (let person of this.state.entity[\"goingvalue\"]) {\r\n going.push({ id: person.value });\r\n }\r\n postvalues[\"going\"] = going;\r\n\r\n if (this.state.entity[\"leadervalue\"]) {\r\n postvalues[\"leader\"] = { id: this.state.entity[\"leadervalue\"].value };\r\n }\r\n if (this.state.entity[\"pathvalue\"]) {\r\n postvalues[\"path\"] = { id: this.state.entity[\"pathvalue\"].value };\r\n }\r\n if (this.state.entity[\"pathstatevalue\"]) {\r\n postvalues[\"pathState\"] = { id: this.state.entity[\"pathstatevalue\"].value };\r\n }\r\n if (this.state.entity[\"workrequiredvalue\"]) {\r\n postvalues[\"workRequired\"] = { id: this.state.entity[\"workrequiredvalue\"].value };\r\n }\r\n if (this.state.entity[\"volunteergroupvalue\"]) {\r\n postvalues[\"volunteerGroup\"] = { id: this.state.entity[\"volunteergroupvalue\"].value };\r\n }\r\n if (this.state.entity[\"gridref\"]) {\r\n postvalues[\"gridref\"] = this.state.entity[\"gridref\"];\r\n }\r\n if (postvalues.timeSpenHours == \"\" || isNaN(postvalues.timeSpenHours)) {\r\n postvalues.timeSpenHours = 0;\r\n } else {\r\n postvalues.timeSpenHours = Math.ceil(postvalues.timeSpenHours);\r\n }\r\n (async () => {\r\n await workProgramService.update(this.id, postvalues);\r\n //history.push('/workprograms');\r\n history.goBack();\r\n })();\r\n }\r\n\r\n renderForm(entity) {\r\n const { t, i18n } = this.props;\r\n return (\r\n \r\n \r\n \r\n \r\n \r\n \r\n {\r\n const responseJSON = await userService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleLeaderSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\r\n\r\n {/* ({*/}\r\n {/* options: response.result,*/}\r\n {/* hasMore: response.hasmore*/}\r\n {/* })}*/}\r\n {/* //options={this.state.selectOptions}*/}\r\n {/* onChange={this.handleLeaderSelectChange.bind(this)}*/}\r\n {/*/>*/}\r\n \r\n \r\n \r\n {\r\n const responseJSON = await volunteerGroupService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleVolunteerGroupSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n components={{\r\n Option: VolunteerGroupOption,\r\n ValueContainer: VolunteerGroupValueContainer\r\n }}\r\n />\r\n \r\n \r\n \r\n {\r\n const responseJSON = await userService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleGoingSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n isMulti='true'\r\n />\r\n \r\n\r\n \r\n \r\n {\r\n const responseJSON = await pathService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handlePathSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n {\r\n const responseJSON = await pathWorkService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handleWorkRequiredSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n\r\n {/**/}\r\n \r\n \r\n this.handleGridrefChange(e) } />\r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n {\r\n const responseJSON = await pathStateService.selectlist(search, page, 0);\r\n return {\r\n options: responseJSON.result,\r\n hasMore: responseJSON.hasmore,\r\n additional: {\r\n page: page + 1,\r\n },\r\n };\r\n }}\r\n onChange={this.handlePathStateSelectChange.bind(this)}\r\n additional={\r\n { page: 1, }\r\n }\r\n />\r\n \r\n\r\n \r\n \r\n \r\n  \r\n \r\n \r\n \r\n );\r\n }\r\n\r\n render() {\r\n let contents = this.state.loading\r\n ?

Loading...

\r\n : this.renderForm(this.state.entity);\r\n\r\n return (\r\n
\r\n

Work Program

\r\n {contents}\r\n
\r\n );\r\n }\r\n\r\n async retrieveFormData() {\r\n const data = await workProgramService.get(this.id);\r\n data.start = data.start != null && data.start.length > 0 ? data.start.split('T')[0] : \"\";\r\n data.end = data.end != null && data.end.length > 0 ? data.end.split('T')[0] : \"\";\r\n data.leadervalue = data.leader == null ? null : { \"label\": data.leader.firstname + \" \" + data.leader.surname, \"value\": data.leader.id }\r\n\r\n let going = [];\r\n for (let person of data.going) {\r\n going.push({ value: person.id, label: person.firstname + \" \" + person.surname });\r\n }\r\n data.goingvalue = going;\r\n if (data.pathState) {\r\n data.pathstatevalue = { label: data.pathState.state, value: data.pathState.id };\r\n }\r\n if (data.workRequired) {\r\n data.workrequiredvalue = { label: data.workRequired.state, value: data.workRequired.id };\r\n }\r\n if (data.path) {\r\n data.pathvalue = { label: data.path.name, value: data.path.id };\r\n }\r\n if (data.volunteerGroup) {\r\n data.volunteergroupvalue = { label: data.volunteerGroup.name, value: data.volunteerGroup.id, colour: data.volunteerGroup.colour };\r\n }\r\n this.setState({ entity: data, loading: false });\r\n }\r\n}\r\n\r\nexport const WorkProgramEdit = withTranslation()(withRouter(WorkProgramEditPlain));","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\nimport { WorkProgramCalendar } from '../workprogramcalendar/WorkProgramCalendar';\nimport { WorkProgramList } from './WorkProgramList';\nimport { WorkProgramAdd } from './WorkProgramAdd';\nimport { WorkProgramDelete } from './WorkProgramDelete';\nimport { WorkProgramEdit } from './WorkProgramEdit';\n\nexport function WorkProgramRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport volunteerGroupService from './VolunteerGroupService';\nimport { Pager } from '../Pager';\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\nimport { FaKey,FaSortAlphaDown,FaSortAlphaUp,FaEdit,FaTrash } from 'react-icons/fa';\n\nexport class VolunteerGroupList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entities: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"Fname\", searchString: \"\", loading: true };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.populateData();\n\t}\n\n\thandlePageChange = (page) => {\n\t\tthis.setState({ page: page }, () => this.populateData() );\n\t}\n\n\thandleHeaderClick = (event, header) => {\n\t\tevent.preventDefault();\n\n\t\tlet newSortOrder = this.state.sortOrder;\n\n\t\tswitch (header) {\n\t\t\tcase 'Name': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'Name' ? 'Name_desc' : 'Name';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'Colour': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'Colour' ? 'Colour_desc' : 'Colour';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateData());\n\t\treturn false;\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.setState({ [name]: value });\n\t}\n\n\thandleSearchFormSubmit = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page: 1 }, () => this.populateData());\n\t\t//this.populateData();\n\t}\n\n\thandleSearchFormReset = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page:1, searchString: \"\" }, () => this.populateData());\n\t}\n\n\trenderTable() {\n\t\tconst { entities, total, sortOrder } = this.state;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{entities.map(entity =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'Name')} >\n\t\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t\t{sortOrder == 'Name' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'Name_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'Colour')} >\n\t\t\t\t\t\t\t\t\tColour \n\t\t\t\t\t\t\t\t\t{sortOrder == 'Colour' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'Colour_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{entity.name} {entity.colour}
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderTable();\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Volunteer Groups

\n\t\t\t\tAdd Volunteer Group\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync populateData() {\n\t\ttry {\n\n\t\t\tconst data = await volunteerGroupService.getData(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\n\t\t\tthis.setState({ total: data.total, entities: data.entities, loading: false });\n\t\t}\n\t\tcatch (error) {\n\t\t\t// Handle error\n\t\t}\n\t}\n}","import React, { Component } from 'react';\nimport volunteerGroupService from './VolunteerGroupService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass VolunteerGroupAddPlain extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\tcolour: null\r\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/volunteergroups');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet postvalues = values;\n\t\tpostvalues.colour = this.state.colour;\n\t\t(async () => {\n\t\t\tawait volunteerGroupService.add(postvalues);\n\t\t\thistory.push('/volunteergroups');\n\t\t})();\n\t}\n\thandleColourChange = (colour) => {\n\t\tthis.state.colour = colour.hex;\r\n\t\tthis.setState({ entity: this.state.colour });\r\n\t}\n\thandleColourTextChange = (value) => {\n\t\tconsole.log(value.target.value);\r\n\t\tthis.state.colour = value.target.value;\r\n\t\tthis.setState({ entity: this.state.colour });\r\n\t}\n\trender() {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\n\nexport const VolunteerGroupAdd = withTranslation()(VolunteerGroupAddPlain);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport volunteerGroupService from './VolunteerGroupService';\nimport { Button } from 'reactstrap';\n\nclass VolunteerGroupDeletePlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\n\t}\n\n\thandleClickOk = () => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait volunteerGroupService.delete(this.id);\n\t\t\thistory.push('/volunteergroups');\n\t\t})();\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/volunteergroups');\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Are you sure you want to delete volunteer group ?

\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\nexport const VolunteerGroupDelete = withRouter(VolunteerGroupDeletePlain);","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router';\r\nimport volunteerGroupService from './VolunteerGroupService';\r\nimport userService from '../users/UserService';\r\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\r\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\r\nimport { withTranslation } from 'react-i18next';\r\nimport { HuePicker, SketchPicker } from 'react-color';\r\nimport { AsyncPaginate } from 'react-select-async-paginate';\r\n\r\nclass VolunteerGroupEditPlain extends Component {\r\n\tconstructor(props) {\r\n\t\tsuper(props);\r\n\t\tthis.state = { entity: null, loading: true };\r\n\r\n\t\tconst { match } = this.props;\r\n\t\tthis.id = match.params.id;\r\n\t}\r\n\r\n\tcomponentDidMount() {\r\n\t\tthis.retrieveFormData();\r\n\t}\r\n\r\n\thandleInputChange = (event) => {\r\n\t\tconst target = event.target;\r\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\r\n\t\tconst name = target.name;\r\n\r\n\t\tthis.state.entity[name] = value;\r\n\t\tthis.setState({ entity: this.state.entity});\r\n\t}\r\n\r\n\thandleVolunteersSelectChange(e) {\r\n\t\tthis.state.entity[\"volunteersvalue\"] = e;\r\n\t\tthis.setState({ entity: this.state.entity });\r\n\t}\r\n\r\n\thandleClickCancel = () => {\r\n\t\tconst { history } = this.props;\r\n\r\n\t\thistory.push('/volunteergroups');\r\n\t}\r\n\r\n\thandleValidSubmit = (event, values) => {\r\n\t\tconst { history } = this.props;\r\n\t\tlet processedValues = values;\r\n\t\tprocessedValues.colour = this.state.entity.colour;\r\n\t\tlet volunteers = [];\r\n\t\tfor (let person of this.state.entity[\"volunteersvalue\"]) {\r\n\t\t\tvolunteers.push({ id: person.value });\r\n\t\t}\r\n\t\tprocessedValues[\"volunteers\"] = volunteers;\r\n\t\t(async () => {\r\n\t\t\tawait volunteerGroupService.update(this.id, processedValues);\r\n\t\t\thistory.push('/volunteergroups');\r\n\t\t})();\r\n\t}\r\n\thandleColourChange = (colour) => {\r\n\t\tthis.state.entity.colour = colour.hex;\r\n\t\tthis.setState({ entity: this.state.entity });\r\n\t}\r\n\thandleColourTextChange = (value) => {\r\n\t\tconsole.log(value.target.value);\r\n\t\tthis.state.entity.colour = value.target.value;\r\n\t\tthis.setState({ entity: this.state.entity });\r\n }\r\n\r\n\trenderForm(entity) {\r\n\t\tconst { t, i18n } = this.props;\r\n\t\treturn (\r\n\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t\t\t\r\n\t\t\t\t\t {\r\n\t\t\t\t\t\t\tconst responseJSON = await userService.selectlist(search, page, 0);\r\n\t\t\t\t\t\t\treturn {\r\n\t\t\t\t\t\t\t\toptions: responseJSON.result,\r\n\t\t\t\t\t\t\t\thasMore: responseJSON.hasmore,\r\n\t\t\t\t\t\t\t\tadditional: {\r\n\t\t\t\t\t\t\t\t\tpage: page + 1,\r\n\t\t\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\t};\r\n\t\t\t\t\t\t}}\r\n\t\t\t\t\t\tonChange={this.handleVolunteersSelectChange.bind(this)}\r\n\t\t\t\t\t\tadditional={\r\n\t\t\t\t\t\t\t{ page: 1, }\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t\tisMulti='true'\r\n\t\t\t\t\t/>\r\n\t\t\t\t\r\n\t\t\t\t

\r\n\t\t\t\t\r\n\t\t\t\t\t \r\n\t\t\t\t\t\r\n\t\t\t\t\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\trender() {\r\n\t\tlet contents = this.state.loading\r\n\t\t\t?

Loading...

\r\n\t\t\t: this.renderForm(this.state.entity);\r\n\r\n\t\treturn (\r\n\t\t\t
\r\n\t\t\t\t

Volunteer Group

\r\n\t\t\t\t{contents}\r\n\t\t\t
\r\n\t\t);\r\n\t}\r\n\r\n\tasync retrieveFormData() {\r\n\t\tconst data = await volunteerGroupService.get(this.id);\r\n\t\tlet volunteers = [];\r\n\t\tfor (let person of data.volunteers) {\r\n\t\t\tvolunteers.push({ value: person.id, label: person.firstname + \" \" + person.surname });\r\n\t\t}\r\n\t\tdata.volunteersvalue = volunteers;\r\n\t\tthis.setState({ entity: data, loading: false });\r\n\t}\r\n}\r\n\r\nexport const VolunteerGroupEdit = withTranslation()(withRouter(VolunteerGroupEditPlain));","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\n\nimport { VolunteerGroupList } from './VolunteerGroupList';\nimport { VolunteerGroupAdd } from './VolunteerGroupAdd';\nimport { VolunteerGroupDelete } from './VolunteerGroupDelete';\nimport { VolunteerGroupEdit } from './VolunteerGroupEdit';\n\nexport function VolunteerGroupRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import authService from '../api-authorization/AuthorizeService';\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\n\nexport class VolunteerSectionService {\n\tasync getData(page, pageSize, sortOrder, searchString) {\n\t\tconst token = await authService.getAccessToken();\n\t\tconst offset = (page - 1) * pageSize;\n\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\n\t\tlet url = \"volunteersection?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\n\t\tif (searchString !== \"\")\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\n\t\t\t\t\twindow.location.href =\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync delete(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('volunteersection/' + entityId, {\n\t\t\t\tmethod: 'DELETE',\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync get(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('volunteersection/' + entityId, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync add(entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('volunteersection', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\n\t}\n\n\tasync update(id, entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('volunteersection/' + id, {\n\t\t\t\tmethod: 'PUT',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync selectlist(search, page, offset) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('volunteersection/selectlist?search=' + search + '&page=' + page + '&offset=0', {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic get instance() { return volunteerSectionService; } // TODO: Check singleton/lifetime\n}\n\nconst volunteerSectionService = new VolunteerSectionService();\n\nexport default volunteerSectionService;","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport volunteerSectionService from './VolunteerSectionService';\nimport { Pager } from '../Pager';\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\nimport { FaKey,FaSortAlphaDown,FaSortAlphaUp,FaEdit,FaTrash } from 'react-icons/fa';\n\nexport class VolunteerSectionList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entities: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"Name\", searchString: \"\", loading: true };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.populateData();\n\t}\n\n\thandlePageChange = (page) => {\n\t\tthis.setState({ page: page }, () => this.populateData() );\n\t}\n\n\thandleHeaderClick = (event, header) => {\n\t\tevent.preventDefault();\n\n\t\tlet newSortOrder = this.state.sortOrder;\n\n\t\tswitch (header) {\n\t\t\tcase 'Name': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'Name' ? 'Name_desc' : 'Name';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateData());\n\t\treturn false;\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.setState({ [name]: value });\n\t}\n\n\thandleSearchFormSubmit = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page: 1 }, () => this.populateData());\n\t\t//this.populateData();\n\t}\n\n\thandleSearchFormReset = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page:1, searchString: \"\" }, () => this.populateData());\n\t}\n\n\trenderTable() {\n\t\tconst { entities, total, sortOrder } = this.state;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{entities.map(entity =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'Name')} >\n\t\t\t\t\t\t\t\t\tState \n\t\t\t\t\t\t\t\t\t{sortOrder == 'Name' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'Name_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{entity.name}
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderTable();\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Volunteer Sections

\n\t\t\t\tAdd Volunteer Section\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync populateData() {\n\t\ttry {\n\n\t\t\tconst data = await volunteerSectionService.getData(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\n\t\t\tthis.setState({ total: data.total, entities: data.entities, loading: false });\n\t\t}\n\t\tcatch (error) {\n\t\t\t// Handle error\n\t\t}\n\t}\n}","import React, { Component } from 'react';\nimport volunteerSectionService from './VolunteerSectionService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass VolunteerSectionAddPlain extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\t\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/volunteersections');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet postvalues = values;\n\t\t\n\t\t(async () => {\n\t\t\tawait volunteerSectionService.add(postvalues);\n\t\t\thistory.push('/volunteersections');\n\t\t})();\n\t}\n\t\n\trender() {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport const VolunteerSectionAdd = withTranslation()(VolunteerSectionAddPlain);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport volunteerSectionService from './VolunteerSectionService';\nimport { Button } from 'reactstrap';\n\nclass VolunteerSectionDeletePlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\n\t}\n\n\thandleClickOk = () => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait volunteerSectionService.delete(this.id);\n\t\t\thistory.push('/volunteersections');\n\t\t})();\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/volunteersections');\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Are you sure you want to delete volunteer section ?

\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\nexport const VolunteerSectionDelete = withRouter(VolunteerSectionDeletePlain);","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport volunteerSectionService from './VolunteerSectionService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass VolunteerSectionEditPlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entity: null, loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.retrieveFormData();\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.state.entity[name] = value;\n\t\tthis.setState({ entity: this.state.entity});\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/volunteersections');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet processedValues = values;\n\t\t\n\t\t(async () => {\n\t\t\tawait volunteerSectionService.update(this.id, processedValues);\n\t\t\thistory.push('/volunteersections');\n\t\t})();\n\t}\n\n\trenderForm(entity) {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderForm(this.state.entity);\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Volunteer Section

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync retrieveFormData() {\n\t\tconst data = await volunteerSectionService.get(this.id);\n\t\tthis.setState({ entity: data, loading: false });\n\t}\n}\n\nexport const VolunteerSectionEdit = withTranslation()(withRouter(VolunteerSectionEditPlain));","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\n\nimport { VolunteerSectionList } from './VolunteerSectionList';\nimport { VolunteerSectionAdd } from './VolunteerSectionAdd';\nimport { VolunteerSectionDelete } from './VolunteerSectionDelete';\nimport { VolunteerSectionEdit } from './VolunteerSectionEdit';\n\nexport function VolunteerSectionRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport pathService from './PathService';\nimport { Pager } from '../Pager';\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\nimport { FaKey,FaSortAlphaDown,FaSortAlphaUp,FaEdit,FaTrash } from 'react-icons/fa';\n\nexport class PathList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entities: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"State\", searchString: \"\", loading: true };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.populateData();\n\t}\n\n\thandlePageChange = (page) => {\n\t\tthis.setState({ page: page }, () => this.populateData() );\n\t}\n\n\thandleHeaderClick = (event, header) => {\n\t\tevent.preventDefault();\n\n\t\tlet newSortOrder = this.state.sortOrder;\n\n\t\tswitch (header) {\n\t\t\tcase 'State': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'State' ? 'State_desc' : 'State';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateData());\n\t\treturn false;\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.setState({ [name]: value });\n\t}\n\n\thandleSearchFormSubmit = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page: 1 }, () => this.populateData());\n\t\t//this.populateData();\n\t}\n\n\thandleSearchFormReset = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page:1, searchString: \"\" }, () => this.populateData());\n\t}\n\n\trenderTable() {\n\t\tconst { entities, total, sortOrder } = this.state;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{entities.map(entity =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'Name')} >\n\t\t\t\t\t\t\t\t\tState \n\t\t\t\t\t\t\t\t\t{sortOrder == 'Name' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'Name_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\tLength KMSurvey Interval\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{entity.name}{entity.lengthInKilometres}{entity.surveyIntervalMonths}
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderTable();\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Paths

\n\t\t\t\tAdd Path\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync populateData() {\n\t\ttry {\n\n\t\t\tconst data = await pathService.getData(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\n\t\t\tthis.setState({ total: data.total, entities: data.entities, loading: false });\n\t\t}\n\t\tcatch (error) {\n\t\t\t// Handle error\n\t\t}\n\t}\n}","import React, { Component } from 'react';\nimport pathService from './PathService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass PathAddPlain extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\t\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/paths');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet postvalues = values;\n\t\t\n\t\t(async () => {\n\t\t\tawait pathService.add(postvalues);\n\t\t\thistory.push('/paths');\n\t\t})();\n\t}\n\t\n\trender() {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport const PathAdd = withTranslation()(PathAddPlain);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport pathService from './PathService';\nimport { Button } from 'reactstrap';\n\nclass PathDeletePlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\n\t}\n\n\thandleClickOk = () => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait pathService.delete(this.id);\n\t\t\thistory.push('/paths');\n\t\t})();\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/paths');\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Are you sure you want to delete path ?

\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\nexport const PathDelete = withRouter(PathDeletePlain);","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport pathService from './PathService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass PathEditPlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entity: null, loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.retrieveFormData();\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.state.entity[name] = value;\n\t\tthis.setState({ entity: this.state.entity});\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/paths');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet processedValues = values;\n\t\t\n\t\t(async () => {\n\t\t\tawait pathService.update(this.id, processedValues);\n\t\t\thistory.push('/paths');\n\t\t})();\n\t}\n\t\n\n\trenderForm(entity) {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderForm(this.state.entity);\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Path State

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync retrieveFormData() {\n\t\tconst data = await pathService.get(this.id);\n\t\tthis.setState({ entity: data, loading: false });\n\t}\n}\n\nexport const PathEdit = withTranslation()(withRouter(PathEditPlain));","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\n\nimport { PathList } from './PathList';\nimport { PathAdd } from './PathAdd';\nimport { PathDelete } from './PathDelete';\nimport { PathEdit } from './PathEdit';\n\nexport function PathRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport pathWorkService from './PathWorkService';\nimport { Pager } from '../Pager';\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\nimport { FaKey,FaSortAlphaDown,FaSortAlphaUp,FaEdit,FaTrash } from 'react-icons/fa';\n\nexport class PathWorkList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entities: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"Fname\", searchString: \"\", loading: true };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.populateData();\n\t}\n\n\thandlePageChange = (page) => {\n\t\tthis.setState({ page: page }, () => this.populateData() );\n\t}\n\n\thandleHeaderClick = (event, header) => {\n\t\tevent.preventDefault();\n\n\t\tlet newSortOrder = this.state.sortOrder;\n\n\t\tswitch (header) {\n\t\t\tcase 'Name': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'State' ? 'State_desc' : 'State';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateData());\n\t\treturn false;\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.setState({ [name]: value });\n\t}\n\n\thandleSearchFormSubmit = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page: 1 }, () => this.populateData());\n\t\t//this.populateData();\n\t}\n\n\thandleSearchFormReset = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page:1, searchString: \"\" }, () => this.populateData());\n\t}\n\n\trenderTable() {\n\t\tconst { entities, total, sortOrder } = this.state;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{entities.map(entity =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'State')} >\n\t\t\t\t\t\t\t\t\tName \n\t\t\t\t\t\t\t\t\t{sortOrder == 'State' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'State_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{entity.state}
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderTable();\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Path Work

\n\t\t\t\tAdd Path Work\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync populateData() {\n\t\ttry {\n\n\t\t\tconst data = await pathWorkService.getData(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\n\t\t\tthis.setState({ total: data.total, entities: data.entities, loading: false });\n\t\t}\n\t\tcatch (error) {\n\t\t\t// Handle error\n\t\t}\n\t}\n}","import React, { Component } from 'react';\nimport pathWorkService from './PathWorkService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass PathWorkAddPlain extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\t\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/pathworks');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet postvalues = values;\n\t\t(async () => {\n\t\t\tawait pathWorkService.add(postvalues);\n\t\t\thistory.push('/pathworks');\n\t\t})();\n\t}\n\t\n\trender() {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport const PathWorkAdd = withTranslation()(PathWorkAddPlain);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport pathWorkService from './PathWorkService';\nimport { Button } from 'reactstrap';\n\nclass PathWorkDeletePlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\n\t}\n\n\thandleClickOk = () => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait pathWorkService.delete(this.id);\n\t\t\thistory.push('/pathworks');\n\t\t})();\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/pathworks');\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Are you sure you want to delete path work ?

\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\nexport const PathWorkDelete = withRouter(PathWorkDeletePlain);","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport pathWorkService from './PathWorkService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass PathWorkEditPlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entity: null, loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.retrieveFormData();\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.state.entity[name] = value;\n\t\tthis.setState({ entity: this.state.entity});\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/pathworks');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet processedValues = values;\n\n\t\t(async () => {\n\t\t\tawait pathWorkService.update(this.id, processedValues);\n\t\t\thistory.push('/pathworks');\n\t\t})();\n\t}\n\t\n\n\trenderForm(entity) {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderForm(this.state.entity);\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Path Work

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync retrieveFormData() {\n\t\tconst data = await pathWorkService.get(this.id);\n\t\tthis.setState({ entity: data, loading: false });\n\t}\n}\n\nexport const PathWorkEdit = withTranslation()(withRouter(PathWorkEditPlain));","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\n\nimport { PathWorkList } from './PathWorkList';\nimport { PathWorkAdd } from './PathWorkAdd';\nimport { PathWorkDelete } from './PathWorkDelete';\nimport { PathWorkEdit } from './PathWorkEdit';\n\nexport function PathWorkRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport pathStateService from './PathStateService';\nimport { Pager } from '../Pager';\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\nimport { FaKey,FaSortAlphaDown,FaSortAlphaUp,FaEdit,FaTrash } from 'react-icons/fa';\n\nexport class PathStateList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entities: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"State\", searchString: \"\", loading: true };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.populateData();\n\t}\n\n\thandlePageChange = (page) => {\n\t\tthis.setState({ page: page }, () => this.populateData() );\n\t}\n\n\thandleHeaderClick = (event, header) => {\n\t\tevent.preventDefault();\n\n\t\tlet newSortOrder = this.state.sortOrder;\n\n\t\tswitch (header) {\n\t\t\tcase 'State': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'State' ? 'State_desc' : 'State';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateData());\n\t\treturn false;\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.setState({ [name]: value });\n\t}\n\n\thandleSearchFormSubmit = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page: 1 }, () => this.populateData());\n\t\t//this.populateData();\n\t}\n\n\thandleSearchFormReset = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page:1, searchString: \"\" }, () => this.populateData());\n\t}\n\n\trenderTable() {\n\t\tconst { entities, total, sortOrder } = this.state;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{entities.map(entity =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'State')} >\n\t\t\t\t\t\t\t\t\tState \n\t\t\t\t\t\t\t\t\t{sortOrder == 'State' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'State_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{entity.state}
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderTable();\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Path States

\n\t\t\t\tAdd Path State\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync populateData() {\n\t\ttry {\n\n\t\t\tconst data = await pathStateService.getData(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\n\t\t\tthis.setState({ total: data.total, entities: data.entities, loading: false });\n\t\t}\n\t\tcatch (error) {\n\t\t\t// Handle error\n\t\t}\n\t}\n}","import React, { Component } from 'react';\nimport pathStateService from './PathStateService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass PathStateAddPlain extends Component {\n\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = {\n\t\t\t\n\t\t};\n\t}\n\n\tcomponentDidMount() {\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/pathstates');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet postvalues = values;\n\t\t\n\t\t(async () => {\n\t\t\tawait pathStateService.add(postvalues);\n\t\t\thistory.push('/pathstates');\n\t\t})();\n\t}\n\t\n\trender() {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t);\n\t}\n}\n\nexport const PathStateAdd = withTranslation()(PathStateAddPlain);\n","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport pathStateService from './PathStateService';\nimport { Button } from 'reactstrap';\n\nclass PathStateDeletePlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\n\t}\n\n\thandleClickOk = () => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait pathStateService.delete(this.id);\n\t\t\thistory.push('/pathstates');\n\t\t})();\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/pathstates');\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Are you sure you want to delete path state ?

\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\nexport const PathStateDelete = withRouter(PathStateDeletePlain);","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport pathStateService from './PathStateService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\n\nclass PathStateEditPlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entity: null, loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.retrieveFormData();\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.state.entity[name] = value;\n\t\tthis.setState({ entity: this.state.entity});\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/pathstates');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet processedValues = values;\n\t\tprocessedValues.colour = this.state.entity.colour;\n\t\t(async () => {\n\t\t\tawait pathStateService.update(this.id, processedValues);\n\t\t\thistory.push('/pathstates');\n\t\t})();\n\t}\n\thandleColourChange = (colour) => {\n\t\tthis.state.entity.colour = colour.hex;\n\t\tthis.setState({ entity: this.state.entity });\n\t}\n\thandleColourTextChange = (value) => {\n\t\tconsole.log(value.target.value);\n\t\tthis.state.entity.colour = value.target.value;\n\t\tthis.setState({ entity: this.state.entity });\n }\n\n\trenderForm(entity) {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t

\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderForm(this.state.entity);\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Path State

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync retrieveFormData() {\n\t\tconst data = await pathStateService.get(this.id);\n\t\tthis.setState({ entity: data, loading: false });\n\t}\n}\n\nexport const PathStateEdit = withTranslation()(withRouter(PathStateEditPlain));","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\n\nimport { PathStateList } from './PathStateList';\nimport { PathStateAdd } from './PathStateAdd';\nimport { PathStateDelete } from './PathStateDelete';\nimport { PathStateEdit } from './PathStateEdit';\n\nexport function PathStateRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import authService from '../api-authorization/AuthorizeService';\nimport { ApplicationPaths, QueryParameterNames } from '../api-authorization/ApiAuthorizationConstants'\n\nexport class ReportedIssueService {\n\tasync getData(page, pageSize, sortOrder, searchString) {\n\t\tconst token = await authService.getAccessToken();\n\t\tconst offset = (page - 1) * pageSize;\n\n\t\t// Taken from here: https://fetch.spec.whatwg.org/#fetch-api\n\t\tlet url = \"reportedissue?\" + \"offset=\" + offset + \"&limit=\" + pageSize + \"&sortOrder=\" + sortOrder;\n\t\tif (searchString !== \"\")\n\t\t\turl += \"&searchString=\" + encodeURIComponent(searchString);\n\n\t\ttry {\n\t\t\tconst response = await fetch(url, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tif (response.status == 401) { // Refresh access token if it is expired\n\t\t\t\t\twindow.location.href =\n\t\t\t\t\t\t`${ApplicationPaths.Login}?${QueryParameterNames.ReturnUrl}=${encodeURI(window.location.href)}`;\n\t\t\t\t}\n\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync delete(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('reportedissue/' + entityId, {\n\t\t\t\tmethod: 'DELETE',\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync get(entityId) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('reportedissue/' + entityId, {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync add(entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('reportedissue', {\n\t\t\t\tmethod: 'POST',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\n\t}\n\n\tasync update(id, entity) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst headers = { 'content-type': 'application/json' };\n\t\t\tif (token) headers['Authorization'] = `Bearer ${token}`;\n\n\t\t\tconst response = await fetch('reportedissue/' + id, {\n\t\t\t\tmethod: 'PUT',\n\t\t\t\tbody: JSON.stringify(entity),\n\t\t\t\theaders: headers,\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\treturn;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tasync selectlist(search, page, offset) {\n\t\tconst token = await authService.getAccessToken();\n\n\t\ttry {\n\t\t\tconst response = await fetch('reportedissue/selectlist?search=' + search + '&page=' + page + '&offset=0', {\n\t\t\t\theaders: !token ? {} : { 'Authorization': `Bearer ${token}` }\n\t\t\t});\n\n\t\t\tif (response.ok) {\n\t\t\t\tconst jsonData = await response.json();\n\t\t\t\treturn jsonData;\n\t\t\t}\n\t\t\telse {\n\t\t\t\tthrow new Error(\"HTTP error! Code: \" + response.status);\n\t\t\t}\n\t\t}\n\t\tcatch (error) {\n\t\t\tconsole.log(error);\n\t\t\tthrow error;\n\t\t}\n\t}\n\n\tstatic get instance() { return reportedIssueService; } // TODO: Check singleton/lifetime\n}\n\nconst reportedIssueService = new ReportedIssueService();\n\nexport default reportedIssueService;","import React, { Component } from 'react';\nimport { Link } from 'react-router-dom';\nimport reportedIssueService from './ReportedIssueService';\nimport { Pager } from '../Pager';\nimport { FormGroup, Form, Input, Button } from 'reactstrap';\nimport { FaKey,FaSortAlphaDown,FaSortAlphaUp,FaEdit,FaTrash } from 'react-icons/fa';\n\nexport class ReportedIssueList extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entities: [], page: 1, pageSize: 10, maxPages: 5, sortOrder: \"Fname\", searchString: \"\", loading: true };\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.populateData();\n\t}\n\n\thandlePageChange = (page) => {\n\t\tthis.setState({ page: page }, () => this.populateData() );\n\t}\n\n\thandleHeaderClick = (event, header) => {\n\t\tevent.preventDefault();\n\n\t\tlet newSortOrder = this.state.sortOrder;\n\n\t\tswitch (header) {\n\t\t\tcase 'createdon': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'createdon' ? 'createdon_desc' : 'createdon';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tcase 'createdon': {\n\t\t\t\tnewSortOrder = this.state.sortOrder === 'path' ? 'path_desc' : 'path';\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\tthis.setState({ page: 1, sortOrder: newSortOrder }, () => this.populateData());\n\t\treturn false;\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.setState({ [name]: value });\n\t}\n\n\thandleSearchFormSubmit = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page: 1 }, () => this.populateData());\n\t\t//this.populateData();\n\t}\n\n\thandleSearchFormReset = (event) => {\n\t\tevent.preventDefault();\n\t\tthis.setState({ page:1, searchString: \"\" }, () => this.populateData());\n\t}\n\n\trenderTable() {\n\t\tconst { entities, total, sortOrder } = this.state;\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{entities.map(entity =>\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t)}\n\t\t\t\t\t\n\t\t\t\t
\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'createdon')} >\n\t\t\t\t\t\t\t\t\tDate \n\t\t\t\t\t\t\t\t\t{sortOrder == 'createdon' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'createdon_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t this.handleHeaderClick(e, 'path')} >\n\t\t\t\t\t\t\t\t\tPath \n\t\t\t\t\t\t\t\t\t{sortOrder == 'path' && }\n\t\t\t\t\t\t\t\t\t{sortOrder == 'path_desc' && }\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t
{new Date(entity.createdOn.replace(\"T\", \" \")).toLocaleString()}{entity.path ? entity.path.name : ''}
\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderTable();\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Reported Issues

\n\t\t\t\t
\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync populateData() {\n\t\ttry {\n\n\t\t\tconst data = await reportedIssueService.getData(this.state.page, this.state.pageSize, this.state.sortOrder, this.state.searchString);\n\t\t\tthis.setState({ total: data.total, entities: data.entities, loading: false });\n\t\t}\n\t\tcatch (error) {\n\t\t\t// Handle error\n\t\t}\n\t}\n}","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport reportedIssueService from './ReportedIssueService';\nimport { Button } from 'reactstrap';\n\nclass ReportedIssueDeletePlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { users: [], loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\n\t}\n\n\thandleClickOk = () => {\n\t\tconst { history } = this.props;\n\n\t\t(async () => {\n\t\t\tawait reportedIssueService.delete(this.id);\n\t\t\thistory.push('/reportedissues');\n\t\t})();\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/reportedissues');\n\t}\n\n\trender() {\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Are you sure you want to delete issue ?

\n\n\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n}\nexport const ReportedIssueDelete = withRouter(ReportedIssueDeletePlain);","import React, { Component } from 'react';\nimport { withRouter } from 'react-router';\nimport reportedIssueService from './ReportedIssueService';\nimport { AvForm, AvField } from 'availity-reactstrap-validation';\nimport { FormGroup, Form, Label, Input, Button, Table, CardImg } from 'reactstrap';\nimport { withTranslation } from 'react-i18next';\nimport { HuePicker, SketchPicker } from 'react-color';\nimport GridrefSelector from '../pathmap/GridrefSelector';\n\nclass ReportedIssueEditPlain extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\tthis.state = { entity: null, loading: true };\n\n\t\tconst { match } = this.props;\n\t\tthis.id = match.params.id;\n\t}\n\n\tcomponentDidMount() {\n\t\tthis.retrieveFormData();\n\t}\n\n\thandleInputChange = (event) => {\n\t\tconst target = event.target;\n\t\tconst value = target.type === 'checkbox' ? target.checked : target.value;\n\t\tconst name = target.name;\n\n\t\tthis.state.entity[name] = value;\n\t\tthis.setState({ entity: this.state.entity});\n\t}\n\n\thandleClickCancel = () => {\n\t\tconst { history } = this.props;\n\n\t\thistory.push('/reportedissues');\n\t}\n\n\thandleValidSubmit = (event, values) => {\n\t\tconst { history } = this.props;\n\t\tlet processedValues = values;\n\n\t\t(async () => {\n\t\t\tawait reportedIssueService.update(this.id, processedValues);\n\t\t\thistory.push('/reportedissues');\n\t\t})();\n\t}\n\t\n\n\trenderForm(entity) {\n\t\tconst { t, i18n } = this.props;\n\t\treturn (\n\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t{this.state.entity.path ? (\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t{this.state.entity.photo ? (\n\t\t\t\t\t\t\n\t\t\t\t\t\t) : null}\n\t\t\t\t\t\n\t\t\t\t
Path{this.state.entity.path.name}
Gridref{this.state.entity.gridref}
Latitude{this.state.entity.latitude.toFixed(5)}
Longitude{this.state.entity.longitude.toFixed(5)}
Comment{this.state.entity.comment}
Email{this.state.entity.email}
\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t
\n\t\t\t\t\n\t\t\t\t\t \n\t\t\t\t\t\n\t\t\t\t\n\t\t\t
\n\t\t);\n\t}\n\n\trender() {\n\t\tlet contents = this.state.loading\n\t\t\t?

Loading...

\n\t\t\t: this.renderForm(this.state.entity);\n\n\t\treturn (\n\t\t\t
\n\t\t\t\t

Reported Issue

\n\t\t\t\t{contents}\n\t\t\t
\n\t\t);\n\t}\n\n\tasync retrieveFormData() {\n\t\tconst data = await reportedIssueService.get(this.id);\n\t\tthis.setState({ entity: data, loading: false });\n\t}\n}\n\nexport const ReportedIssueEdit = withTranslation()(withRouter(ReportedIssueEditPlain));","import React from 'react';\nimport { Switch, Route, useRouteMatch } from 'react-router-dom';\nimport AuthorizeRoute from '../api-authorization/AuthorizeRoute';\n\nimport { ReportedIssueList } from './ReportedIssueList';\n/*import { ReportedIssueAdd } from './ReportedIssueAdd';*/\nimport { ReportedIssueDelete } from './ReportedIssueDelete';\nimport { ReportedIssueEdit } from './ReportedIssueEdit';\n\nexport function ReportedIssueRouter() {\n\tlet match = useRouteMatch();\n\n\treturn (\n\t\t\n\t\t\t{/**/}\n\t\t\t\n\t\t\t\n\t\t\t\n\t\t\n\t);\n}","import React, { Component } from \"react\";\r\nimport { wgs84, osgb } from \"../osgb\";\r\nimport PathMap from \"./PathMap\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport pathService from '../paths/PathService';\r\nimport workProgramService from '../workprograms/WorkProgramService';\r\nimport {\r\n FormGroup, Form, Label, Input, Button, Table,\r\n Modal, ModalBody, ModalHeader, ModalFooter, Row, Col, ButtonGroup,\r\n InputGroup\r\n} from 'reactstrap';\r\n\r\nclass PathMapPage extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.wgs84 = new wgs84();\r\n this.osgb = new osgb();\r\n this.state = {\r\n selectedfeature: null,\r\n workprograms: []\r\n };\r\n this.toggleModal = this.toggleModal.bind(this);\r\n }\r\n onClickHandler = (event, features) => {\r\n this.wgs84.setDegrees(event.latlng.lat, event.latlng.lng);\r\n\r\n let osgbref = this.wgs84.getOSGB();\r\n\r\n this.setState({ location: { lat: this.wgs84.latitude, lng: this.wgs84.longitude }, gridref: osgbref.getGridRef(6) });\r\n\r\n if (features.numberReturned > 0) {\r\n this.getPathData(features.features[0].properties.path_name);\r\n } else {\r\n this.setState({ showModal: false });\r\n }\r\n }\r\n async getPathData(name) {\r\n try {\r\n const data = await pathService.getbyname(name);\r\n this.setState({ path: data.result, showModal: true });\r\n this.getWorkPrograms(data.result.id);\r\n }\r\n catch (error) {\r\n // Handle error\r\n }\r\n }\r\n async getWorkPrograms(pathid) {\r\n try {\r\n const data = await workProgramService.bypathid(pathid);\r\n this.setState({ workprograms: data });\r\n }\r\n catch (error) {\r\n // Handle error\r\n }\r\n }\r\n toggleModal(e) {\r\n this.setState({\r\n showModal: !this.state.showModal\r\n });\r\n }\r\n handleCancel = () => {\r\n this.setState({ showModal: false, location: null, gridref: '', feature: null, path: null, workprograms: [] });\r\n }\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {this.state.path ? this.state.path.name : ''}\r\n \r\n \r\n \r\n Gridref\r\n {this.state.gridref}\r\n \r\n {this.state.location ?\r\n (\r\n Latitude\r\n {this.state.location.lat.toFixed(5)}\r\n ) : null}\r\n {this.state.location ?\r\n (\r\n Longitude\r\n {this.state.location.lng.toFixed(5)}\r\n ) : null}\r\n {this.state.path ?\r\n (\r\n Path\r\n {this.state.path.name}\r\n ) : null}\r\n {this.state.path ?\r\n (\r\n Path Length\r\n {this.state.path.lengthKilometres} km\r\n ) : null}\r\n {this.state.path ?\r\n (\r\n Survey Interval\r\n {this.state.path.surveyIntervalMonths} Months\r\n ) : null}\r\n {this.state.workprograms.length > 0 ? (\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {this.state.workprograms.map(wp =>\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n )}\r\n \r\n
DateCommentConditionWork RequiredTime Spent
{new Date(wp.start.substr(0, 10)).toLocaleDateString()}{wp.surveyComment}{wp.pathState ? wp.pathState.state : ''}{wp.workRequired ? wp.workRequired.state : ''}{wp.timeSpentHours} hours
\r\n ) : (\r\n \r\n No surveys/work programs found\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 withTranslation('en')(PathMapPage);","import React, { Component } from \"react\";\r\nimport { wgs84, osgb } from \"../osgb\";\r\nimport PathMap from \"./PathMap\";\r\nimport { withTranslation } from 'react-i18next';\r\nimport pathService from '../paths/PathService';\r\nimport {\r\n FormGroup, Form, Label, Input, Button,\r\n Modal, ModalBody, ModalHeader, ModalFooter, Row, Col, ButtonGroup,\r\n InputGroup\r\n} from 'reactstrap';\r\nimport authService from '../api-authorization/AuthorizeService';\r\nimport reportedIssueService from \"../reportedissues/ReportedIssueService\";\r\n\r\nclass ReportIssueMapPage extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.wgs84 = new wgs84();\r\n this.osgb = new osgb();\r\n this.state = {\r\n feature: null,\r\n path: null,\r\n location: null,\r\n gridref: '',\r\n showModal: false,\r\n showSentModal: false,\r\n fileupload: null\r\n };\r\n this.toggleModal = this.toggleModal.bind(this);\r\n this.toggleSentModal = this.toggleSentModal.bind(this);\r\n }\r\n componentDidMount() {\r\n //this.populateUserState();\r\n this._subscription = authService.subscribe(() => this.authenticationChanged());\r\n this.populateAuthenticationState();\r\n }\r\n async authenticationChanged() {\r\n this.setState({ ready: false, authenticated: false });\r\n await this.populateAuthenticationState();\r\n }\r\n async populateAuthenticationState() {\r\n const authenticated = await authService.isAuthenticated();\r\n const user = await authService.getUser();\r\n this.setState({ ready: true, isAuthenticated: authenticated, user, role: user && user.role, firstname: user && user.firstname });\r\n this.userStateReturned();\r\n }\r\n userStateReturned() {\r\n //(async () => {\r\n // await workProgramService.add(postvalues);\r\n // //history.push('/workprograms');\r\n // history.goBack();\r\n //})();\r\n }\r\n onClickHandler = (event, features) => {\r\n this.wgs84.setDegrees(event.latlng.lat, event.latlng.lng);\r\n\r\n let osgbref = this.wgs84.getOSGB();\r\n\r\n this.setState({ location: { lat: this.wgs84.latitude, lng: this.wgs84.longitude }, gridref: osgbref.getGridRef(6) });\r\n\r\n if (features.numberReturned > 0) {\r\n this.getPathData(features.features[0].properties.path_name);\r\n } else {\r\n this.setState({ showModal: true });\r\n }\r\n }\r\n async getPathData(name) {\r\n try {\r\n const data = await pathService.getbyname(name);\r\n this.setState({ path: data.result, showModal: true });\r\n }\r\n catch (error) {\r\n // Handle error\r\n }\r\n }\r\n toggleModal(e) {\r\n this.setState({\r\n showModal: !this.state.showModal\r\n });\r\n }\r\n toggleSentModal(e) {\r\n this.setState({\r\n showSentModal: !this.state.showModal\r\n });\r\n }\r\n handleFileChange = (e) => {\r\n this.setState({ file: e.target.files[0] });\r\n }\r\n handleCancel = () => {\r\n this.setState({ showModal: false, location: null, gridref: '', feature: null, path: null });\r\n }\r\n handleSend = () => {\r\n let valid = true;\r\n let reportedissue = {};\r\n if (this.state.email != \"\" || this.state.user) {\r\n if (this.state.user) {\r\n reportedissue.volunteer = { id: this.state.user.sub }\r\n } else {\r\n reportedissue.email = this.state.email;\r\n }\r\n } else { valid = false; }\r\n if (this.state.comment) {\r\n reportedissue.comment = this.state.comment;\r\n } else { valid = false; }\r\n if (this.state.path) {\r\n reportedissue.path = { id: this.state.path.id }\r\n }\r\n reportedissue.gridref = this.state.gridref;\r\n reportedissue.longitude = this.state.location.lng;\r\n reportedissue.latitude = this.state.location.lat;\r\n if (valid == true) {\r\n this.postEntity(reportedissue);\r\n }\r\n }\r\n async postEntity(entity) {\r\n let saveresponse = await reportedIssueService.add(entity);\r\n console.log(saveresponse.id);\r\n console.log(this.state.file);\r\n if (this.state.file) {\r\n const formdata = new FormData();\r\n formdata.append('file', this.state.file);\r\n formdata.append('id', saveresponse.id);\r\n fetch(\"reportedissue/postimage\", {\r\n method: \"post\",\r\n /*headers: { 'Content-Type': 'multipart/form-data' },*/\r\n body: formdata\r\n })\r\n .then(response => response)\r\n .then(data => {\r\n console.log(data);\r\n this.setState({ showModal: false, location: null, gridref: '', feature: null, path: null, showSentModal:true });\r\n })\r\n .catch(error => {\r\n console.log(error);\r\n });\r\n }\r\n else {\r\n this.setState({ showModal: false, location: null, gridref: '', feature: null, path: null, showSentModal: true });\r\n }\r\n }\r\n handleFormUpdate = (e) => {\r\n this.setState({ [e.target.name]: e.target.value })\r\n }\r\n render() {\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n Report Issue\r\n \r\n \r\n \r\n Gridref\r\n {this.state.gridref}\r\n \r\n {this.state.location ?\r\n (\r\n Latitude\r\n {this.state.location.lat}\r\n ) : null}\r\n {this.state.location ?\r\n (\r\n Longitude\r\n {this.state.location.lng}\r\n ) : null}\r\n {this.state.path ?\r\n (\r\n Path\r\n {this.state.path.name}\r\n ) : null}\r\n {this.state.user ?\r\n (\r\n \r\n Reported by\r\n {this.state.user.name}\r\n \r\n ) : (\r\n \r\n Email\r\n \r\n \r\n )}\r\n \r\n Issue Details\r\n \r\n \r\n \r\n Photo\r\n this.handleFileChange(e)} />\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Issue Submitted\r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n }\r\n}\r\nexport default withTranslation('en')(ReportIssueMapPage);","import React, { Component } from 'react';\r\nimport { Route } from 'react-router';\r\nimport { Layout } from './components/Layout';\r\nimport { Home } from './components/Home';\r\n\r\nimport AuthorizeRoute from './components/api-authorization/AuthorizeRoute';\r\nimport ApiAuthorizationRoutes from './components/api-authorization/ApiAuthorizationRoutes';\r\nimport { ApplicationPaths } from './components/api-authorization/ApiAuthorizationConstants';\r\nimport { UserRouter } from './components/users/UserRouter';\r\nimport { WorkProgramRouter } from './components/workprograms/WorkProgramRouter';\r\nimport { VolunteerGroupRouter } from './components/volunteergroups/VolunteerGroupRouter';\r\nimport { VolunteerSectionRouter } from './components/volunteersections/VolunteerSectionRouter';\r\nimport { PathRouter } from './components/paths/PathRouter';\r\nimport { PathWorkRouter } from './components/pathworks/PathWorkRouter';\r\nimport { PathStateRouter } from './components/pathstates/PathStateRouter';\r\nimport { ReportedIssueRouter } from './components/reportedissues/ReportedIssueRouter';\r\nimport { WorkProgramCalendar } from './components/workprogramcalendar/WorkProgramCalendar';\r\nimport PathMapPage from './components/pathmap/PathMapPage'\r\nimport ReportIssueMapPage from './components/pathmap/ReportIssueMapPage'\r\nimport './custom.css'\r\n\r\nexport default class App extends Component {\r\n static displayName = App.name;\r\n\r\n render() {\r\n return (\r\n \r\n \r\n {/**/}\r\n {/**/}\r\n \r\n \r\n \r\n } />\r\n } />\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n","import 'bootstrap/dist/css/bootstrap.css';\r\nimport React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport { BrowserRouter } from 'react-router-dom';\r\nimport App from './App';\r\n//import registerServiceWorker from './registerServiceWorker';\r\n\r\nconst baseUrl = document.getElementsByTagName('base')[0].getAttribute('href');\r\nconst rootElement = document.getElementById('root');\r\n\r\nReactDOM.render(\r\n \r\n \r\n ,\r\n rootElement);\r\n\r\n// Uncomment the line above that imports the registerServiceWorker function\r\n// and the line below to register the generated service worker.\r\n// By default create-react-app includes a service worker to improve the\r\n// performance of the application by caching static assets. This service\r\n// worker can interfere with the Identity UI, so it is\r\n// disabled by default when Identity is being used.\r\n//\r\n//registerServiceWorker();\r\n\r\n"],"sourceRoot":""}