{"version":3,"file":"component---src-pages-etap-tsx-06c959d5825015537f82.js","mappings":"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","sources":["webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Context/ETAPContext.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Context/ETAPContextProvider.tsx","webpack://marine-debris-tracker/./src/components/DataPlatform/Charts/PieDonutChart.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/ETAPGraphsContainer.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/ETAPGraphs.tsx","webpack://marine-debris-tracker/./src/util/data/formatEtapDownloadData.ts","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/SublistSelect.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Filters/ETAPRangeFilter.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Filters/ETAPFilter.tsx","webpack://marine-debris-tracker/./src/util/data/formatSurveyResultsData.ts","webpack://marine-debris-tracker/./src/util/data/SurveyResultstoCSV.ts","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Tables/SublistTable.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Tables/SurveyTable.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Tables/SurveyResults.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Tables/UserTable.tsx","webpack://marine-debris-tracker/./src/util/data/formatUserData.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/Tables/ETAPTables.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/DegradedBar.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/DegradedBarContainer.tsx","webpack://marine-debris-tracker/./src/components/Dashboards/EtapDashboard/ETAPDashboard.tsx","webpack://marine-debris-tracker/./src/pages/etap.tsx"],"sourcesContent":["import { createContext } from \"react\";\nimport { FilterType } from \"../../../../types/filters\";\nimport { ListType } from \"../../../../types/list\";\n\ntype MapDataType = { latitude: string; longitude: string; [k: string]: any };\n\ninterface ETAPContextType {\n lists?: ListType[];\n data?: MapDataType[];\n setData?: (s: MapDataType[]) => void;\n loading?: boolean;\n err?: string;\n filters?: FilterType;\n\n setFilters?: (f: FilterType) => void;\n\n loadData?: (f: FilterType) => Promise;\n}\n\nexport const ETAPContext = createContext({});\n","import React, { useEffect, useState } from \"react\";\nimport { FilterType, CheckboxType } from \"../../../../types/filters\";\nimport { ETAPContext } from \"./ETAPContext\";\nimport dayjs from \"dayjs\";\nimport { ListType, ProjectsEntity } from \"../../../../types/list\";\nimport { useETAPItemData, useItemData } from \"../../../../util/useItemData\";\nimport { useAllOrgData, useOrgData } from \"../../../../util/hooks/useOrgData\";\nimport useGlobalMaterials from \"../../../../util/hooks/useGlobalMaterials\";\nimport { useProjectsByList } from \"../../../../util/hooks/useProjects\";\n\n// interface DataPlatformState {\n// orgs: ListType[];\n// filters: FilterType;\n// }\n\n// interface DataPlatformActions {\n// LOAD_ORGS: \"LOAD_ORGS\";\n// UPDATE_SELECTED_ORG: \"UPDATE_SELECTED_ORG\";\n// LOAD_POINTS: \"LOAD_POINTS\";\n// LOAD_STATS: \"LOAD_STATS\";\n// LOAD_DETAILS: \"LOAD_DETAILS\";\n// }\n\nconst ETAPContextProvider = ({ children }: { children?: any }) => {\n const { org: organization, loading: orgLoading } = useOrgData(\"153\");\n const defaultFilters: FilterType = {\n checkboxes: [],\n date_type: \"range\",\n exact_date: dayjs().format(\"YYYY-MM-DD\"),\n start_date: dayjs().subtract(1, \"M\").format(\"YYYY-MM-DD\"),\n end_date: dayjs().format(\"YYYY-MM-DD\"),\n list: undefined,\n project: undefined,\n user_data: -1,\n showManual: false,\n };\n\n //TODO: Reimplement filter state management as reducer\n // const filterReducer = (prev: FilterType, action: any) => {};\n\n const [filters, setFilters] = useState(defaultFilters);\n\n const [data, setData] = useState([]);\n\n const { projects, loading: projectsLoading } = useProjectsByList(\"153\");\n const { loadData, loading: itemsLoading } = useETAPItemData(); // ETAP TO DO: use useETAPItemData\n const { loading: globalMaterialsLoading } = useGlobalMaterials();\n\n /*********************/\n /** Update handlers **/\n /*********************/\n useEffect(() => {\n setFilters({ ...filters, list: organization });\n }, [organization]);\n\n const dataPlatformState = {\n projects: projects,\n loading: projectsLoading || itemsLoading || globalMaterialsLoading,\n\n data,\n setData,\n\n filters,\n setFilters,\n\n loadData,\n };\n\n return (\n \n {children}\n \n );\n};\n\nexport default ETAPContextProvider;\n","import HighchartsReact from \"highcharts-react-official\";\nimport Highcharts from \"highcharts\";\nimport React from \"react\";\nimport { PieDonutChartDataType } from \"../../../types/charts\";\nimport { PieChartWrapper } from \"./ChartComponents\";\n\nconst PieDonutChart = ({ data }: { data: PieDonutChartDataType[] }) => {\n var colors = Highcharts.getOptions().colors;\n\n let layer1Data = [];\n let layer2Data = [];\n for (let i = 0; i < data.length; i++) {\n layer1Data.push({\n name: data[i].drilldown.name,\n y: data[i].y,\n color: colors[i],\n });\n // console.log(\"colors\", colors[i]);\n for (let j = 0; j < data[i].drilldown.data.length; j++) {\n const brightness = 0.2 - j / data[i].drilldown.data.length / 5;\n layer2Data.push({\n name: data[i].drilldown.categories[j],\n y: data[i].drilldown.data[j],\n color: Highcharts.color(colors[i]).brighten(brightness).get(),\n });\n // console.log(\"colors\", Highcharts.color(data[i].color));\n }\n }\n\n const chartConfig: Highcharts.Options = {\n chart: {\n plotBackgroundColor: null,\n plotBorderWidth: null,\n plotShadow: false,\n animation: false,\n type: \"pie\",\n },\n title: {\n text: null,\n },\n tooltip: {\n pointFormat: \"{series.name}: {point.percentage:.1f}%\",\n },\n accessibility: {\n point: {\n valueSuffix: \"%\",\n },\n },\n credits: {\n enabled: false,\n },\n plotOptions: {\n pie: {\n allowPointSelect: true,\n cursor: \"pointer\",\n dataLabels: {\n enabled: false,\n },\n showInLegend: false,\n center: [\"50%\", \"50%\"],\n },\n },\n series: [\n {\n name: \"ETAP 1.0\",\n data: layer1Data,\n size: \"60%\",\n dataLabels: {\n formatter: function () {\n return this.y > 0 ? this.point.name : null;\n },\n color: \"#ffffff\",\n distance: 10,\n },\n },\n {\n name: \"ETAP 2.0\",\n data: layer2Data,\n size: \"80%\",\n innerSize: \"60%\",\n dataLabels: {\n enabled: false,\n // formatter: function () {\n // // display only if larger than 1\n // return this.y > 1\n // ? \"\" + this.point.name + \": \" + this.y + \"%\"\n // : null;\n // },\n },\n id: \"versions\",\n },\n ],\n responsive: {\n rules: [\n {\n condition: {\n maxWidth: 400,\n },\n chartOptions: {\n series: [\n {},\n {\n id: \"versions\",\n dataLabels: {\n enabled: false,\n },\n },\n ],\n },\n },\n ],\n },\n };\n return (\n \n \n \n );\n};\n\nexport default PieDonutChart;\n","import React from \"react\";\nimport styled from \"styled-components\";\nimport { colors } from \"../../../styles/colors\";\nimport numberWithCommas from \"../../../util/numberWithCommas\";\nimport BarChart from \"../../DataPlatform/Charts/BarChart\";\nimport PieChart from \"../../DataPlatform/Charts/PieChart\";\nimport PieDonutChart from \"../../DataPlatform/Charts/PieDonutChart\";\nimport ETAPGraphs from \"./ETAPGraphs\";\n// import PieChart from \"../../components/Dashboard/PieChart\";\n// import BarChart from \"../../components/Dashboard/BarChart\";\n\nconst MapStatsWrapper = styled.div`\n font-family: \"Lato\";\n color: #536275;\n display: flex;\n flex-direction: column;\n padding-left: 20px;\n @media only screen and (max-width: 768px) {\n margin-bottom: 20px;\n }\n`;\n\nconst MapStatsTitle = styled.h2`\n font-weight: 400;\n font-size: 22px;\n margin-bottom: 0px;\n margin-top: -50px;\n width: auto;\n background-color: white;\n z-index: 1200;\n padding: 19px;\n margin-left: -20px;\n width: 300px;\n\n @media only screen and (max-width: 991px) {\n margin: 0px;\n padding-left: 0px;\n }\n @media only screen and (max-width: 478px) {\n width: auto;\n }\n`;\n\nconst MapStatsTotals = styled.div`\n display: flex;\n flex-direction: column;\n`;\n\nconst TotalLabel = styled.span`\n font-weight: 700;\n margin: 10px 0px;\n`;\n\nconst Total = styled.span`\n color: ${colors.orange};\n`;\n\nconst MapStatsGraphs = styled.div`\n display: flex;\n flex-direction: row;\n`;\n\nconst Chart = styled.div`\n margin-left: ${({ left }) => (left ? \"20px\" : \"0px\")};\n\n @media only screen and (max-width: 768px) {\n margin-left: 0px;\n }\n`;\n\nconst Charts = styled.div`\n display: flex;\n\n @media only screen and (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nconst ChartWrapper = styled.div`\n // width: 100%;\n`;\n\nexport const TooManyItems = () => {\n return (\n
\n

Too many items in result set

\n \n Our platform can't load this much data, try narrowing the date range and\n try again.\n \n
\n );\n};\n\nconst ETAPGraphsContainer = ({\n itemCount,\n eventCount,\n pieData,\n pieDonutData,\n barData,\n loading,\n material,\n}: {\n itemCount?: number;\n eventCount?: number;\n pieData?: any;\n pieDonutData?: any;\n barData?: any;\n loading?: boolean;\n material?: String;\n}) => {\n if (material !== undefined) material = \"(\" + material + \")\";\n const maxItemCount = Math.pow(10, 6);\n\n return (\n
\n {itemCount < maxItemCount ? (\n \n \n {material === undefined || material === \"(ALL)\" ? (\n \n

Distribution of All Materials

\n \n {loading ? (\n
Loading...
\n ) : pieData && pieData.length > 0 ? (\n \n ) : (\n
Please select a sublist to show distribution
\n )}\n
\n
\n ) : (\n \n

Distribution of {material}

\n \n {loading ? (\n
Loading...
\n ) : pieDonutData && pieDonutData.length > 0 ? (\n \n ) : (\n
Please select a sublist to show top items
\n )}\n
\n
\n )}\n \n

Most Tracked Items {material}

\n \n {loading ? (\n
Loading...
\n ) : barData && barData.length > 0 ? (\n \n ) : (\n
Please select a sublist to show top items
\n )}\n
\n
\n
\n
\n ) : (\n \n )}\n
\n );\n};\n\nexport default ETAPGraphsContainer;\n","import React, { useEffect, useState } from \"react\";\nimport {\n BarChartType,\n PieChartDataType,\n PieDonutChartDataType,\n} from \"../../../types/charts\";\nimport {\n geojsonToBar,\n geojsonToBarETAP,\n geojsonToMaterialBarETAP,\n geojsonToMaterialPie,\n geojsonToPie,\n geojsonToPieDonut,\n} from \"../../../util/data/chartFunctions\";\nimport ETAPGraphsContainer from \"./ETAPGraphsContainer\";\n\nconst ETAPGraphs = ({\n geojson,\n loading,\n material,\n}: {\n geojson: GeoJSON.FeatureCollection;\n loading: boolean;\n material?: String;\n}) => {\n const [itemCount, setItemCount] = useState(0);\n const [eventCount, setEventCount] = useState(0);\n const [pieData, setPieData] = useState([]);\n const [pieDonutData, setPieDonutData] = useState();\n const [barData, setBarData] = useState([]);\n\n // calculate new counts\n useEffect(() => {\n if (!geojson) {\n return;\n }\n let newItemCount = 0;\n let newEventCount = 0;\n geojson.features.forEach((item) => {\n newItemCount += parseInt(item.properties.quantity, 10);\n newEventCount += 1;\n });\n setItemCount(newItemCount);\n setEventCount(newEventCount);\n }, [geojson]);\n\n // new pie data\n useEffect(() => {\n const newPieData = geojsonToPie(geojson);\n setPieData(newPieData);\n }, [geojson, material]);\n\n // new pie donut data\n useEffect(() => {\n if (material || material !== \"ALL\") {\n const newPieDonutData = geojsonToPieDonut(geojson, material);\n setPieDonutData(newPieDonutData);\n }\n }, [geojson, material]);\n\n // new bar data\n useEffect(() => {\n if (!material || material === \"ALL\") {\n const data = geojsonToBarETAP(geojson);\n setBarData(data);\n } else {\n const newBarData = geojsonToMaterialBarETAP(geojson, material);\n setBarData(newBarData);\n }\n }, [geojson, material]);\n\n return (\n <>\n \n \n );\n};\n\nexport default ETAPGraphs;\n","import { FeatureCollection, Geometry } from \"geojson\";\nimport { cloneDeep } from \"lodash\";\n\nconst etap_metadata = [\n \"list_name\",\n \"sublist_name\",\n \"material\",\n \"etap_1_name\",\n \"etap_2_name\",\n \"quantity\",\n \"degraded\",\n \"description\",\n \"latitude\",\n \"longitude\",\n \"altitude\",\n \"radius\",\n \"location\",\n \"timestamp\",\n \"dt\",\n \"project_name\",\n \"username\",\n \"manual_upload\",\n \"eventname\",\n \"id\",\n \"log_index\",\n];\n\nexport const formatEtapDownloadData = (\n geojson: FeatureCollection,\n allOrg: boolean\n) => {\n const comparatorList = etap_metadata;\n const geojsonCopy = cloneDeep(geojson);\n // ensure data properties match metadata doc\n geojsonCopy.features.forEach((feature) => {\n Object.keys(feature.properties).forEach((keyname) => {\n if (comparatorList.includes(keyname)) return;\n delete feature.properties[keyname];\n });\n });\n return geojsonCopy;\n};\n","import React, { useContext, useEffect } from \"react\";\nimport { DataPlatformContext } from \"../../../context/DataPlatform/DataPlatformContext\";\nimport { getOrganization } from \"../../../dataApi/getOrganizations\";\nimport { getEtapProject } from \"../../../dataApi/getProjects\";\nimport { useProjectsByList } from \"../../../util/hooks/useProjects\";\nimport Select from \"../../Forms/Select\";\nimport { ETAPContext } from \"./Context/ETAPContext\";\n\nconst SublistSelect = () => {\n const { filters, setFilters } = useContext(ETAPContext);\n const { projects, loading: projectsLoading } = useProjectsByList(\"153\");\n\n // create list name for select to account for long names\n const createListName = (name: string) => {\n if (name.length > 30) {\n return name.substr(0, 30) + \"...\";\n } else {\n return name;\n }\n };\n\n const selectData: { label: string; value: string }[] = [\n {\n label: \"All Sublists\",\n value: \"-1\",\n },\n ];\n\n if (projects) {\n projects.forEach((project1) => {\n if (project1.verified != 0) {\n selectData.push({ label: project1.name, value: `${project1.id}` });\n }\n });\n }\n\n return (\n {\n if (val === \"-1\") {\n setFilters({ ...filters, project: \"all\" });\n return;\n }\n // // fetch detailed list data\n const project = await getEtapProject(val);\n setFilters({ ...filters, project: project });\n }}\n data={selectData}\n title={\n !filters.project && projectsLoading\n ? \"Loading...\"\n : filters.project\n ? filters.project === \"all\"\n ? \"All Sublists\"\n : createListName(filters.project.name)\n : \"Select a Sublist\"\n }\n >\n );\n};\n\nexport default SublistSelect;\n","import RadioGroup from \"@material-ui/core/RadioGroup\";\nimport styled from \"styled-components\";\nimport React, { useContext } from \"react\";\nimport RadioButton from \"../../../Forms/RadioButton\";\nimport { ETAPContext } from \"../Context/ETAPContext\";\n\nexport const FilterRadioGroup = styled(RadioGroup)`\n color: rgba(255, 255, 255, 1);\n`;\n\nconst FilterDate = styled.input`\n margin: 10px 0px;\n font-family: \"Lato\";\n @media only screen and (max-width: 478px) {\n margin-left: 0px;\n margin-right: 0px;\n }\n`;\n\nconst RadioGroupFilterLabel = styled.span`\n margin-right: 10px;\n`;\n\nconst ETAPRangeFilter = () => {\n const { filters, setFilters } = useContext(ETAPContext);\n\n const setDateType = (type: \"all\" | \"exact\" | \"range\") => {\n setFilters({ ...filters, date_type: type });\n };\n\n const handleDateChange = (e) => {\n setFilters({ ...filters, [e.target.name]: e.target.value });\n };\n\n return (\n \n {\n setDateType(\"all\");\n }}\n >\n All\n \n {/* Exact Date */}\n {\n setDateType(\"exact\");\n }}\n >\n Exact\n \n \n {/* Date Range */}\n {\n setDateType(\"range\");\n }}\n >\n Range\n \n \n \n \n );\n};\n\nexport default ETAPRangeFilter;\n","import React, { useContext, useRef, useState } from \"react\";\nimport Button from \"../../../Button/Button\";\nimport {\n ETAPFiltersContainer,\n FiltersTitle,\n FiltersWrapper,\n} from \"../../../DataPlatform/Filters/FiltersComponents\";\nimport styled from \"styled-components\";\nimport { colors } from \"../../../../styles/colors\";\nimport dayjs from \"dayjs\";\nimport GeoJSONtoCSV from \"../../../../util/data/GeoJSONtoCSV\";\nimport { formatEtapDownloadData } from \"../../../../util/data/formatEtapDownloadData\";\nimport { JSONtoCSV } from \"../../../../util/data/JSONtoCSV\";\nimport { DebrisTrackerContext } from \"../../../../context/DebrisTrackerContext\";\nimport SublistSelect from \"../SublistSelect\";\nimport ETAPRangeFilter from \"./ETAPRangeFilter\";\nimport { ETAPContext } from \"../Context/ETAPContext\";\nimport { FilterType } from \"../../../../types/filters\";\n\nconst FilterErrorMessage = styled.p`\n color: ${colors.orange};\n text-align: center;\n margin-bottom: 0px;\n`;\n\nconst ETAPFilters = ({ geojson }: { geojson: GeoJSON.FeatureCollection }) => {\n const { filters, loadData, setData, loading } = useContext(ETAPContext);\n\n useContext(DebrisTrackerContext);\n\n const linkRef = useRef(undefined);\n\n const [err, setErr] = useState(\"\");\n\n const setErrMessage = (str: string) => {\n setErr(str);\n setTimeout(() => {\n setErr(\"\");\n }, 2000);\n };\n\n const filtersRef = useRef(filters);\n\n const shouldFetch = () => {\n if (\n filters.date_type === \"range\" &&\n dayjs(filters.start_date).isAfter(filters.end_date)\n ) {\n setErrMessage(\"Invalid Date Range\");\n return false;\n }\n\n if (filters.project) {\n if (\n filters.project !== filtersRef.current.project ||\n filters.date_type !== filtersRef.current.date_type ||\n (filters.date_type === \"range\" &&\n filters.start_date !== filtersRef.current.start_date) ||\n (filters.date_type === \"range\" &&\n filters.end_date !== filtersRef.current.end_date) ||\n (filters.date_type === \"exact\" &&\n filters.exact_date !== filtersRef.current.exact_date)\n ) {\n return true;\n }\n }\n return false;\n };\n\n const searchData = async () => {\n if (shouldFetch()) {\n const res = await loadData(filters);\n setData(res);\n filtersRef.current = filters;\n } else {\n filtersRef.current = filters;\n }\n };\n\n const DownloadButton = () => {\n const ButtonWrapper = styled.div`\n margin-top: 10px;\n text-align: center;\n padding: 15px 0px;\n cursor: pointer;\n `;\n\n const handleDownload = () => {\n // compute data and convert to csv\n const newDownloadData = GeoJSONtoCSV(\n formatEtapDownloadData(geojson, filters.project === \"all\")\n );\n const csvData = JSONtoCSV(newDownloadData);\n\n // store data in new blob and create a url\n const csvBlob = new Blob([csvData], { type: \"text/csv\" });\n const url = URL.createObjectURL(csvBlob);\n\n // set tags href to blob url\n if (linkRef.current) {\n linkRef.current.href = url;\n }\n // click the tag\n linkRef.current && linkRef.current.click();\n };\n\n return (\n <>\n \n Download Selected Sublist(s) Data\n \n \n \n );\n };\n\n return (\n \n Filter\n {err && {err}}\n \n \n \n \n Search\n \n {geojson && geojson.features.length > 0 && }\n \n \n );\n};\n\nexport default ETAPFilters;\n","export const formatSurveyResultsData = (\n surveyResults: any[],\n allOrg?: boolean\n) => {\n const output: any[] = [];\n\n // ensure data properties match metadata doc\n surveyResults.forEach((result) => {\n const answers: {} = {};\n for (let i = 0; i < result[\"results_json\"].length; i++) {\n answers[i + 1 + \". \" + result[\"survey_json\"][\"questions\"][i][\"text\"]] =\n result[\"results_json\"][i];\n }\n output.push({\n user_id: result.user_id,\n log_id: result.log_id,\n ...answers,\n });\n });\n return output;\n};\n","export default (data) => {\n console.log(\"survey data\", data);\n let new_data = [];\n // data = data.features;\n // for (let datum of data) {\n // new_data.push(datum.properties);\n // }\n return data;\n};\n","import React from \"react\";\nimport { ProjectsEntity } from \"../../../../types/list\";\n\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport _ from \"lodash\";\nimport {\n TableContainer,\n TableTitle,\n TableTitleRow,\n} from \"../../../../styles/TableComponents\";\nimport { TableFooter, TablePagination } from \"@material-ui/core\";\n// import { TablePagination } from '@mui/material';\nimport { colors } from \"../../../../styles/colors\";\nimport numberWithCommas from \"../../../../util/numberWithCommas\";\nimport { useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useListDashboardData } from \"../../../../util/hooks/useListDashboardData\";\nimport styled from \"styled-components\";\nimport { formatSurveyResultsData } from \"../../../../util/data/formatSurveyResultsData\";\nimport { JSONtoCSV } from \"../../../../util/data/JSONtoCSV\";\nimport { convertToGeoJSON } from \"../../../../util/data/convertToGeoJSON\";\nimport SurveyResultstoCSV from \"../../../../util/data/SurveyResultstoCSV\";\ninterface ProjectTableEntity extends ProjectsEntity {\n itemCount: number;\n logCount: number;\n}\n\nconst SublistsTable = ({\n projectsData,\n itemsData,\n listImage,\n isPublic,\n mdtEtaps,\n}: {\n listImage: string;\n projectsData: ProjectsEntity[];\n itemsData: any[];\n isPublic: boolean;\n mdtEtaps: any;\n}) => {\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(5);\n\n const groupedProjects = _.groupBy(itemsData, \"project_id\");\n const itemsByProjectId = Object.entries(groupedProjects);\n\n const logsByProject = itemsByProjectId.map((value) => {\n const groupedByLog = _.groupBy(value[1], \"log_index\");\n return [value[0], Object.keys(groupedByLog).length];\n });\n\n const headers = [\n // { name: \"Id\", label: \"id\" },\n { name: \"Project Name\", label: \"name\" },\n { name: \"Verified\", label: \"verified\" },\n ];\n\n const SublistsTableRow = ({ project }: { project: ProjectTableEntity }) => {\n const [projectData, setProjectData] = useState(project);\n\n return (\n \n \n {projectData.icon_uri ? (\n \n ) : (\n \n )}\n \n {/* logsByProject */}\n {headers.map((header, i) => (\n \n {projectData[header.label]}\n \n ))}\n\n {numberWithCommas(projectData.itemCount)}\n {numberWithCommas(projectData.logCount)}\n \n );\n };\n const { surveyResults } = useListDashboardData(\"153\");\n //download survey\n const DownloadButton = () => {\n const ButtonWrapper = styled.div`\n padding: 10px 24px; /* Some padding */\n cursor: pointer; /* Pointer/hand icon */\n float: left; /* Float the buttons side by side */\n margin-left: 1rem;\n font-size: 12pt;\n color: black;\n border: 1px solid #bfd4e3;\n background: rgb(245, 249, 255, 0.5);\n `;\n\n // console.log(\"test\", test)\n const linkRef = useRef(undefined);\n const handleDownload = () => {\n // compute data and convert to csv\n const newDownloadData = SurveyResultstoCSV(\n formatSurveyResultsData(surveyResults)\n );\n\n const csvData = JSONtoCSV(newDownloadData);\n\n // store data in new blob and create a url\n const csvBlob = new Blob([csvData], { type: \"text/csv\" });\n const url = URL.createObjectURL(csvBlob);\n\n // set tags href to blob url\n if (linkRef.current) {\n linkRef.current.href = url;\n }\n // click the tag\n linkRef.current && linkRef.current.click();\n };\n\n return (\n <>\n \n Download All Sublist Data\n \n \n \n );\n };\n\n const ProjectsTableTitle = () => {\n return (\n \n All ETAP Verified Sublists\n {projectsData && }\n \n );\n };\n\n const cellStyle = { color: colors.white };\n\n //add computed aggregates to project object\n // populates \"Items\" and \"Logs\" columns\n projectsData.forEach((project) => {\n if (mdtEtaps) {\n const itemsObject = {};\n mdtEtaps.forEach((x) => {\n itemsObject[x[\"project\"]] = x[\"list_data\"].length;\n });\n project[\"itemCount\"] = itemsObject[project.id] || 0;\n }\n\n if (logsByProject.length > 0) {\n const logsObject = {};\n logsByProject.forEach((x) => {\n logsObject[x[0]] = x[1];\n });\n project[\"logCount\"] = logsObject[project.id] || 0;\n }\n });\n\n const emptyItemsRows =\n rowsPerPage -\n Math.min(rowsPerPage, projectsData.length - page * rowsPerPage);\n\n return (\n \n \n \n \n \n \n {headers.map((header, i) => (\n \n {header.name}\n \n ))}\n Items\n Logs\n \n \n \n {itemsByProjectId &&\n logsByProject &&\n projectsData\n .filter((project) => project.verified !== 0)\n .sort(\n (a: ProjectTableEntity, b: ProjectTableEntity) =>\n b.logCount - a.logCount\n )\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((project: ProjectTableEntity, i) => (\n \n ))}\n {emptyItemsRows > 0 && (\n \n \n \n )}\n \n \n \n \n ) => {\n setPage(newPage);\n }}\n onChangeRowsPerPage={(e: { target: { value: string } }) => {\n setRowsPerPage(parseInt(e.target.value, 10));\n setPage(0);\n }}\n />\n \n \n
\n
\n );\n};\n\nexport default SublistsTable;\n","import React from \"react\";\nimport { ProjectsEntity } from \"../../../../types/list\";\n\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport _ from \"lodash\";\nimport {\n TableContainer,\n TableTitle,\n TableTitleRow,\n} from \"../../../../styles/TableComponents\";\nimport { IconButton, TableFooter, TablePagination } from \"@material-ui/core\";\nimport { colors } from \"../../../../styles/colors\";\nimport numberWithCommas from \"../../../../util/numberWithCommas\";\nimport { useRef } from \"react\";\nimport { useState } from \"react\";\nimport { useListDashboardData } from \"../../../../util/hooks/useListDashboardData\";\nimport { SurveyData } from \"../../../../types/survey\";\nimport styled from \"styled-components\";\nimport { formatSurveyResultsData } from \"../../../../util/data/formatSurveyResultsData\";\nimport { JSONtoCSV } from \"../../../../util/data/JSONtoCSV\";\nimport { convertToGeoJSON } from \"../../../../util/data/convertToGeoJSON\";\nimport SurveyResultstoCSV from \"../../../../util/data/SurveyResultstoCSV\";\ninterface ProjectTableEntity extends ProjectsEntity {\n result: SurveyData;\n}\n\nconst SurveyTable = ({\n projectsData,\n itemsData,\n listImage,\n isPublic,\n}: {\n listImage: string;\n projectsData: ProjectsEntity[];\n itemsData: any[];\n isPublic: boolean;\n}) => {\n const { surveyResults } = useListDashboardData(\"153\");\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(5);\n\n const groupedProjects = _.groupBy(itemsData, \"project_id\");\n const itemsByProjectId = Object.entries(groupedProjects);\n\n const logsByProject = itemsByProjectId.map((value) => {\n const groupedByLog = _.groupBy(value[1], \"log_index\");\n return [value[0], Object.keys(groupedByLog).length];\n });\n\n const headers = [\n { name: \"Q1: Organization Name\", label: \"0\" },\n { name: \"Q2: Where are you located?\", label: \"1\" },\n { name: \"Q3: How are you funded?\", label: \"2\" },\n { name: 'Q4: Specify \"other\" funding?', label: \"3\" },\n { name: \"Q5: Cleanup Type\", label: \"4\" },\n { name: \"Q6: Other General Observations\", label: \"5\" },\n ];\n\n const ProjectsTableRow = ({ result }: { result: SurveyData }) => {\n const linkRef = useRef(undefined);\n\n // const [projectData, setProjectData] = useState(project);\n\n // console.log(\"survey\", result);\n\n return (\n \n {/* {result[\"user_id\"]} */}\n {headers.map((header, i) => (\n \n {result[\"results_json\"][parseInt(header.label, 10)]}\n \n ))}\n \n );\n };\n\n const linkRef = useRef(undefined);\n //download survey\n const DownloadButton = () => {\n const ButtonWrapper = styled.div`\n padding: 10px 24px; /* Some padding */\n cursor: pointer; /* Pointer/hand icon */\n float: left; /* Float the buttons side by side */\n margin-left: 1rem;\n font-size: 12pt;\n color: black;\n border: 1px solid #bfd4e3;\n background: rgb(245, 249, 255, 0.5);\n `;\n\n let geojson = convertToGeoJSON(surveyResults);\n\n let test = JSON.stringify(geojson);\n\n // console.log(\"test\", test)\n\n const handleDownload = () => {\n // compute data and convert to csv\n const newDownloadData = SurveyResultstoCSV(\n formatSurveyResultsData(surveyResults)\n );\n\n const csvData = JSONtoCSV(newDownloadData);\n\n // store data in new blob and create a url\n const csvBlob = new Blob([csvData], { type: \"text/csv\" });\n const url = URL.createObjectURL(csvBlob);\n\n // set tags href to blob url\n if (linkRef.current) {\n linkRef.current.href = url;\n }\n // click the tag\n linkRef.current && linkRef.current.click();\n };\n\n return (\n <>\n \n Download All Survey Data\n \n \n \n );\n };\n\n const ProjectsTableTitle = () => {\n return (\n \n Answers {surveyResults && }\n \n );\n };\n\n const cellStyle = { color: colors.white };\n\n //add computed aggregates to project object\n projectsData.forEach((project) => {\n let projectItemCount: number;\n let projectLogCount: number | string;\n\n if (itemsByProjectId.length > 0) {\n const filtered = itemsByProjectId.filter((item) => {\n if (item[0] === \"null\" && project.name === \"Default\") {\n return true;\n }\n return item[0] === project.id;\n });\n if (filtered.length > 0) {\n projectItemCount = filtered.reduce(\n (prev, curr) => (curr[1].length += prev),\n 0\n );\n }\n }\n\n if (logsByProject.length > 0) {\n const filtered = logsByProject.filter((item) => {\n if (item[0] === \"null\" && project.name === \"Default\") {\n return true;\n }\n return item[0] === project.id;\n });\n if (filtered.length > 0) {\n projectLogCount = filtered.reduce((prev, curr) => {\n if (typeof curr[1] === \"number\") {\n return (prev += curr[1]);\n } else if (typeof curr[1] === \"string\") {\n return (prev += parseInt(curr[1], 10));\n }\n }, 0);\n }\n }\n\n project[\"itemCount\"] = projectItemCount || 0;\n project[\"logCount\"] = projectLogCount || 0;\n });\n\n const emptyItemsRows =\n rowsPerPage -\n Math.min(rowsPerPage, projectsData.length - page * rowsPerPage);\n\n return (\n \n \n \n \n \n {headers.map((header, i) => (\n \n {header.name}\n \n ))}\n \n \n \n {surveyResults\n ?.slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((SurveyResult: SurveyData, i) => (\n \n ))}\n {emptyItemsRows > 0 && (\n \n \n \n )}\n \n \n \n \n ) => {\n setPage(newPage);\n }}\n onChangeRowsPerPage={(e: { target: { value: string } }) => {\n setRowsPerPage(parseInt(e.target.value, 10));\n setPage(0);\n }}\n />\n \n \n
\n
\n );\n};\n\nexport default SurveyTable;\n","import React, { useContext, useEffect, useRef } from \"react\";\nimport { ProjectsEntity } from \"../../../../types/list\";\nimport { colors } from \"../../../../styles/colors\";\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport _ from \"lodash\";\nimport { TableContainer, TableTitle } from \"../../../../styles/TableComponents\";\nimport { useState } from \"react\";\nimport { verifyProjectById } from \"../../../../dataApi/verifyProject\";\nimport { useListDashboardData } from \"../../../../util/hooks/useListDashboardData\";\nimport { BarChartType, PieChartDataType } from \"../../../../types/charts\";\n// import { Chart } from \"highcharts\";\nimport styled from \"styled-components\";\nimport BarChart from \"../../../DataPlatform/Charts/BarChart\";\nimport PieChart from \"../../../DataPlatform/Charts/PieChart\";\nimport SurveyTable from \"./SurveyTable\";\nimport GeoJSONtoCSV from \"../../../../util/data/GeoJSONtoCSV\";\nimport { formatSurveyResultsData } from \"../../../../util/data/formatSurveyResultsData\";\nimport { JSONtoCSV } from \"../../../../util/data/JSONtoCSV\";\nimport { convertToGeoJSON } from \"../../../../util/data/convertToGeoJSON\";\nimport { ETAPContext } from \"../Context/ETAPContext\";\nimport SurveyResultstoCSV from \"../../../../util/data/SurveyResultstoCSV\";\n\nconst Chart = styled.div`\n margin-left: ${({ left }) => (left ? \"20px\" : \"0px\")};\n padding-left: 30px;\n @media only screen and (max-width: 768px) {\n margin-left: 0px;\n }\n`;\nconst Header = styled.div`\n margin-left: 50px;\n padding-top: 20px;\n @media only screen and (max-width: 768px) {\n margin-left: 0px;\n }\n`;\n\nconst Charts = styled.div`\n display: flex;\n @media only screen and (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\nconst ChartWrapper = styled.div`\n width: 90%;\n`;\n\nexport const RowS = styled.div`\n display: flex;\n align-items: center;\n\n // border: 1px solid black;\n\n @media only screen and (max-width: 768px) {\n flex-direction: column;\n }\n`;\nexport const RowSTable = styled.div`\n display: flex;\n align-items: center;\n background-color: ${colors.blue};\n border-bottom: 1px solid ${colors.white};\n max-width: unset;\n\n @media only screen and (max-width: 768px) {\n flex-direction: column;\n }\n`;\n\ninterface ProjectTableEntity extends ProjectsEntity {\n itemCount: number;\n logCount: number;\n}\n\nconst SurveyResults = ({\n projectsData,\n itemsData,\n listImage,\n isPublic,\n}: {\n listImage: string;\n projectsData: ProjectsEntity[];\n itemsData: any[];\n isPublic: boolean;\n}) => {\n // surveyResultsCleaned();\n const [graph2, setGraph2] = useState();\n const [bar3, setBar3] = useState();\n const [bar5, setBar5] = useState();\n\n const groupedProjects = _.groupBy(itemsData, \"project_id\");\n const itemsByProjectId = Object.entries(groupedProjects);\n\n const surveyResultsCleanedBar = (surveyResults, q) => {\n if (surveyResults !== undefined) {\n const data: BarChartType = [];\n const flatData = surveyResults.map((survey) => survey.results_json);\n\n const aggregatedMaterials = _.groupBy(flatData, (ans) => {\n return ans[q];\n });\n\n Object.keys(aggregatedMaterials).map((key) => {\n if (key) {\n data.push({ name: key, data: aggregatedMaterials[key].length });\n }\n });\n\n return data;\n }\n };\n\n const surveyResultsCleanedPie = (surveyResults, q) => {\n if (surveyResults !== undefined) {\n const data: PieChartDataType = [];\n const flatData = surveyResults.map((survey) => survey.results_json);\n\n const aggregatedMaterials = _.groupBy(flatData, (ans) => {\n return ans[q];\n });\n\n Object.keys(aggregatedMaterials).map((key) => {\n if (key) {\n data.push({ name: key, y: aggregatedMaterials[key].length });\n }\n });\n\n return data;\n }\n };\n\n const { surveyResults } = useListDashboardData(\"153\");\n useEffect(() => {\n let pieData = surveyResultsCleanedPie(surveyResults, 1);\n let barData = surveyResultsCleanedBar(surveyResults, 1);\n setGraph2(pieData);\n barData = surveyResultsCleanedBar(surveyResults, 2);\n setBar3(barData);\n barData = surveyResultsCleanedBar(surveyResults, 4);\n setBar5(barData);\n }, [surveyResults]);\n\n const headers = [\n { name: \"Id\", label: \"id\" },\n { name: \"Project Name\", label: \"name\" },\n { name: \"Verified\", label: \"verified\" },\n ];\n\n return (\n \n {surveyResults && (\n \n
\n

