{"version":3,"sources":["views/menu/Group/style.js","Components/Menu/style.js","views/menu/style.js","views/header/Options/About.js","views/header/index.js","views/header/Header.js","Components/useResizeObserver.js","views/loadData.js","views/Search/index.js","views/Search/Search.js","views/Histogram/Histogram.js","views/Histogram/index.js","Components/TableButton/SelectButton.js","Components/TableButton/ExportButton.js","views/DataTableMain/DataTableMain.js","views/RequestDataForm/RequestDataForm.js","views/RequestDataForm/index.js","Components/TableButton/UpsetDataButton.js","Components/TableButton/DeselectButton.js","Components/TableButton/RequestButton.js","views/DataTableSmall/DataTableSmall.js","views/upsetView/upsetView.js","views/MainDrawer/MenuItem.js","views/MainDrawer/MainDrawer.js","views/SmallDrawer/SmallMenuItem.js","views/SmallDrawer/SmallDrawer.js","views/index.js","App.js","reportWebVitals.js","index.js"],"names":["styled","div","Col","Row","Button","input","Image","Dropdown","Toggle","Item","Form","Check","About","useState","show","setShow","handleClose","console","log","Nav","Link","style","color","onClick","Modal","onHide","Header","closeButton","Title","Body","href","Footer","variant","Navbar","backgroundColor","expand","fixed","Brand","aria-controls","Collapse","id","className","useResizeObserver","ref","dimensions","setDimensions","useEffect","observeTarget","current","resizeObserver","ResizeObserver","entries","forEach","entry","contentRect","observe","unobserve","parseTreeNav","data","map","el","Object","assign","grouped","_","groupBy","modData","keys","key","value","rObj","smallGroups","subArray","nObj","sectionGroups","subSectionArray","sObj","analyteGroups","analyteArray","aObj","length","pop","Search","props","setTimeout","FormControl","sx","m","width","InputLabel","OutlinedInput","onChange","e","searchTerm","toLowerCase","timeout","clearTimeout","newData","filter","obj","includes","setSearchData","setTreeNav","findData","target","endAdornment","InputAdornment","position","label","Histogram","svgRef","useRef","wrapperRef","svg","d3","min","dom","x","domain","range","append","attr","call","ticks","y","d","selectAll","enter","Fragment","marginBottom","height","SelectButton","buttonLabel","onClickHandler","borderColor","marginLeft","size","startIcon","fill","Typography","fontSize","fontWeight","ExportButton","columns","name","selector","row","wrap","right","dataKeys","DataTableMain","React","selectedRows","setSelectedRows","toggleCleared","tableData","showHistogram","setShowHistogram","showComplete","setShowComplete","subHeaderComponent","display","alignItems","justifyContent","minHeight","paddingBottom","borderBottom","margin","padding","selectedMainNav","marginRight","setTableData","difference","setSmallTableData","setSmallTableNav","setClearSelectedRows","array","link","document","createElement","csv","result","join","item","ctr","convertArrayOfObjectsToCSV","match","setAttribute","encodeURI","click","boxShadow","Card","differenceBy","smallTableData","selectableRows","noContextMenu","striped","selectableRowsComponent","Checkbox","expandableRows","expandableRowsComponent","count","totalNumbers","xArray","lastUpdated","singleData","setSingleData","urlString","fetch","then","response","status","json","Error","statusText","err","getData","max","customStyles","rows","paddingTop","headCells","subHeader","selectableRowsNoSelectAll","onSelectedRowsChange","clearSelectedRows","Type","VisitID","VisitIDNum","downloadCSV","RequestDataForm","setName","email","setEmail","institution","setInstitution","additionalMessage","setAdditionalMessage","class","onSubmit","evt","preventDefault","templateParams","setIsOpen","isOpen","emailjs","send","process","text","error","type","UpsetDataButton","DeselectButton","RequestButton","DataTableSmall","upsetArray","setUpsetArray","toggledClearRows","setToggleClearRows","findDifference","differenceArray","rowsSmallTable","rowsSmallTableData","i","j","push","togglePopup","selectedNav","isEqual","smallTable","setSmallTable","intersectionData","setData","inter","interName","set1","Set","sets","s","add","setDatabaseData","setHideUpset","state","setDataToSee","indexOf","setChangeText","changeText","selectableRowsSingle","UpsetView","string","printString","dataToSee","hideUpset","databaseData","combinations","MenuItem","level","parentItem","setSelectedMainNav","Component","children","nodes","undefined","constructor","Array","hasChildren","MultiLevel","SingleLevel","ListItemButton","pl","ListItemText","primary","primaryTypographyProps","open","setOpen","borderRadius","disableTouchRipple","borderLeft","prev","in","unmountOnExit","List","component","disablePadding","child","MainDrawer","treeNav","paddingRight","SmallMenuItem","setSelectedSmallNav","SmallDrawer","smallTableNav","Views","searchData","selectedSmallNav","loadData","a","res","allPosts","readString","header","worker","complete","results","o","updated","nullValues","Math","random","filledValues","addAditionalData","orientation","windowResizeAware","maxSize","flex","App","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","getElementById"],"mappings":"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","file":"static/js/main.37dcc2c2.chunk.js","sourcesContent":["import styled from 'styled-components';\nimport { Button, Row, Col } from 'react-bootstrap';\n\nexport const MyGroup = styled.div`\n border-style: solid;\n margin-bottom: 2px;\n width: 100%;\n border-color: lightgray;\n border-width: 1px;\n border-radius: 5px;\n padding-bottom: 4px;\n`;\n\nexport const MyLabel = styled.div`\n text-align: left;\n padding: 2px 0px 2px 0px;\n`;\n\nexport const MyCol = styled(Col)`\n padding: 0px;\n margin: auto;\n`;\n\nexport const MyRow = styled(Row)`\n margin: 0px;\n`;\n\nexport const MyToggle = styled(Button)`\n width: 100%;\n background-color: lightgray;\n color: black;\n border-radius: 4px 4px 0px 0px;\n padding: 2px 2px 2px 2px;\n border-color: lightgray;\n`;\n","import { Dropdown, Form, Image } from 'react-bootstrap';\nimport styled from 'styled-components';\n\nexport const MyNumberInput = styled.input`\n padding: 2px;\n width: 100%;\n border: 1px #e0dbdb solid;\n border-radius: 4px;\n margin: 2px 0px 2px 0px;\n`;\n\nexport const MyIcon = styled(Image)`\n width: 60px;\n height: 18px;\n`;\n\nexport const MyDropdownToggle = styled(Dropdown.Toggle)`\n width: 100%;\n background-color: white;\n color: #495057;\n padding: 6px 3px 6px 6px;\n border: 1px solid lightgray;\n margin: 2px 0px;\n display: flex;\n justify-content: space-between;\n align-items: center;\n &:after {\n }\n`;\n\nexport const MyDropdownItem = styled(Dropdown.Item)`\n padding: 0px 4px;\n`;\n\nexport const MyCheckBox = styled(Form.Check)`\n zoom: 1.3;\n`;\n","import styled from 'styled-components';\nimport { Button } from 'react-bootstrap';\n\nexport const Label = styled.div`\n height: 30px;\n text-align: center;\n background-color: transparent;\n`;\n\nexport const Toggle = styled(Button)`\n width: 25px;\n position: absolute;\n right: 2px;\n padding: 0px;\n`;\n","import { Button, Modal, Nav } from 'react-bootstrap';\nimport { useState } from 'react';\n\nconst About = () => {\n const [show, setShow] = useState(false);\n\n const handleClose = () => setShow(false);\n const handleShow = () => setShow(true);\n\n console.log(\"About component rendered\");\n\n return (\n <>\n \n About\n \n \n \n Contact Information\n \n \n If you have any questions, please email Griffith Gao q.gao@northeastern.edu\n \n \n \n \n \n \n );\n};\n\nexport default About;\n","import Header from './Header';\nexport default Header;\n","import React from 'react';\nimport { Navbar, Nav } from 'react-bootstrap';\nimport About from './Options/About';\nimport LoadDataSet from './Options/LoadDataSet';\n\nconst Header = () => {\n return (\n \n PROTECT DATABASE\n \n \n \n \n \n );\n};\n\nexport default Header;\n","import { useEffect, useState } from 'react';\nimport ResizeObserver from 'resize-observer-polyfill';\n\n/**\n * Hook, that returns the current dimensions of an HTML element.\n * Doesn't play well with SVG.\n */\n\nconst useResizeObserver = (ref) => {\n const [dimensions, setDimensions] = useState(null);\n useEffect(() => {\n const observeTarget = ref.current;\n const resizeObserver = new ResizeObserver((entries) => {\n entries.forEach((entry) => {\n setDimensions(entry.contentRect);\n });\n });\n resizeObserver.observe(observeTarget);\n return () => {\n resizeObserver.unobserve(observeTarget);\n };\n }, [ref]);\n return dimensions;\n};\n\nexport default useResizeObserver;\n","// import { extent, scaleLinear } from 'd3';\nimport _, { result } from 'lodash';\nimport StackedBarChart from './StackedBarChart';\n\nexport function parseBioData(data) {\n var data = data.map(function (el) {\n var o = Object.assign({}, el);\n\n return o;\n });\n}\n\nexport function parseTreeNav(data) {\n var data = data.map(function (el) {\n var o = Object.assign({}, el);\n\n return o;\n });\n\n var grouped = _.groupBy(data, 'Type');\n\n let reformattedArray = Object.keys(grouped).map(function (key, value) {\n let rObj = {};\n rObj['key'] = key;\n rObj['label'] = key;\n var smallGroups = _.groupBy(grouped[key], 'Form Name');\n var subArray = Object.keys(smallGroups).map(function (key, value) {\n let nObj = {};\n nObj['key'] = key;\n nObj['label'] = key;\n\n var sectionGroups = _.groupBy(smallGroups[key], 'Section Header');\n\n var subSectionArray = Object.keys(sectionGroups).map(function (\n key,\n value\n ) {\n let sObj = {};\n sObj['key'] = key;\n sObj['label'] = key;\n // nObj['Description'] = smallGroups[key]['Field Label'];\n sObj['props'] = sectionGroups[key];\n\n var analyteGroups = _.groupBy(sectionGroups[key], 'VisitID');\n if (\n Object.keys(analyteGroups) == '' ||\n Object.keys(analyteGroups) == 'undefined'\n ) {\n return sObj;\n }\n // return sObj;\n\n var analyteArray = Object.keys(analyteGroups).map(function (\n key,\n value\n ) {\n let aObj = {};\n aObj['key'] = key;\n aObj['label'] = key;\n aObj['props'] = analyteGroups[key];\n return aObj;\n });\n\n sObj['nodes'] = analyteArray;\n\n return sObj;\n });\n\n nObj['nodes'] = subSectionArray;\n\n return nObj;\n });\n rObj['nodes'] = subArray;\n\n return rObj;\n });\n\n var modData = reformattedArray;\n if (\n modData.length >= 1 &&\n modData[modData.length - 1]['key'] == 'undefined'\n ) {\n modData.pop();\n }\n // if (modData[modData.length - 1])\n return modData;\n}\n\nexport function parseSmallTable(data) {\n var grouped = _.groupBy(data, 'Type');\n\n let reformattedArray = Object.keys(grouped).map(function (key, value) {\n let rObj = {};\n rObj['key'] = key;\n rObj['label'] = key;\n var smallGroups = _.groupBy(grouped[key], 'Form Name');\n\n var subArray = Object.keys(smallGroups).map(function (key, value) {\n let nObj = {};\n nObj['key'] = key;\n nObj['label'] = key;\n // nObj['Description'] = smallGroups[key]['Field Label'];\n nObj['props'] = smallGroups[key];\n\n return nObj;\n });\n rObj['nodes'] = subArray;\n\n return rObj;\n });\n\n var modData = reformattedArray;\n\n return modData;\n}\n\nexport function addAditionalData(data) {\n var result = data.map(function (el) {\n var o = Object.assign({}, el);\n o.updated = '11/11/2021';\n o.nullValues = Math.random() * 1400;\n o.filledValues = 1400 - o.nullValues;\n return o;\n });\n\n return result;\n // return modData;\n}\n\n// export function loadTree() {\n// return fetch(\n// `${process.env.PUBLIC_URL}/data/BiggerProtectDictionaryTwo.csv`\n// ).then((response) => response.text());\n// }\n\n// export function loadData() {\n// return fetch(\n// `${process.env.PUBLIC_URL}/data/BiggerProtectDictionaryTwo.csv`\n// ).then((response) => response.text());\n// }\n\nexport function updateTableInfo(props) {\n var tableData = props.props;\n\n // this.setState({ tableData: tableData });\n}\nexport const data = [\n {\n 'Variable / Field Name': 'Beetlejuice',\n // year: '1988',\n },\n];\nexport function getCorrectData(smallTable, selectedSmallNav) {\n var newData = null;\n if (selectedSmallNav === null) {\n return [];\n }\n\n newData = smallTable.filter((obj) => {\n return (\n obj['Form Name'] == selectedSmallNav[0] &&\n obj['Section Header'] == selectedSmallNav[1]\n );\n });\n\n return newData;\n}\n","import Search from './Search';\r\nexport default Search;\r\n","import React, { useEffect, useState } from 'react';\nimport { parseTreeNav } from './../loadData';\nimport OutlinedInput from '@mui/material/OutlinedInput';\nimport InputLabel from '@mui/material/InputLabel';\nimport InputAdornment from '@mui/material/InputAdornment';\nimport FormControl from '@mui/material/FormControl';\nimport SearchOutlinedIcon from '@mui/icons-material/SearchOutlined';\n\nconst Search = (props) => {\n const [timeout, setTimeout] = useState(false);\n\n // useEffect(() => {\n // const timer = setTimeout(() => {\n // findData(searchTerm);\n // }, 1000);\n // return () => clearTimeout(timer);\n // }, []);\n const findData = (searchTerm) => {\n searchTerm = searchTerm.toLowerCase();\n // var searchText = searchTerm.target.value; // this is the search text\n if (timeout) clearTimeout(timeout);\n\n var newData = null;\n\n var timeout = setTimeout(() => {\n if (searchTerm) {\n newData = props.data.filter((obj) => {\n if (obj['Type']) {\n return (\n obj['Type'].toLowerCase().includes(searchTerm) ||\n obj['Variable / Field Name'].toLowerCase().includes(searchTerm) ||\n obj['Field Label'].toLowerCase().includes(searchTerm) ||\n obj['Form Name'].toLowerCase().includes(searchTerm) ||\n obj['Choices Calculations OR Slider Labels']\n .toLowerCase()\n .includes(searchTerm)\n );\n }\n });\n\n props.setSearchData(newData);\n props.setTreeNav(parseTreeNav(newData));\n } else {\n props.setSearchData(props.data);\n props.setTreeNav(parseTreeNav(props.data));\n }\n }, 300);\n };\n\n // const findData = (searchTerm) => {};\n const BarStyling = {\n width: '20rem',\n background: '#F2F1F9',\n border: 'none',\n padding: '0.5rem',\n paddingLeft: '10px',\n outline: 'none',\n };\n return (\n \n Search\n findData(e.target.value)}\n endAdornment={\n \n \n \n }\n label=\"Password\"\n />\n \n );\n};\n\nexport default Search;\n","import React, { useEffect, useRef } from 'react';\r\nimport * as d3 from 'd3';\r\nimport useResizeObserver from '../../Components/useResizeObserver';\r\n\r\n/**\r\n * Component that renders a StackedBarChart\r\n */\r\n\r\nfunction Histogram({ data }) {\r\n const svgRef = useRef();\r\n // const yAxisRef = useRef();\r\n const wrapperRef = useRef();\r\n\r\n const dimensions = useResizeObserver(wrapperRef);\r\n\r\n // will be called initially and on every data change\r\n useEffect(() => {\r\n const svg = d3.select(svgRef.current);\r\n const height = 100;\r\n const width = 100;\r\n\r\n // var dLength = data.length - 1;\r\n\r\n var min = data[0][0];\r\n\r\n var dom = data[data.length - 1][1];\r\n\r\n var x = d3\r\n .scaleLinear()\r\n .domain([min, dom]) // can use this instead of 1000 to have the max of data: d3.max(data, function(d) { return +d.price })\r\n .range([0, width]);\r\n svg\r\n .append('g')\r\n .attr('transform', 'translate(0,' + height + ')')\r\n .call(d3.axisBottom(x).ticks(data.length - 1));\r\n\r\n var y = d3.scaleLinear().range([height, 0]);\r\n y.domain([\r\n 0,\r\n d3.max(data, function (d) {\r\n return d[2];\r\n }),\r\n ]); // d3.hist has to be called before the Y axis obviously\r\n svg.append('g').call(d3.axisLeft(y));\r\n\r\n svg\r\n .append('g')\r\n .selectAll('rect')\r\n .data(data)\r\n .enter()\r\n .append('rect')\r\n // .attr('x', 1)\r\n .attr('transform', function (d) {\r\n return 'translate(' + x(d[0]) + ',' + y(d[2]) + ')';\r\n })\r\n .attr('width', function (d) {\r\n return x(d[1]) - x(d[0]) - 1;\r\n })\r\n .attr('height', function (d) {\r\n return height - y(d[2]);\r\n })\r\n .style('fill', '#69b3a2');\r\n\r\n // stacks / layers\r\n // Create the stack and group it so that the smallest values are on the bottom\r\n }, [data, dimensions, svgRef]);\r\n\r\n return (\r\n \r\n \r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default Histogram;\r\n","import Histogram from './Histogram';\r\nexport default Histogram;\r\n","import React from 'react';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport ShoppingCartCheckoutIcon from '@mui/icons-material/ShoppingCartCheckout';\r\nconst SelectButton = ({ buttonLabel, onClickHandler }) => (\r\n }\r\n onClick={onClickHandler}\r\n >\r\n \r\n {buttonLabel}\r\n \r\n \r\n);\r\nexport default SelectButton;\r\n","import React from 'react';\r\nimport Button from '@mui/material/Button';\r\nimport Typography from '@mui/material/Typography';\r\nimport FileDownloadIcon from '@mui/icons-material/FileDownload';\r\nconst ExportButton = ({ buttonLabel, onClickHandler }) => (\r\n }\r\n onClick={onClickHandler}\r\n >\r\n \r\n {buttonLabel}\r\n \r\n \r\n);\r\nexport default ExportButton;\r\n","import React, {\n useEffect,\n useState,\n useMemo,\n useCallback,\n contextActions,\n} from 'react';\nimport TreeMenu, {\n defaultChildren,\n ItemComponent,\n} from 'react-simple-tree-menu';\nimport StackedBarChart from '../StackedBarChart/StackedBarChart';\nimport CheckBox from '../../Components/Menu/CheckBox';\nimport DataTable from 'react-data-table-component';\nimport { MyCheckBox } from '../../Components/Menu/style';\nimport { parseTreeNav } from '../loadData';\nimport _ from 'lodash';\nimport FileUploadOutlinedIcon from '@mui/icons-material/FileUploadOutlined';\nimport Button from '@mui/material/Button';\nimport { Typography } from '@mui/material';\nimport Card from '@mui/material/Card';\nimport Checkbox from '@mui/material/Checkbox';\nimport Histogram from '../Histogram';\nimport './../style.css';\nimport SelectButton from '../../Components/TableButton/SelectButton';\nimport ExportButton from '../../Components/TableButton/ExportButton';\n\n// const DataTableMain = ({ data, smallTableUpdate }) => {\n\n// return ;\n// };\n// const rowSelectCritera = (row) => props.smallTableData;\n\nconst columns = [\n {\n name: 'Variable Id',\n selector: (row) => row['Variable / Field Name'],\n wrap: true,\n right: true,\n },\n {\n name: 'Description',\n selector: (row) => row['Field Label'],\n wrap: true,\n },\n {\n name: 'Data Type',\n selector: (row) => row['Field Type'],\n wrap: true,\n },\n {\n name: 'Choices',\n selector: (row) => row['Choices Calculations OR Slider Labels'],\n wrap: true,\n },\n {\n name: 'Notes',\n selector: (row) => row['Field Note'],\n wrap: true,\n },\n];\nvar dataKeys = {\n 'Variable / Field Name': 'screen_bottom',\n 'Form Name': 'wellsite_data',\n 'Section Header': 'wellsite_data',\n 'Field Type': 'text',\n 'Field Label':\n 'Elevation of bottom of (lowermost) screen, or elevation of bottom of open borehole',\n 'Choices Calculations OR Slider Labels': '',\n 'Field Note': '',\n 'Text Validation Type OR Show Slider Number': 'decimal',\n 'Text Validation Min': '-9999',\n 'Text Validation Max': '2000',\n 'Identifier?': '',\n 'Branching Logic (Show field only if...)': '',\n 'Required Field?': '',\n 'Custom Alignment': '',\n 'Question Number (surveys only)': '',\n 'Matrix Group Name': '',\n 'Matrix Ranking?': '',\n 'Field Annotation': '',\n};\nconst rowSelectCritera = (row) => row['Variable / Field Name'] === '';\n\nfunction DataTableMain(props) {\n const [selectedRows, setSelectedRows] = React.useState([]);\n\n const [toggleCleared, setToggleCleared] = React.useState(false);\n const [data, setData] = React.useState(props.tableData);\n const [showHistogram, setShowHistogram] = React.useState(false);\n const [showComplete, setShowComplete] = React.useState(false);\n\n // const [rowSelectCritera, setRowSelectCriteria] = useState([]);\n\n // function handleChange(updateTarget) {\n // props.setSmallTableData(updateTarget.selectedRows);\n // props.setSmallTableNav(parseTreeNav(updateTarget.selectedRows));\n // }\n\n function convertArrayOfObjectsToCSV(array) {\n let result;\n\n const columnDelimiter = ',';\n const lineDelimiter = '\\n';\n\n const keys = Object.keys(dataKeys);\n\n result = '';\n result += keys.join(columnDelimiter);\n result += lineDelimiter;\n\n array.forEach((item) => {\n let ctr = 0;\n keys.forEach((key) => {\n if (ctr > 0) result += columnDelimiter;\n\n result += item[key];\n // eslint-disable-next-line no-plusplus\n ctr++;\n });\n result += lineDelimiter;\n });\n\n return result;\n }\n\n function downloadCSV() {\n const array = props.tableData;\n const link = document.createElement('a');\n\n let csv = convertArrayOfObjectsToCSV(array);\n if (csv == null) return;\n\n const filename = 'export.csv';\n\n if (!csv.match(/^data:text\\/csv/i)) {\n csv = `data:text/csv;charset=utf-8,${csv}`;\n }\n\n link.setAttribute('href', encodeURI(csv));\n link.setAttribute('download', filename);\n link.click();\n }\n\n const ExpandedComponent: React.FC> = ({\n data,\n }) => {\n const [singleData, setSingleData] = useState({\n count: 0,\n totalNumbers: 2269,\n xArray: [[null, null, null]],\n lastUpdated: 'No data',\n });\n\n const getData = (data) => {\n if (data['Type'] == 'Biological Data') {\n setShowComplete(true);\n setShowHistogram(false);\n }\n if (data['Type'] == 'Environmental Data') {\n setShowComplete(false);\n setShowHistogram(false);\n }\n\n if (data['Type'] == 'Human Subject Data') {\n setShowComplete(true);\n setShowHistogram(true);\n }\n var urlString = '';\n\n urlString =\n urlString +\n data['Variable / Field Name'] +\n ',' +\n data['Form Name'] +\n ',' +\n data['Type'] +\n ',' +\n data['VisitIDNum'] +\n ',' +\n data['Section Header'];\n\n try {\n fetch('https://manati.ece.neu.edu/vizquery/sdss/singleData/' + urlString)\n .then((response) => {\n if (response.status >= 200 && response.status <= 299) {\n return response.json();\n } else {\n throw Error(response.statusText);\n }\n })\n .then((data) => {\n setSingleData(data);\n });\n } catch (err) {\n if (singleData['xArray'] == []) {\n setShowHistogram(false);\n }\n console.log(err);\n }\n };\n\n useEffect(() => {\n getData(data);\n }, []);\n\n return (\n
\n
Last updated = {singleData['lastUpdated']}
\n {showHistogram ? (\n
\n
Distribution
\n \n
\n ) : null}\n {/*
Distribution
\n */}\n {showComplete ? (\n
\n {' '}\n

\n Total Records {singleData['count']}/{singleData['totalNumbers']}\n

\n \n
\n ) : null}\n
\n );\n // return ;\n };\n const handleChange = ({ selectedRows }) => {\n setSelectedRows(selectedRows);\n };\n\n const handleClearRows = () => {\n props.setTableData(_.difference(props.tableData, selectedRows));\n props.setSmallTableData(selectedRows);\n props.setSmallTableNav(parseTreeNav(selectedRows));\n props.setClearSelectedRows(true);\n // props.setSmallTable(selectedRows);\n\n // setToggleClearRows(!toggledClearRows);\n };\n // const actionsMemo = React.useMemo(\n // () => downloadCSV(props.data)} />,\n // [props.data]\n // );\n const subHeaderComponent = (\n \n

\n {' '}\n {props.tableData.length == 0 ? '' : props.selectedMainNav[1]}\n

\n
\n \n \n
\n \n );\n\n const customStyles = {\n rows: {\n style: {\n paddingTop: '5px',\n paddingBottom: '5px',\n },\n },\n headCells: {\n style: {\n backgroundColor: '#f5f8fe',\n fontSize: '14px',\n minHeight: '56px',\n },\n },\n subHeader: {\n style: {\n margin: 0,\n padding: 0,\n },\n },\n };\n\n return (\n \n \n \n \n \n );\n}\n\nexport default DataTableMain;\n","import React, { useState } from 'react';\r\nimport emailjs from 'emailjs-com';\r\n\r\nlet dataKeys = {\r\n 'Variable / Field Name': '',\r\n 'Form Name': '',\r\n 'Section Header': '',\r\n 'Field Type': '',\r\n 'Field Label': '',\r\n 'Choices Calculations OR Slider Labels': '',\r\n 'Field Note': '',\r\n 'Text Validation Type OR Show Slider Number': '',\r\n 'Text Validation Min': '',\r\n 'Text Validation Max': '',\r\n 'Identifier?': '',\r\n 'Branching Logic (Show field only if...)': '',\r\n 'Required Field?': '',\r\n 'Custom Alignment': '',\r\n 'Question Number (surveys only)': '',\r\n 'Matrix Group Name': '',\r\n 'Matrix Ranking?': '',\r\n 'Field Annotation': '',\r\n Type: '',\r\n VisitID: '',\r\n VisitIDNum: '',\r\n};\r\nfunction convertArrayOfObjectsToCSV(array) {\r\n let result;\r\n const columnDelimiter = ',';\r\n const lineDelimiter = '\\n';\r\n\r\n const keys = Object.keys(dataKeys);\r\n\r\n result = '';\r\n result += keys.join(columnDelimiter);\r\n result += lineDelimiter;\r\n array.forEach((item) => {\r\n let ctr = 0;\r\n keys.forEach((key) => {\r\n if (ctr > 0) result += columnDelimiter;\r\n\r\n result += item[key];\r\n // eslint-disable-next-line no-plusplus\r\n ctr++;\r\n });\r\n result += lineDelimiter;\r\n });\r\n\r\n return result;\r\n}\r\n\r\nfunction downloadCSV(array) {\r\n const link = document.createElement('a');\r\n\r\n let csv = convertArrayOfObjectsToCSV(array);\r\n if (csv == null) return;\r\n\r\n const filename = 'export.csv';\r\n\r\n if (!csv.match(/^data:text\\/csv/i)) {\r\n csv = `data:text/csv;charset=utf-8,${csv}`;\r\n }\r\n\r\n link.setAttribute('href', encodeURI(csv));\r\n return link.href;\r\n}\r\n\r\nconst RequestDataForm = (props) => {\r\n // const serviceID = 'service_7y34p38';\r\n\r\n const [name, setName] = useState('');\r\n const [email, setEmail] = useState('');\r\n const [institution, setInstitution] = useState('');\r\n const [additionalMessage, setAdditionalMessage] = useState('');\r\n const [dataCSV, setDataCSV] = useState('');\r\n\r\n const handleSubmit = (evt) => {\r\n evt.preventDefault();\r\n\r\n let array = props.smallTableData;\r\n\r\n let link = downloadCSV(array);\r\n\r\n var templateParams = {\r\n name: name,\r\n email: email,\r\n institution: institution,\r\n additionalMessage: additionalMessage,\r\n link: link,\r\n };\r\n props.setIsOpen(!props.isOpen);\r\n\r\n emailjs\r\n .send(\r\n process.env.REACT_APP_serviceID,\r\n process.env.REACT_APP_templateID,\r\n templateParams,\r\n process.env.REACT_APP_user\r\n )\r\n\r\n .then(\r\n function (response) {\r\n console.log('SUCCESS!', response.status, response.text);\r\n },\r\n function (error) {\r\n console.log('FAILED...', error);\r\n }\r\n );\r\n };\r\n return (\r\n
\r\n
\r\n \r\n x\r\n \r\n <>\r\n
\r\n
\r\n Please type in all of your information below. The data from all\r\n the tables in the upper left will be sent to the database\r\n administrators. The email you type below will be cc'd to the email\r\n sent to the database administrators.\r\n
\r\n
\r\n \r\n setName(e.target.value)}\r\n />\r\n
\r\n
\r\n \r\n setEmail(e.target.value)}\r\n />\r\n
\r\n
\r\n \r\n setInstitution(e.target.value)}\r\n />\r\n
\r\n
\r\n \r\n setAdditionalMessage(e.target.value)}\r\n />\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n );\r\n};\r\n\r\nexport default RequestDataForm;\r\n","import RequestDataForm from './RequestDataForm';\r\nexport default RequestDataForm;\r\n","import React from 'react';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\nimport ShowChartOutlinedIcon from '@mui/icons-material/ShowChartOutlined';\n\nconst UpsetDataButton = ({ buttonLabel, onClickHandler }) => (\n }\n onClick={onClickHandler}\n >\n \n {buttonLabel}\n \n \n);\nexport default UpsetDataButton;\n","import React from 'react';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\nimport HighlightOffOutlinedIcon from '@mui/icons-material/HighlightOffOutlined';\n\nconst DeselectButton = ({ buttonLabel, onClickHandler }) => (\n )\nexport default DeselectButton;\n","import React from 'react';\nimport Button from '@mui/material/Button';\nimport Typography from '@mui/material/Typography';\nimport AttachEmailOutlinedIcon from '@mui/icons-material/AttachEmailOutlined';\n\nconst RequestButton = ({ buttonLabel, onClickHandler }) => (\n )\nexport default RequestButton;\n","import React, { useMemo, useState, useEffect } from 'react';\nimport _ from 'lodash';\nimport StackedBarChart from '../StackedBarChart/StackedBarChart';\nimport CheckBox from '../../Components/Menu/CheckBox';\nimport DataTable from 'react-data-table-component';\nimport { MyCheckBox } from '../../Components/Menu/style';\nimport Button from '../../Components/Menu/Button';\nimport { parseTreeNav } from '../loadData';\nimport RequestDataForm from '../RequestDataForm';\nimport UpsetDataButton from '../../Components/TableButton/UpsetDataButton';\nimport Card from '@mui/material/Card';\nimport DeselectButton from '../../Components/TableButton/DeselectButton';\nimport RequestButton from '../../Components/TableButton/RequestButton';\nimport Checkbox from '@mui/material/Checkbox';\n\n// import setDatabaseData from '../../index';\n\nconst columns = [\n {\n name: 'Variable Id',\n selector: (row) => row['Variable / Field Name'],\n wrap: true,\n },\n {\n name: 'Description',\n selector: (row) => row['Field Label'],\n wrap: true,\n },\n {\n name: 'Choices',\n selector: (row) => row['Choices Calculations OR Slider Labels'],\n wrap: true,\n },\n];\n\nfunction DataTableSmall(props) {\n const [selectedRows, setSelectedRows] = React.useState([]);\n const [upsetArray, setUpsetArray] = React.useState([]);\n const [toggledClearRows, setToggleClearRows] = React.useState(false);\n const [isOpen, setIsOpen] = useState(false);\n\n // setSelectedRows([]);\n\n // const [seeView, setSeeView] = useState(false);\n function findDifference() {\n let differenceArray = [];\n let rowsSmallTable = upsetArray;\n let rowsSmallTableData = props.smallTableData;\n\n for (let i = 0; i < rowsSmallTable.length; i++) {\n for (let j = 0; j < rowsSmallTableData.length; j++) {\n if (\n rowsSmallTable[i]['Type'] === rowsSmallTableData[j]['Type'] &&\n rowsSmallTable[i]['Variable / Field Name'] ===\n rowsSmallTableData[j]['Variable / Field Name'] &&\n rowsSmallTable[i]['Form Name'] ===\n rowsSmallTableData[j]['Form Name'] &&\n rowsSmallTable[i]['VisitID'] === rowsSmallTableData[j]['VisitID']\n ) {\n differenceArray.push(rowsSmallTableData[j]);\n }\n }\n }\n\n return _.differenceBy(rowsSmallTableData, differenceArray);\n }\n\n const handleChange = (state) => {\n if (props.clearSelectedRows == true) {\n setUpsetArray([]);\n }\n props.setDataToSee(upsetArray);\n\n if (state.selectedRows.length == 0) {\n upsetArray.pop();\n } else {\n if (upsetArray.indexOf(state.selectedRows[0]) == -1) {\n upsetArray.push(state.selectedRows[0]);\n // upsetArray.push(state.selectedRows[0]);\n }\n }\n props.setChangeText(!props.changeText);\n props.setClearSelectedRows(false);\n\n setSelectedRows(state.selectedRows);\n };\n\n // Toggle the state so React Data Table changes to clearSelectedRows are triggered\n const handleClearRows = () => {\n if (!_.isEqual(props.smallTable, [])) {\n props.setSmallTableNav(parseTreeNav(findDifference()));\n props.setSmallTable(_.differenceBy(props.smallTable, upsetArray));\n props.setSmallTableData(findDifference());\n }\n\n // props.setSmallTable(selectedRows);\n\n setToggleClearRows(!toggledClearRows);\n };\n\n const upsetData = () => {\n var urlString = '';\n\n if (upsetArray == []) {\n return;\n }\n console.log(upsetArray)\n for (let i of upsetArray) {\n urlString =\n urlString +\n i['Variable / Field Name'] +\n ',' +\n i['Form Name'] +\n ',' +\n i['VisitIDNum'] +\n ',' +\n i['Section Header'] +\n 'xxx';\n }\n\n fetch('https://manati.ece.neu.edu/vizquery/sdss/upsetData/' + urlString)\n .then((response) => {\n return response.json();\n })\n .then((data) => {\n let intersectionData = data[1];\n let setData = data[0];\n for (let inter of intersectionData) {\n let interName = inter.name;\n const set1 = new Set();\n inter.sets = set1;\n for (let s of setData) {\n if (interName.includes(s.name)) {\n inter.sets.add(s);\n }\n }\n }\n\n let newData = [setData, intersectionData];\n\n props.setDatabaseData(newData);\n props.setHideUpset(true);\n });\n };\n\n const togglePopup = () => {\n setIsOpen(!isOpen);\n };\n const subHeaderComponent = (\n \n

