{"version":3,"sources":["assets/selected.png","components/navbar.js","pages/home.page.js","common/formsetup.js","pages/charts.page.js","pages/inventory.page.js","components/updatePanel.component.js","components/newPanel.component.js","pages/update.page.js","pages/print.page.js","App.js","serviceWorker.js","index.js"],"names":["module","exports","Navbar","props","_this","Object","classCallCheck","this","possibleConstructorReturn","getPrototypeOf","call","modalToggle","setState","prevState","modal","LoginCall","_ref","asyncToGenerator","regenerator_default","a","mark","_callee","history","url","encoding","wrap","_context","prev","next","btoa","concat","state","username","password","sent","async","crossDomain","method","headers","Authorization","cache-control","axios","then","response","push","catch","error","alert","stop","_x","apply","arguments","projects","_this2","modalShow","react_default","createElement","className","Link","style","textDecoration","color","to","onClick","id","display","zIndex","htmlFor","onChange","e","target","value","type","placeholder","name","required","Component","withRouter","statusChartOptions","title","width","chartArea","heigth","is3D","legend","position","alignment","maxLines","tooltip","trigger","sliceVisibilityThreshold","countryChartOptions","Homepage","projectsStatus","projectsCountry","justifyContent","marginTop","alignSelf","flexDirection","rel","targetdownload","href","download","alignItems","height","length","react_spinners","size","index_esm","chartType","data","legendToggle","options","projectTypes","projectStatus","country","programme","typePie","backgroundColor","stroke","strokeWidth","countryBar","statusBar","bar","groupWidth","isStacked","statusColumn","typeStatusStacked","hAxis","minValue","ticks","Chartpage","filterTypeStatusCountry","filteredCountryProjects","filter","project","properties","toLowerCase","selectedCountry","conceptualHydroCount","i","includes","status","feasibilityHydroCount","projectStructHydroCount","ImplementationHydroCount","CompletionHydroCount","conceptualIrrigationCount","feasaibilityIrrigationCount","projectStructIrrigationCount","ImplementationIrrigationCount","CompletionIrrigationCount","conceptualWaterSupCount","feasaibilityWaterSupCount","projectStructWaterSupCount","ImplementationWaterSupCount","CompletionWaterSupCount","conceptuallivCount","feasaibilitylivCount","projectStructlivCount","ImplementationlivCount","CompletionlivCount","projectsTypeStatusCountry","CountrytypeStatusStacked","react_to_print_lib_default","content","componentRef","copyStyles","ref","el","projectsType","projectsTypeStatus","role","map","cname","aria-selected","textAlign","iconPng","require","InventoryPage","handleClick","latlng","toggleAnimate","animate","renderProjects","projectMarkers","forEach","geometry","undefined","coordinates","project_na","Marker","Popup","renderTableBody","tableBody","filterProjects","search","toConsumableArray","zoom","lat","lng","selectProjectFunction","national_p","phasing","city","river_name","owner_impl","constact_d","capital_co","fixed_cost","source","start_date","descriptio","status_sou","hydro_type","hydro_capa","hydro_max","hydro_turb","hydro_gen_","hydro_plan","hydro_tail","hydro_asso","hydro_cost","hydro_rese","hydro_expa","resevoir_s","reservoir_","reservoir__1","reservoir__2","reservoir__3","irrigation","irrigation_1","irrigation_2","irrigation_3","irrigation_4","irrigation_5","irrigation_6","mine_withd","mine_numbe","mine_consu","mine_water","mine_distn","navigation","navigation_1","navigation_2","navigation_3","enviroment","enviroment_1","enviroment_2","flood_max","flood_asso","flood_asso_1","flood_prot","flood_prot_1","inventoryMap","React","createRef","Map","center","react_leaflet_google","googlekey","maptype","icon","L","iconUrl","iconSize","overflowY","overflowX","NewPanel","handleChange","valueName","defineProperty","setProject","projectID","projectName","projectType","programmeType","nationalPriority","finalLat","finalLng","countryName","riverName","owner","contactDetail","capital","fixed","financeSource","startDate","description","key","onOpen","selectedProject","project_ty","joinCountries","CName","joint","item","console","log","mapRef","html","flexWrap","selected","prog","openMap","count","create","_this$state","disabled","UpdatePage","upload","loading","parseFloat","post","Content-Type","NotificationManager","success","warn","warning","updateUpload","updateToLocation","GeoData","parseInt","goBack","georesponse","setStateFunction","selectMap","current","coord","leafletElement","mouseEventToLatLng","originalEvent","toFixed","tabs","renderActiveTabPanelOnly","vertical","tab","panel","newPanel_component","toState","updatePanel_component","projectObj","Expander","aria-label","PrintPage","checkData","CSVdata","react_csv","posistion","marginBottom","Fragment","App","selectProject","filterData","filterStatusData","filterCountryData","filterType","filterTypeStatus","Conceptual","ProjectStructuring","Implementation","Feasibility","Completion","statusArray","Hydropower_total","Irrigation_total","Water_Supply_total","Livelihoods","typeArray","Angola_total","Botswana_total","Malawi_total","Mozambique_total","Namibia_total","Tanzania_total","Zambia_total","Zimbabwe_total","countryArray","selectCountry","$","ajax","jsonp","features","_this3","BrowserRouter","basename","navbar","openModalFunction","Route","path","exact","render","routeProps","home_page","assign","charts_page","inventory_page","update_page","print_page","lib","Boolean","window","location","hostname","match","ReactDOM","src_App_0","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.ba670c41.chunk.js","sourcesContent":["module.exports = \"data:image/png;base64,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\"","import React, { Component } from 'react';\nimport { Link, withRouter } from 'react-router-dom';\nimport $ from 'jquery';\nimport axios from 'axios';\n\nclass Navbar extends Component {\n constructor(props) {\n super(props);\n this.state = {\n modal: false,\n projects: [],\n };\n }\n\n modalToggle =() => {\n this.setState(prevState => ({\n modal: !prevState.modal,\n }));\n }\n\n LoginCall =async (history) => {\n //http://197.211.238.164:8088/geoserver/sf/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sf:archsites&maxFeatures=50&outputFormat=application%2Fjson\n const url = 'http://197.211.238.164:8088/geoserver/sf/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=sf%3Aarchsites&maxFeatures=50&outputFormat=text%2Fjavascript';\n const encoding = await btoa(`${this.state.username}:${this.state.password}`);\n const settings = {\n async: true,\n crossDomain: true,\n url,\n method: 'GET',\n headers: {\n Authorization: `Basic ${encoding}`,\n 'cache-control': 'no-cache',\n },\n };\n\n axios(url, { },\n {\n Authorization: `Basic ${encoding}`,\n })\n .then((response) => {\n \n history.push('/update');\n this.setState({ modal: false });\n })\n .catch((error) => {\n\n alert('Invalid Credentials');\n });\n }\n\n render() {\n const modalShow = this.state.modal ? 'block' : 'none';\n return (\n <div>\n <nav className=\"bp3-navbar bp3-dark\">\n <div className=\"bp3-navbar-group bp3-align-left\">\n <div className=\"bp3-navbar-heading\">ZSP Online Monintoring Tool</div>\n </div>\n <div className=\"bp3-navbar-group bp3-align-right\">\n <Link className=\"bp3-button bp3-minimal bp3-icon-home\" style={{ textDecoration: 'none', color: '#F5F8FA' }} to=\"/\">Home</Link>\n <span className=\"bp3-navbar-divider\" />\n <Link className=\"bp3-button bp3-minimal bp3-icon-document\" style={{ textDecoration: 'none', color: '#F5F8FA' }} to=\"/charts\">More Charts</Link>\n <span className=\"bp3-navbar-divider\" />\n <Link style={{ textDecoration: 'none', color: '#F5F8FA' }} to=\"/tables\">View Inventory</Link>\n <span className=\"bp3-navbar-divider\" />\n <button onClick={() => this.modalToggle()} className=\"bp3-button bp3-minimal bp3-icon-annotation\">\n Update Inventory\n </button>\n </div>\n </nav>\n <div id=\"myModal\" style={{ display: modalShow, zIndex: 99999 }} className=\"modal\">\n <div className=\"modal-content\">\n <span onClick={() => this.modalToggle()} className=\"close\">×</span>\n <div>\n <label className=\"bp3-label\" htmlFor=\"uname\"><b>Username</b></label>\n <input onChange={e => this.setState({ username: e.target.value })} type=\"text\" placeholder=\"Enter Username\" name=\"uname\" required />\n <label className=\"bp3-label\" htmlFor=\"psw\"><b>Password</b></label>\n <input onChange={e => this.setState({ password: e.target.value })} type=\"password\" placeholder=\"Enter Password\" name=\"psw\" required />\n <button onClick={e => this.LoginCall(this.props.history)} type=\"submit\">Login</button>\n </div>\n </div>\n </div>\n </div>\n\n );\n }\n}\n\nexport default withRouter(Navbar);\n","import React, { Component } from 'react';\nimport { CircleLoader } from 'react-spinners';\nimport Chart from 'react-google-charts';\n\nconst statusChartOptions = {\n title: 'Projects by status (Basin)',\n width: '90%',\n chartArea: { width: '90%' },\n heigth: '70vh',\n is3D: false,\n legend: { position: 'right', alignment: 'center', maxLines: 2 },\n tooltip: { trigger: 'selection' },\n sliceVisibilityThreshold: 0.0000001,\n};\nconst countryChartOptions = {\n title: 'Projects by Country',\n width: '90%',\n chartArea: { width: '90%' },\n heigth: '70vh',\n is3D: false,\n legend: { position: 'right', alignment: 'center', maxLines: 2 },\n tooltip: { trigger: 'selection' }, // or can use focus\n sliceVisibilityThreshold: 0.0000001, // set slice merger\n};\n\nclass Homepage extends Component {\n constructor(props) {\n super(props);\n this.state = {\n projectsStatus: [],\n projectsCountry: [],\n };\n }\n\n render() {\n return (\n <div style={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\n <div style={{ width: '65%', marginTop: 10, alignSelf: 'center' }}>\n <div style={{\n flexDirection: 'row', display: 'flex', width: '100% ', justifyContent: ' space-between',\n }}\n >\n <div style={{ width: '59%' }} className=\"bp3-card bp3-elevation-2\">\n <h3 style={{ textDecoration: 'underline' }}>Introduction</h3>\n <p>The Online Monitoring and Implementation Tool is an online facility that allows the viewing, adding and editing of planned projects in the Strategic Plan for the Zambezi Watercourse (ZSP) by Riparian States and ZAMCOM. The Tool also allows Riparian States and ZAMCOM to monitor the status of implementation of the Projects submitted under the ZSP.</p>\n <p> Based on this information ZAMCOM can then put in place strategies for addressing challenges in project implementation. The Tool will work side by side with the ZAMCOM Notification Process and the Tool can be updated to be linked with the Notification Process.</p>\n <p>A manual provinding guidance is located in the document archive.</p>\n </div>\n <div style={{ width: '40%' }} className=\"bp3-card bp3-elevation-2\">\n <h3 style={{ textDecoration: 'underline' }} className=\"bp3-heading\">ZSP Document archive</h3>\n <ul className=\"bp3-list\">\n <li><a target=\"_blank\" rel=\"noopener noreferrer\" targetdownload href=\"http://www.zambezicommission.org/sites/default/files/publication_downloads/strategic_plan_for_the_zambezi_watercourse_executive_summary.pdf\">Strategic Plan for the Zambezi Watercourse – Executive Summary</a></li>\n <li><a download target=\"_blank\" rel=\"noopener noreferrer\"href=\"http://www.zambezicommission.org/sites/default/files/publication_downloads/strategic_plan_for_the_zambezi_watercourse.pdf\">Strategic Plan for the Zambezi Watercourse</a></li>\n <h6>Background Documents:</h6>\n <li><a target=\"_blank\" rel=\"noopener noreferrer\" download href=\"http://www.zambezicommission.org/sites/default/files/publication_downloads/situation_analysis_and_strategic_direction_report.pdf\">Situation Analysis and Strategic Direction</a></li>\n <li><a target=\"_blank\" rel=\"noopener noreferrer\" download href=\"http://www.zambezicommission.org/sites/default/files/publication_downloads/basin_development_scenarios_report.pdf\">Basin Development Scenarios</a></li>\n <li><a target=\"_blank\" rel=\"noopener noreferrer\" download href=\"http://www.zambezicommission.org/sites/default/files/publication_downloads/basin_investment_scenarios_report.pdf\">Basin Investment Scenarios</a></li>\n <li><a target=\"_blank\" rel=\"noopener noreferrer\" download href=\"http://www.zambezicommission.org/sites/default/files/publication_downloads/online_monitoring_and_implementation_tool_user_manual.pdf\">Monitoring and Implementation Tool – Users Manual</a></li>\n </ul>\n </div>\n </div>\n <div\n style={{\n marginTop: 10, display: 'flex', justifyContent: 'center', alignItems: 'center', height: 410,\n }}\n className=\"bp3-card bp3-elevation-2\"\n >\n\n {this.props.projects.length === 0\n ? (\n <CircleLoader\n color=\"#033e8b\"\n size={80}\n />\n )\n : (\n <div style={{\n display: 'flex', flexDirection: 'row', justifyContent: 'space-around', width: '100%', alignItems: 'center',\n }}\n >\n <div className=\"column_chart\">\n <Chart\n chartType=\"PieChart\"\n data={this.props.projectsStatus}\n height=\"400px\"\n legendToggle\n options={statusChartOptions}\n />\n\n </div>\n <div className=\"column_chart\">\n <Chart\n chartType=\"PieChart\"\n data={this.props.projectsCountry}\n height=\"400px\"\n legendToggle\n options={countryChartOptions}\n />\n\n </div>\n\n </div>\n )\n }\n </div>\n\n\n </div>\n </div>\n );\n }\n}\n\nexport default Homepage;\n","export const projectTypes = ['Hydropower', 'Water Supply (irrigation, sanitation, domestic)', 'Dam', 'Flood Management', 'Hydrometric Station', 'Hydropower', 'Hydropower/Irrigation/Water Supply', 'Hydropower; Environmental Flow', 'Hydropower; Flood Management; Environmental Flow', 'Hydropower; Flood Mangement', 'Irrigation', 'Irrigation and Water Supply', 'Irrigation, Hydro Power', 'Irrigation, WASH, hydropower', 'Irrigation, Water Supply & Hydrop Power', 'Mini Hydropower', 'Mining', 'Mining; Thermal Power', 'Navigation', 'Other', 'Thermal Power', 'Water Supply', 'Water Supply (irrigation)', 'Water Supply (Irrigation), Flood Management', 'Water Supply and irrigation', 'Water Supply and Sanitation', 'Water Supply, Irrigation, hydro power'];\r\nexport const projectStatus = ['Project Structuring', 'Pre-Feasibility', 'Planning', 'Feasibility', 'Conceptual'];\r\nexport const country = ['Angola', 'Botswana', 'Malawi', 'Mozambique', 'Namibia', 'Tanzania', 'Zambia', 'Zimbabwe', 'Joint'];\r\nexport const programme = ['Agriculture', 'Catchment and Riparian Assets Management', 'Energy', 'Water Supply and Sanitation'];\r\n","import React, { Component } from 'react';\r\nimport { CircleLoader } from 'react-spinners';\r\nimport Chart from 'react-google-charts';\r\nimport ReactToPrint from 'react-to-print';\r\nimport { country } from '../common/formsetup';\r\n\r\nconst typePie = {\r\n title: 'Projects by Type (Basin)',\r\n height: 350,\r\n is3D: false,\r\n legend: { position: 'right', alignment: 'center', maxLines: 2 },\r\n chartArea: { width: '75%' },\r\n backgroundColor: {\r\n stroke: '#d3d3d3',\r\n strokeWidth: 2,\r\n },\r\n tooltip: { trigger: 'selection' },\r\n};\r\nconst countryBar = {\r\n title: 'Projects by Country',\r\n height: 350,\r\n is3D: false,\r\n legend: { position: 'top', alignment: 'center', maxLines: 2 },\r\n chartArea: { width: '65%' },\r\n backgroundColor: {\r\n stroke: '#d3d3d3',\r\n strokeWidth: 2,\r\n },\r\n tooltip: { trigger: 'selection' }, // or can use focus\r\n};\r\nconst statusBar = {\r\n title: 'Projects by Type (Basin)',\r\n height: 350,\r\n is3D: false,\r\n legend: { position: 'top', alignment: 'center', maxLines: 2 },\r\n chartArea: { width: '70%' },\r\n backgroundColor: {\r\n stroke: '#d3d3d3',\r\n strokeWidth: 2,\r\n },\r\n tooltip: { trigger: 'selection' }, // or can use focus\r\n bar: { groupWidth: '75%' },\r\n isStacked: true,\r\n};\r\n\r\nconst statusColumn = {\r\n title: 'Projects by Project Status (Basin)',\r\n height: 350,\r\n legend: { position: 'top', alignment: 'center', maxLines: 2 },\r\n chartArea: { width: '70%' },\r\n backgroundColor: {\r\n stroke: '#d3d3d3',\r\n strokeWidth: 2,\r\n },\r\n tooltip: { trigger: 'selection' }, // or can use focus\r\n isStacked: true,\r\n};\r\n\r\nconst typeStatusStacked = {\r\n title: 'Projects by type and status (Basin)',\r\n chartArea: { width: '65%' },\r\n isStacked: 'percent',\r\n height: 300,\r\n width: '100%',\r\n legend: { position: 'right' },\r\n hAxis: {\r\n minValue: 0,\r\n ticks: [0, 0.3, 0.6, 0.9, 1],\r\n },\r\n backgroundColor: {\r\n stroke: '#d3d3d3',\r\n strokeWidth: 2,\r\n },\r\n};\r\n\r\n\r\nclass Chartpage extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n selectedCountry: '',\r\n projectsTypeStatusCountry: '',\r\n };\r\n }\r\n\r\n filterTypeStatusCountry=(projects) => {\r\n const filteredCountryProjects = projects.filter(project => project.properties.country.toLowerCase() === this.state.selectedCountry.toLowerCase());\r\n const conceptualHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Conceptual').length;\r\n const feasibilityHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Feasibility').length;\r\n const projectStructHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Project Structuring').length;\r\n const ImplementationHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Implementation').length;\r\n const CompletionHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Completion').length;\r\n\r\n const conceptualIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Conceptual').length;\r\n const feasaibilityIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Feasibility').length;\r\n const projectStructIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Project Structuring').length;\r\n const ImplementationIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Implementation').length;\r\n const CompletionIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Completion').length;\r\n\r\n\r\n const conceptualWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Conceptual').length;\r\n const feasaibilityWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Feasibility').length;\r\n const projectStructWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Project Structuring').length;\r\n const ImplementationWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Implementation').length;\r\n const CompletionWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Completion').length;\r\n\r\n const conceptuallivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Conceptual').length;\r\n const feasaibilitylivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Feasibility').length;\r\n const projectStructlivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Project Structuring').length;\r\n const ImplementationlivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Implementation').length;\r\n const CompletionlivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Completion').length;\r\n\r\n let data;\r\n if (this.state.selectedCountry !== 'Joint') {\r\n data = [\r\n ['Status', 'Conceptual', 'Feasibility', 'Project Structuring', 'Implementation', 'Completion'],\r\n ['Hydropower', conceptualHydroCount, feasibilityHydroCount, projectStructHydroCount, ImplementationHydroCount, CompletionHydroCount],\r\n ['Irrigation', conceptualIrrigationCount, feasaibilityIrrigationCount, projectStructIrrigationCount, ImplementationIrrigationCount, CompletionIrrigationCount],\r\n ['Water Supply and Sanitation', conceptualWaterSupCount, feasaibilityWaterSupCount, projectStructWaterSupCount, ImplementationWaterSupCount, CompletionWaterSupCount],\r\n ['Livelihoods', conceptuallivCount, feasaibilitylivCount, projectStructlivCount, ImplementationlivCount, CompletionlivCount],\r\n ];\r\n } else {\r\n data = [\r\n ['Status', 'Conceptual', 'Feasibility', 'Project Structuring', 'Implementation', 'Completion'],\r\n ['Hydropower', 1, 0, 1, 0, 0],\r\n ['Irrigation', 0, 0, 0, 0, 0],\r\n ['Water Supply and Sanitation', 4, 0, 0, 0, 0],\r\n ['Livelihoods', 0, 0, 0, 0, 0],\r\n ];\r\n }\r\n\r\n\r\n this.setState({ projectsTypeStatusCountry: data });\r\n }\r\n\r\n\r\n render() {\r\n \r\n const CountrytypeStatusStacked = {\r\n title: `Projects by type and status for ${this.state.selectedCountry}`,\r\n chartArea: { width: '65%' },\r\n isStacked: 'percent',\r\n height: 300,\r\n width: '100%',\r\n legend: { position: 'right' },\r\n hAxis: {\r\n minValue: 0,\r\n ticks: [0, 0.3, 0.6, 0.9, 1],\r\n },\r\n backgroundColor: {\r\n stroke: '#d3d3d3',\r\n strokeWidth: 2,\r\n },\r\n };\r\n return (\r\n <div style={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <div style={{ width: '65%', marginTop: 10, alignSelf: 'center' }}>\r\n\r\n <ReactToPrint\r\n trigger={() => <button style={{ alignSelf: 'flex-end' }} type=\"button\" className=\"bp3-button bp3-icon-print\">Print graphs</button>}\r\n content={() => this.componentRef}\r\n copyStyles\r\n />\r\n <div\r\n style={{\r\n marginTop: 10, display: 'flex', justifyContent: 'center', alignItems: 'center',\r\n }}\r\n ref={el => (this.componentRef = el)}\r\n className=\"bp3-card bp3-elevation-2\"\r\n >\r\n {this.props.projects.length === 0\r\n ? (\r\n <CircleLoader\r\n color=\"#033e8b\"\r\n size={80}\r\n />\r\n )\r\n : (\r\n <div style={{\r\n display: 'flex', flexDirection: 'column', justifyContent: 'space-around', width: '100%',\r\n }}\r\n >\r\n <div style={{ justifyContent: 'space-evenly', display: 'flex' }}>\r\n <div className=\"column_chart\">\r\n <Chart\r\n chartType=\"PieChart\"\r\n data={this.props.projectsType}\r\n legendToggle\r\n options={typePie}\r\n />\r\n\r\n </div>\r\n <div className=\"column_chart\">\r\n <Chart\r\n chartType=\"BarChart\"\r\n data={this.props.projectsCountry}\r\n legendToggle\r\n options={countryBar}\r\n />\r\n\r\n </div>\r\n </div>\r\n <div style={{ justifyContent: 'space-evenly', display: 'flex' }}>\r\n <div className=\"column_chart\">\r\n <Chart\r\n chartType=\"BarChart\"\r\n data={this.props.projectsType}\r\n legendToggle\r\n options={statusBar}\r\n />\r\n\r\n </div>\r\n <div className=\"column_chart\">\r\n <Chart\r\n chartType=\"ColumnChart\"\r\n data={this.props.projectsStatus}\r\n legendToggle\r\n options={statusColumn}\r\n />\r\n </div>\r\n\r\n </div>\r\n <div style={{ justifyContent: 'center', display: 'flex' }}>\r\n <div style={{ width: '95.5%' }}>\r\n <Chart\r\n chartType=\"BarChart\"\r\n data={this.props.projectsTypeStatus}\r\n legendToggle\r\n options={typeStatusStacked}\r\n />\r\n </div>\r\n </div>\r\n <div style={{ justifyContent: 'center', display: 'flex' }}>\r\n <div style={{ width: '95.5%' }} className=\"bp3-tabs\">\r\n <h4>Please select a country to display</h4>\r\n <ul className=\"bp3-tab-list\" role=\"tablist\">\r\n {country.map((cname) => {\r\n if (this.state.selectedCountry === cname) {\r\n return <li className=\"bp3-tab\" role=\"tab\" aria-selected=\"true\">{cname}</li>;\r\n }\r\n return (\r\n <li\r\n onClick={() => {\r\n this.setState({ selectedCountry: cname }, () => this.filterTypeStatusCountry(this.props.projects));\r\n }}\r\n className=\"bp3-tab\"\r\n role=\"tab\"\r\n >\r\n {cname}\r\n\r\n </li>\r\n );\r\n })}\r\n </ul>\r\n </div>\r\n </div>\r\n {this.state.selectedCountry !== ''\r\n ? (\r\n <div style={{ justifyContent: 'center', display: 'flex' }}>\r\n <div style={{ width: '95.5%' }}>\r\n <Chart\r\n chartType=\"BarChart\"\r\n data={this.state.projectsTypeStatusCountry}\r\n legendToggle\r\n options={CountrytypeStatusStacked}\r\n />\r\n </div>\r\n </div>\r\n )\r\n : (\r\n <div style={{ justifyContent: 'center', display: 'flex' }}>\r\n <div style={{ width: '95.5%', height: 300 }}>\r\n <h6 style={{ color: 'grey', textAlign: 'center', marginTop: '10%' }}>No country selected</h6>\r\n </div>\r\n </div>\r\n )\r\n }\r\n </div>\r\n )\r\n}\r\n\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default Chartpage;\r\n","import React, { Component } from 'react';\r\nimport {\r\n Map, Marker, Popup,\r\n} from 'react-leaflet';\r\nimport { GoogleLayer } from 'react-leaflet-google';\r\nimport L from 'leaflet';\r\nimport { Link } from 'react-router-dom';\r\nimport './table.css';\r\n\r\nconst iconPng = require('../assets/selected.png');\r\n\r\n\r\nclass InventoryPage extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n filter: 'all',\r\n search: '',\r\n project: { properties: { project_na: '' } },\r\n zoom: 4,\r\n animate: false,\r\n latlng: {\r\n lat: -17.197727,\r\n lng: 31.76042,\r\n },\r\n };\r\n this.inventoryMap = React.createRef();\r\n }\r\n\r\n handleClick = (e) => {\r\n \r\n this.setState({\r\n latlng: e.latlng,\r\n });\r\n }\r\n\r\n toggleAnimate = () => {\r\n this.setState({\r\n animate: !this.state.animate,\r\n });\r\n }\r\n\r\n renderProjects =() => {\r\n const filter = this.state.filter !== 'all' ? this.state.filter : '';\r\n const projectMarkers = [];\r\n\r\n this.props.projects.forEach((project) => {\r\n if (project.geometry !== null && project.geometry.coordinates[0] !== undefined && project.properties.type.toLowerCase().includes(filter)) {\r\n if (project.properties.project_na === this.state.project.properties.project_na) {\r\n \r\n } else {\r\n projectMarkers.push(\r\n <Marker onClick={() => this.setState({ project })} position={[project.geometry.coordinates[1], project.geometry.coordinates[0]]}>\r\n <Popup>\r\n <b><center>PROJECT INFORMATION</center></b>\r\n <center>\r\n Project Name:\r\n {project.properties.project_na}\r\n <center>\r\n Project Type:\r\n {project.properties.type}\r\n <center>\r\n Country :\r\n {project.properties.country}\r\n </center>\r\n </center>\r\n </center>\r\n </Popup>\r\n </Marker>,\r\n );\r\n }\r\n }\r\n });\r\n return projectMarkers;\r\n }\r\n\r\n\r\n renderTableBody=() => {\r\n const tableBody = [];\r\n \r\n let filterProjects = [];\r\n if (this.state.search !== '') {\r\n this.props.projects.forEach((project) => {\r\n if (project.properties.project_na.toLowerCase().includes(this.state.search.toLowerCase())) {\r\n filterProjects.push(project);\r\n }\r\n });\r\n } else {\r\n filterProjects = [...this.props.projects];\r\n }\r\n filterProjects.forEach((project) => {\r\n if (project.properties.type.toLowerCase().includes(this.state.filter !== 'all' ? this.state.filter : '')) {\r\n tableBody.push(<tr onClick={() => {\r\n this.setState({\r\n project,\r\n zoom: project.geometry !== null ? 13 : 3,\r\n latlng: project.geometry !== null ? { lat: project.geometry.coordinates[1], lng: project.geometry.coordinates[0] } : { lat: 0, lng: 0 },\r\n });\r\n this.props.selectProjectFunction(project);\r\n }}\r\n >\r\n <td>{project.properties.project_na}</td>\r\n <td>{project.properties.type}</td>\r\n <td>{project.properties.programme}</td>\r\n <td>{project.properties.national_p}</td>\r\n <td>{project.properties.phasing}</td>\r\n <td>{project.properties.city}</td>\r\n <td>{project.properties.country}</td>\r\n <td>{project.properties.river_name}</td>\r\n <td>{project.properties.owner_impl}</td>\r\n <td>{project.properties.constact_d}</td>\r\n <td>{project.properties.capital_co}</td>\r\n <td>{project.properties.fixed_cost}</td>\r\n <td>{project.properties.source}</td>\r\n <td>{project.properties.status}</td>\r\n <td>{project.properties.start_date}</td>\r\n <td>{project.properties.descriptio}</td>\r\n <td>{project.properties.status_sou}</td>\r\n <td>{project.properties.hydro_type}</td>\r\n <td>{project.properties.hydro_capa}</td>\r\n <td>{project.properties.hydro_max}</td>\r\n <td>{project.properties.hydro_turb}</td>\r\n <td>{project.properties.hydro_gen_}</td>\r\n <td>{project.properties.hydro_plan}</td>\r\n <td>{project.properties.hydro_tail}</td>\r\n <td>{project.properties.hydro_asso}</td>\r\n <td>{project.properties.hydro_cost}</td>\r\n <td>{project.properties.hydro_rese}</td>\r\n <td>{project.properties.hydro_expa}</td>\r\n <td>{project.properties.resevoir_s}</td>\r\n <td>{project.properties.reservoir_}</td>\r\n <td>{project.properties.reservoir__1}</td>\r\n <td>{project.properties.reservoir__2}</td>\r\n <td>{project.properties.reservoir__3}</td>\r\n <td>{project.properties.irrigation}</td>\r\n <td>{project.properties.irrigation_1}</td>\r\n <td>{project.properties.irrigation_2}</td>\r\n <td>{project.properties.irrigation_3}</td>\r\n <td>{project.properties.irrigation_4}</td>\r\n <td>{project.properties.irrigation_5}</td>\r\n <td>{project.properties.irrigation_6}</td>\r\n <td>{project.properties.mine_withd}</td>\r\n <td>{project.properties.mine_numbe}</td>\r\n <td>{project.properties.mine_consu}</td>\r\n <td>{project.properties.mine_water}</td>\r\n <td>{project.properties.mine_distn}</td>\r\n <td>{project.properties.navigation}</td>\r\n <td>{project.properties.navigation_1}</td>\r\n <td>{project.properties.navigation_2}</td>\r\n <td>{project.properties.navigation_3}</td>\r\n <td>{project.properties.enviroment}</td>\r\n <td>{project.properties.enviroment_1}</td>\r\n <td>{project.properties.enviroment_2}</td>\r\n <td>{project.properties.flood_max}</td>\r\n <td>{project.properties.flood_asso}</td>\r\n <td>{project.properties.flood_asso_1}</td>\r\n <td>{project.properties.flood_prot}</td>\r\n <td>{project.properties.flood_prot_1}</td>\r\n </tr>);\r\n }\r\n });\r\n\r\n return tableBody;\r\n }\r\n\r\n render() {\r\n const { project } = this.state;\r\n return (\r\n <div style={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <div style={{ width: '75%', marginTop: 10, alignSelf: 'center' }}>\r\n <div className=\"bp3-card bp3-elevation-2\">\r\n <div style={{ height: 400, width: '100%' }}>\r\n <Map\r\n animate={this.state.animate}\r\n center={this.state.latlng}\r\n length={4}\r\n onClick={this.handleClick}\r\n ref={this.inventoryMap}\r\n zoom={this.state.zoom}\r\n >\r\n <GoogleLayer googlekey=\"AIzaSyBKAY79l3Gr9RIEs8mHlMaU28Iy2s9UIxw\" maptype=\"SATELLITE\" />\r\n { this.props.projects.length !== 0\r\n && this.renderProjects()}\r\n {\r\nproject.properties.project_na !== ''\r\n && (\r\n <Marker\r\n icon={L.icon({\r\n iconUrl: iconPng,\r\n iconSize: [25, 41],\r\n \r\n })}\r\n position={[project.geometry.coordinates[1], project.geometry.coordinates[0]]}\r\n >\r\n <p>test</p>\r\n <Popup>\r\n <b><center>PROJECT INFORMATION</center></b>\r\n <center>\r\nProject Name:\r\n {project.properties.project_na}\r\n <center>\r\n Project Type:\r\n {project.properties.type}\r\n <center>\r\n Country :\r\n {project.properties.country}\r\n </center>\r\n </center>\r\n </center>\r\n </Popup>\r\n </Marker>\r\n )\r\n }\r\n </Map>\r\n </div>\r\n <div style={{\r\n display: 'flex', flexDirection: 'row', alignItems: 'center', justifyContent: 'space-between',\r\n }}\r\n >\r\n <div style={{ width: '25%', marginTop: 10 }} className=\"bp3-input-group .modifier\">\r\n <span className=\"bp3-icon bp3-icon-search\" />\r\n <input onChange={(e) => { this.setState({ search: e.target.value }); }} type=\"text\" className=\"bp3-input\" placeholder=\"Search projects by name\" />\r\n </div>\r\n <div className=\"bp3-button-group .modifier\">\r\n <button className=\"bp3-button bp3-icon-database\" onClick={() => { this.setState({ filter: 'all' }); }}>All</button>\r\n <button className=\"bp3-button bp3-icon-tint\" onClick={() => { this.setState({ filter: 'hydropower' }); }}>Hydro power</button>\r\n <button className=\"bp3-button bp3-icon-filter\" onClick={() => { this.setState({ filter: 'water supply' }); }}>Water Supply</button>\r\n <button className=\"bp3-button bp3-icon-tree\" onClick={() => { this.setState({ filter: 'irrigation' }); }}>Irrigation</button>\r\n </div>\r\n <div>\r\n {this.state.project !== ''\r\n ? (\r\n <div>\r\n <p>{`Selected project:${this.state.project.properties.project_na}`}</p>\r\n <button className=\"bp3-button bp3-icon-print\">\r\n <Link to=\"/print\">View Report</Link>\r\n </button>\r\n </div>\r\n )\r\n : <div><p>Please select a project to print its report</p></div>\r\n\r\n }\r\n </div>\r\n </div>\r\n <div style={{\r\n height: 380, width: '100%', marginTop: 10, overflowY: 'scroll', overflowX: 'scroll',\r\n }}\r\n >\r\n <table className=\"bp3-html-table bp3-html-table-bordered bp3-interactive bp3-html-table-striped\">\r\n <thead>\r\n <tr>\r\n <th className=\"tableheader\">Project Name (Proper)</th>\r\n <th className=\"tableheader\">Project Type</th>\r\n <th className=\"tableheader\">Programme</th>\r\n <th className=\"tableheader\">National priority</th>\r\n <th className=\"tableheader\">Phasing (2027 or 2040)</th>\r\n <th className=\"tableheader\">City, Country</th>\r\n <th className=\"tableheader\">Country(s)</th>\r\n <th className=\"tableheader\">River Name</th>\r\n <th className=\"tableheader\">Owner / Implementing Agent</th>\r\n <th className=\"tableheader\">Contact Details</th>\r\n <th className=\"tableheader\">Capital US$ - 000)</th>\r\n <th className=\"tableheader\">Fixed O&M (US$ - 000)</th>\r\n <th className=\"tableheader\">Source</th>\r\n <th className=\"tableheader\">Status</th>\r\n <th className=\"tableheader\">Start Date</th>\r\n <th className=\"tableheader\">Description/Notes</th>\r\n <th className=\"tableheader\">Source</th>\r\n <th className=\"tableheader\">Type (RoR, Reservoir)</th>\r\n <th className=\"tableheader\">Capacity (MW)</th>\r\n <th className=\"tableheader\">Max Turbine Flow (m3/s)</th>\r\n <th className=\"tableheader\">Turbine Notes</th>\r\n <th className=\"tableheader\">Gen Efficiency</th>\r\n <th className=\"tableheader\">Plant Factor</th>\r\n <th className=\"tableheader\">Plant Factor</th>\r\n <th className=\"tableheader\">Tailwater elevation (m)</th>\r\n <th className=\"tableheader\">Associated Reservoir</th>\r\n <th className=\"tableheader\">Hydro Costs (millions of USD)</th>\r\n <th className=\"tableheader\">Reservoir Costs (millions of USD)</th>\r\n <th className=\"tableheader\">Expandable Capacity (MW)</th>\r\n\r\n <th className=\"tableheader\">Reservoir Storage (millions of m^3)</th>\r\n <th className=\"tableheader\">Volume-Area-Elevation curve</th>\r\n <th className=\"tableheader\">Max Reservoir Storage (MCM)</th>\r\n <th className=\"tableheader\">Flood Reservoir Storage (MCM)</th>\r\n <th className=\"tableheader\">Flood Reservoir Storage (MCM)</th>\r\n\r\n <th className=\"tableheader\">Total Area (ha)</th>\r\n <th className=\"tableheader\">Area by Season (ha)</th>\r\n <th className=\"tableheader\">Area by Crop (ha)</th>\r\n <th className=\"tableheader\">Water source (GW/SW)</th>\r\n <th className=\"tableheader\">Distance from River (km)</th>\r\n <th className=\"tableheader\">Irrigation Technology</th>\r\n <th className=\"tableheader\">Conveyance Efficiency</th>\r\n\r\n <th className=\"tableheader\">Water withdrawals (MCM/mo)</th>\r\n <th className=\"tableheader\">Number of people supplied</th>\r\n <th className=\"tableheader\">Consumption</th>\r\n <th className=\"tableheader\">Leakage</th>\r\n <th className=\"tableheader\">Return flows to river (MCM/mo)</th>\r\n <th className=\"tableheader\">Water source (GW/SW)</th>\r\n <th className=\"tableheader\">Distance from River (km)</th>\r\n\r\n <th className=\"tableheader\">Minimum Water Flow (MCM/mo)</th>\r\n <th className=\"tableheader\">Maximum Water Flow (MCM/mo)</th>\r\n <th className=\"tableheader\">Navigation Traffic/ Haulage</th>\r\n <th className=\"tableheader\">Associated Reservoir </th>\r\n\r\n <th className=\"tableheader\">MinImum Water Flow (MCM/mo)</th>\r\n <th className=\"tableheader\">Maximum Water Flow (MCM/mo)</th>\r\n <th className=\"tableheader\">Associated Reservoir</th>\r\n\r\n <th className=\"tableheader\">Maximum Water Flow (MCM/mo)</th>\r\n <th className=\"tableheader\">Associated Reservoir</th>\r\n <th className=\"tableheader\">Associated Reservoir Storage</th>\r\n <th className=\"tableheader\">Flood Protection Works</th>\r\n <th className=\"tableheader\">Value of Protected Assets </th>\r\n\r\n </tr>\r\n </thead>\r\n <tbody>\r\n {this.renderTableBody()}\r\n </tbody>\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default InventoryPage;\r\n","import React, { Component } from 'react';\r\nimport {\r\n H3, Label,\r\n} from '@blueprintjs/core';\r\nimport {\r\n Map, Marker, Popup,\r\n} from 'react-leaflet';\r\nimport { GoogleLayer } from 'react-leaflet-google';\r\nimport {\r\n projectTypes, projectStatus, programme, country,\r\n} from '../common/formsetup';\r\n\r\nclass NewPanel extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n projectName: '',\r\n projectType: '',\r\n programmeType: '',\r\n nationalPriority: '',\r\n phasing: '',\r\n finalLat: '',\r\n finalLng: '',\r\n city: '',\r\n countryName: '',\r\n riverName: '',\r\n owner: '',\r\n contactDetail: '',\r\n capital: '',\r\n fixed: '',\r\n financeSource: '',\r\n status: '',\r\n startDate: '',\r\n description: '',\r\n source: '',\r\n joint: [],\r\n search: '',\r\n };\r\n this.mapRef = React.createRef();\r\n }\r\n\r\n handleChange=(valueName, value) => {\r\n this.setState({ [valueName]: value });\r\n }\r\n\r\n setProject=(project) => {\r\n\r\n this.setState({\r\n projectID: project.id,\r\n projectName: project.properties.project_na,\r\n projectType: project.properties.type,\r\n programmeType: project.properties.programme,\r\n nationalPriority: project.properties.national_p,\r\n phasing: project.properties.phasing,\r\n finalLat: project.geometry.coordinates[1],\r\n finalLng: project.geometry.coordinates[0],\r\n city: project.properties.city,\r\n countryName: project.properties.country,\r\n riverName: project.properties.river_name,\r\n owner: project.properties.owner_impl,\r\n contactDetail: project.properties.status_sou,\r\n capital: project.properties.capital_co,\r\n fixed: project.properties.fixed_cost,\r\n financeSource: project.properties.source,\r\n status: project.properties.status,\r\n startDate: project.properties.start_date,\r\n description: project.properties.descriptio,\r\n source: project.properties.status_sou,\r\n });\r\n }\r\n\r\n renderProjects =() => {\r\n const projectMarkers = [];\r\n if (this.state.search !== '') {\r\n this.props.projects.forEach((project) => {\r\n if (project.geometry !== null) {\r\n if (project.properties.project_na.toLowerCase().includes(this.state.search.toLowerCase()) === this.state.search) {\r\n projectMarkers.push(\r\n <Marker onClick={() => this.setProject(project)} key={project.id} position={[project.geometry.coordinates[1], project.geometry.coordinates[0]]}>\r\n <Popup onOpen={() => this.setState({ selectedProject: project })}>\r\n <b>\r\n <center>PROJECT INFORMATION</center>\r\n </b>\r\n <center>\r\n {`Project Name:${project.properties.project_na}`}\r\n <center>\r\n {`Project Type:${project.properties.project_ty}`}\r\n <center>\r\n {`Country:${project.properties.country}`}\r\n </center>\r\n </center>\r\n </center>\r\n </Popup>\r\n </Marker>,\r\n );\r\n }\r\n }\r\n });\r\n } else {\r\n this.props.projects.forEach((project) => {\r\n if (project.geometry !== null) {\r\n projectMarkers.push(\r\n <Marker onClick={() => this.setProject(project)} key={project.id} position={[project.geometry.coordinates[1], project.geometry.coordinates[0]]}>\r\n <Popup onOpen={() => this.setState({ selectedProject: project })}>\r\n <b>\r\n <center>PROJECT INFORMATION</center>\r\n </b>\r\n <center>\r\n {`Project Name:${project.properties.project_na}`}\r\n <center>\r\n {`Project Type:${project.properties.project_ty}`}\r\n <center>\r\n {`Country:${project.properties.country}`}\r\n </center>\r\n </center>\r\n </center>\r\n </Popup>\r\n </Marker>,\r\n );\r\n }\r\n });\r\n }\r\n\r\n\r\n return projectMarkers;\r\n }\r\n\r\n joinCountries=(CName) => {\r\n let { joint } = this.state;\r\n if (joint.includes(CName)) {\r\n joint = joint.filter(item => item !== CName);\r\n } else {\r\n joint.push(CName);\r\n }\r\n this.setState({ joint }, () => console.log(this.state.joint));\r\n }\r\n\r\n render() {\r\n const project = this.state;\r\n return (\r\n <div style={{ width: '100%', justifyContent: 'center' }} className=\"bp3-card bp3-elevation-2\">\r\n <H3>Double click a project requiring an update</H3>\r\n <div style={{ height: 400, width: '100%' }}>\r\n <Map center={[this.props.state.lat, this.props.state.lng]} zoom={this.props.state.zoom}>\r\n <GoogleLayer googlekey=\"AIzaSyBKAY79l3Gr9RIEs8mHlMaU28Iy2s9UIxw\" maptype=\"SATELLITE\" />\r\n { this.props.projects.length !== 0\r\n && this.renderProjects()}\r\n </Map>\r\n </div>\r\n <div style={{ width: '25%', marginTop: 10 }} className=\"bp3-input-group .modifier\">\r\n <span className=\"bp3-icon bp3-icon-search\" />\r\n <input onChange={(e) => { this.setState({ search: e.target.value }); }} type=\"text\" className=\"bp3-input\" placeholder=\"Search projects by name\" />\r\n </div>\r\n <div style={{\r\n display: 'flex',\r\n width: '100%',\r\n flexDirection: 'row',\r\n justifyContent: 'space-evenly',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n <Label style={{ width: 210 }}>\r\n Project Name (Proper)\r\n <input value={this.state.projectName} onChange={e => this.handleChange('projectName', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Project Type\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.projectType} onChange={e => this.handleChange('projectType', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n {projectTypes.map(type => (\r\n <option value={type}>{type}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Programme\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.programmeType} onChange={e => this.handleChange('programmeType', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n {programme.map(prog => (\r\n <option value={prog}>{prog}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n National Priotity\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.nationalPriority} onChange={e => this.handleChange('nationalPriority', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n <option value=\"0\">0</option>\r\n <option value=\"1\">1</option>\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Phasing\r\n <input value={this.state.phasing} onChange={e => this.handleChange('phasing', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Project Coordinates\r\n <div className=\"bp3-input-group\" style={{ width: 200 }}>\r\n <input type=\"text\" className=\"bp3-input\" value={this.props.coordinates ? this.props.coordinates : `${this.state.finalLat},${this.state.finalLng} `} placeholder=\"Select Coordinates...\" />\r\n <button onClick={() => this.props.openMap()} className=\"bp3-button bp3-minimal bp3-icon-locate\" />\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n City or Province\r\n <input value={this.state.city} onChange={e => this.handleChange('city', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Country\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.countryName} onChange={e => this.handleChange('countryName', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n {country.map(count => (\r\n <option value={count}>{count}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n {this.state.countryName === 'Joint'\r\n && (\r\n\r\n <div\r\n style={{\r\n width: 350,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-around',\r\n }}\r\n >\r\n {country.map((count) => {\r\n if (count !== 'Joint') {\r\n return (\r\n <label style={{\r\n flexDirection: 'row',\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: 119,\r\n }}\r\n >\r\n <input onChange={() => this.joinCountries(count)} type=\"checkbox\" />\r\n <span className=\"bp3-control bp3-indicator\" />\r\n {count}\r\n </label>\r\n );\r\n }\r\n })}\r\n </div>\r\n )\r\n }\r\n <Label style={{ width: 210 }}>\r\n River Name\r\n <input value={this.state.riverName} onChange={e => this.handleChange('riverName', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n\r\n <Label style={{ width: 210 }}>\r\n Owner / Implementing Agent\r\n <input value={this.state.owner} onChange={e => this.handleChange('owner', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Contact Details\r\n <input value={this.state.contactDetail} onChange={e => this.handleChange('contactDetail', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Capital cost (US$ 000)\r\n <input value={this.state.capital} onChange={e => this.handleChange('capital', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Fixed O&M(US$ 000)\r\n <input value={this.state.fixed} onChange={e => this.handleChange('fixed', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Cost - Source\r\n <input value={this.state.financeSource} onChange={e => this.handleChange('financeSource', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Status\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select>\r\n <option selected>Choose an item...</option>\r\n {projectStatus.map(status => (\r\n <option value={status}>{status}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Start Date\r\n <input value={this.state.startDate} onChange={e => this.handleChange('startDate', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Description/Notes\r\n <input value={this.state.description} onChange={e => this.handleChange('description', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Status and Description - Source\r\n <input value={this.state.source} onChange={e => this.handleChange('source', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n\r\n </div>\r\n <button\r\n type=\"button\"\r\n onClick={() => this.props.create(project)}\r\n className=\"bp3-button bp3-icon-export\"\r\n >\r\n Create\r\n </button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default NewPanel;\r\n","import React, { Component } from 'react';\r\nimport {\r\n H3, Label,\r\n} from '@blueprintjs/core';\r\nimport {\r\n projectTypes, projectStatus, programme, country,\r\n} from '../common/formsetup';\r\n\r\n\r\nclass NewPanel extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n projectName: '',\r\n projectType: '',\r\n programmeType: '',\r\n nationalPriority: '',\r\n phasing: '',\r\n finalLat: '',\r\n finalLng: '',\r\n city: '',\r\n countryName: '',\r\n riverName: '',\r\n owner: '',\r\n contactDetail: '',\r\n capital: '',\r\n fixed: '',\r\n financeSource: '',\r\n status: '',\r\n startDate: '',\r\n description: '',\r\n source: '',\r\n joint: [],\r\n };\r\n this.mapRef = React.createRef();\r\n }\r\n\r\n handleChange=(valueName, value) => {\r\n this.setState({ [valueName]: value });\r\n }\r\n\r\n joinCountries=(CName) => {\r\n let { joint } = this.state;\r\n if (joint.includes(CName)) {\r\n joint = joint.filter(item => item !== CName);\r\n } else {\r\n joint.push(CName);\r\n }\r\n this.setState({ joint });\r\n }\r\n\r\n render() {\r\n\r\n const {\r\n projectName,\r\n projectType,\r\n programmeType,\r\n nationalPriority,\r\n phasing,\r\n city,\r\n countryName,\r\n riverName,\r\n owner,\r\n contactDetail,\r\n capital,\r\n fixed,\r\n financeSource,\r\n status,\r\n startDate,\r\n description,\r\n source,\r\n } = this.state;\r\n return (\r\n <div style={{ width: '100%', justifyContent: 'center' }} className=\"bp3-card bp3-elevation-2\">\r\n <H3>Enter information regarding new project</H3>\r\n <div style={{\r\n display: 'flex',\r\n width: '100%',\r\n flexDirection: 'row',\r\n justifyContent: 'space-evenly',\r\n flexWrap: 'wrap',\r\n }}\r\n >\r\n <Label style={{ width: 210 }}>\r\n Project Name (Proper)\r\n <input value={this.state.projectName} onChange={e => this.handleChange('projectName', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Project Type\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.projectType} onChange={e => this.handleChange('projectType', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n {projectTypes.map(type => (\r\n <option value={type}>{type}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Programme\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.programmeType} onChange={e => this.handleChange('programmeType', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n {programme.map(prog => (\r\n <option value={prog}>{prog}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n National Priotity\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.nationalPriority} onChange={e => this.handleChange('nationalPriority', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n <option value=\"0\">0</option>\r\n <option value=\"1\">1</option>\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Phasing\r\n <input value={this.state.phasing} onChange={e => this.handleChange('phasing', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Project Coordinates\r\n <div className=\"bp3-input-group\" style={{ width: 200 }}>\r\n <input type=\"text\" className=\"bp3-input\" value={this.props.coordinates} placeholder=\"Click on map-button\" />\r\n <button onClick={() => this.props.openMap()} type=\"button\" className=\"bp3-button bp3-minimal bp3-icon-send-to-map\" />\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n City or Province\r\n <input value={this.state.city} onChange={e => this.handleChange('city', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Country\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select value={this.state.countryName} onChange={e => this.handleChange('countryName', e.target.value)}>\r\n <option selected>Choose an item...</option>\r\n {country.map(count => (\r\n <option value={count}>{count}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n {this.state.countryName === 'Joint'\r\n && (\r\n\r\n <div\r\n style={{\r\n width: 350,\r\n display: 'flex',\r\n flexDirection: 'row',\r\n flexWrap: 'wrap',\r\n justifyContent: 'space-around',\r\n }}\r\n >\r\n {country.map((count) => {\r\n if (count !== 'Joint') {\r\n return (\r\n <label style={{\r\n flexDirection: 'row',\r\n display: 'flex',\r\n alignItems: 'center',\r\n width: 119,\r\n }}\r\n >\r\n <input onChange={() => this.joinCountries(count)} type=\"checkbox\" />\r\n <span className=\"bp3-control bp3-indicator\" />\r\n {count}\r\n </label>\r\n );\r\n }\r\n })}\r\n </div>\r\n )\r\n }\r\n <Label style={{ width: 210 }}>\r\n River Name\r\n <input onChange={e => this.handleChange('riverName', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n\r\n <Label style={{ width: 210 }}>\r\n Owner / Implementing Agent\r\n <input onChange={e => this.handleChange('owner', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Contact Details\r\n <input onChange={e => this.handleChange('contactDetail', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Capital cost (US$ 000)\r\n <input onChange={e => this.handleChange('capital', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Fixed O&M(US$ 000)\r\n <input onChange={e => this.handleChange('fixed', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Cost - Source\r\n <input onChange={e => this.handleChange('financeSource', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Status\r\n <div style={{ width: 200 }} className=\"bp3-select\">\r\n <select>\r\n <option selected>Choose an item...</option>\r\n {projectStatus.map(status => (\r\n <option value={status}>{status}</option>\r\n ))}\r\n </select>\r\n </div>\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Start Date\r\n <input onChange={e => this.handleChange('startDate', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Description/Notes\r\n <input onChange={e => this.handleChange('description', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n <Label style={{ width: 210 }}>\r\n Status and Description - Source\r\n <input onChange={e => this.handleChange('source', e.target.value)} className=\"bp3-input\" />\r\n </Label>\r\n\r\n </div>\r\n <button\r\n type=\"button\"\r\n disabled={!projectName && this.props.coordinates}\r\n onClick={() => this.props.create(\r\n projectName,\r\n projectType,\r\n programmeType,\r\n nationalPriority,\r\n phasing,\r\n city,\r\n countryName,\r\n riverName,\r\n owner,\r\n contactDetail,\r\n capital,\r\n fixed,\r\n financeSource,\r\n status,\r\n startDate,\r\n description,\r\n source,\r\n )}\r\n className=\"bp3-button bp3-icon-export\"\r\n >\r\nCreate\r\n </button>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\n\r\nexport default NewPanel;\r\n","import React, { Component } from 'react';\r\nimport { withRouter } from 'react-router-dom';\r\nimport {\r\n Map, Marker, Popup,\r\n} from 'react-leaflet';\r\nimport { GoogleLayer } from 'react-leaflet-google';\r\nimport {\r\n Tab, Tabs,\r\n} from '@blueprintjs/core';\r\nimport { CircleLoader } from 'react-spinners';\r\nimport $ from 'jquery';\r\nimport 'react-notifications/lib/notifications.css';\r\nimport axios from 'axios';\r\nimport { NotificationManager } from 'react-notifications';\r\nimport L from 'leaflet';\r\nimport 'leaflet-wfst';\r\nimport UpdatePanel from '../components/updatePanel.component';\r\nimport NewPanel from '../components/newPanel.component';\r\n\r\nclass UpdatePage extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n lat: -17.197727,\r\n lng: 31.76042,\r\n zoom: 4,\r\n selectMap: false,\r\n selected: [],\r\n loading: false,\r\n };\r\n this.mapRef = React.createRef();\r\n }\r\n\r\n upload=(\r\n projectName,\r\n projectType,\r\n programmeType,\r\n nationalPriority,\r\n phasing,\r\n city,\r\n countryName,\r\n riverName,\r\n owner,\r\n contactDetail,\r\n capital,\r\n fixed,\r\n financeSource,\r\n status,\r\n startDate,\r\n description,\r\n source,\r\n ) => {\r\n this.setState({ loading: true });\r\n const finalLat = this.state.selected[0];\r\n const finalLng = this.state.selected[1];\r\n const data = `<wfs:Transaction service=\"WFS\" version=\"1.0.0\"\r\n xmlns:wfs=\"http://www.opengis.net/wfs\"\r\n xmlns:zamcom=\"https://frikancarto.com/zamcom\"\r\n xmlns:gml=\"http://www.opengis.net/gml\"\r\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd http://www.openplans.org/topp https://frikancarto.com/geoserver/wfs/DescribeFeatureType?typename=zamcom:correct_zamwis\">\r\n <wfs:Insert>\r\n <zamcom:correct_zamwis>\r\n <zamcom:geom>\r\n <gml:Point srsName=\"http://www.opengis.net/gml/srs/epsg.xml#4326\"><gml:coordinates decimal=\".\" cs=\",\" ts=\" \">${parseFloat(finalLng)},${parseFloat(finalLat)}</gml:coordinates></gml:Point>\r\n </zamcom:geom>\r\n <zamcom:project_na>${projectName || 'Not Provided'}</zamcom:project_na>\r\n <zamcom:type>${projectType || 'Not Provided'}</zamcom:type>\r\n <zamcom:programme>${programmeType || 'Not Provided'}</zamcom:programme>\r\n <zamcom:national_p>${nationalPriority || 99}</zamcom:national_p>\r\n <zamcom:phasing>${phasing || 'Not Provided'}</zamcom:phasing>\r\n <zamcom:lat>${finalLat}</zamcom:lat>\r\n <zamcom:lng>${finalLng}</zamcom:lng>\r\n <zamcom:city>${city || 'Not Provided'}</zamcom:city>\r\n <zamcom:country>${countryName || 'Not Provided'}</zamcom:country>\r\n <zamcom:river_name>${riverName || 'Not Provided'}</zamcom:river_name>\r\n <zamcom:owner_impl>${owner || 'Not Provided'}</zamcom:owner_impl>\r\n <zamcom:constact_d>${contactDetail || 'Not Provided'}</zamcom:constact_d>\r\n <zamcom:capital_co>${capital || 0}</zamcom:capital_co>\r\n <zamcom:fixed_cost>${fixed || 0}</zamcom:fixed_cost>\r\n <zamcom:source>${financeSource || 'Not Provided'}</zamcom:source>\r\n <zamcom:status>${status || 'Not Provided'}</zamcom:status>\r\n <zamcom:start_date>${startDate || 'Not Provided'}</zamcom:start_date>\r\n <zamcom:descriptio>${description || 'Not Provided'}</zamcom:descriptio>\r\n <zamcom:status_sou>${source || 'Not Provided'}</zamcom:status_sou>\r\n </zamcom:correct_zamwis>\r\n </wfs:Insert>\r\n </wfs:Transaction>`;\r\n\r\n axios.post('https://frikancarto.com/geoserver/wfs',\r\n data,\r\n {\r\n headers:\r\n { 'Content-Type': 'text/xml' },\r\n }).then((response) => {\r\n if (response.data.includes('wfs:SUCCESS')) {\r\n NotificationManager.success(`Added project ${projectName} to database`, 'Success');\r\n }\r\n })\r\n .catch((error) => {\r\n console.warn(error);\r\n NotificationManager.warning('Update to project failed', 'Warning');\r\n });\r\n this.setState({ loading: false });\r\n }\r\n\r\n\r\n updateUpload=(project, history) => {\r\n this.setState({ loading: true });\r\n let updateToLocation = true;\r\n let finalLat = this.state.selected[0];\r\n let finalLng = this.state.selected[1];\r\n if (!finalLat && !finalLng) {\r\n finalLat = project.finalLat;\r\n finalLng = project.finalLng;\r\n updateToLocation = false;\r\n }\r\n\r\n const GeoData = `\r\n <wfs:Transaction service=\"WFS\" version=\"1.1.0\"\r\n xmlns:zamcom=\"https://frikancarto.com/zamcom\"\r\n xmlns:ogc=\"http://www.opengis.net/ogc\"\r\n xmlns:wfs=\"http://www.opengis.net/wfs\"\r\n xmlns:gml=\"http://www.opengis.net/gml\"\r\n xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\r\n xsi:schemaLocation=\"http://www.opengis.net/wfs http://schemas.opengis.net/wfs/1.0.0/WFS-transaction.xsd\">\r\n <wfs:Update typeName=\"zamcom:correct_zamwis\">\r\n <wfs:Property>\r\n <wfs:Name>geom</wfs:Name>\r\n <wfs:Value>\r\n <gml:Point srsName=\"http://www.opengis.net/gml/srs/epsg.xml#4326\"><gml:coordinates decimal=\".\" cs=\",\" ts=\" \">${parseFloat(finalLng)},${parseFloat(finalLat)}</gml:coordinates></gml:Point>\r\n </wfs:Value>\r\n </wfs:Property>\r\n <ogc:Filter>\r\n <ogc:FeatureId fid=\"${project.projectID}\"/>\r\n </ogc:Filter>\r\n </wfs:Update>\r\n </wfs:Transaction>\r\n `;\r\n const data = `<wfs:Transaction service=\"WFS\" version=\"1.1.0\"\r\n xmlns:ogc=\"http://www.opengis.net/ogc\"\r\n xmlns:wfs=\"http://www.opengis.net/wfs\"\r\n xmlns:zamcom=\"https://frikancarto.com/zamcom\"\r\n xmlns:gml=\"http://www.opengis.net/gml\">\r\n <wfs:Update typeName=\"zamcom:correct_zamwis\">\r\n <wfs:Property>\r\n <wfs:Name>project_na</wfs:Name>\r\n <wfs:Value>${project.projectName}</wfs:Value>\r\n </wfs:Property>\r\n <wfs:Property>\r\n <wfs:Name>type</wfs:Name>\r\n <wfs:Value>${project.projectType}</wfs:Value>\r\n </wfs:Property>\r\n <wfs:Property>\r\n <wfs:Name>programme</wfs:Name>\r\n <wfs:Value>${project.programmeType}</wfs:Value>\r\n </wfs:Property>\r\n <wfs:Property>\r\n <wfs:Name>national_p</wfs:Name>\r\n <wfs:Value>${parseInt(project.nationalPriority)}</wfs:Value>\r\n </wfs:Property>\r\n <wfs:Property>\r\n <wfs:Name>phasing</wfs:Name>\r\n <wfs:Value>${project.phasing}</wfs:Value>\r\n </wfs:Property>\r\n <wfs:Property>\r\n <wfs:Name>lat</wfs:Name>\r\n <wfs:Value>${project.finalLat}</wfs:Value>\r\n</wfs:Property>\r\n <wfs:Property>\r\n <wfs:Name>lng</wfs:Name>\r\n <wfs:Value>${project.finalLng}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>city</wfs:Name>\r\n<wfs:Value>${project.city}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>country</wfs:Name>\r\n<wfs:Value>${project.countryName}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>river_name</wfs:Name>\r\n<wfs:Value>${project.riverName}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>owner_impl</wfs:Name>\r\n<wfs:Value>${project.owner}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>status_sou</wfs:Name>\r\n<wfs:Value>${project.contactDetail}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>capital_co</wfs:Name>\r\n<wfs:Value>${project.capital}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>fixed_cost</wfs:Name>\r\n<wfs:Value>${parseInt(project.fixed)}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>source</wfs:Name>\r\n<wfs:Value>${project.financeSource}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>status</wfs:Name>\r\n<wfs:Value>${project.status}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>start_date</wfs:Name>\r\n<wfs:Value>${project.startDate}</wfs:Value>\r\n</wfs:Property>\r\n<wfs:Property>\r\n<wfs:Name>descriptio</wfs:Name>\r\n<wfs:Value>${project.description}</wfs:Value>\r\n<wfs:Property>\r\n<wfs:Name>status_sou</wfs:Name>\r\n<wfs:Value>\"${project.source}\"</wfs:Value>\r\n</wfs:Property>\r\n</wfs:Property>\r\n <ogc:Filter>\r\n <ogc:FeatureId fid=\"${project.projectID}\"/>\r\n </ogc:Filter>\r\n </wfs:Update>\r\n</wfs:Transaction>\r\n `;\r\n\r\n axios.post('https://frikancarto.com/geoserver/wfs',\r\n data,\r\n {\r\n headers:\r\n { 'Content-Type': 'text/xml' },\r\n }).then((response) => {\r\n if (response.data.includes('<wfs:totalUpdated>1</wfs:totalUpdated>') && !updateToLocation) {\r\n NotificationManager.success(`Updated project ${project.projectName} to database`, 'Success');\r\n history.goBack();\r\n }\r\n if (updateToLocation) {\r\n axios.post('https://frikancarto.com/geoserver/wfs', GeoData,\r\n {\r\n headers:\r\n { 'Content-Type': 'text/xml' },\r\n }).then((georesponse) => {\r\n \r\n if (georesponse.data.includes('<wfs:totalUpdated>1</wfs:totalUpdated>')) {\r\n NotificationManager.success(`Updated project ${project.projectName} to database`, 'Success');\r\n }\r\n history.goBack();\r\n }).catch((error) => {\r\n NotificationManager.warning('Update to project failed', 'Warning');\r\n console.warn(error);\r\n });\r\n }\r\n })\r\n .catch((error) => {\r\n NotificationManager.warning('Update to project failed', 'Warning');\r\n console.warn(error);\r\n });\r\n this.setState({ loading: false });\r\n\r\n }\r\n\r\n\r\n setStateFunction =(valueName, value) => {\r\n this.setState({ [valueName]: value });\r\n }\r\n\r\n renderProjects =() => {\r\n const projectMarkers = [];\r\n this.props.projects.forEach((project) => {\r\n if (project.geometry !== null) {\r\n projectMarkers.push(\r\n <Marker key={project.id} position={[project.geometry.coordinates[1], project.geometry.coordinates[0]]}>\r\n <Popup onOpen={() => this.setState({ selectedProject: project })}>\r\n <b>\r\n <center>PROJECT INFORMATION</center>\r\n </b>\r\n <center>\r\n {`Project Name:${project.properties.project_na}`}\r\n <center>\r\n {`Project Type:${project.properties.project_ty}`}\r\n <center>\r\n {`Country:${project.properties.country}`}\r\n </center>\r\n </center>\r\n </center>\r\n </Popup>\r\n </Marker>,\r\n );\r\n }\r\n });\r\n return projectMarkers;\r\n }\r\n\r\n openMap=() => {\r\n\r\n this.setState({ selectMap: true });\r\n }\r\n\r\n handleClick = (e) => {\r\n const map = this.mapRef.current;\r\n if (map != null) {\r\n const coord = map.leafletElement.mouseEventToLatLng(e.originalEvent);\r\n this.setState({ selected: [coord.lat.toFixed(5), coord.lng.toFixed(5)] });\r\n }\r\n }\r\n\r\n render() {\r\n return (\r\n <div>\r\n { this.state.loading\r\n ? (\r\n <div style={{\r\n width: '100%', display: 'flex', justifyContent: 'center', marginTop: 10,\r\n }}\r\n >\r\n <CircleLoader\r\n color=\"#033e8b\"\r\n size={80}\r\n />\r\n </div>\r\n )\r\n : (\r\n <div style={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <div className=\"bp3-card bp3-elevation-2\" style={{ width: '85%', marginTop: 10 }}>\r\n <Tabs\r\n animate\r\n id=\"TabsExample\"\r\n key=\"horizontal\"\r\n renderActiveTabPanelOnly\r\n vertical={false}\r\n >\r\n <Tab\r\n id=\"rx\"\r\n title=\"New project\"\r\n panel={(\r\n <NewPanel\r\n toState={value => this.setStateFunction(value)}\r\n create={(projectName,\r\n projectType,\r\n programmeType,\r\n nationalPriority,\r\n phasing,\r\n city,\r\n countryName,\r\n riverName,\r\n owner,\r\n contactDetail,\r\n capital,\r\n fixed,\r\n financeSource,\r\n status,\r\n startDate,\r\n description,\r\n source) => this.upload(\r\n projectName,\r\n projectType,\r\n programmeType,\r\n nationalPriority,\r\n phasing,\r\n city,\r\n countryName,\r\n riverName,\r\n owner,\r\n contactDetail,\r\n capital,\r\n fixed,\r\n financeSource,\r\n status,\r\n startDate,\r\n description,\r\n source,\r\n )}\r\n coordinates={this.state.selected.length !== 0 ? `${this.state.selected[0]},${this.state.selected[1]}` : ''}\r\n openMap={() => this.openMap()}\r\n />\r\n)}\r\n />\r\n <Tab\r\n id=\"ng\"\r\n title=\"Update Project\"\r\n panel={(\r\n <UpdatePanel\r\n state={this.state}\r\n projects={this.props.projects}\r\n create={(projectObj) => { this.updateUpload(projectObj, this.props.history); }}\r\n renderProjects={() => this.renderProjects()}\r\n openMap={() => this.openMap()}\r\n coordinates={this.state.selected.length !== 0 ? `${this.state.selected[0]},${this.state.selected[1]}` : ''}\r\n />\r\n)}\r\n />\r\n <Tabs.Expander />\r\n </Tabs>\r\n </div>\r\n {this.state.selectMap\r\n && (\r\n <div className=\"bp3-dialog-container\">\r\n <div className=\"bp3-dialog\">\r\n <div className=\"bp3-dialog-header\">\r\n <span className=\"bp3-icon-large bp3-icon-inbox\" />\r\n <h4 className=\"bp3-heading\">Select project location</h4>\r\n <button onClick={() => { this.setState({ selectMap: false }); }} aria-label=\"Close\" className=\"bp3-dialog-close-button bp3-button bp3-minimal bp3-icon-cross\" />\r\n </div>\r\n <div className=\"bp3-dialog-body\">\r\n <Map onClick={this.handleClick} ref={this.mapRef} center={[this.state.lat, this.state.lng]} zoom={this.state.zoom}>\r\n {this.state.selected.length !== 0\r\n && <Marker position={[this.state.selected[0], this.state.selected[1]]} />\r\n }\r\n <GoogleLayer googlekey=\"AIzaSyBKAY79l3Gr9RIEs8mHlMaU28Iy2s9UIxw\" maptype=\"SATELLITE\" />\r\n </Map>\r\n </div>\r\n <div className=\"bp3-dialog-footer\">\r\n <div className=\"bp3-dialog-footer-actions\">\r\n {this.state.selected.length !== 0\r\n && (\r\n <div style={{ width: '100%' }}>\r\n <p>\r\nLat:\r\n {this.state.selected[0]}\r\n, Long:\r\n {this.state.selected[1]}\r\n </p>\r\n <button onClick={() => this.setState({ selectMap: false })} className=\"bp3-button bp3-intent-primary\">Select</button>\r\n </div>\r\n )\r\n }\r\n\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n )\r\n}\r\n </div>\r\n )\r\n }\r\n\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(UpdatePage);\r\n","\r\nimport React, { Component } from 'react';\r\nimport {\r\n Map, Marker,\r\n} from 'react-leaflet';\r\nimport { GoogleLayer } from 'react-leaflet-google';\r\nimport { withRouter } from 'react-router-dom';\r\nimport ReactToPrint from 'react-to-print';\r\nimport { CSVLink } from 'react-csv';\r\n\r\nclass PrintPage extends Component {\r\n constructor(props) {\r\n super(props);\r\n this.state = {\r\n project: '',\r\n zoom: 13,\r\n animate: false,\r\n latlng: {\r\n lat: -17.197727,\r\n lng: 31.76042,\r\n },\r\n };\r\n this.inventoryMap = React.createRef();\r\n }\r\n\r\n componentDidMount() {\r\n if (this.props.selectedProject === '') {\r\n this.props.history.push('/tables');\r\n }\r\n }\r\n\r\n checkData=(data) => {\r\n if (data === null) {\r\n return 'empty (no data available)';\r\n }\r\n return data;\r\n }\r\n\r\n\r\n render() {\r\n let CSVdata;\r\n this.props.selectedProject === ''\r\n ? CSVdata = []\r\n : CSVdata = [\r\n ['Project Title', 'Participating Countries', 'Project Objectives', 'Project Description', 'Status', 'Capital cost (million US$)', 'O&M Cost (million US$)', 'Execution Period', ' Contact details', 'Project Sponsors'],\r\n [this.props.selectedProject.properties.project_na, this.props.selectedProject.properties.country, this.props.selectedProject.properties.type, this.props.selectedProject.properties.status, this.props.selectedProject.properties.capital_co, this.props.selectedProject.properties.fixed_cost, this.props.selectedProject.properties.start_date, this.props.selectedProject.properties.constact_d, this.props.selectedProject.properties.constact_d],\r\n ];\r\n return (\r\n <div>\r\n <ReactToPrint\r\n trigger={() => <button style={{ alignSelf: 'flex-end' }} type=\"button\" className=\"bp3-button bp3-icon-print\">Print project report</button>}\r\n content={() => this.componentRef}\r\n copyStyles\r\n />\r\n <CSVLink className=\"bp3-button bp3-icon-download\" data={CSVdata}>Download csv</CSVLink>\r\n <div style={{ backgroundColor: '#fff' }}>\r\n <div ref={el => (this.componentRef = el)} style={{ display: 'flex', justifyContent: 'center', width: '100%' }}>\r\n <div style={{ width: '75%', marginTop: 10, alignSelf: 'center' }}>\r\n <div>\r\n <h2 style={{ posistion: 'absolute' }}>Project Report</h2>\r\n </div>\r\n {this.props.selectedProject.properties !== undefined\r\n && (\r\n <div>\r\n <div style={{\r\n height: 400, width: '100%', marginBottom: 10, display: 'flex', flexDirection: 'column', justifyContent: 'center', alignItems: 'center',\r\n }}\r\n >\r\n {\r\n this.props.selectedProject.geometry !== null\r\n ? (\r\n <>\r\n <Map\r\n center={this.props.selectedProject.geometry !== null ? { lat: this.props.selectedProject.geometry.coordinates[1], lng: this.props.selectedProject.geometry.coordinates[0] } : { lat: 0, lng: 0 }}\r\n length={4}\r\n zoom={this.props.selectedProject.geometry !== null ? 13 : 3}\r\n >\r\n <GoogleLayer googlekey=\"AIzaSyBKAY79l3Gr9RIEs8mHlMaU28Iy2s9UIxw\" maptype=\"SATELLITE\" />\r\n {this.props.selectedProject.geometry !== null\r\n && <Marker position={[this.props.selectedProject.geometry.coordinates[1], this.props.selectedProject.geometry.coordinates[0]]} />\r\n }\r\n </Map>\r\n </>\r\n )\r\n : <h4 style={{ color: 'gray' }}>No valid location to render map on.</h4>\r\n }\r\n </div>\r\n <div id=\"projectReport\">\r\n <div className=\"table-responsive\">\r\n <table id=\"tbl\" className=\"table table-hover\">\r\n <thead>\r\n <tr>\r\n <th className=\"tableHeader\">\r\n General project information\r\n\r\n </th>\r\n <th style={{ backgroundColor: '#928989', color: 'white' }} />\r\n </tr>\r\n </thead>\r\n\r\n <tbody>\r\n <tr>\r\n <td>Project Title</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.project_na)}</td>\r\n </tr>\r\n <tr>\r\n <td>Participating Countries</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.country)}</td>\r\n </tr>\r\n <tr>\r\n <td>Project Objectives</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.type)}</td>\r\n </tr>\r\n <tr>\r\n <td>Project Description</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.descriptio)}</td>\r\n </tr>\r\n <tr>\r\n <td>Status</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.status)}</td>\r\n </tr>\r\n <tr>\r\n <td>Capital cost (million US$)</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.capital_co)}</td>\r\n </tr>\r\n <tr>\r\n <td>O&M Cost (million US$)</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.fixed_cost)}</td>\r\n </tr>\r\n <tr>\r\n <td>Execution Period</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.start_date)}</td>\r\n </tr>\r\n <tr>\r\n <td>Contact details</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.constact_d)}</td>\r\n </tr>\r\n <tr>\r\n <td>Project Sponsors</td>\r\n <td>{this.checkData(this.props.selectedProject.properties.constact_d)}</td>\r\n </tr>\r\n <tr>\r\n <td>Financier</td>\r\n <td>empty (no data available)</td>\r\n </tr>\r\n <tr>\r\n <td>Project Documentation</td>\r\n <td>empty (no data available)</td>\r\n </tr>\r\n </tbody>\r\n\r\n </table>\r\n </div>\r\n </div>\r\n </div>\r\n )}\r\n </div>\r\n </div>\r\n </div>\r\n </div>\r\n );\r\n }\r\n}\r\n\r\nexport default withRouter(PrintPage);\r\n","import React, { Component } from 'react';\nimport $ from 'jquery';\nimport './App.css';\nimport './assets/modal.css';\nimport { BrowserRouter as Router, Route } from 'react-router-dom';\nimport { NotificationContainer } from 'react-notifications';\nimport Navbar from './components/navbar';\nimport Hompage from './pages/home.page';\nimport Chartpage from './pages/charts.page';\nimport InventoryPage from './pages/inventory.page';\nimport UpdatePage from './pages/update.page';\nimport PrintPage from './pages/print.page';\n\nconst geoserverURL = 'http://197.211.238.164:8088/geoserver/ZSPMonitoring/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=ZSPMonitoring:correct_zamwis&outputFormat=application%2Fjson';\n// 'https://frikancarto.com/geoserver/zamcom/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=zamcom%3Acorrect_zamwis&outputFormat=application%2Fjson';\n\nclass App extends Component {\n constructor(props) {\n super(props);\n this.state = {\n modal: false,\n projects: [],\n selectedProject: '',\n selectedCountry: '',\n };\n }\n\n componentDidMount() {\n $.ajax({\n jsonp: true,\n url: geoserverURL,\n success: (data) => {\n this.setState({ projects: data.features.filter(project => project.properties.status !== 'Existing') });\n this.filterData(data.features.filter(project => project.properties.status !== 'Existing'));\n },\n });\n }\n\n selectProject=(project) => {\n this.setState({ selectedProject: project });\n }\n\nfilterData=(projects) => {\n this.filterStatusData(projects);\n this.filterCountryData(projects);\n this.filterType(projects);\n this.filterTypeStatus(projects);\n this.filterTypeStatusCountry(projects);\n}\n\nfilterStatusData=(projects) => {\n const Conceptual = projects.filter(i => i.properties.status === 'Conceptual');\n const ProjectStructuring = projects.filter(i => i.properties.status === 'Project Structuring');\n const Implementation = projects.filter(i => i.properties.status === 'Implementation');\n const Feasibility = projects.filter(i => i.properties.status === 'Feasibility');\n const Completion = projects.filter(i => i.properties.status === 'Completion');\n\n\n const statusArray = [\n ['Task', 'Status Count'],\n ['Conceptual', Conceptual.length],\n ['Feasibility', Feasibility.length],\n ['Project Structuring', ProjectStructuring.length],\n ['Implementation', Implementation.length],\n ['Completion', Completion.length],\n\n ];\n\n this.setState({ projectsStatus: statusArray });\n}\n\nfilterType=(projects) => {\n const Hydropower_total = projects.filter(i => i.properties.type === 'Hydropower' || i.properties.type === 'Hydropower/Irrigation/Water Supply' || i.properties.type === 'Hydropower; Environmental Flow' || i.properties.type === 'Hydropower; Flood Management; Environmental Flow' || i.properties.type === 'Hydropower; Flood Mangement' || i.properties.type === 'Mini Hydropower');\n const Irrigation_total = projects.filter(i => i.properties.type === 'Irrigation' || i.properties.type === 'Water Supply (irrigation)' || i.properties.type === 'Water Supply (Irrigation); Flood Management' || i.properties.type === 'Irrigation and Water Supply' || i.properties.type === 'Irrigation scheme' || i.properties.type === 'Irrigation/ Water Supply' || i.properties.type === 'Irrigation/Water Supply' || i.properties.type === 'Climate Change Adaptation and Water Management; Hydropower; Water Supply (irrigation, sanitation, domestic)' || i.properties.type === 'Dam' || i.properties.type === 'Flood Management');\n const Water_Supply_total = projects.filter(i => i.properties.type === 'Water Supply' || i.properties.type === 'Water Supply and Sanitation' || i.properties.type === 'Water Supply and Sanitation; Flood Mitigation');\n const Livelihoods = projects.filter(i => i.properties.type.toLowerCase().includes('livelihoods'));\n const typeArray = [\n ['Type', 'Type Count'],\n ['Hydropower', Hydropower_total.length],\n ['Irrigation', Irrigation_total.length],\n ['Water Supply and Sanitation', Water_Supply_total.length],\n ['Livelihoods', Livelihoods.length],\n ];\n this.setState({ projectsType: typeArray });\n}\n\nfilterTypeStatus=(projects) => {\n const conceptualHydroCount = projects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Conceptual').length;\n const feasibilityHydroCount = projects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Feasibility').length;\n const projectStructHydroCount = projects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Project Structuring').length;\n const ImplementationHydroCount = projects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Implementation').length;\n const CompletionHydroCount = projects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Completion').length;\n\n const conceptualIrrigationCount = projects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Conceptual').length;\n const feasaibilityIrrigationCount = projects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Feasibility').length;\n const projectStructIrrigationCount = projects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Project Structuring').length;\n const ImplementationIrrigationCount = projects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Implementation').length;\n const CompletionIrrigationCount = projects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Completion').length;\n\n\n const conceptualWaterSupCount = projects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Conceptual').length;\n const feasaibilityWaterSupCount = projects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Feasibility').length;\n const projectStructWaterSupCount = projects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Project Structuring').length;\n const ImplementationWaterSupCount = projects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Implementation').length;\n const CompletionWaterSupCount = projects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Completion').length;\n\n const conceptuallivCount = projects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Conceptual').length;\n const feasaibilitylivCount = projects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Feasibility').length;\n const projectStructlivCount = projects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Project Structuring').length;\n const ImplementationlivCount = projects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Implementation').length;\n const CompletionlivCount = projects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Completion').length;\n\n\n const data = [\n ['Status', 'Conceptual', 'Feasibility', 'Project Structuring', 'Implementation', 'Completion'],\n ['Hydropower', conceptualHydroCount, feasibilityHydroCount, projectStructHydroCount, ImplementationHydroCount, CompletionHydroCount],\n ['Irrigation', conceptualIrrigationCount, feasaibilityIrrigationCount, projectStructIrrigationCount, ImplementationIrrigationCount, CompletionIrrigationCount],\n ['Water Supply and Sanitation', conceptualWaterSupCount, feasaibilityWaterSupCount, projectStructWaterSupCount, ImplementationWaterSupCount, CompletionWaterSupCount],\n ['Livelihoods', conceptuallivCount, feasaibilitylivCount, projectStructlivCount, ImplementationlivCount, CompletionlivCount],\n ];\n\n this.setState({ projectsTypeStatus: data });\n}\n\nfilterTypeStatusCountry=(projects) => {\n const filteredCountryProjects = projects.filter(project => project.properties.country === this.state.selectedCountry);\n\n const conceptualHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Conceptual').length;\n const feasibilityHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Feasibility').length;\n const projectStructHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Project Structuring').length;\n const ImplementationHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Implementation').length;\n const CompletionHydroCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('hydro') && i.properties.status === 'Completion').length;\n\n const conceptualIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Conceptual').length;\n const feasaibilityIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Feasibility').length;\n const projectStructIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Project Structuring').length;\n const ImplementationIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Implementation').length;\n const CompletionIrrigationCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('irrigation') && i.properties.status === 'Completion').length;\n\n\n const conceptualWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Conceptual').length;\n const feasaibilityWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Feasibility').length;\n const projectStructWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Project Structuring').length;\n const ImplementationWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Implementation').length;\n const CompletionWaterSupCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('water') && i.properties.status === 'Completion').length;\n\n const conceptuallivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Conceptual').length;\n const feasaibilitylivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Feasibility').length;\n const projectStructlivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Project Structuring').length;\n const ImplementationlivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Implementation').length;\n const CompletionlivCount = filteredCountryProjects.filter(i => i.properties.type.toLowerCase().includes('livelihoods') && i.properties.status === 'Completion').length;\n\n\n const data = [\n ['Status', 'Conceptual', 'Feasibility', 'Project Structuring', 'Implementation', 'Completion'],\n ['Hydropower', conceptualHydroCount, feasibilityHydroCount, projectStructHydroCount, ImplementationHydroCount, CompletionHydroCount],\n ['Irrigation', conceptualIrrigationCount, feasaibilityIrrigationCount, projectStructIrrigationCount, ImplementationIrrigationCount, CompletionIrrigationCount],\n ['Water Supply and Sanitation', conceptualWaterSupCount, feasaibilityWaterSupCount, projectStructWaterSupCount, ImplementationWaterSupCount, CompletionWaterSupCount],\n ['Livelihoods', conceptuallivCount, feasaibilitylivCount, projectStructlivCount, ImplementationlivCount, CompletionlivCount],\n ];\n\n\n this.setState({ projectsTypeStatusCountry: data });\n}\n\n\nfilterCountryData = (projects) => {\n const Angola_total = projects.filter(i => i.properties.country === 'Angola');\n const Botswana_total = projects.filter(i => i.properties.country === 'Botswana');\n const Malawi_total = projects.filter(i => i.properties.country === 'Malawi');\n const Mozambique_total = projects.filter(i => i.properties.country === 'Mozambique');\n const Namibia_total = projects.filter(i => i.properties.country === 'Namibia');\n const Tanzania_total = projects.filter(i => i.properties.country === 'Tanzania');\n const Zambia_total = projects.filter(i => i.properties.country === 'Zambia');\n const Zimbabwe_total = projects.filter(i => i.properties.country === 'Zimbabwe');\n const Joint = projects.filter(i => (i.properties.country === 'Joint'));\n const countryArray = [\n ['Country', 'Project Count'],\n ['Angola', Angola_total.length],\n ['Botswana', Botswana_total.length],\n ['Malawi', Malawi_total.length],\n ['Mozambique', Mozambique_total.length],\n ['Namibia', Namibia_total.length],\n ['Tanzania', Tanzania_total.length],\n ['Zambia', Zambia_total.length],\n ['Zimbabwe', Zimbabwe_total.length],\n ['Joint', 5],\n ];\n this.setState({ projectsCountry: countryArray });\n}\n\n selectCountry =(country) => {\n this.setState({ selectedCountry: country });\n }\n\n modalToggle =() => {\n this.setState(prevState => ({\n modal: !prevState.modal,\n }));\n }\n\n\n render() {\n return (\n <>\n <Router basename=\"/INFO/scripts/ZSP_tool/code\">\n <div>\n <Navbar openModalFunction={() => this.modalToggle()} />\n <Route path=\"/\" exact render={routeProps => (<Hompage {...routeProps} {... this.state} />)} />\n <Route path=\"/charts\" exact render={routeProps => (<Chartpage {...routeProps} {... this.state} />)} />\n <Route path=\"/tables\" exact render={routeProps => (<InventoryPage {...routeProps} {... this.state} selectProjectFunction={project => this.selectProject(project)} />)} />\n <Route path=\"/update\" exact render={routeProps => (<UpdatePage {...routeProps} {... this.state} />)} />\n <Route path=\"/print\" exact render={routeProps => (<PrintPage {...routeProps} {... this.state} />)} />\n <NotificationContainer />\n </div>\n\n </Router>\n </>\n\n );\n }\n}\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read http://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit http://bit.ly/CRA-PWA'\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See http://bit.ly/CRA-PWA.'\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch(error => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (\n response.status === 404 ||\n (contentType != null && contentType.indexOf('javascript') === -1)\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log(\n 'No internet connection found. App is running in offline mode.'\n );\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister();\n });\n }\n}\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport App from './App';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\n\r\nReactDOM.render(<App />, document.getElementById('root'));\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: http://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}