Survey Results ({surveyResults.length})

\n
\n
\n )}\n \n \n

Q2. Where are you located?

\n \n {graph2 && graph2.length > 0 ? (\n \n ) : (\n
Loading...
\n )}\n
\n
\n \n

Q3. How are you funded?

\n \n {bar3 && bar3.length > 0 ? (\n \n ) : (\n
Loading...
\n )}\n
\n
\n
\n {projectsData && (\n \n )}\n
\n );\n};\n\nexport default SurveyResults;\n","import React, { useRef } from \"react\";\nimport { User } from \"../../../../types/user\";\n\nimport Table from \"@material-ui/core/Table\";\nimport TableBody from \"@material-ui/core/TableBody\";\nimport TableCell from \"@material-ui/core/TableCell\";\nimport TableHead from \"@material-ui/core/TableHead\";\nimport TableRow from \"@material-ui/core/TableRow\";\nimport _ from \"lodash\";\nimport {\n TableContainer,\n TableTitle,\n TableTitleRow,\n} from \"../../../../styles/TableComponents\";\nimport { colors } from \"../../../../styles/colors\";\nimport { IconButton, TableFooter, TablePagination } from \"@material-ui/core\";\nimport { useState } from \"react\";\nimport SurveyResultstoCSV from \"../../../../util/data/SurveyResultstoCSV\";\nimport { formatSurveyResultsData } from \"../../../../util/data/formatSurveyResultsData\";\nimport { JSONtoCSV } from \"../../../../util/data/JSONtoCSV\";\nimport { formatUserData } from \"../../../../util/data/formatUserData\";\nimport styled from \"styled-components\";\nimport { convertToGeoJSON } from \"../../../../util/data/convertToGeoJSON\";\nimport { RowS, RowSTable } from \"./SurveyResults\";\n\nconst UserTable = ({\n itemsData,\n userData,\n listImage,\n isPublic,\n}: {\n listImage: string;\n userData: any[];\n itemsData: any[];\n isPublic: boolean;\n}) => {\n const [page, setPage] = useState(0);\n const [rowsPerPage, setRowsPerPage] = useState(5);\n\n const headers = [\n { name: \"Name\", label: \"username\" },\n { name: \"Total Items Tracked\", label: \"items\" },\n { name: \"Last Active\", label: \"date\" },\n ];\n\n const ProjectsTableRow = ({ user }: { user: User }) => {\n // const linkRef = useRef(undefined);\n let itemsCount = 0;\n let last_active = \"\";\n // const [projectData, setProjectData] = useState(project);\n\n itemsCount = user[\"items\"].length;\n last_active = user[\"items\"][itemsCount - 1].dt;\n\n // if (user[\"userId\"]) logs = await getUserLogs(user[\"userId\"], accessToken);\n\n return (\n \n {/* {user[\"userId\"]} */}\n {headers.map((header, i) => (\n \n {header.label === \"items\"\n ? user[header.label].length\n : header.label === \"date\"\n ? new Date(last_active).toLocaleString(\"en-US\")\n : user[header.label]}\n \n ))}\n \n );\n };\n\n const ProjectsTableTitle = () => {\n return (\n \n All ETAP Users\n {userData && }\n \n );\n };\n\n const cellStyle = { color: colors.white };\n\n const emptyItemsRows =\n rowsPerPage - Math.min(rowsPerPage, userData.length - page * rowsPerPage);\n\n //download survey\n const DownloadButton = () => {\n const ButtonWrapper = styled.div`\n padding: 10px 24px; /* Some padding */\n cursor: pointer; /* Pointer/hand icon */\n float: left; /* Float the buttons side by side */\n margin-left: 1rem;\n font-size: 12pt;\n color: black;\n border: 1px solid #bfd4e3;\n background: rgb(245, 249, 255, 0.5);\n `;\n\n let geojson = convertToGeoJSON(userData);\n\n let test = JSON.stringify(geojson);\n\n // console.log(\"test\", test)\n const linkRef = useRef(undefined);\n const handleDownload = () => {\n // compute data and convert to csv\n const newDownloadData = SurveyResultstoCSV(formatUserData(userData));\n\n const csvData = JSONtoCSV(newDownloadData);\n\n // store data in new blob and create a url\n const csvBlob = new Blob([csvData], { type: \"text/csv\" });\n const url = URL.createObjectURL(csvBlob);\n\n // set tags href to blob url\n if (linkRef.current) {\n linkRef.current.href = url;\n }\n // click the tag\n linkRef.current && linkRef.current.click();\n };\n\n return (\n <>\n \n Download All User Data\n \n \n \n );\n };\n\n return (\n \n \n \n \n \n \n {headers.map((header, i) => (\n \n {header.name}\n \n ))}\n {/* Items\n Logs\n {isPublic === false && (Actions)} */}\n \n \n \n {userData\n .slice(page * rowsPerPage, page * rowsPerPage + rowsPerPage)\n .map((user: User, i) => (\n \n ))}\n {emptyItemsRows > 0 && (\n \n \n \n )}\n \n \n \n \n ) => {\n setPage(newPage);\n }}\n onChangeRowsPerPage={(e: { target: { value: string } }) => {\n setRowsPerPage(parseInt(e.target.value, 10));\n setPage(0);\n }}\n />\n \n \n
\n
\n );\n};\n\nexport default UserTable;\n","export const formatUserData = (userData: any[]) => {\n const output: any[] = [];\n\n // ensure data properties match metadata doc\n console.log({ userData });\n userData.forEach((user) => {\n // const answers: {} = {};\n // for (let i = 0; i < result[\"results_json\"].length; i++) {\n // answers[i + 1 + \". \" + result[\"survey_json\"][\"questions\"][i][\"text\"]] =\n // result[\"results_json\"][i];\n // }\n // output.push({\n // user_id: result.user_id,\n // log_id: result.log_id,\n // ...answers,\n // });\n });\n return output;\n};\n","import React, { useEffect, useState } from \"react\";\nimport { getMdtEtaps } from \"../../../../dataApi/getProjects\";\nimport { BarChartType, PieChartDataType } from \"../../../../types/charts\";\nimport { ItemInstance, ListType, ProjectsEntity } from \"../../../../types/list\";\nimport {\n geojsonToBar,\n geojsonToMaterialPie,\n geojsonToPie,\n} from \"../../../../util/data/chartFunctions\";\nimport { useListDashboardData } from \"../../../../util/hooks/useListDashboardData\";\nimport ProjectsTable from \"../../ListDashboard/ProjectsTable\";\nimport ETAPGraphsContainer from \"../ETAPGraphsContainer\";\nimport SublistsTable from \"./SublistTable\";\nimport SurveyResults from \"./SurveyResults\";\nimport UserTable from \"./UserTable\";\n\nconst ETAPTables = ({\n geojson,\n loading,\n projects,\n itemsData,\n userData,\n org,\n table,\n}: {\n geojson: GeoJSON.FeatureCollection;\n loading: boolean;\n projects?: ProjectsEntity[];\n itemsData?: ItemInstance[];\n userData?: any[];\n org?: ListType;\n table?: String;\n}) => {\n const [itemCount, setItemCount] = useState(0);\n const [eventCount, setEventCount] = useState(0);\n const [pieData, setPieData] = useState([]);\n const [barData, setBarData] = useState([]);\n const [mdtEtaps, setMdtEtaps] = useState<[]>([]);\n\n // calculate new counts\n useEffect(() => {\n (async () => {\n const asyncMdtEtaps = getMdtEtaps().then((data) => {\n return data;\n });\n setMdtEtaps(await asyncMdtEtaps);\n })();\n }, []);\n\n // calculate new counts\n useEffect(() => {\n if (!geojson) {\n return;\n }\n let newItemCount = 0;\n let newEventCount = 0;\n geojson.features.forEach((item) => {\n newItemCount += parseInt(item.properties.quantity, 10);\n newEventCount += 1;\n });\n setItemCount(newItemCount);\n setEventCount(newEventCount);\n }, [geojson]);\n\n if (table === \"Survey\") {\n return (\n <>\n {projects && (\n \n )}\n \n );\n } else if (table === \"Sublist\") {\n return (\n <>\n {projects && (\n \n )}\n \n );\n } else {\n return (\n <>\n {projects && (\n \n )}\n \n );\n }\n};\n\nexport default ETAPTables;\n","import HighchartsReact from \"highcharts-react-official\";\nimport Highcharts from \"highcharts\";\nimport React, { useEffect, useRef, useState } from \"react\";\nimport { BarChartType } from \"../../../types/charts\";\nimport styled from \"styled-components\";\n\nconst BarChartWrapper = styled.div`\n // border: 1px solid black;\n`;\n\nfunction getRandomIntInclusive(min, max) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n\nconst DegradedBar = ({\n data,\n customOptions,\n isMaterialBar,\n}: {\n data: any;\n customOptions?: Highcharts.Options;\n isMaterialBar?: boolean;\n}) => {\n if (!data || data.length === 0 || typeof window === undefined) {\n return null;\n }\n window.Highcharts = Highcharts;\n console.log({ isMaterialBar });\n console.log({ data });\n\n const chartConfig: Highcharts.Options = {\n chart: {\n type: \"bar\",\n animation: true,\n height: 100,\n },\n title: {\n text: null,\n },\n xAxis: {\n categories: [\"Degraded Ratio\"],\n labels: {\n enabled: false,\n },\n },\n yAxis: {\n min: 0,\n title: null,\n },\n tooltip: {\n pointFormat:\n '{series.name}: {point.y} ({point.percentage:.0f}%)
',\n shared: true,\n },\n plotOptions: {\n series: {\n stacking: \"normal\",\n dataLabels: {\n enabled: true,\n },\n },\n },\n legend: {\n enabled: false,\n },\n credits: {\n enabled: false,\n },\n series: [\n {\n name: \"Not Degraded\",\n type: \"bar\",\n data: [data.total - data.degraded],\n },\n {\n name: \"Degraded\",\n type: \"bar\",\n color: \"#edbd7f\",\n data: [data.degraded],\n },\n ],\n };\n const [width, setWidth] = useState(null);\n const [height, setHeight] = useState(null);\n const chartComponent = useRef({});\n\n useEffect(() => {\n setWidth(500);\n setHeight(100);\n setTimeout(() => window.dispatchEvent(new Event(\"resize\")));\n }, []);\n\n return (\n \n \n \n );\n};\n\nexport default DegradedBar;\n","import React, { useEffect, useState } from \"react\";\nimport {\n BarChartType,\n PieChartDataType,\n PieDonutChartDataType,\n} from \"../../../types/charts\";\nimport {\n geojsonToBar,\n geojsonToBarETAP,\n geojsonToDegradedBar,\n geojsonToDegradedMaterialBar,\n geojsonToMaterialBarETAP,\n geojsonToMaterialPie,\n geojsonToPie,\n geojsonToPieDonut,\n} from \"../../../util/data/chartFunctions\";\nimport DegradedBar from \"./DegradedBar\";\nimport ETAPGraphsContainer, { TooManyItems } from \"./ETAPGraphsContainer\";\n\nconst DegradedBarContainer = ({\n geojson,\n loading,\n material,\n}: {\n geojson: GeoJSON.FeatureCollection;\n loading: boolean;\n material?: String;\n}) => {\n const [itemCount, setItemCount] = useState(0);\n const [degradedGraphData, setDegradedGraphData] = useState();\n let titleMaterial = \"\";\n if (material !== undefined) {\n titleMaterial = \"(\" + material + \")\";\n } else {\n titleMaterial = \"(ALL)\";\n }\n\n // calculate new counts\n useEffect(() => {\n if (!geojson) {\n return;\n }\n let newItemCount = 0;\n geojson.features.forEach((item) => {\n newItemCount += parseInt(item.properties.quantity, 10);\n });\n setItemCount(newItemCount);\n }, [geojson]);\n\n // degraded data\n useEffect(() => {\n if (!material || material === \"(ALL)\") {\n const degradedData = geojsonToDegradedBar(geojson);\n setDegradedGraphData(degradedData);\n } else {\n const degradedData = geojsonToDegradedMaterialBar(geojson, material);\n setDegradedGraphData(degradedData);\n }\n }, [geojson, material]);\n const maxItemCount = Math.pow(10, 6);\n\n return (\n <>\n {itemCount < maxItemCount ? (\n <>\n {material === undefined || material === \"ALL\" ? (\n
\n

Degraded Distribution

\n {loading ? (\n
Loading...
\n ) : degradedGraphData ? (\n \n ) : (\n
Please select a sublist to show distribution
\n )}\n
\n ) : (\n
\n

Degraded Distribution {titleMaterial}

\n {loading ? (\n
Loading...
\n ) : degradedGraphData ? (\n \n ) : (\n
Please select a sublist to show distribution
\n )}\n
\n )}\n \n ) : (\n \n )}\n \n );\n};\n\nexport default DegradedBarContainer;\n","import React, {\n createRef,\n useContext,\n useEffect,\n useRef,\n useState,\n} from \"react\";\nimport styled from \"styled-components\";\nimport { useListDashboardData } from \"../../../util/hooks/useListDashboardData\";\nimport { DataPlatformContext } from \"../../../context/DataPlatform/DataPlatformContext\";\nimport { convertToGeoJSON } from \"../../../util/data/convertToGeoJSON\";\n\nimport _ from \"lodash\";\nimport ETAPGraphs from \"./ETAPGraphs\";\nimport ETAPFilter from \"./Filters/ETAPFilter\";\nimport { applyFilters } from \"../../../util/data/itemsDataFunctions\";\nimport pointsWithinPolygon from \"@turf/points-within-polygon\";\nimport Select from \"../../Forms/Select\";\nimport {\n geojsonToBar,\n geojsonToDegradedBar,\n geojsonToSelect,\n} from \"../../../util/data/chartFunctions\";\nimport ETAPTables from \"./Tables/ETAPTables\";\nimport { ETAPContext } from \"./Context/ETAPContext\";\nimport ItemsMap from \"../../DataPlatform/ItemsMap\";\nimport { any, string } from \"prop-types\";\nimport { formatEtapDownloadData } from \"../../../util/data/formatEtapDownloadData\";\nimport { BarSeries } from \"../../../types/charts\";\nimport DegradedBar from \"./DegradedBar\";\nimport DegradedBarContainer from \"./DegradedBarContainer\";\n\nconst countItems = (items: any[], key: string) => {\n return Object.entries(_.groupBy(items, key))\n .map((k) => {\n return { name: k[0], count: k[1].length, item: k[1][0] };\n })\n .sort((a, b) => b.count - a.count);\n};\n\nconst DataPlatformContainer = styled.div`\n display: flex;\n flex-direction: column;\n flex: 1;\n width: 100%;\n`;\n\nconst ETAP = {\n Row: styled.div`\n flex-direction: row;\n display: table;\n `,\n RowS: styled.div`\n display: flex;\n align-items: center;\n\n // border: 1px solid black;\n\n @media only screen and (max-width: 768px) {\n flex-direction: column;\n }\n `,\n Col1: styled.div`\n flex-direction: col;\n width: 20%;\n height: 520px;\n float: left;\n `,\n Col: styled.div`\n flex-direction: col;\n // width: 80%;\n height: auto;\n float: left;\n `,\n ColS: styled.div`\n flex-direction: col;\n // width: 80%;\n height: auto;\n float: left;\n `,\n StatCard: styled.div`\n margin: 20px 20px;\n padding: 0px 20px;\n width: auto;\n height: auto;\n border: 1px solid #bfd4e3;\n background-color: white;\n\n &:hover: {\n background-color: \"#e2e8f0\";\n cursor: pointer;\n }\n `,\n Graphs: styled.div`\n display: flex;\n flex-direction: row;\n `,\n Charts: styled.div`\n display: flex;\n\n @media only screen and (max-width: 768px) {\n flex-direction: column;\n }\n `,\n Chart: styled.div`\n margin-left: ${({ left }) => (left ? \"20px\" : \"0px\")};\n\n @media only screen and (max-width: 768px) {\n margin-left: 0px;\n }\n `,\n ChartWrapper: styled.div`\n min-width: 30vw;\n `,\n Button: styled.div`\n padding: 10px 24px; /* Some padding */\n cursor: pointer; /* Pointer/hand icon */\n float: left; /* Float the buttons side by side */\n margin-right: 15px;\n border: 1px solid #bfd4e3;\n background: rgb(245, 249, 255);\n `,\n ButtonSelect: styled.div`\n padding: 10px 24px; /* Some padding */\n cursor: pointer; /* Pointer/hand icon */\n float: left; /* Float the buttons side by side */\n margin-right: 4rem;\n padding: 2rem;\n border: 1px solid #bfd4e3;\n background: rgb(245, 249, 255);\n width: auto;\n height: 100%;\n `,\n};\n\nconst ETAPWrapper = styled.div`\n font-family: \"Lato\";\n color: #536275;\n background: rgb(245, 249, 255);\n box-shadow: inset 0px 0px 0px 10px #536275;\n display: flex;\n height: 100%;\n width: !100vw;\n flex-direction: row;\n @media only screen and (max-width: 768px) {\n margin-bottom: 20px;\n }\n @media only screen and (max-width: 991px) {\n }\n\n @media only screen and (max-width: 767px) {\n flex-direction: column;\n }\n\n @media only screen and (max-width: 478px) {\n }\n`;\n\nconst ETAPTitle = styled.h1`\n font-size: 22px;\n margin-bottom: 0px;\n margin-top: -63px;\n background-color: white;\n z-index: 1200;\n padding: 19px;\n padding-left: 50px;\n margin-left: -20px;\n width: 600px;\n\n @media only screen and (max-width: 991px) {\n margin: 0px;\n padding-left: 0px;\n }\n @media only screen and (max-width: 478px) {\n width: auto;\n }\n`;\n\nconst LocationsMapContainer = styled.div`\n height: 50vh;\n width: 100vw;\n`;\n\nconst ETAPDashboard = () => {\n const { filters, data, loading } = useContext(ETAPContext);\n const [selectMaterialList, setSelectMaterialList] = useState([\n { label: \"\", value: \"\" },\n ]);\n const [selectedTable, setSelectedTable] = useState();\n const [selectedGraph, setSelectedGraph] = useState();\n const [degradedGraphData, setDegradedGraphData] = useState();\n const listId = \"153\";\n\n const {\n org,\n projects,\n itemsData,\n userData,\n totalItems,\n admins,\n logCount,\n surveyResults,\n } = useListDashboardData(listId);\n\n // drawn polygon\n const [filterPolygon, setFilterPolygon] = useState(undefined);\n\n //copy of the raw geojson data. used when data needs to be filtered without fetching new data.\n const defaultGeojson: GeoJSON.FeatureCollection = {\n type: \"FeatureCollection\",\n features: [],\n };\n\n const unfilteredGeojson = useRef(defaultGeojson);\n\n const [geojson, setGeojson] = useState(\n unfilteredGeojson.current\n );\n\n // update data\n useEffect(() => {\n if (data && data.length > 0) {\n let geojson = convertToGeoJSON(data);\n unfilteredGeojson.current = geojson;\n let filteredGeojson = geojson;\n\n const newPieData = geojsonToSelect(filteredGeojson);\n newPieData.forEach((material) => {\n materialList.push({ label: material.label, value: material.value });\n });\n\n setSelectMaterialList(materialList);\n setGeojson(filteredGeojson);\n } else if (data && data.length === 0) {\n const newPieData = geojsonToSelect(defaultGeojson);\n\n newPieData.forEach((material) => {\n materialList.push({ label: material.label, value: material.value });\n });\n\n setSelectMaterialList(materialList);\n setGeojson(defaultGeojson);\n }\n }, [data]);\n\n // update on filter change\n useEffect(() => {\n if (data && data.length > 0) {\n setGeojson(applyFilters(filters, unfilteredGeojson.current));\n }\n }, [filters]);\n\n // update data on polygon change\n useEffect(() => {\n if (data && data.length > 0) {\n if (filterPolygon === undefined) {\n setGeojson(applyFilters(filters, unfilteredGeojson.current));\n } else {\n const points = pointsWithinPolygon(\n // @ts-ignore\n geojson,\n filterPolygon.toGeoJSON()\n );\n setGeojson(points);\n }\n }\n }, [filterPolygon]);\n\n const materialList: { label: string; value: string }[] = [\n {\n label: \"ALL MATERIALS\",\n value: \"ALL\",\n },\n ];\n\n const selectDropdownGraphHandler = (material) => {\n setSelectedGraph(material);\n };\n\n const selectTableHandler = (event: React.ChangeEvent) => {\n setSelectedTable(event.target.id);\n };\n\n return (\n \n \n {typeof window !== \"undefined\" && (\n \n )}\n \n \n EPA’s Escaped Trash Assessment Protocol (ETAP) Portal\n \n \n \n\n {/* Map Stats */}\n
\n \n \n \n \n \n \n
\n \n
\n
\n \n
\n
\n
\n
\n\n {/* Table Section */}\n \n \n \n \n \n Users\n \n \n Sublists\n \n \n Survey Results\n \n \n \n \n \n \n
\n );\n};\n\nexport default ETAPDashboard;\n","import * as React from \"react\";\nimport { Helmet } from \"react-helmet\";\nimport Layout from \"../components/Layout/Layout\";\nimport Seo from \"../components/seo\";\nimport ETAPContextProvider from \"../components/Dashboards/EtapDashboard/Context/ETAPContextProvider\";\nimport ETAPDashboard from \"../components/Dashboards/EtapDashboard/ETAPDashboard\";\n\nconst ETAPPage = () => {\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default ETAPPage;\n"],"names":["ETAPContext","createContext","_ref","children","org","organization","loading","orgLoading","useOrgData","defaultFilters","checkboxes","date_type","exact_date","dayjs","format","start_date","subtract","end_date","list","undefined","project","user_data","showManual","filters","setFilters","useState","data","setData","projects","projectsLoading","useProjectsByList","loadData","itemsLoading","useETAPItemData","globalMaterialsLoading","useGlobalMaterials","useEffect","dataPlatformState","React","Provider","value","colors","Highcharts","layer1Data","layer2Data","i","length","push","name","drilldown","y","color","j","brightness","categories","brighten","get","chartConfig","chart","plotBackgroundColor","plotBorderWidth","plotShadow","animation","type","title","text","tooltip","pointFormat","accessibility","point","valueSuffix","credits","enabled","plotOptions","pie","allowPointSelect","cursor","dataLabels","showInLegend","center","series","size","formatter","this","distance","innerSize","id","responsive","rules","condition","maxWidth","chartOptions","PieChartWrapper","HighchartsReact","highcharts","options","styled","div","withConfig","displayName","componentId","h2","TotalLabel","span","MapStatsGraphs","orange","Chart","left","Charts","ChartWrapper","TooManyItems","_ref2","itemCount","eventCount","pieData","pieDonutData","barData","material","maxItemCount","Math","pow","PieChart","PieDonutChart","BarChart","geojson","setItemCount","setEventCount","setPieData","setPieDonutData","setBarData","newItemCount","newEventCount","features","forEach","item","parseInt","properties","quantity","newPieData","geojsonToPie","newPieDonutData","geojsonToPieDonut","newBarData","geojsonToMaterialBarETAP","geojsonToBarETAP","ETAPGraphsContainer","etap_metadata","SublistSelect","useContext","selectData","label","project1","verified","Select","onChange","async","val","getEtapProject","substr","FilterRadioGroup","RadioGroup","FilterDate","input","RadioGroupFilterLabel","ETAPRangeFilter","setDateType","handleDateChange","e","target","RadioButton","checked","defaultValue","FilterErrorMessage","p","DebrisTrackerContext","linkRef","useRef","err","setErr","filtersRef","shouldFetch","isAfter","setTimeout","current","DownloadButton","ButtonWrapper","onClick","handleDownload","newDownloadData","GeoJSONtoCSV","formatEtapDownloadData","allOrg","comparatorList","geojsonCopy","_cloneDeep","feature","Object","keys","keyname","includes","csvData","JSONtoCSV","csvBlob","Blob","url","URL","createObjectURL","href","click","download","ref","ETAPFiltersContainer","FiltersTitle","FiltersWrapper","Button","style","width","marginTop","padding","opacity","res","formatSurveyResultsData","surveyResults","output","result","answers","user_id","log_id","console","log","projectsData","itemsData","listImage","isPublic","mdtEtaps","page","setPage","rowsPerPage","setRowsPerPage","groupedProjects","_groupBy","itemsByProjectId","entries","logsByProject","map","groupedByLog","headers","SublistsTableRow","projectData","setProjectData","TableRow","TableCell","icon_uri","height","src","header","key","align","numberWithCommas","logCount","useListDashboardData","SurveyResultstoCSV","ProjectsTableTitle","TableTitleRow","altFont","cellStyle","white","itemsObject","x","logsObject","emptyItemsRows","min","TableContainer","Table","TableHead","backgroundColor","blue","TableBody","filter","sort","a","b","slice","colSpan","TableFooter","TablePagination","rowsPerPageOptions","count","onChangePage","_e","newPage","onChangeRowsPerPage","ProjectsTableRow","convertToGeoJSON","JSON","stringify","projectItemCount","projectLogCount","filtered","reduce","prev","curr","SurveyResult","Header","RowS","graph2","setGraph2","bar3","setBar3","bar5","setBar5","surveyResultsCleanedBar","q","flatData","survey","results_json","aggregatedMaterials","ans","surveyResultsCleanedPie","SurveyTable","userData","user","itemsCount","last_active","dt","Date","toLocaleString","formatUserData","table","setMdtEtaps","asyncMdtEtaps","getMdtEtaps","then","SurveyResults","icon_image_filename","SublistsTable","UserTable","BarChartWrapper","customOptions","isMaterialBar","window","xAxis","labels","yAxis","shared","stacking","legend","total","degraded","setWidth","setHeight","dispatchEvent","Event","degradedGraphData","setDegradedGraphData","titleMaterial","degradedData","geojsonToDegradedMaterialBar","geojsonToDegradedBar","DegradedBar","DataPlatformContainer","ETAP","Row","Col1","Col","ColS","StatCard","Graphs","ButtonSelect","ETAPWrapper","ETAPTitle","h1","LocationsMapContainer","ETAPDashboard","selectMaterialList","setSelectMaterialList","selectedTable","setSelectedTable","selectedGraph","setSelectedGraph","totalItems","admins","filterPolygon","setFilterPolygon","defaultGeojson","unfilteredGeojson","setGeojson","filteredGeojson","geojsonToSelect","materialList","applyFilters","points","pointsWithinPolygon","toGeoJSON","selectTableHandler","event","ItemsMap","cluster","interactive","draw","ETAPFilter","DegradedBarContainer","ETAPGraphs","margin","ETAPTables","ETAPPage","ETAPContextProvider","Layout","vertical","Helmet","rel","Seo"],"sourceRoot":""}