\n {' '}\n {props.smallTableData.length == 0 ? '' : props.selectedNav[1]}\n

\n
\n \n \n \n
\n \n );\n\n const customStyles = {\n rows: {\n style: {\n paddingTop: '5px',\n paddingBottom: '5px',\n },\n },\n headCells: {\n style: {\n backgroundColor: '#f5f8fe',\n fontSize: '14px',\n minHeight: '56px',\n },\n },\n subHeader: {\n style: {\n margin: 0,\n padding: 0,\n },\n },\n };\n\n return (\n \n \n {isOpen && (\n \n )}\n \n \n \n );\n}\nexport default DataTableSmall;\n","import React, { useState, useRef, useMemo } from 'react';\r\nimport { extractCombinations, UpSetJS } from '@upsetjs/react';\r\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\r\nimport { faInfoCircle } from '@fortawesome/free-solid-svg-icons';\r\n\r\nimport useResizeObserver from '../../Components/useResizeObserver';\r\nimport { height } from '@mui/system';\r\n\r\n/**\r\n * Component that renders a StackedBarChart\r\n */\r\n\r\nconst UpsetView = (props) => {\r\n const [showInfo, setShowInfo] = useState(false);\r\n const [width, setWidth] = useState(600);\r\n // console.log(props.databaseData[0]);\r\n // if (props.databaseData[0]) {\r\n // setSeeView(true);\r\n // }\r\n // console.log(props.databaseData[1][0]['sets']);\r\n // console.log('showInfo', showInfo);\r\n const showInfoDiv = () => {\r\n setShowInfo(!showInfo);\r\n if (width == 600) {\r\n setWidth(600);\r\n } else {\r\n setWidth(600);\r\n }\r\n };\r\n function printString(data) {\r\n var string = '';\r\n for (let d of data) {\r\n string = string + d['Section Header'] + ',' + d['VisitIDNum'] + ',';\r\n }\r\n return string;\r\n }\r\n\r\n // const imageUrl = `${process.env.PUBLIC_URL}/upsetExplanation.JPG`;\r\n return (\r\n
\r\n
\r\n This view cannot be used with the environmental data.\r\n

Data to be visualized

\r\n

{printString(props.dataToSee)}

\r\n {/* */}\r\n
\r\n\r\n {/* {showInfo ? (\r\n
\r\n \r\n
\r\n ) : null} */}\r\n {props.hideUpset ? (\r\n
\r\n \r\n
\r\n ) : null}\r\n
\r\n );\r\n};\r\n\r\nexport default UpsetView;\r\n","import React, { useState } from 'react';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@mui/material/List';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Collapse from '@material-ui/core/Collapse';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { margin } from '@mui/system';\n\nconst hasChildren = (item) => {\n const { nodes: children } = item;\n\n if (children === undefined) {\n return false;\n }\n\n if (children.constructor !== Array) {\n return false;\n }\n\n if (children.length === 0) {\n return false;\n }\n\n return true;\n};\n\nconst MenuItem = ({\n level,\n item,\n parentItem,\n setTableData,\n setSelectedMainNav,\n}) => {\n const Component = hasChildren(item) ? MultiLevel : SingleLevel;\n return (\n \n );\n};\n\nconst SingleLevel = ({\n level,\n item,\n parentItem,\n setTableData,\n setSelectedMainNav,\n}) => {\n const handleSingleLevelClick = () => {\n setSelectedMainNav([parentItem.label, item.label]);\n setTableData(item.props);\n };\n\n return (\n \n \n \n );\n};\n\nconst MultiLevel = ({\n level,\n item,\n parentItem,\n setTableData,\n setSelectedMainNav,\n}) => {\n const { nodes: children } = item;\n const [open, setOpen] = useState(false);\n\n const handleClick = () => {\n if (open) {\n setTableData([]);\n }\n setOpen((prev) => !prev);\n };\n\n return (\n \n \n \n {open ? (\n \n ) : (\n \n )}\n \n \n \n {children.map((child) => (\n \n ))}\n \n \n \n );\n};\n\nexport default MenuItem;\n","import React, { useState } from 'react';\nimport MenuItem from './MenuItem';\n\nconst MainDrawer = ({ treeNav, setTableData, setSelectedMainNav }) => {\n const DrawerStyling = {\n boxShadow: '1px 0 0 0',\n // borderRight: \"1px solid #f1f2f9\",\n paddingRight: 10,\n };\n return (\n
\n {treeNav.map((item) => (\n \n ))}\n
\n );\n};\n\nexport default MainDrawer;\n","import React, { useState } from 'react';\nimport ListItem from '@material-ui/core/ListItem';\nimport List from '@mui/material/List';\nimport ListItemButton from '@mui/material/ListItemButton';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@mui/material/ListItemText';\nimport Collapse from '@material-ui/core/Collapse';\nimport ExpandLessIcon from '@material-ui/icons/ExpandLess';\nimport ExpandMoreIcon from '@material-ui/icons/ExpandMore';\nimport { margin } from '@mui/system';\nimport { curveNatural } from 'd3';\n\nconst hasChildren = (item) => {\n const { nodes: children } = item;\n\n if (children === undefined) {\n return false;\n }\n\n if (children.constructor !== Array) {\n return false;\n }\n\n if (children.length === 0) {\n return false;\n }\n\n return true;\n};\n\nconst SmallMenuItem = ({\n level,\n item,\n parentItem,\n setSmallTable,\n setSelectedSmallNav,\n}) => {\n const Component = hasChildren(item) ? MultiLevel : SingleLevel;\n return (\n \n );\n};\n\nconst SingleLevel = ({\n level,\n item,\n parentItem,\n setSmallTable,\n setSelectedSmallNav,\n}) => {\n const handleSingleLevelClick = () => {\n setSelectedSmallNav([parentItem.label, item.label]);\n setSmallTable(item.props);\n };\n\n return (\n \n \n \n );\n};\n\nconst MultiLevel = ({\n level,\n item,\n parentItem,\n setSmallTable,\n setSelectedSmallNav,\n}) => {\n const { nodes: children } = item;\n const [open, setOpen] = useState(false);\n const handleClick = () => {\n if (open) {\n setSmallTable([]);\n }\n setOpen((prev) => !prev);\n };\n\n return (\n \n \n \n {open ? (\n \n ) : (\n \n )}\n \n \n \n {children.map((child) => (\n \n ))}\n \n \n \n );\n};\n\nexport default SmallMenuItem;\n","import React, { useState } from 'react';\nimport SmallMenuItem from './SmallMenuItem';\n\nconst SmallDrawer = ({ smallTableNav, setSmallTable, setSelectedSmallNav }) => {\n const DrawerStyling = {\n boxShadow: '1px 0 0 0',\n // borderRight: \"1px solid #f1f2f9\",\n paddingRight: 10,\n };\n\n return (\n
\n {smallTableNav.map((item) => (\n \n ))}\n
\n );\n};\n\nexport default SmallDrawer;\n","import React, { useEffect, useState } from 'react';\nimport _, { result } from 'lodash';\nimport { ReflexContainer, ReflexSplitter, ReflexElement } from 'react-reflex';\nimport { BsArrowBarRight } from 'react-icons/bs';\nimport { Button, InputGroup } from 'react-bootstrap';\nimport './style.css';\nimport { readString } from 'react-papaparse';\nimport MenuPanel from './menu';\nimport Header from './header';\nimport {\n getCorrectData,\n addAditionalData,\n parseSmallTable,\n parseTreeNav,\n} from './loadData';\nimport TreeNav from './TreeNav';\nimport Search from './Search';\nimport DataTableMain from './DataTableMain/DataTableMain';\nimport DataTableSmall from './DataTableSmall/DataTableSmall';\nimport SmallTreeNav from './SmallTreeNav/SmallTreeNav';\nimport UpsetView from './upsetView/upsetView';\nimport MainDrawer from './MainDrawer/MainDrawer';\nimport SmallDrawer from './SmallDrawer/SmallDrawer';\n\nconst Views = (props) => {\n const [data, setData] = useState(null);\n const [treeNav, setTreeNav] = useState([]);\n\n const [searchData, setSearchData] = useState(null);\n const [tableData, setTableData] = useState([]);\n const [selectedMainNav, setSelectedMainNav] = useState([]);\n const [smallTable, setSmallTable] = useState([]);\n const [smallTableNav, setSmallTableNav] = useState([]);\n const [smallTableData, setSmallTableData] = useState([]);\n const [selectedSmallNav, setSelectedSmallNav] = useState([]);\n const [clearSelectedRows, setClearSelectedRows] = useState(true);\n const [dataToSee, setDataToSee] = useState([]);\n const [changeText, setChangeText] = useState(true);\n const [transferRows, setTransferRows] = useState([]);\n\n const [rowSelectCritera, setRowSelectCriteria] = useState((row) => false);\n const [databaseData, setDatabaseData] = useState([[], []]);\n const [hideUpset, setHideUpset] = useState(false);\n\n const loadData = async () => {\n try {\n const allPosts = await fetch(\n `${process.env.PUBLIC_URL}data/bioPlayground.csv`\n ).then((res) => res.text());\n return allPosts;\n } catch (err) {\n console.log(err);\n }\n };\n useEffect(() => {\n loadData().then((res) => {\n readString(res, {\n header: true,\n worker: true,\n complete: (results) => {\n var newData = addAditionalData(results.data);\n setTreeNav(parseTreeNav(results.data));\n setData(newData);\n },\n });\n });\n }, []);\n\n // const rowSelectCritera = (row) => {\n // if (smallTableData.includes(row)) {\n // return true;\n // }\n // };\n //https://www.npmjs.com/package/react-reflex\n\n return (\n <>\n
\n\n \n \n \n \n \n \n\n \n \n\n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* \n
\n

{this.state.footMessage}

\n
\n
*/}\n \n \n );\n};\n\nexport default Views;\n","import Views from './views';\n\nfunction App() {\n return ;\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\n\nimport reportWebVitals from './reportWebVitals';\nimport 'bootstrap/dist/css/bootstrap.min.css';\nimport 'react-reflex/styles.css';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}