{"version":3,"sources":["../node_modules/jspdf/dist sync","utils/logo.png","utils/brand-themes.js","components/BarChart.js","components/LineChart.js","utils/constants.js","components/LineBarChart.js","components/Header.js","components/TopNav.js","utils/icons.js","components/EntryTable.js","components/Tabs.js","components/CountByDateRangeTable.js","components/authProvider.js","App.js","components/Root.js","serviceWorker.js","index.js"],"names":["webpackEmptyContext","req","e","Error","code","keys","resolve","module","exports","id","BrandThemes","logoBlue","parivedaIndigo","vibrantIndigo","oceanWave","vibrantWave","platinum","white","coral","BarChart","props","useState","dateRange","label","state","updateState","useEffect","labels","entries","filter","entry","entryDate","Date","date","startDate","endDate","name","getAssociatedData","office","includes","secondFilter","reduce","a","c","parseInt","point","length","chartData","datasets","prevValues","forEach","index","push","data","backgroundColor","hoverBorderColor","hoverBorderWidth","split","getDatasets","options","legend","position","boxWidth","responsive","maintainAspectRatio","scales","yAxes","ticks","beginAtZero","precision","RenderLineChart","currentDate","setHours","brandThemeKeys","Object","key","getRandomThemeColor","randomColorName","Math","floor","random","periodStartEndDates","numPeriodsToCreate","periodType","startEndDatesByPeriod","Map","i","set","toString","currentMonthStart","setDate","currentMonth","getMonth","setMonth","getFullYear","getPeriodStartEndDates","periodicalEntryMap","viewOption","entryPeriodNumber","periodOfEntry","period","endDateByPeriod","get","getPeriodNumberForEntryIfApplicable","has","isNaN","buildPeriodicalEntryMap","console","log","dataLabels","toLocaleDateString","getDataLabels","byFinSelection","datasetLabel","datasetData","borderColor","lineTension","fill","buildDataSetFromPeriodicalEntryMap","lookBackOptions","byFinOptions","sort","b","toLowerCase","Box","display","justifyContent","Grid","container","Typography","component","style","paddingRight","color","fontWeight","marginTop","fontSize","Paper","width","item","Select","value","onChange","event","newValue","handleLineChartSelectChange","map","option","MenuItem","handleSpecialLineChartPeriodTypeChange","disabled","finName","lineChartStacked","margin","height","stacked","xAxes","distribution","LineBarChart","returnTargets","targetAccount","type","stack","x","y","optionLabel","optionValue","Header","classes","makeStyles","theme","formControl","spacing","selectMenu","selectEmpty","useStyles","FormControl","className","labelId","officeSelected","handleChange","target","displayEmpty","element","root","toolbarIcon","alignItems","padding","mixins","toolbar","appBar","zIndex","drawer","transition","transitions","create","easing","sharp","duration","leavingScreen","appBarShift","enteringScreen","title","flexGrow","appBarSpacer","content","overflow","logo","textAlign","maxWidth","maxHeight","paper","flexDirection","fixedHeight","right","marginLeft","TopNav","downloadData","preventDefault","downloadAllData","blob","document","createElement","download","href","window","URL","createObjectURL","clickEvt","MouseEvent","view","bubbles","cancelable","dispatchEvent","remove","CssBaseline","AppBar","Toolbar","xs","md","lg","src","Logo","alt","variant","noWrap","Button","onClick","logout","tableIcons","Add","forwardRef","ref","AddBox","Check","Clear","Delete","DeleteOutline","DetailPanel","ChevronRight","Edit","Export","SaveAlt","Filter","FilterList","FirstPage","LastPage","NextPage","PreviousPage","ChevronLeft","ResetSearch","Search","SortArrow","ArrowUpward","ThirdStateCheck","Remove","ViewColumn","EntryTable","columns","field","optionalKeys","tableLayout","filtering","icons","RenderTabs","boxShadow","Tabs","indicatorColor","textColor","centered","Tab","createData","leadCount","CountByDateRangeTable","leadsPerCohort","v","p","m","total","level","getLeadsPerCohort","rows","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","row","scope","config","auth","authority","clientId","redirectUri","location","origin","cache","cacheLocation","storeAuthStateInCookie","loginType","LoginType","Redirect","authProvider","MsalAuthProvider","scopes","palette","text","secondary","leftNav","grid","loadingPaper","barChart","lineChart","loadingGrid","paddingTop","getEntries","accessToken","officeName","axios","post","headers","Authorization","then","res","catch","err","App","fetching","tabSelectedValue","datePickerOpen","token","fetchEntries","hostname","indexOf","testData","getRefreshedToken","getIdToken","newToken","idToken","rawIdToken","handleOfficeChange","newOfficeName","getDownloadData","dataToDownload","downloadFile","entriesCsv","acc","activity","company","contact","join","Blob","lineChartProps","values","stateToUpdate","perCompanyBarChartProps","perFinTargetBarChartProps","entryTableProps","tabsProps","navProps","elevation","justify","ranges","range1","newDateRange","barChartDaysPast","minDate","moment","toDate","maxDate","scroll","enabled","rangeColors","LineChart","appProps","Root","provider","forceLogin","login","authenticationState","error","accountInfo","AuthenticationState","Authenticated","Unauthenticated","InProgress","Boolean","match","ReactDOM","render","getElementById","navigator","serviceWorker","ready","registration","unregister","message"],"mappings":"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","file":"static/js/main.c263b44f.chunk.js","sourcesContent":["function webpackEmptyContext(req) {\n\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\te.code = 'MODULE_NOT_FOUND';\n\tthrow e;\n}\nwebpackEmptyContext.keys = function() { return []; };\nwebpackEmptyContext.resolve = webpackEmptyContext;\nmodule.exports = webpackEmptyContext;\nwebpackEmptyContext.id = 423;","module.exports = __webpack_public_path__ + \"static/media/logo.cc0556b4.png\";","export const BrandThemes = {\r\n logoBlue: \"#1C2C80\",\r\n parivedaIndigo: \"#1A57D6\",\r\n vibrantIndigo: \"#2C75FF\",\r\n oceanWave: \"#3BA9DA\",\r\n vibrantWave: \"#50C3EA\",\r\n platinum: \"#E9EAEC\",\r\n white: \"#FFFFFF\",\r\n coral: \"#F85352\"\r\n}\r\n","import React, { useEffect, useState } from \"react\";\r\nimport { Bar } from \"react-chartjs-2\";\r\nimport { BrandThemes } from \"../utils/brand-themes\";\r\n// import getRandomColor from '../utils/getRandomColor';\r\n\r\nconst BarChart = (props) => {\r\n let [state, updateState] = useState({\r\n dateRange: props.dateRange,\r\n label: props.label,\r\n });\r\n\r\n useEffect(() => {\r\n updateState({ ...state, dateRange: props.dateRange, label: props.label });\r\n }, [props]);\r\n\r\n const labels = [];\r\n\r\n let entries = props.entries.filter((entry) => {\r\n let entryDate = new Date(entry.date);\r\n if (\r\n entryDate >= state.dateRange.startDate &&\r\n entryDate <= state.dateRange.endDate\r\n ) {\r\n return entry.name;\r\n }\r\n });\r\n\r\n const getAssociatedData = (entry) => {\r\n if (\r\n typeof props.office !== \"undefined\" &&\r\n props.office.includes(\"Los Angeles\")\r\n ) {\r\n return entries\r\n .filter((e) => e[props.secondFilter] === entry[props.secondFilter])\r\n .reduce((a, c) => parseInt(a) + parseInt(c.point), 0);\r\n }\r\n return entries.filter(\r\n (e) => e[props.secondFilter] === entry[props.secondFilter]\r\n ).length;\r\n };\r\n\r\n const getDatasets = () => {\r\n const datasets = [];\r\n if (entries.length > 0) {\r\n let prevValues = [entries[0][props.secondFilter]];\r\n entries.forEach((entry, index) => {\r\n if (index === 0) {\r\n // const color = getRandomColor();\r\n datasets.push({\r\n label: state.label,\r\n data: [getAssociatedData(entry)],\r\n backgroundColor: BrandThemes.vibrantIndigo,\r\n // backgroundColor: \"rgb(63 81 181)\",\r\n // borderColor: \"rgb(13 103 220, 1)\",\r\n hoverBorderColor: BrandThemes.vibrantWave,\r\n hoverBorderWidth: 4,\r\n });\r\n entry[props.secondFilter] =\r\n entry[props.secondFilter].split(\" \").length > 5\r\n ? \"Invalid Value\"\r\n : entry[props.secondFilter];\r\n labels.push(entry[props.secondFilter]);\r\n } else if (!prevValues.includes(entry[props.secondFilter])) {\r\n entry[props.secondFilter] =\r\n entry[props.secondFilter].split(\" \").length > 5\r\n ? \"Invalid Value\"\r\n : entry[props.secondFilter];\r\n labels.push(entry[props.secondFilter]);\r\n datasets[0].data.push(getAssociatedData(entry));\r\n prevValues.push(entry[props.secondFilter]);\r\n }\r\n });\r\n } else {\r\n datasets.push({\r\n label: state.label,\r\n data: [],\r\n });\r\n }\r\n return datasets;\r\n };\r\n\r\n const chartData = {\r\n labels: labels,\r\n datasets: getDatasets(),\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default BarChart;\r\n","import React, { useEffect } from \"react\";\r\nimport { Box, Paper, Grid, Select, MenuItem, Typography } from \"@material-ui/core\";\r\nimport { Line } from \"react-chartjs-2\";\r\nimport { BrandThemes } from \"../utils/brand-themes\";\r\nimport { ONE_DAY_IN_MILLISECONDS } from \"./../utils/constants\";\r\n\r\nconst RenderLineChart = (props) => {\r\n useEffect(() => {\r\n \r\n }, [props.office]);\r\n\r\n let currentDate = new Date(new Date().setHours(0, 0, 0, 0));\r\n\r\n const getPeriodStartEndDates = (numPeriodsToCreate, periodType, currentDate) => {\r\n let startEndDatesByPeriod = new Map();\r\n if (periodType === \"weeks\") {\r\n const numDaysInWeek = 7;\r\n for (let i = numPeriodsToCreate; i > 0; i--) {\r\n startEndDatesByPeriod.set(\"week\" + i.toString(), {\r\n startDate: new Date(new Date(currentDate - (ONE_DAY_IN_MILLISECONDS * ((i * numDaysInWeek) - 1))).setHours(0, 0, 0, 0)),\r\n endDate: i === 1 ? null : new Date(new Date(currentDate - (ONE_DAY_IN_MILLISECONDS * ((i - 1) * numDaysInWeek))).setHours(23, 59, 59, 0))\r\n })\r\n }\r\n } else if (periodType === \"months\") {\r\n const currentMonthStart = new Date(currentDate).setDate(1);\r\n const currentMonth = currentDate.getMonth();\r\n for (let i = numPeriodsToCreate; i > 0; i--) {\r\n const startDate = new Date(new Date(currentMonthStart).setMonth(currentMonth - (i - 1)));\r\n startEndDatesByPeriod.set(\"month\" + i.toString(), {\r\n startDate: startDate,\r\n endDate: i === 1 ? null : new Date(new Date(startDate).getFullYear(), new Date(startDate).getMonth() + 1, 0)\r\n })\r\n }\r\n }\r\n return startEndDatesByPeriod;\r\n };\r\n\r\n const getDataLabels = (periodStartEndDates) => {\r\n const dataLabels = [];\r\n periodStartEndDates.forEach((key) => {\r\n dataLabels.push(`${key.startDate.toLocaleDateString().split(\",\")[0]}`);\r\n });\r\n\r\n return dataLabels;\r\n };\r\n\r\n const getPeriodNumberForEntryIfApplicable = (entry, startEndDatesByPeriod) => {\r\n let periodOfEntry = \"0\";\r\n let entryDate = new Date(entry.date);\r\n [...startEndDatesByPeriod.keys()].forEach((period) => {\r\n const endDateByPeriod = startEndDatesByPeriod.get(period).endDate ? startEndDatesByPeriod.get(period).endDate : new Date();\r\n if (entryDate >= startEndDatesByPeriod.get(period).startDate && entryDate <= endDateByPeriod) {\r\n periodOfEntry = period;\r\n }\r\n });\r\n return periodOfEntry;\r\n }\r\n\r\n const buildPeriodicalEntryMap = (entries, startEndDatesByPeriod, office, viewOption) => {\r\n const periodicalEntryMap = new Map();\r\n if (viewOption === 'total') {\r\n periodicalEntryMap.set(\"total\", new Map());\r\n }\r\n let entryPeriodNumber = \"0\";\r\n\r\n entries.forEach((entry) => {\r\n entryPeriodNumber = getPeriodNumberForEntryIfApplicable(entry, startEndDatesByPeriod);\r\n if (entryPeriodNumber !== \"0\") {\r\n if (viewOption === \"by Fin\") {\r\n if (!periodicalEntryMap.has(entry.name)) {\r\n periodicalEntryMap.set(entry.name, new Map([[entryPeriodNumber, ((entry.point && !isNaN(entry.point) && office.includes(\"Los Angeles\")) ? parseInt(entry.point) : 1)]]));\r\n } else {\r\n if (periodicalEntryMap.get(entry.name).has(entryPeriodNumber)) {\r\n periodicalEntryMap.get(entry.name).set(entryPeriodNumber, periodicalEntryMap.get(entry.name).get(entryPeriodNumber) + ((entry.point && !isNaN(entry.point) && office.includes(\"Los Angeles\")) ? parseInt(entry.point) : 1))\r\n } else {\r\n periodicalEntryMap.get(entry.name).set(entryPeriodNumber, ((entry.point && !isNaN(entry.point) && office.includes(\"Los Angeles\")) ? parseInt(entry.point) : 1));\r\n }\r\n }\r\n } else if (viewOption === 'total') {\r\n if (periodicalEntryMap.get('total').has(entryPeriodNumber)) {\r\n periodicalEntryMap.get('total').set(entryPeriodNumber, periodicalEntryMap.get('total').get(entryPeriodNumber) + ((entry.point && !isNaN(entry.point) && office.includes(\"Los Angeles\")) ? parseInt(entry.point) : 1));\r\n } else {\r\n periodicalEntryMap.get('total').set(entryPeriodNumber, ((entry.point && !isNaN(entry.point) && office.includes(\"Los Angeles\")) ? parseInt(entry.point) : 1));\r\n }\r\n }\r\n }\r\n });\r\n\r\n [...startEndDatesByPeriod.keys()].forEach((period) => {\r\n [...periodicalEntryMap.keys()].forEach((key) => {\r\n if (!periodicalEntryMap.get(key).has(period)) {\r\n periodicalEntryMap.get(key).set(period, 0);\r\n }\r\n });\r\n });\r\n return periodicalEntryMap;\r\n };\r\n\r\n const buildDataSetFromPeriodicalEntryMap = (periodicalEntryMap, periodStartEndDates, byFinSelection, viewOption) => {\r\n let datasets = [];\r\n let datasetLabel = \"\";\r\n let datasetData = [];\r\n\r\n if ([...periodicalEntryMap.keys()].filter((name) => name === byFinSelection).length === 0) {\r\n byFinSelection = \"all fins\";\r\n }\r\n\r\n [...periodicalEntryMap.keys()].forEach((key) => {\r\n if (viewOption === \"total\" || byFinSelection === \"all fins\" || key === byFinSelection) {\r\n datasetLabel = key;\r\n datasetData = [];\r\n [...periodStartEndDates.keys()].forEach((period) => {\r\n datasetData.push(periodicalEntryMap.get(key).get(period));\r\n });\r\n datasets.push({\r\n label: datasetLabel,\r\n data: datasetData,\r\n backgroundColor: BrandThemes.coral,\r\n borderColor: getRandomThemeColor(),\r\n hoverBorderWidth: 3,\r\n hoverBorderColor: getRandomThemeColor(),\r\n lineTension: 0.3,\r\n fill: false,\r\n });\r\n }\r\n });\r\n\r\n return datasets;\r\n };\r\n\r\n const brandThemeKeys = Object.keys(BrandThemes).filter(key => { \r\n const restrictedColors = [\"white\", \"coral\"];\r\n if (!restrictedColors.includes(key)) {\r\n return key;\r\n }\r\n });\r\n\r\n const getRandomThemeColor = () => {\r\n const randomColorName = brandThemeKeys[Math.floor(Math.random() * brandThemeKeys.length)];\r\n return BrandThemes[randomColorName];\r\n };\r\n\r\n const periodStartEndDates = getPeriodStartEndDates(props.numPeriodsToCreate, props.periodType, currentDate);\r\n\r\n const periodicalEntryMap = buildPeriodicalEntryMap(props.entries, periodStartEndDates, props.office, props.viewOption);\r\n console.log(\"periodicalEntryMap\");\r\n console.log(periodicalEntryMap);\r\n\r\n const chartData = {\r\n labels: getDataLabels(periodStartEndDates),\r\n datasets: buildDataSetFromPeriodicalEntryMap(periodicalEntryMap, periodStartEndDates, props.byFinSelection, props.viewOption),\r\n };\r\n\r\n const lookBackOptions = {\r\n \"weeks\": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 15, 20, 25, 30, 35, 40, 45, 50, 52],\r\n \"months\": [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\r\n }\r\n\r\n const timePeriodOptions = [\r\n \"weeks\", \"months\"\r\n ]\r\n\r\n const viewOptions = [\r\n \"total\", \"by Fin\"\r\n ]\r\n\r\n const lineChartStackedOptions = [\r\n \"stacked\",\r\n \"not stacked\"\r\n ]\r\n\r\n const byFinOptions = [\r\n \"all fins\",\r\n ...[...periodicalEntryMap.keys()].sort((a, b) => a.toLowerCase() !== b.toLowerCase() ? a.toLowerCase() < b.toLowerCase() ? -1 : 1 : 0)\r\n ]\r\n\r\n const handlePeriodTypeSelectChange = (event, newValue) => {\r\n return lookBackOptions[newValue.props.value].includes(props.numPeriodsToCreate)\r\n ? props.handleLineChartSelectChange(event, newValue, \"periodType\")\r\n : props.handleSpecialLineChartPeriodTypeChange(event, newValue, \"periodType\")\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n {props.office.includes(\"Los Angeles\") ? \"Points over\" : \"Leads over\"}\r\n \r\n \r\n \r\n props.handleLineChartSelectChange(event, newValue, \"numPeriodsToCreate\")}\r\n >\r\n {\r\n lookBackOptions[props.periodType].map((option, index) => {option})\r\n }\r\n \r\n \r\n \r\n \r\n {\r\n timePeriodOptions.map((period, index) => {period})\r\n }\r\n \r\n \r\n \r\n props.handleLineChartSelectChange(event, newValue, \"viewOption\")} \r\n >\r\n {\r\n viewOptions.map((option, index) => {option})\r\n }\r\n \r\n \r\n \r\n props.handleLineChartSelectChange(event, newValue, \"byFinSelection\")}\r\n disabled={props.viewOption === 'total' ? true : false}\r\n >\r\n {\r\n byFinOptions.map((finName, index) => {finName.toString()})\r\n }\r\n \r\n \r\n \r\n props.handleLineChartSelectChange(event, newValue, \"lineChartStacked\")}\r\n disabled={(props.viewOption === 'total' || props.byFinSelection !== \"all fins\") ? true : false}\r\n >\r\n {\r\n lineChartStackedOptions.map((option, index) => {option.toString()})\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default RenderLineChart;\r\n","export const ONE_DAY_IN_MILLISECONDS = 86400000;","import React, { useEffect, useState } from \"react\";\r\nimport { Bar } from \"react-chartjs-2\";\r\nimport { BrandThemes } from \"../utils/brand-themes\";\r\n\r\nconst LineBarChart = (props) => {\r\n let [state, updateState] = useState({\r\n dateRange: props.dateRange,\r\n label: props.label,\r\n });\r\n\r\n useEffect(() => {\r\n updateState({ ...state, dateRange: props.dateRange, label: props.label });\r\n }, [props]);\r\n\r\n const labels = [];\r\n\r\n let matchedNames = [];\r\n\r\n var lineBarDataSet = {\r\n type: \"line\",\r\n label: state.label,\r\n hoverBorderColor: BrandThemes.vibrantWave,\r\n hoverBorderWidth: 4,\r\n fill: false,\r\n data: [],\r\n };\r\n\r\n let entries = props.entries.filter((entry) => {\r\n let entryDate = new Date(entry.date);\r\n if (\r\n entryDate >= state.dateRange.startDate &&\r\n entryDate <= state.dateRange.endDate\r\n ) {\r\n return entry.name;\r\n }\r\n });\r\n\r\n const getAssociatedData = (entry, returnTargets) => {\r\n const data = entries.filter(\r\n (e) => e[props.secondFilter] === entry[props.secondFilter]\r\n );\r\n return returnTargets\r\n ? data.filter((e) => e.targetAccount === true).length\r\n : data.length;\r\n };\r\n\r\n const getDatasets = () => {\r\n const datasets = [];\r\n if (entries.length > 0) {\r\n let prevValues = [entries[0][props.secondFilter]];\r\n entries.forEach((entry, index) => {\r\n if (index === 0) {\r\n datasets.push({\r\n type: \"bar\",\r\n label: props.label,\r\n data: [getAssociatedData(entry)],\r\n backgroundColor: BrandThemes.vibrantIndigo,\r\n hoverBorderColor: BrandThemes.vibrantWave,\r\n hoverBorderWidth: 4,\r\n stack: index\r\n }); \r\n datasets.push({\r\n type: \"bar\",\r\n label: `Target ` + props.label,\r\n data: [getAssociatedData(entry, true)],\r\n backgroundColor: BrandThemes.oceanWave,\r\n hoverBorderColor: BrandThemes.vibrantWave,\r\n hoverBorderWidth: 4,\r\n stack: index\r\n });\r\n entry[props.secondFilter] =\r\n entry[props.secondFilter].split(\" \").length > 5\r\n ? \"Invalid Value\"\r\n : entry[props.secondFilter];\r\n\r\n labels.push(entry[props.secondFilter]);\r\n } else if (!prevValues.includes(entry[props.secondFilter])) {\r\n entry[props.secondFilter] =\r\n entry[props.secondFilter].split(\" \").length > 5\r\n ? \"Invalid Value\"\r\n : entry[props.secondFilter];\r\n\r\n labels.push(entry[props.secondFilter]);\r\n datasets[0].data.push(getAssociatedData(entry));\r\n datasets[1].data.push(getAssociatedData(entry, true)); // TODO test this\r\n\r\n prevValues.push(entry[props.secondFilter]);\r\n }\r\n });\r\n } else {\r\n datasets.push({\r\n label: state.label,\r\n data: [],\r\n });\r\n }\r\n\r\n return datasets;\r\n };\r\n\r\n const chartData = {\r\n labels: labels,\r\n datasets: getDatasets(),\r\n };\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nexport default LineBarChart;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport { FormControl, Select, MenuItem } from \"@material-ui/core\";\r\n\r\nconst options = [\r\n {\r\n optionLabel: \"Atlanta\",\r\n optionValue: \"Atlanta\",\r\n },\r\n {\r\n optionLabel: \"Chicago\",\r\n optionValue: \"Chicago\",\r\n },\r\n {\r\n optionLabel: \"Dallas\",\r\n optionValue: \"Dallas\",\r\n },\r\n {\r\n optionLabel: \"Denver\",\r\n optionValue: \"Denver\",\r\n },\r\n {\r\n optionLabel: \"Houston\",\r\n optionValue: \"Houston\",\r\n },\r\n {\r\n optionLabel: \"Los Angeles\",\r\n optionValue: \"Los Angeles\",\r\n },\r\n {\r\n optionLabel: \"New York\",\r\n optionValue: \"New York\",\r\n },\r\n {\r\n optionLabel: \"Philadelphia\",\r\n optionValue: \"Philadelphia\",\r\n },\r\n {\r\n optionLabel: \"San Francisco\",\r\n optionValue: \"San Francisco\",\r\n },\r\n {\r\n optionLabel: \"Seattle\",\r\n optionValue: \"Seattle\",\r\n },\r\n {\r\n optionLabel: \"Toronto\",\r\n optionValue: \"Toronto\",\r\n },\r\n {\r\n optionLabel: \"Washington DC\",\r\n optionValue: \"Washington DC\",\r\n },\r\n];\r\n\r\nconst Header = (props) => {\r\n const useStyles = makeStyles((theme) => ({\r\n formControl: {\r\n margin: theme.spacing(2),\r\n },\r\n selectMenu: {\r\n color: \"black\",\r\n },\r\n selectEmpty: {\r\n // marginTop: theme.spacing(2),\r\n },\r\n }));\r\n const classes = useStyles();\r\n\r\n return (\r\n
\r\n \r\n {/* Select an Office */}\r\n props.handleChange(event.target.value)}\r\n // input={}\r\n displayEmpty={true}\r\n >\r\n {options.map((element) => {\r\n return (\r\n \r\n {element.optionLabel}\r\n \r\n );\r\n })}\r\n \r\n \r\n
\r\n );\r\n};\r\n\r\nexport default Header;\r\n","import React from \"react\";\r\nimport { makeStyles } from \"@material-ui/core/styles\";\r\nimport CssBaseline from \"@material-ui/core/CssBaseline\";\r\nimport Logo from \"../utils/logo.png\";\r\nimport AppBar from \"@material-ui/core/AppBar\";\r\nimport Toolbar from \"@material-ui/core/Toolbar\";\r\nimport Button from \"@material-ui/core/Button\";\r\nimport Grid from \"@material-ui/core/Grid\";\r\nimport Typography from \"@material-ui/core/Typography\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n display: \"flex\",\r\n },\r\n toolbarIcon: {\r\n display: \"flex\",\r\n alignItems: \"center\",\r\n justifyContent: \"flex-end\",\r\n padding: \"0 8px\",\r\n ...theme.mixins.toolbar,\r\n },\r\n appBar: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.leavingScreen,\r\n }),\r\n },\r\n appBarShift: {\r\n width: `100%`,\r\n transition: theme.transitions.create([\"width\", \"margin\"], {\r\n easing: theme.transitions.easing.sharp,\r\n duration: theme.transitions.duration.enteringScreen,\r\n }),\r\n },\r\n title: {\r\n flexGrow: 1,\r\n display: \"inline-block\",\r\n },\r\n appBarSpacer: theme.mixins.toolbar,\r\n content: {\r\n flexGrow: 1,\r\n height: \"100vh\",\r\n overflow: \"auto\",\r\n },\r\n // logout: {\r\n // // justifyContent: 'flex-end'\r\n // position: \"absolute\",\r\n // left: \"96%\",\r\n // top: \"50%\",\r\n // // margin: 'auto',\r\n // transform: \"translate(-60%, -50%)\",\r\n // },\r\n logo: {\r\n margin: \"auto\",\r\n textAlign: \"left\",\r\n maxWidth: \"63%\",\r\n maxHeight: \"84%\",\r\n },\r\n // logoHorizontallyCenter: {\r\n // position: \"absolute\",\r\n // left: \"50%\",\r\n // top: \"50%\",\r\n // transform: \"translate(-50%, -50%)\",\r\n // },\r\n paper: {\r\n display: \"flex\",\r\n overflow: \"auto\",\r\n flexDirection: \"column\",\r\n },\r\n fixedHeight: {\r\n height: 240,\r\n },\r\n right: {\r\n marginLeft: \"auto\",\r\n },\r\n}));\r\n\r\nexport default function TopNav(props) {\r\n const classes = useStyles();\r\n\r\n const downloadData = async (e) => {\r\n e.preventDefault();\r\n const blob = await props.downloadAllData();\r\n const a = document.createElement(\"a\");\r\n a.download = \"ftf_export.csv\";\r\n a.href = window.URL.createObjectURL(blob);\r\n const clickEvt = new MouseEvent(\"click\", {\r\n view: window,\r\n bubbles: true,\r\n cancelable: true,\r\n });\r\n a.dispatchEvent(clickEvt);\r\n a.remove();\r\n };\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \"logo\"\r\n \r\n \r\n \r\n Feed The Funnel Metrics\r\n \r\n \r\n \r\n \r\n \r\n Logout\r\n \r\n \r\n \r\n \r\n \r\n {/* \r\n
\r\n \r\n \r\n \r\n
\r\n \r\n {mainListItems}\r\n */}\r\n
\r\n );\r\n}\r\n","import {\r\n Search,\r\n ViewColumn,\r\n SaveAlt,\r\n ChevronLeft,\r\n ChevronRight,\r\n FirstPage,\r\n LastPage,\r\n Check,\r\n FilterList,\r\n Remove,\r\n AddBox,\r\n DeleteOutline,\r\n Clear,\r\n Edit,\r\n ArrowUpward\r\n} from '@material-ui/icons';\r\nimport React, { forwardRef } from 'react';\r\n\r\nexport const tableIcons = {\r\n Add: forwardRef((props, ref) => ),\r\n Check: forwardRef((props, ref) => ),\r\n Clear: forwardRef((props, ref) => ),\r\n Delete: forwardRef((props, ref) => ),\r\n DetailPanel: forwardRef((props, ref) => ),\r\n Edit: forwardRef((props, ref) => ),\r\n Export: forwardRef((props, ref) => ),\r\n Filter: forwardRef((props, ref) => ),\r\n FirstPage: forwardRef((props, ref) => ),\r\n LastPage: forwardRef((props, ref) => ),\r\n NextPage: forwardRef((props, ref) => ),\r\n PreviousPage: forwardRef((props, ref) => ),\r\n ResetSearch: forwardRef((props, ref) => ),\r\n Search: forwardRef((props, ref) => ),\r\n SortArrow: forwardRef((props, ref) => ),\r\n ThirdStateCheck: forwardRef((props, ref) => ),\r\n ViewColumn: forwardRef((props, ref) => )\r\n};","import React from \"react\";\r\nimport MaterialTable from \"material-table\";\r\nimport { tableIcons } from \"../utils/icons\";\r\n\r\n// let columns = [];\r\n\r\nconst EntryTable = (props) => {\r\n // let columns = []\r\n const columns = [\r\n {\r\n title: \"Date\",\r\n field: \"date\",\r\n },\r\n {\r\n title: \"Event\",\r\n field: \"event\",\r\n width: \"60rem\",\r\n },\r\n {\r\n title: \"Company\",\r\n field: \"company\",\r\n },\r\n {\r\n title: \"Contact\",\r\n field: \"contact\",\r\n },\r\n {\r\n title: \"Name\",\r\n field: \"name\",\r\n },\r\n {\r\n title: \"Target?\",\r\n field: \"targetAccount\",\r\n },\r\n ];\r\n const optionalKeys = [\"nextSteps\"];\r\n // const excludedKeys = [\"timestamp\", \"rawText\", \"userName\", \"office\", \"level\", \"tableData\", \"otherFins\", \"slackChannel\"];\r\n if (props.entries.length > 0) {\r\n Object.keys(props.entries[0]).forEach((key) => {\r\n if (optionalKeys.includes(key)) {\r\n columns.push({\r\n title: key,\r\n field: key,\r\n });\r\n if (key === \"event\") {\r\n columns[columns.length - 1] = {\r\n ...columns[columns.length - 1],\r\n width: \"60rem\",\r\n };\r\n }\r\n // if (key === \"date\") {\r\n // columns[columns.length - 1] = { ...columns[columns.length - 1] }\r\n // }\r\n }\r\n });\r\n }\r\n\r\n return (\r\n 0 ? props.entries.sort((a,b)=>new Date(b.date) - new Date(a.date)) : []} // not sure if sort needed here\r\n title={`Entries for the ${props.office} office`}\r\n />\r\n );\r\n};\r\n\r\nexport default EntryTable;\r\n","import React from 'react';\r\nimport { Paper, Tabs, Tab } from '@material-ui/core';\r\n\r\nconst RenderTabs = (props) => {\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 RenderTabs;","import React from 'react';\r\nimport { makeStyles } from '@material-ui/core/styles';\r\nimport Table from '@material-ui/core/Table';\r\nimport TableBody from '@material-ui/core/TableBody';\r\nimport TableCell from '@material-ui/core/TableCell';\r\nimport TableContainer from '@material-ui/core/TableContainer';\r\nimport TableHead from '@material-ui/core/TableHead';\r\nimport TableRow from '@material-ui/core/TableRow';\r\nimport Paper from '@material-ui/core/Paper';\r\n\r\nconst getLeadsPerCohort = (entries, startDate, endDate, leadsPerCohort) => {\r\n if (entries !== null && entries.length > 0) {\r\n let entryDate = new Date(entries[0].date);\r\n entries.forEach((entry) => {\r\n entryDate = new Date(entry.date);\r\n if (\r\n entryDate >= startDate &&\r\n entryDate <= endDate\r\n ) {\r\n leadsPerCohort.total++;\r\n if (entry.level.includes(\"Vice President\")) {\r\n leadsPerCohort.v++;\r\n } else if (entry.level.includes(\"Principal\")) {\r\n leadsPerCohort.p++;\r\n } else if (entry.level.includes(\"Manager\")) {\r\n leadsPerCohort.m++;\r\n } else if (entry.level.includes(\"Associate\")) {\r\n leadsPerCohort.a++;\r\n } else if (entry.level.includes(\"Consultant\")) {\r\n leadsPerCohort.c++;\r\n }\r\n }\r\n });\r\n }\r\n return leadsPerCohort;\r\n}\r\n\r\nconst createData = (name, leadCount) => {\r\n return { name, leadCount };\r\n}\r\n\r\nconst CountByDateRangeTable = (entries, startDate, endDate) => {\r\n let leadsPerCohort = {\r\n v: 0,\r\n p: 0,\r\n m: 0,\r\n a: 0,\r\n c: 0,\r\n total: 0\r\n };\r\n\r\n leadsPerCohort = getLeadsPerCohort(entries, startDate, endDate, leadsPerCohort);\r\n\r\n const rows = [\r\n createData('Vice President', leadsPerCohort.v),\r\n createData('Principal', leadsPerCohort.p),\r\n createData('Manager', leadsPerCohort.m),\r\n createData('Associate', leadsPerCohort.a),\r\n createData('Consultant', leadsPerCohort.c),\r\n createData('Total', leadsPerCohort.total),\r\n ];\r\n\r\n return (\r\n \r\n \r\n \r\n \r\n Cohort\r\n Lead Count\r\n \r\n \r\n \r\n {rows.map((row) => (\r\n \r\n \r\n {row.name}\r\n \r\n {row.leadCount}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n );\r\n}\r\n\r\nexport default CountByDateRangeTable;","import { MsalAuthProvider, LoginType } from 'react-aad-msal';\r\n\r\n// Msal Configurations\r\nconst config = {\r\n auth: {\r\n authority: 'https://login.microsoftonline.com/be32aae3-7a3a-4fdb-b71a-161014dd062d',\r\n clientId: '556edff9-15bd-4a72-8c4c-df85922c9e10',\r\n redirectUri: `${window.location.origin}`\r\n },\r\n cache: {\r\n cacheLocation: \"localStorage\",\r\n storeAuthStateInCookie: true\r\n }\r\n};\r\n\r\n// Authentication Parameters\r\nconst authenticationParameters = {\r\n scopes: [\r\n 'api://5e5fa589-0f81-442c-8d46-28e36892d20a/access_as_user',\r\n ]\r\n}\r\n\r\n// Options\r\nconst options = {\r\n loginType: LoginType.Redirect\r\n}\r\n\r\nexport const authProvider = new MsalAuthProvider(config, authenticationParameters, options)","import React, { useEffect, useState } from \"react\";\r\nimport axios from \"axios\";\r\n//import { Buffer } from \"node:buffer\";\r\nimport BarChart from \"./components/BarChart\";\r\nimport LineChart from \"./components/LineChart\";\r\nimport LineBarChart from \"./components/LineBarChart\";\r\nimport Header from \"./components/Header\";\r\nimport TopNav from \"./components/TopNav\";\r\nimport EntryTable from \"./components/EntryTable\";\r\nimport Tabs from \"./components/Tabs\";\r\nimport { Box, Paper, Grid, makeStyles } from \"@material-ui/core\";\r\nimport \"date-fns\";\r\nimport { ONE_DAY_IN_MILLISECONDS } from \"./utils/constants\";\r\nimport \"react-date-range/dist/styles.css\";\r\nimport \"react-date-range/dist/theme/default.css\";\r\nimport { DateRange } from \"react-date-range\";\r\nimport moment from \"moment\";\r\nimport CountByDateRangeTable from \"./components/CountByDateRangeTable\";\r\nimport { BrandThemes } from \"./utils/brand-themes\";\r\n\r\nimport { authProvider } from \"./components/authProvider\";\r\nimport * as testData from \"./utils/testEntries.json\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n paper: {\r\n color: theme.palette.text.secondary,\r\n },\r\n leftNav: {\r\n textAlign: \"center\",\r\n },\r\n grid: {\r\n textAlign: \"left\",\r\n },\r\n loadingPaper: {\r\n padding: theme.spacing(2),\r\n textAlign: \"center\",\r\n color: theme.palette.text.secondary,\r\n display: \"flex\",\r\n },\r\n barChart: {\r\n padding: theme.spacing(2),\r\n textAlign: \"left\",\r\n color: theme.palette.text.secondary,\r\n display: \"flex\",\r\n height: 450,\r\n marginTop: \"10px\",\r\n },\r\n lineChart: {\r\n padding: theme.spacing(2),\r\n color: theme.palette.text.secondary,\r\n display: \"flex\",\r\n height: 350,\r\n },\r\n loadingGrid: {\r\n paddingTop: \"20px\",\r\n justifyContent: \"center\",\r\n display: \"flex\",\r\n },\r\n}));\r\n\r\nconst App = (props) => {\r\n const date = new Date(),\r\n y = date.getFullYear(),\r\n m = date.getMonth();\r\n let [state, updateState] = useState({\r\n entries: null,\r\n fetching: false,\r\n office: \"Atlanta\",\r\n tabSelectedValue: 0,\r\n datePickerOpen: false,\r\n dateRange: {\r\n startDate: new Date(new Date(y, m).setHours(0, 0, 0, 0)),\r\n endDate: new Date(),\r\n },\r\n token: null,\r\n lineChart: {\r\n numPeriodsToCreate: 12,\r\n periodType: \"weeks\",\r\n viewOption: \"total\",\r\n byFinSelection: \"all fins\",\r\n lineChartStacked: \"stacked\",\r\n },\r\n });\r\n const classes = useStyles();\r\n\r\n const fetchEntries = async (officeName) => {\r\n let data;\r\n if (\r\n state.token !== null &&\r\n window.location.hostname.indexOf(\"localhost\") <= -1\r\n ) {\r\n updateState({ ...state, fetching: true });\r\n await getEntries(state.token, officeName).then(async (res) => {\r\n if (res && res.entries) {\r\n data = res.entries;\r\n }\r\n });\r\n } else {\r\n data = testData[\"entries\"].sort((a, b) => new Date(a) - new Date(b));\r\n }\r\n updateState({\r\n ...state,\r\n entries: data,\r\n office: officeName,\r\n fetching: false,\r\n lineChart: {\r\n ...state.lineChart,\r\n byFinSelection: \"all fins\",\r\n },\r\n });\r\n };\r\n useEffect(() => {\r\n const getRefreshedToken = async () => {\r\n let newToken = await authProvider.getIdToken();\r\n return newToken;\r\n };\r\n if (state.token === null) {\r\n getRefreshedToken().then((newToken) => {\r\n if (newToken.idToken.rawIdToken !== state.token) {\r\n updateState({ ...state, token: newToken.idToken.rawIdToken });\r\n }\r\n });\r\n }\r\n\r\n fetchEntries(state.office);\r\n }, [state.token]);\r\n\r\n const handleOfficeChange = async (newOfficeName) => {\r\n await fetchEntries(newOfficeName);\r\n };\r\n\r\n const handleTabChange = (event, newValue) => {\r\n if (state.tabSelectedValue !== newValue) {\r\n updateState({ ...state, tabSelectedValue: newValue });\r\n }\r\n };\r\n\r\n const handleLineChartSelectChange = (event, newValue, stateToUpdate) => {\r\n if (state[stateToUpdate] !== newValue.props.value) {\r\n updateState({\r\n ...state,\r\n lineChart: {\r\n ...state.lineChart,\r\n [stateToUpdate]: newValue.props.value,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const handleSpecialLineChartPeriodTypeChange = (\r\n event,\r\n newValue,\r\n stateToUpdate\r\n ) => {\r\n if (state[stateToUpdate] !== newValue.props.value) {\r\n updateState({\r\n ...state,\r\n lineChart: {\r\n ...state.lineChart,\r\n [stateToUpdate]: newValue.props.value,\r\n numPeriodsToCreate: 12,\r\n },\r\n });\r\n }\r\n };\r\n\r\n const getDownloadData = async () => {\r\n const dataToDownload =\r\n window.location.hostname.indexOf(\"localhost\") > -1\r\n ? testData\r\n : await axios\r\n .get(\r\n \"https://jg1kf1ph1m.execute-api.us-east-2.amazonaws.com/prod/getData\",\r\n {\r\n headers: {\r\n Authorization: `Bearer ${state.token}`,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n )\r\n .then(async (res) => await res.data)\r\n .catch((err) => console.log(err));\r\n\r\n const data =\r\n dataToDownload &&\r\n dataToDownload.entries &&\r\n dataToDownload.entries.length > 0\r\n ? dataToDownload.entries\r\n : testData.entries;\r\n\r\n return data;\r\n };\r\n\r\n const downloadFile = async () => {\r\n let headers = [\"Office,Date,Event,Company,Level,Contact,Name\"];\r\n\r\n const dataToDownload = await getDownloadData();\r\n // Convert users data to a csv\r\n let entriesCsv = dataToDownload.reduce((acc, activity) => {\r\n const { office, date, event, company, level, contact, name } = activity;\r\n acc.push([office, date, event, company, level, contact, name].join(\"|\"));\r\n return acc;\r\n }, []);\r\n const blob = new Blob([[\"sep=|\", ...headers, ...entriesCsv].join(\"\\n\")], {\r\n type: \"text/csv\",\r\n });\r\n return blob;\r\n };\r\n\r\n let lineChartProps = {\r\n entries: state.entries ? Object.values(state.entries) : null,\r\n office: state.office,\r\n numPeriodsToCreate: state.lineChart.numPeriodsToCreate,\r\n periodType: state.lineChart.periodType,\r\n viewOption: state.lineChart.viewOption,\r\n byFinSelection: state.lineChart.byFinSelection,\r\n lineChartStacked: state.lineChart.lineChartStacked,\r\n handleLineChartSelectChange: handleLineChartSelectChange,\r\n handleSpecialLineChartPeriodTypeChange:\r\n handleSpecialLineChartPeriodTypeChange,\r\n };\r\n\r\n let perCompanyBarChartProps = {\r\n entries: state.entries ? Object.values(state.entries) : null,\r\n label:\r\n state.office !== \"\" &&\r\n `Leads by Company: ${state.dateRange.startDate.toLocaleDateString()} - ${state.dateRange.endDate.toLocaleDateString()}`,\r\n dateRange: state.dateRange,\r\n secondFilter: \"company\",\r\n type: \"COMPANY\",\r\n };\r\n\r\n let perFinTargetBarChartProps = {\r\n office: state.office,\r\n entries: state.entries ? Object.values(state.entries) : null,\r\n label:\r\n state.office !== \"\" &&\r\n `Leads per Fin: ${state.dateRange.startDate.toLocaleDateString()} - ${state.dateRange.endDate.toLocaleDateString()}`,\r\n dateRange: state.dateRange,\r\n secondFilter: \"name\",\r\n type: \"FIN\",\r\n };\r\n\r\n let entryTableProps = {\r\n entries: state.entries ? Object.values(state.entries) : null,\r\n office: state.office || null,\r\n };\r\n\r\n let tabsProps = {\r\n value: state.tabSelectedValue,\r\n handleChange: handleTabChange,\r\n };\r\n\r\n let navProps = {\r\n logout: props.logout(),\r\n downloadAllData: downloadFile,\r\n office: state.office,\r\n handleOfficeChange: handleOfficeChange,\r\n };\r\n\r\n const handleBarChartDateChange = (dateRange) => {\r\n let startDate = dateRange.range1.startDate;\r\n let endDate = dateRange.range1.endDate;\r\n if (typeof startDate === Date) {\r\n startDate.setHours(0, 0, 0, 0);\r\n }\r\n if (typeof endDate === Date) {\r\n endDate.setHours(0, 0, 0, 0);\r\n }\r\n let newDateRange = {\r\n startDate,\r\n endDate,\r\n };\r\n let barChartDaysPast = Math.floor(\r\n (endDate - startDate) / ONE_DAY_IN_MILLISECONDS\r\n );\r\n updateState({\r\n ...state,\r\n dateRange: newDateRange,\r\n barChartDaysPast: barChartDaysPast,\r\n });\r\n };\r\n\r\n return state.fetching === true ? (\r\n \r\n \r\n \r\n Loading Entries...\r\n \r\n \r\n \r\n ) : state.token !== null && state.entries !== null ? (\r\n
\r\n \r\n \r\n {\" \"}\r\n {/* high level container */}\r\n {/* TOP BARS */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {\" \"}\r\n {/* app container */}\r\n {/* FILTER MODAL */}\r\n \r\n {\" \"}\r\n {/* date picker container / item */}\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {CountByDateRangeTable(\r\n state.entries,\r\n state.dateRange.startDate,\r\n state.dateRange.endDate\r\n )}\r\n {/* \r\n Lead Count of Selected Date Range: {state.filteredEntryTotal}\r\n \r\n \r\n Total Leads per Cohort: \r\n */}\r\n \r\n \r\n \r\n {/* CHARTS */}\r\n {state.tabSelectedValue === 0 ? (\r\n \r\n {\" \"}\r\n {/* charts item */}\r\n \r\n \r\n \r\n {state.entries !== null ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n {state.entries !== null ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n {state.entries !== null ? (\r\n \r\n ) : null}\r\n \r\n \r\n \r\n \r\n ) : (\r\n \r\n {state.entries !== null ? (\r\n \r\n ) : null}\r\n \r\n )}\r\n \r\n \r\n \r\n
\r\n ) : null;\r\n};\r\n\r\nexport const getEntries = async (accessToken, officeName) => {\r\n const data = {\r\n office: officeName,\r\n };\r\n if (officeName.includes(\"Los Angeles\")) {\r\n // TODO pull the URL out to config\r\n return await axios\r\n .post(\r\n \"https://jg1kf1ph1m.execute-api.us-east-2.amazonaws.com/prod/dashboardData\",\r\n data,\r\n {\r\n // return await axios\r\n // .get(\"http://localhost:3001/getLAEntries\", data, {\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n )\r\n .then(async (res) => await res.data)\r\n .catch((err) => console.log(err));\r\n } else {\r\n // TODO pull the URL out to config\r\n return await axios\r\n .post(\r\n \"https://jg1kf1ph1m.execute-api.us-east-2.amazonaws.com/prod/dashboardData\",\r\n data,\r\n {\r\n // return await axios\r\n // .post(\"http://localhost:3001/getEntries\", data, {\r\n headers: {\r\n Authorization: `Bearer ${accessToken}`,\r\n \"Content-Type\": \"application/json\",\r\n },\r\n }\r\n )\r\n .then(async (res) => await res.data)\r\n .catch((err) => console.log(err));\r\n }\r\n};\r\n\r\nexport default App;\r\n","import React from \"react\";\r\nimport App from \"../App\";\r\n\r\nimport { AzureAD, AuthenticationState } from 'react-aad-msal';\r\nimport { authProvider } from './authProvider';\r\n\r\nlet appProps = {\r\n logout: null\r\n}\r\n\r\nexport default function Root() {\r\n return (\r\n \r\n {\r\n ({ login, logout, authenticationState, error, accountInfo }) => {\r\n switch (authenticationState) {\r\n case AuthenticationState.Authenticated:\r\n appProps = {...appProps, logout: () => logout}\r\n return (\r\n
\r\n \r\n
\r\n );\r\n case AuthenticationState.Unauthenticated:\r\n return (\r\n
\r\n {error &&

An error occured during authentication, please try again!

}\r\n
\r\n );\r\n case AuthenticationState.InProgress:\r\n return (\r\n null\r\n );\r\n }\r\n }\r\n }\r\n
\r\n );\r\n}\r\n","// This optional code is used to register a service worker.\r\n// register() is not called by default.\r\n\r\n// This lets the app load faster on subsequent visits in production, and gives\r\n// it offline capabilities. However, it also means that developers (and users)\r\n// will only see deployed updates on subsequent visits to a page, after all the\r\n// existing tabs open on the page have been closed, since previously cached\r\n// resources are updated in the background.\r\n\r\n// To learn more about the benefits of this model and instructions on how to\r\n// opt-in, read https://bit.ly/CRA-PWA\r\n\r\nconst isLocalhost = Boolean(\r\n window.location.hostname === 'localhost' ||\r\n // [::1] is the IPv6 localhost address.\r\n window.location.hostname === '[::1]' ||\r\n // 127.0.0.0/8 are considered localhost for IPv4.\r\n window.location.hostname.match(\r\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\r\n )\r\n);\r\n\r\nexport function register(config) {\r\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\r\n // The URL constructor is available in all browsers that support SW.\r\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\r\n if (publicUrl.origin !== window.location.origin) {\r\n // Our service worker won't work if PUBLIC_URL is on a different origin\r\n // from what our page is served on. This might happen if a CDN is used to\r\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\r\n return;\r\n }\r\n\r\n window.addEventListener('load', () => {\r\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\r\n\r\n if (isLocalhost) {\r\n // This is running on localhost. Let's check if a service worker still exists or not.\r\n checkValidServiceWorker(swUrl, config);\r\n\r\n // Add some additional logging to localhost, pointing developers to the\r\n // service worker/PWA documentation.\r\n navigator.serviceWorker.ready.then(() => {\r\n console.log(\r\n 'This web app is being served cache-first by a service ' +\r\n 'worker. To learn more, visit https://bit.ly/CRA-PWA'\r\n );\r\n });\r\n } else {\r\n // Is not localhost. Just register service worker\r\n registerValidSW(swUrl, config);\r\n }\r\n });\r\n }\r\n}\r\n\r\nfunction registerValidSW(swUrl, config) {\r\n navigator.serviceWorker\r\n .register(swUrl)\r\n .then(registration => {\r\n registration.onupdatefound = () => {\r\n const installingWorker = registration.installing;\r\n if (installingWorker == null) {\r\n return;\r\n }\r\n installingWorker.onstatechange = () => {\r\n if (installingWorker.state === 'installed') {\r\n if (navigator.serviceWorker.controller) {\r\n // At this point, the updated precached content has been fetched,\r\n // but the previous service worker will still serve the older\r\n // content until all client tabs are closed.\r\n console.log(\r\n 'New content is available and will be used when all ' +\r\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.'\r\n );\r\n\r\n // Execute callback\r\n if (config && config.onUpdate) {\r\n config.onUpdate(registration);\r\n }\r\n } else {\r\n // At this point, everything has been precached.\r\n // It's the perfect time to display a\r\n // \"Content is cached for offline use.\" message.\r\n console.log('Content is cached for offline use.');\r\n\r\n // Execute callback\r\n if (config && config.onSuccess) {\r\n config.onSuccess(registration);\r\n }\r\n }\r\n }\r\n };\r\n };\r\n })\r\n .catch(error => {\r\n console.error('Error during service worker registration:', error);\r\n });\r\n}\r\n\r\nfunction checkValidServiceWorker(swUrl, config) {\r\n // Check if the service worker can be found. If it can't reload the page.\r\n fetch(swUrl, {\r\n headers: { 'Service-Worker': 'script' },\r\n })\r\n .then(response => {\r\n // Ensure service worker exists, and that we really are getting a JS file.\r\n const contentType = response.headers.get('content-type');\r\n if (\r\n response.status === 404 ||\r\n (contentType != null && contentType.indexOf('javascript') === -1)\r\n ) {\r\n // No service worker found. Probably a different app. Reload the page.\r\n navigator.serviceWorker.ready.then(registration => {\r\n registration.unregister().then(() => {\r\n window.location.reload();\r\n });\r\n });\r\n } else {\r\n // Service worker found. Proceed as normal.\r\n registerValidSW(swUrl, config);\r\n }\r\n })\r\n .catch(() => {\r\n console.log(\r\n 'No internet connection found. App is running in offline mode.'\r\n );\r\n });\r\n}\r\n\r\nexport function unregister() {\r\n if ('serviceWorker' in navigator) {\r\n navigator.serviceWorker.ready\r\n .then(registration => {\r\n registration.unregister();\r\n })\r\n .catch(error => {\r\n console.error(error.message);\r\n });\r\n }\r\n}\r\n","import React from 'react';\r\nimport ReactDOM from 'react-dom';\r\nimport './index.css';\r\nimport Root from './components/Root';\r\nimport * as serviceWorker from './serviceWorker';\r\n\r\nReactDOM.render(\r\n ,\r\n document.getElementById('root')\r\n);\r\n\r\n// If you want your app to work offline and load faster, you can change\r\n// unregister() to register() below. Note this comes with some pitfalls.\r\n// Learn more about service workers: https://bit.ly/CRA-PWA\r\nserviceWorker.unregister();\r\n"],"sourceRoot":""}