{"version":3,"sources":["static/canary-1@3x.png","static/canary-logo-full@3x.png","static/laptop-lady-facing-right.png","static/learnMore/red-hair-woman-white-shirt.png","static/learnMore/bearded-man-blue-shirt.png","static/learnMore/laptop-lady-facing-right.png","static/learnMore/gray-hair-woman-with-mask.png","components/BackArrow.jsx","constants/colors.js","components/pages/EmployerLogin.jsx","components/pages/Signup.jsx","components/pages/Logout.jsx","components/pages/NotFound.jsx","components/PrivateRoute.jsx","hooks/useOrganizationContextData.js","contexts/OrganizationContext.js","components/Loader.jsx","helpers/splitStringToArrayByLength.ts","contexts/DateRangeContext.ts","hooks/useGetDataFromQuery.ts","components/charts/HorizontalBar2.tsx","components/pages/adminPanel/reports/concerns/charts/IdentityTargetedChart.jsx","components/pages/adminPanel/reports/concerns/charts/IncidentTargetChart.jsx","components/pages/adminPanel/reports/concerns/charts/IncidentTransgressorChart.jsx","components/charts/Doughnut2.tsx","components/pages/adminPanel/reports/concerns/charts/BottomDoughnuts.jsx","components/charts/ScalarScore2.tsx","components/charts/Statements.tsx","components/Spacer.jsx","components/DatePickerButtonAndModal.tsx","components/pages/adminPanel/reports/RespondentCounter.jsx","components/TabContainer.jsx","components/pages/adminPanel/reports/concerns/Dashboard.jsx","components/pages/adminPanel/reports/concerns/OverviewTab.jsx","components/pages/adminPanel/reports/concerns/GesturesTab.jsx","components/pages/adminPanel/reports/concerns/PhysicalContactTab.jsx","components/pages/adminPanel/reports/concerns/ExclusionFavouritismTab.jsx","components/pages/adminPanel/reports/concerns/WorkManagementTab.jsx","components/pages/adminPanel/reports/concerns/WorkCommentsTab.jsx","components/pages/adminPanel/reports/concerns/GeneralCommentsTab.jsx","components/pages/adminPanel/reports/concerns/SexualCommentsTab.jsx","components/pages/adminPanel/reports/concerns/SexualGesturesTab.jsx","components/pages/adminPanel/reports/concerns/PolicyViolationsTab.jsx","components/pages/adminPanel/reports/concerns/StatementsTab.tsx","components/pages/adminPanel/reports/concerns/InsightsTab.jsx","components/pages/adminPanel/reports/coreModule/DiscriminationTab.jsx","components/pages/adminPanel/reports/coreModule/HarassmentTab.jsx","components/pages/adminPanel/reports/coreModule/ViolenceTab.jsx","components/pages/adminPanel/reports/coreModule/OverviewTab.jsx","components/pages/adminPanel/reports/coreModule/FraudTab.jsx","components/pages/adminPanel/reports/coreModule/Dashboard.jsx","components/pages/adminPanel/reports/covid19/NoResponses.tsx","components/charts/HorizontalBar.jsx","components/charts/ScalarScore.js","components/charts/Doughnut.tsx","components/pages/adminPanel/reports/covid19/PpeTab.jsx","components/pages/adminPanel/reports/covid19/ScreeningTab.jsx","components/pages/adminPanel/reports/covid19/MonitoringTab.jsx","components/pages/adminPanel/reports/covid19/PersonalHygieneTab.jsx","components/pages/adminPanel/reports/covid19/CleaningAndSanitationTab.jsx","components/pages/adminPanel/reports/covid19/SocialDistancingTab.jsx","components/pages/adminPanel/reports/covid19/OtherTab.jsx","components/pages/adminPanel/reports/covid19/Dashboard.jsx","components/pages/adminPanel/reports/covid19/OverviewTab.tsx","components/pages/adminPanel/reports/covid19/StatementsTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/NoResponses.jsx","components/pages/adminPanel/reports/covid19BuildingUp/OverviewTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/PpeTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/ScreeningTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/MonitoringTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/PersonalHygieneTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/CleaningAndSanitationTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/SocialDistancingTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/OtherTab.jsx","components/pages/adminPanel/reports/covid19BuildingUp/Dashboard.jsx","components/pages/adminPanel/reports/covid19BuildingUp/StatementsTab.jsx","helpers/convertJSDateStringToISODateFormat.ts","helpers/sortFunctionTreatingArraysAsStrings.ts","components/pages/adminPanel/reports/shortenedForm/Dashboard.jsx","components/pages/adminPanel/reports/shortenedForm/OverviewTab.jsx","components/pages/adminPanel/reports/shortenedForm/WorkplaceCultureIssuesTab.tsx","components/pages/adminPanel/reports/shortenedForm/HarassmentAndBullyingBehaviourTab.tsx","components/pages/adminPanel/reports/shortenedForm/ReportsTab.tsx","components/pages/adminPanel/reports/DashboardSelector.jsx","components/pages/adminPanel/superUser/Organizations.jsx","components/pages/adminPanel/superUser/AddOrganization.jsx","components/pages/adminPanel/superUser/AddUser.jsx","constants/leads.js","components/pages/adminPanel/superUser/ViewLeads.jsx","components/pages/adminPanel/superUser/Settings.jsx","components/Checkbox.jsx","components/pages/adminPanel/superUser/OrganizationPage.jsx","components/pages/adminPanel/FormChooserDropdown.jsx","components/pages/adminPanel/AdminPortalNavbar.jsx","hooks/useDateRangeContext.ts","components/pages/adminPanel/AdminPanel.jsx","components/Logo.jsx","hooks/useWindowWidth.js","components/pages/HomeHeader.jsx","components/pages/Home.jsx","components/Footer.jsx","components/pages/RespondentLogin.jsx","constants/organizations.js","components/pages/organization/OrganizationHome.jsx","components/pages/organization/OrganizationReport.jsx","components/pages/organization/OrganizationChooseReport.jsx","components/pages/LeadsFormForEmployers.jsx","components/pages/InterestedEmployer.jsx","components/pages/LeadsFormForRespondents.jsx","components/pages/InterestedRespondent.jsx","components/pages/FreeWorkplaceSurvey.jsx","components/pages/InterestedEmployerAdditionalInfo.jsx","components/pages/PrivacyPolicy.jsx","components/pages/TermsOfService.jsx","components/pages/FinePrint.jsx","components/pages/LearnMore/Pricing.jsx","components/pages/LearnMore/ScenarioAccordion.jsx","components/pages/LearnMore/ExampleScenarios.jsx","components/pages/LearnMore/LearnMoreSection.jsx","components/pages/LearnMore/index.jsx","components/pages/BookCalendlyAppointment.jsx","components/pages/BookConsultation.jsx","components/pages/BookCoachingSession.jsx","App.jsx","serviceWorker.js","index.js"],"names":["module","exports","BackArrow","to","Col","className","style","width","textDecoration","color","colors","concernsColorPalette","covid19Colors","ppe","screening","monitoring","personalHygiene","cleaningAndSanitation","socialDistancing","other","EmployerLogin","history","useHistory","useState","errors","setErrors","backgroundColor","Container","xs","sm","md","height","Form","onSubmit","event","preventDefault","formInputs","target","elements","body","email","formBasicEmail","value","password","formBasicPassword","fetch","method","headers","JSON","stringify","then","response","ok","push","json","message","setTimeout","catch","err","minWidth","Group","controlId","Control","type","placeholder","autoFocus","Button","length","map","error","index","Alert","key","variant","Signup","successMessage","setSuccessMessage","Image","fluid","src","logo","passwordConfirmation","formBasicPasswordConfirmation","autofocus","border","Logout","useEffect","Cookies","get","NotFound","PrivateRoute","props","location","useLocation","Boolean","userLoggedIn","redirectPath","pathname","state","from","defaultOrganizationContextData","orgId","undefined","orgName","activeFormId","availableFormIds","useOrganizationContextData","setOrgId","setOrgName","setActiveFormId","setAvailableFormIds","a","userRes","user","organizationId","orgRes","org","name","formIds","fetchAndSetOrgData","createContext","Loader","Spinner","animation","splitStringToArrayByLength","text","maxCharPerLine","sections","words","split","temp","forEach","item","concat","allDatesRange","startDate","Date","endDate","dateRange","setDateRange","useGetDataFromQuery","query","data","setData","responseType","setResponseType","loading","setLoading","useContext","DateRangeContext","res","results","requestData","HorizontalBar","title","palette","labels","label","values","count","maxNumberOfLabelRows","reduce","acc","Math","max","chartData","datasets","fill","borderWidth","chartOptions","scales","xAxes","ticks","beginAtZero","suggestedMax","total","precision","yAxes","callback","afterFit","me","legend","display","options","commentRelatedBuckets","match","questionId","answerId","generalBehaviourBuckets","commentRelatedAndGeneralBehaviourBuckets","or","IDENTITY_BUCKETS_TYPE","IdentityTargetedChart","buckets","filter","identityBucketsType","identityTargeted","formId","forms","concerns","IncidentTargetChart","incidentTarget","IncidentTransgressorChart","incidentTransgressor","Doughnut","tooltip","processedData","combineSimilarLabels","Object","OverlayTrigger","placement","delay","show","hide","overlay","Tooltip","id","newLabelCountMap","labelObject","replace","newLabelObjects","BottomDoughnuts","includeCommentCharts","and","ScalarScore","score","averageValue","scoreColor","borderColor","borderRadius","round","Statements","statements","statementIndex","setStatementIndex","statement","formattedDate","DateTime","fromISO","date","toLocaleString","DATE_FULL","onClick","disabled","Spacer","lastMonthRange","setMonth","getMonth","DateRangeButtonAndModal","showModal","setShowModal","unconfirmedDateRange","setUnconfirmedDateRange","handleCloseModal","toISOString","slice","isAllDateRange","getDate","dateRangeText","initialFocusedRange","fontSize","Modal","onHide","size","Header","closeButton","Title","Body","onChange","range1","showSelectionPreview","moveRangeOnFirstSelection","months","shownDate","ranges","direction","Footer","RespondentCounter","respondentCount","TabContainer","children","otherProps","Tab","tabs","eventKey","Component","updateRespondentCounter","behavioursReported","gesturesFilter","physicalContactFilter","exclusionFavoritismFilter","workManagementFilter","workCommentsFilter","generalCommentsFilter","sexualCommentsFilter","sexualGesturesFilter","policyFilter","setStatements","statementQuestionId","emailQuestionId","Dashboard","setRespondentCount","confirmedDateRange","setConfirmedDateRange","defaultActiveKey","Row","Nav","tab","Item","Link","Content","Pane","mountOnEnter","unmountOnExit","newCount","DiscriminationTab","plugins","render","tooltips","callbacks","tooltipItem","dataset","datasetIndex","_meta","keys","currentValue","parseFloat","toFixed","HarassmentTab","ViolenceTab","OverviewTab","args","FraudTab","NoResponses","maxValue","truncate","ppeEquipmentLabels","ppeIssueLabels","screeningTypeLabels","screeningIssueLabels","typeLabels","issueLabels","covid19","respondentsConcernedWithFollowingIssues","howFrequentlyHasThisOccurred","setResults","requestInitialData","ppeEquipmentData","ppeEquipment","ppeIssueData","ppeIssue","frequency","intensity","timePeriod","repeat","screeningTypeData","screeningType","screeningIssueData","screeningIssue","typeData","monitoringType","issueData","monitoringIssue","personalHygieneType","personalHygieneIssue","cleaningAndSanitationIssue","socialDistancingType","socialDistancingIssue","otherIssue","activeStatementIndex","setActiveStatementIndex","items","Pagination","active","console","log","statementInfo","Card","textAlign","lg","projectsFilter","allProjects","PROJECTS_LIST","project","setProjectsFilter","onSelect","ProjectButtonAndModal","projects","setProjects","projectsText","setProjectsText","onSelectedOptionsChange","newProjects","checked","projectId","Check","PROJECTS_MAP","projectList","LENGTH","updateProjectsText","addDays","setDateRangeText","selection","convertJSDateStringToISODateFormat","jsDateString","sortFunctionTreatingArraysAsStrings","b","join","TABS","shortenedForm","excludeAnswerIds","workplaceCultureIssuesFilter","harassmentAndBullyingBehaviourFilter","answers","setAnswers","questions","finalAnswers","answer","submittedAt","occurredAt","occurredAt_1","occurredAt_2","reportedToManagementAt","reportedToManagementAt_1","reportedToManagementAt_2","columns","React","useMemo","selector","row","sortable","wrap","marginTop","marginBottom","writtenStatement","suggestedSolution","reasonsForRemainingAnonymous","recurence","transgressor","x","sortFunction","issue","pagination","progressPending","progressComponent","noHeader","striped","DashboardSelector","OrganizationContext","covid19BuildingUp","coreModule","Organizations","organizations","setOrganizations","status","AddOrganization","formOrganizationName","formOrganizationPassword","as","Label","column","AddUser","formUserEmail","formUserPassword","formUserPasswordConfirmation","formUserOrganization","SOURCE_TYPE","ViewLeads","leads","setLeads","employerLeads","lead","sourceType","reverse","respondentLeads","EmployerLeadsTable","RespondentLeadsTable","company","job","city","country","interestedIn","createdAt","toString","Settings","Checkbox","defaultOrgFormIds","FORM_NAMES","hsh","form","OrganizationPage","useParams","organization","setOrganization","orgFormIds","setOrgFormIds","formIdSetResponse","setFormIdSetResponse","initialFormIds","fetchedOrgFormIds","belongs","isEqual","FormChooserDropdown","find","f","activeFormLabel","NavDropdown","AdminPortalNavbar","Navbar","Brand","href","AdminPanel","organizationContextData","dateRangeContextData","useDateRangeContext","Provider","path","component","exact","Logo","includeText","logoHeight","logoWidth","logoImage","colorLogoWithText","colorLogoWithoutText","useWindowWidth","windowWidth","setWindowWidth","windowHeight","setWindowHeight","updateDimensions","window","innerWidth","innerHeight","addEventListener","removeEventListener","isMobile","HomeHeader","scrollY","useScrollPosition","opacity","fullInfo","background","borderBottom","cx","mobile","Home","isHomePage","useRouteMatch","strict","sensitive","isReportPage","isDashboardPage","RespondentLogin","formPassword","canaryCoachFeatureEnabledMap","OrganizationHome","showExplanation","setShowExplanation","canaryCoachFeatureEnabled","cursor","rel","OrganizationReport","markup","__html","dangerouslySetInnerHTML","OrganizationChooseReport","enabledForms","setEnabledForms","setError","respondentButton","learnMoreOptions","defaultLearnMoreOptionsChecked","LeadsFormForEmployers","learnMoreOptionsChecked","setLearnMoreOptionsChecked","userInterestedIn","formBasicName","formBasicJob","formBasicCompany","formBasicCity","formBasicCountry","laptopLady","maxHeight","option","marginLeft","InterestedEmployer","LeadsFormForRespondents","InterestedRespondent","FreeWorkplaceSurvey","InterestedEmployerAdditionalInfo","PrivacyPolicy","scrollTo","maxWidth","margin","TermsOfService","FinePrint","Pricing","padding","ScenarioAccordion","scenario","accordionOpen","setAccordionOpen","image","workplace","problem","solution","Accordion","Toggle","flexDirection","justifyContent","fontWeight","flexBasis","alignSelf","Collapse","scenarios","whiteShirtWoman","beardedBlueShirtMan","laptopWoman","maskedWoman","ExampleScenarios","LearnMoreSection","content","initialConversationSection","implementationSection","supportRespondChangeSection","Index","BookCalendlyAppointment","calendlyLink","url","BookConsultation","BookCoachingSession","App","LearnMore","hostname","ReactDOM","StrictMode","document","getElementById","navigator","serviceWorker","ready","registration","unregister"],"mappings":"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","file":"static/js/main.330fa83c.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/canary-1@3x.a7604468.png\";","module.exports = __webpack_public_path__ + \"static/media/canary-logo-full@3x.2a0e6401.png\";","module.exports = __webpack_public_path__ + \"static/media/laptop-lady-facing-right.d4a83ec6.png\";","module.exports = __webpack_public_path__ + \"static/media/red-hair-woman-white-shirt.fb6d7192.png\";","module.exports = __webpack_public_path__ + \"static/media/bearded-man-blue-shirt.d8c2c519.png\";","module.exports = __webpack_public_path__ + \"static/media/laptop-lady-facing-right.d4a83ec6.png\";","module.exports = __webpack_public_path__ + \"static/media/gray-hair-woman-with-mask.68b6173e.png\";","import { Col } from \"react-bootstrap\";\nimport React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { MdArrowBack } from \"react-icons/md\";\n\nexport default function BackArrow({ to }) {\n return (\n \n \n

\n \n

\n \n \n );\n}\n","// Note: chart color schemes chosen from here: https://nagix.github.io/chartjs-plugin-colorschemes/colorchart.html\n// chartCategorical corresponds to tableau.HueCircle19\n// chartRedGreen corresponds to tableau.RedGreen7\n\nconst colors = {\n primary: \"#ffcb4b\",\n secondaryBlue: \"#a6cee1\",\n accentOrange: \"#f69668\",\n lightPeach: \"#fcdbcb\",\n papayawhip: \"papayawhip\",\n white: \"#FFFFFF\",\n chartCategorical1: \"#1BA3C6\",\n chartCategorical2: \"#2CB4C0\",\n chartCategorical3: \"#30BCAD\",\n chartCategorical4: \"#20B087\",\n chartCategorical5: \"#32A55C\",\n chartCategorical6: \"#57A336\",\n chartCategorical7: \"#A2B626\",\n chartCategorical8: \"#D5BB20\",\n chartCategorical9: \"#F8B620\",\n chartCategorical10: \"#F8B620\",\n chartCategorical11: \"#F06719\",\n chartCategorical12: \"#E03325\",\n chartCategorical13: \"#F64971\",\n chartCategorical14: \"#FC719E\",\n chartCategorical15: \"#EB73B3\",\n chartCategorical16: \"#CE69BE\",\n chartCategorical17: \"#A26DC2\",\n chartCategorical18: \"#7873C0\",\n chartCategorical19: \"#4F7CBA\",\n chartRedGreen1: \"#AE123B\",\n chartRedGreen2: \"#EE574D\",\n chartRedGreen3: \"#FDAC9E\",\n chartRedGreen4: \"#91D282\",\n chartRedGreen5: \"#539E52\",\n chartRedGreen6: \"#24683D\",\n};\n\nconst concernsColorPalette = [\n colors.chartCategorical1,\n colors.chartCategorical2,\n colors.chartCategorical3,\n colors.chartCategorical4,\n colors.chartCategorical5,\n colors.chartCategorical6,\n colors.chartCategorical7,\n colors.chartCategorical8,\n colors.chartCategorical9,\n colors.chartCategorical10,\n colors.chartCategorical11,\n colors.chartCategorical12,\n colors.chartCategorical13,\n];\n\nconst covid19Colors = {\n ppe: colors.chartCategorical1,\n screening: colors.chartCategorical3,\n monitoring: colors.chartCategorical5,\n personalHygiene: colors.chartCategorical7,\n cleaningAndSanitation: colors.chartCategorical9,\n socialDistancing: colors.chartCategorical11,\n other: colors.chartCategorical13,\n};\n\nexport { colors, covid19Colors, concernsColorPalette };\n","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button, Form, Container, Col, Alert } from \"react-bootstrap\";\nimport BackArrow from \"../BackArrow\";\nimport { colors } from \"../../constants/colors\";\nimport \"../FormField.scss\";\n\nexport default function EmployerLogin() {\n let history = useHistory();\n const [errors, setErrors] = useState([]);\n\n function submitForm(event) {\n event.preventDefault();\n\n const formInputs = event.target.elements;\n const body = {\n email: formInputs.formBasicEmail.value,\n password: formInputs.formBasicPassword.value,\n };\n\n fetch(\"/api/login\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.ok) {\n history.push(\"/app\");\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n setTimeout(() => {\n setErrors([]);\n }, 3000);\n });\n }\n })\n .catch((err) => {\n setErrors([\"Login failed. Please try again.\"]);\n setTimeout(() => {\n setErrors([]);\n }, 3000);\n });\n }\n\n return (\n
\n \n \n
\n

Employer Login

\n
\n
\n \n \n \n\n \n \n \n\n \n
\n
\n
\n {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n
\n \n \n
\n );\n}\n","import React, { useState } from \"react\";\nimport { Button, Form, Container, Col, Image, Alert } from \"react-bootstrap\";\n\nimport logo from \"../../static/canary-1@3x.png\";\nimport { colors } from \"../../constants/colors\";\n\nimport \"../FormField.scss\";\n\nexport default function Signup() {\n const [errors, setErrors] = useState([]);\n const [successMessage, setSuccessMessage] = useState(\"\");\n\n function submitForm(event) {\n setErrors([]);\n setSuccessMessage(\"\");\n\n event.preventDefault();\n\n const formInputs = event.target.elements;\n const body = {\n email: formInputs.formBasicEmail.value,\n password: formInputs.formBasicPassword.value,\n passwordConfirmation: formInputs.formBasicPasswordConfirmation.value,\n };\n\n if (body.password !== body.passwordConfirmation) {\n setErrors([\"Passwords did not match\"]);\n return;\n }\n\n fetch(\"/api/signup\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setSuccessMessage(json.message);\n });\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n });\n }\n })\n .catch((err) => {\n setErrors([\"Registration failed. Please try again.\"]);\n });\n }\n\n return (\n
\n \n \n

Canary

\n \n
\n
\n \n \n \n\n \n \n \n\n \n \n \n\n \n Sign up\n \n
\n
\n
\n {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n {successMessage.length > 0 && (\n {successMessage}\n )}\n
\n \n \n

info@canary.report

\n \n
\n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Cookies from \"js-cookie\";\n\nexport default function Logout() {\n const history = useHistory();\n\n useEffect(() => {\n if (Cookies.get(\"userId\")) {\n fetch(\"/api/logout\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n })\n .then((response) => {\n history.push(\"/app/login\");\n })\n .catch((err) => {\n history.push(\"/app/login\");\n });\n } else {\n history.push(\"/app/login\");\n }\n }, [history]);\n\n return
;\n}\n","import React from \"react\";\nimport { Container, Col } from \"react-bootstrap\";\n\nexport default function NotFound() {\n return (\n \n \n

Page Not Found

\n \n
\n );\n}\n","import React from \"react\";\nimport { Route, Redirect, useLocation } from \"react-router-dom\";\nimport Cookies from \"js-cookie\";\n\nexport default function PrivateRoute({ type, ...props }) {\n let location = useLocation();\n\n if (userLoggedIn(type)) {\n return ;\n } else {\n const redirectPath = type === \"admin\" ? \"/app/login\" : \"/anonymousReport\";\n return (\n \n );\n }\n}\n\nfunction userLoggedIn(type) {\n if (type === \"organization\") {\n return true;\n // TODO: return Boolean(Cookies.get(\"orgId\"));\n } else if (type === \"admin\") {\n return Boolean(Cookies.get(\"userId\"));\n } else {\n return false;\n }\n}\n","import { useEffect, useState } from \"react\";\n\nexport const defaultOrganizationContextData = {\n orgId: undefined,\n orgName: undefined,\n activeFormId: undefined,\n availableFormIds: [],\n};\n\nexport function useOrganizationContextData() {\n const [orgId, setOrgId] = useState(defaultOrganizationContextData.orgId);\n const [orgName, setOrgName] = useState(defaultOrganizationContextData.orgName)\n const [activeFormId, setActiveFormId] = useState(\n defaultOrganizationContextData.activeFormId\n );\n const [availableFormIds, setAvailableFormIds] = useState(\n defaultOrganizationContextData.availableFormIds\n );\n\n async function fetchAndSetOrgData() {\n const userRes = await fetch(`/api/users/current`);\n const user = await userRes.json();\n const orgId = user.organizationId;\n setOrgId(orgId);\n const orgRes = await fetch(`/api/organizations/${orgId}`);\n const org = await orgRes.json();\n setOrgName(org.name);\n setAvailableFormIds(org.formIds);\n setActiveFormId(org.formIds[0]);\n }\n\n useEffect(() => {\n fetchAndSetOrgData();\n }, []);\n\n return {\n orgId,\n orgName,\n activeFormId,\n setActiveFormId,\n availableFormIds,\n };\n}\n","import { createContext } from \"react\";\nimport { defaultOrganizationContextData } from \"../hooks/useOrganizationContextData\";\n\nexport default createContext(defaultOrganizationContextData);\n","import React from \"react\";\nimport Spinner from \"react-bootstrap/Spinner\";\nexport default function Loader() {\n return (\n
\n \n
\n );\n}\n","/* takes a string phrase and breaks it into separate phrases\n no bigger than 'maxCharPerLine', breaks are made at complete words.\n\n Credit: https://stackoverflow.com/questions/21409717/chart-js-and-long-labels\n*/\n\nexport default function splitStringToArrayByLength(\n text: string,\n maxCharPerLine: number\n): Array {\n var sections = [];\n var words = text.split(\" \");\n var temp = \"\";\n\n words.forEach(function (item, index) {\n if (temp.length > 0) {\n var concat = temp + \" \" + item;\n\n if (concat.length > maxCharPerLine) {\n sections.push(temp);\n temp = \"\";\n } else {\n if (index == words.length - 1) {\n sections.push(concat);\n return;\n } else {\n temp = concat;\n return;\n }\n }\n }\n\n if (index == words.length - 1) {\n sections.push(item);\n return;\n }\n\n if (item.length < maxCharPerLine) {\n temp = item;\n } else {\n sections.push(item);\n }\n });\n\n return sections;\n}\n","import { createContext } from \"react\";\n\nconst allDatesRange = {\n startDate: new Date(\"1960-01-01\"),\n endDate: new Date(\"2100-01-01\"),\n};\n\nexport default createContext({\n dateRange: {\n startDate: allDatesRange.startDate,\n endDate: allDatesRange.endDate,\n key: \"selection\",\n },\n setDateRange: null,\n});\n","import { useContext, useEffect, useState } from \"react\";\nimport { QueryType } from \"line3_shared/types/QueryType\";\nimport { DataType } from \"line3_shared/types/DataType\";\nimport DateRangeContext from \"../contexts/DateRangeContext\";\n\nexport default function useGetDataFromQuery(\n query: QueryType\n): {\n data: DataType | null;\n responseType: string | null;\n loading: boolean;\n} {\n const [data, setData] = useState(null);\n const [responseType, setResponseType] = useState(null);\n const [loading, setLoading] = useState(true);\n const { dateRange } = useContext(DateRangeContext);\n\n useEffect(() => {\n async function requestData() {\n setLoading(true);\n const data = {\n query,\n dateRange,\n };\n const res = await fetch(`/api/calculate`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n });\n const results = await res.json();\n setData(results.data);\n setResponseType(results.responseType);\n setLoading(false);\n }\n requestData();\n }, [dateRange]); // eslint-disable-line react-hooks/exhaustive-deps\n\n return { data, responseType, loading };\n}\n","import React from \"react\";\nimport { HorizontalBar as ChartJsHorizontalBar } from \"react-chartjs-2\";\nimport { QueryType } from \"../../../../line3_shared/types/QueryType\";\nimport splitStringToArrayByLength from \"../../helpers/splitStringToArrayByLength\";\nimport useGetDataFromQuery from \"../../hooks/useGetDataFromQuery\";\nimport Loader from \"../Loader\";\n\ntype Props = {\n title: string;\n palette: Array;\n query: QueryType;\n};\n\nexport default function HorizontalBar({ title, palette, query }: Props) {\n const { loading, data } = useGetDataFromQuery(query);\n\n if (loading || !data) return ;\n\n // this isn't actually the bar thickness, just a rough number used to get the height somewhat consistent\n const BAR_THICKNESS_MULTIPLIER = 12;\n // this is an approximation as well\n const TITLE_HEIGHT_ROUGHLY = 35;\n const WRAP_TEXT_CHARACTERS = 36;\n const LABEL_WIDTH = 225;\n\n const labels = data && data.labels.map((label) => label.label);\n const values = data && data.labels.map((label) => label.count);\n\n // if labels wrap, we need to know how many \"rows\" they are\n const maxNumberOfLabelRows = labels.reduce((acc, label) => {\n return Math.max(\n acc,\n splitStringToArrayByLength(label, WRAP_TEXT_CHARACTERS).length\n );\n }, 1);\n\n const chartData = {\n labels,\n datasets: [\n {\n data: values,\n fill: false,\n backgroundColor: palette,\n borderWidth: 1,\n },\n ],\n };\n\n const chartOptions = {\n scales: {\n xAxes: [\n {\n ticks: {\n beginAtZero: true,\n suggestedMax: Math.max(data.total, 3),\n precision: 0,\n },\n },\n ],\n yAxes: [\n {\n ticks: {\n callback: (value) => {\n return splitStringToArrayByLength(value, WRAP_TEXT_CHARACTERS);\n },\n },\n afterFit: (me) => {\n me.width = LABEL_WIDTH;\n },\n },\n ],\n },\n legend: {\n display: false,\n },\n title: {\n display: true,\n text: title,\n },\n };\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport HorizontalBar2 from \"../../../../../charts/HorizontalBar2\";\nimport { concernsColorPalette } from \"../../../../../../constants/colors\";\n\nconst commentRelatedBuckets = [\n {\n label: \"Ancestry\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"kjgomweIvbnC\" },\n },\n {\n label: \"Race or Culture\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"p0ZB4BaHfUqm\" },\n },\n {\n label: \"Age\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"OPeGnOumbWZD\" },\n },\n {\n label: \"Mental or Physical Health\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"E0Vz76dDacnT\" },\n },\n {\n label: \"Political of Religious Beliefs\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"Y8KHeUFV5f05\" },\n },\n {\n label: \"Gender or Sexuality\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"jdSkIR74wrIO\" },\n },\n {\n label: \"Relationship or Family\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"CXbrnHNSQiMC\" },\n },\n {\n label: \"Do not wish to specify\",\n match: { questionId: \"X9E9yTDkx9ga\", answerId: \"PaJNlprpGdfw\" },\n },\n];\n\nconst generalBehaviourBuckets = [\n {\n label: \"Ancestry\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"kK4VnwLxShZD\" },\n },\n {\n label: \"Race or Culture\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"lDSOUvWzXSsW\" },\n },\n {\n label: \"Age\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"RFIKn5KMbKVW\" },\n },\n {\n label: \"Mental or Physical Health\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"jd1b9hwTinKY\" },\n },\n {\n label: \"Political of Religious Beliefs\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"Z660ceJvJd5Y\" },\n },\n {\n label: \"Gender or Sexuality\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"uljGazt5LBLh\" },\n },\n {\n label: \"Relationship or Family\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"37sLekK1Z542\" },\n },\n {\n label: \"Do not wish to specify\",\n match: { questionId: \"CrgiNGVz9R4k\", answerId: \"UGMwdWCqquVl\" },\n },\n];\n\nconst commentRelatedAndGeneralBehaviourBuckets = [\n {\n label: \"General Comments\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"kjgomweIvbnC\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"kK4VnwLxShZD\" },\n ],\n },\n },\n {\n label: \"Race or Culture\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"p0ZB4BaHfUqm\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"lDSOUvWzXSsW\" },\n ],\n },\n },\n {\n label: \"Age\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"OPeGnOumbWZD\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"RFIKn5KMbKVW\" },\n ],\n },\n },\n {\n label: \"Mental or Physical Health\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"E0Vz76dDacnT\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"jd1b9hwTinKY\" },\n ],\n },\n },\n {\n label: \"Political of Religious Beliefs\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"Y8KHeUFV5f05\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"Z660ceJvJd5Y\" },\n ],\n },\n },\n {\n label: \"Gender or Sexuality\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"jdSkIR74wrIO\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"uljGazt5LBLh\" },\n ],\n },\n },\n {\n label: \"Relationship or Family\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"CXbrnHNSQiMC\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"37sLekK1Z542\" },\n ],\n },\n },\n {\n label: \"Do not wish to specify\",\n match: {\n or: [\n { questionId: \"X9E9yTDkx9ga\", answerId: \"PaJNlprpGdfw\" },\n { questionId: \"CrgiNGVz9R4k\", answerId: \"UGMwdWCqquVl\" },\n ],\n },\n },\n];\n\nexport const IDENTITY_BUCKETS_TYPE = {\n COMMENTS: \"comments\",\n GENERAL: \"general\",\n BOTH_COMMENTS_AND_GENERAL: \"both_comments_and_general\",\n};\n\nexport default function IdentityTargetedChart({ filter, identityBucketsType }) {\n let buckets;\n\n switch (identityBucketsType) {\n case IDENTITY_BUCKETS_TYPE.COMMENTS:\n buckets = commentRelatedBuckets;\n break;\n case IDENTITY_BUCKETS_TYPE.GENERAL:\n buckets = generalBehaviourBuckets;\n break;\n case IDENTITY_BUCKETS_TYPE.BOTH_COMMENTS_AND_GENERAL:\n buckets = commentRelatedAndGeneralBehaviourBuckets;\n break;\n default:\n buckets = generalBehaviourBuckets;\n break;\n }\n\n const identityTargeted = {\n formId: forms.concerns,\n buckets,\n filter,\n };\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport HorizontalBar2 from \"../../../../../charts/HorizontalBar2\";\nimport { concernsColorPalette } from \"../../../../../../constants/colors\";\n\nexport default function IncidentTargetChart({ filter }) {\n const incidentTarget = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Managers or Leaders\",\n match: {\n or: [\n { questionId: \"KQtVCvXOUyTz\", answerId: \"vbxv99xgZBfh\" }, // An individual\n { questionId: \"CQUMzX6ulFVJ\", answerId: \"9w3G2wefzmFl\" }, // A group of people\n ],\n },\n },\n {\n label: \"Employees or Contractors\",\n match: {\n or: [\n { questionId: \"KQtVCvXOUyTz\", answerId: \"XgEez6JGpJtk\" }, // An individual\n { questionId: \"CQUMzX6ulFVJ\", answerId: \"JnNWeZflgD2a\" }, // A group of people\n ],\n },\n },\n {\n label: \"Vendors or Clients\",\n match: {\n or: [\n { questionId: \"KQtVCvXOUyTz\", answerId: \"rW0smXkzk9ms\" }, // An individual\n { questionId: \"CQUMzX6ulFVJ\", answerId: \"jA5cIbbEKe1C\" }, // A group of people\n ],\n },\n },\n {\n label: \"Someone else\",\n match: {\n or: [\n { questionId: \"KQtVCvXOUyTz\", answerId: \"T4tnNTcCQy3O\" }, // An individual\n { questionId: \"CQUMzX6ulFVJ\", answerId: \"UKqjic3pFbCY\" }, // A group of people\n ],\n },\n },\n ],\n filter,\n };\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport HorizontalBar2 from \"../../../../../charts/HorizontalBar2\";\nimport { concernsColorPalette } from \"../../../../../../constants/colors\";\n\nexport default function IncidentTransgressorChart({ filter }) {\n const incidentTransgressor = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Managers or Leaders\",\n match: {\n or: [\n { questionId: \"fbtX2dJHCDjX\", answerId: \"WoiwLr1skYud\" }, // An individual\n { questionId: \"h0sa4FYYDulH\", answerId: \"MIWneHKO95T3\" }, // A group of people\n ],\n },\n },\n {\n label: \"Employees or Contractors\",\n match: {\n or: [\n { questionId: \"fbtX2dJHCDjX\", answerId: \"hAvj85ABoBPQ\" }, // An individual\n { questionId: \"h0sa4FYYDulH\", answerId: \"BqOS78eamUDH\" }, // A group of people\n ],\n },\n },\n {\n label: \"Vendors or Clients\",\n match: {\n or: [\n { questionId: \"fbtX2dJHCDjX\", answerId: \"KUdeYsLEpHNq\" }, // An individual\n { questionId: \"h0sa4FYYDulH\", answerId: \"n14A6uF7vuob\" }, // A group of people\n ],\n },\n },\n {\n label: \"Someone else\",\n match: {\n or: [\n { questionId: \"fbtX2dJHCDjX\", answerId: \"t2HPrvS1Svgn\" }, // An individual\n { questionId: \"h0sa4FYYDulH\", answerId: \"vrRiBujBkmJU\" }, // A group of people\n ],\n },\n },\n ],\n filter,\n };\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { covid19Colors } from \"../../constants/colors\";\nimport Tooltip from \"react-bootstrap/Tooltip\";\nimport OverlayTrigger from \"react-bootstrap/OverlayTrigger\";\nimport { Doughnut as ChartJsDoughnut } from \"react-chartjs-2\";\nimport useGetDataFromQuery from \"../../hooks/useGetDataFromQuery\";\nimport { QueryType } from \"line3_shared/types/QueryType\";\nimport Loader from \"../Loader\";\n\ntype PropTypes = {\n query: QueryType;\n title?: string;\n tooltip?: string;\n options?: any;\n};\n\nexport default function Doughnut({\n query,\n title,\n tooltip,\n options,\n}: PropTypes) {\n const { data, loading } = useGetDataFromQuery(query);\n\n if (loading || !data) return ;\n\n const processedData = combineSimilarLabels(data);\n\n const labels = processedData && processedData.labels.map((label) => label.label);\n const values = processedData && processedData.labels.map((label) => label.count);\n\n const chartData = {\n datasets: [\n {\n data: values,\n backgroundColor: Object.values(covid19Colors),\n },\n ],\n labels,\n };\n\n const chartOptions = {\n legend: {\n display: false,\n },\n ...options,\n };\n\n function renderTooltip(props) {\n return (\n \n {tooltip}\n \n );\n }\n\n return (\n
\n \n
\n \n
\n \n

{title}

\n
\n );\n}\n\nexport const SIMILAR_LABEL_MARKER = \"#!SIMILAR#!\";\n\n/*\nThe function below allows us to aggregate the count for two similar labels on the client side.\nIt is to accommodate the revised logic for the Repeat doughnut chart.\nIt's a temporary client-side solution, because our query language on the server-side currently doesn't support\ncertain complex queries (in this case, an AND nested within an OR).\nEventually, we should amend the query language capabilities on the server-side to the support this.\n */\nconst combineSimilarLabels = (data) => {\n const { labels } = data\n\n if (labels.length > 0 && labels[0].label) {\n const newLabelCountMap = {}\n\n labels.forEach(labelObject => {\n let { label, count } = labelObject\n\n label = label.replace(SIMILAR_LABEL_MARKER, '')\n\n if (!newLabelCountMap[label]) {\n newLabelCountMap[label] = count\n } else {\n newLabelCountMap[label] = newLabelCountMap[label] + count\n }\n })\n\n const newLabelObjects = []\n\n for (let label in newLabelCountMap) {\n newLabelObjects.push({ label: label, count: newLabelCountMap[label] })\n }\n\n return { labels: newLabelObjects}\n } else {\n return data\n }\n}\n","import React from \"react\";\nimport Doughnut2, {\n SIMILAR_LABEL_MARKER,\n} from \"../../../../../charts/Doughnut2\";\nimport { forms } from \"line3_shared/constants/forms\";\n\nexport default function BottomDoughnuts({\n filter,\n includeCommentCharts = false,\n}) {\n return (\n
\n \n \n \n {includeCommentCharts && (\n <>\n \n \n \n )}\n
\n );\n}\n","import React from \"react\";\nimport { colors } from \"../../constants/colors\";\nimport Tooltip from \"react-bootstrap/Tooltip\";\nimport OverlayTrigger from \"react-bootstrap/OverlayTrigger\";\nimport useGetDataFromQuery from \"../../hooks/useGetDataFromQuery\";\nimport Loader from \"../Loader\";\n\nexport default function ScalarScore({ title, tooltip, query }) {\n const { loading, data } = useGetDataFromQuery(query);\n\n if (loading || !data) return ;\n\n const score = data.averageValue;\n\n function scoreColor() {\n if (score < 10.0 / 6) {\n return colors.chartRedGreen6;\n } else if (score < (10.0 / 6) * 2) {\n return colors.chartRedGreen5;\n } else if (score < (10.0 / 6) * 3) {\n return colors.chartRedGreen4;\n } else if (score < (10.0 / 6) * 4) {\n return colors.chartRedGreen3;\n } else if (score < (10.0 / 6) * 5) {\n return colors.chartRedGreen2;\n } else {\n return colors.chartRedGreen1;\n }\n }\n\n function renderTooltip(props) {\n return (\n \n {tooltip}\n \n );\n }\n\n return (\n
\n \n \n

{Math.round(score * 10) / 10}

\n
\n \n

{title}

\n
\n );\n}\n","import React, { useState } from \"react\";\nimport \"./Statements.scss\";\nimport Button from \"react-bootstrap/Button\";\nimport DateTime from \"luxon/src/datetime\";\n\nexport default function Statements({ statements }) {\n const [statementIndex, setStatementIndex] = useState(0);\n\n if (statements.length === 0) {\n return (\n
\n
\n
\n

No statements

\n
\n
\n
\n );\n }\n\n function incrementIndex() {\n if (statementIndex < statements.length - 1) {\n setStatementIndex(statementIndex + 1);\n }\n }\n function reduceIndex() {\n if (statementIndex > 0) {\n setStatementIndex(statementIndex - 1);\n }\n }\n const statement = statements[statementIndex];\n const formattedDate = DateTime.fromISO(statement.date).toLocaleString(\n DateTime.DATE_FULL\n );\n\n return (\n
\n
\n
\n
\n
\n

\"{statement.statement}\"

\n
\n
\n

{statement.email || \"Anonymous\"}

\n

{formattedDate}

\n
\n
\n \n = statements.length - 1}\n >\n Next\n \n
\n
\n );\n}\n","import React from \"react\";\nimport Container from \"react-bootstrap/Container\";\n\nexport default function Spacer({ height }) {\n return ;\n}\n","import React, { useContext, useState } from \"react\";\nimport Button from \"react-bootstrap/Button\";\nimport Modal from \"react-bootstrap/Modal\";\nimport { DateRangePicker } from \"react-date-range\";\nimport { colors } from \"../constants/colors\";\nimport DateRangeContext from \"../contexts/DateRangeContext\";\n\nconst allDatesRange = {\n startDate: new Date(\"1960-01-01\"),\n endDate: new Date(\"2100-01-01\"),\n};\n\nconst lastMonthRange = {\n startDate: new Date().setMonth(new Date().getMonth() - 1),\n endDate: new Date(),\n};\n\nexport default function DateRangeButtonAndModal() {\n const [showModal, setShowModal] = useState(false);\n const [unconfirmedDateRange, setUnconfirmedDateRange] = useState(\n allDatesRange\n );\n const { dateRange, setDateRange } = useContext(DateRangeContext);\n\n const handleCloseModal = () => setShowModal(false);\n const handleShowModal = () => {\n setShowModal(true);\n };\n\n const startDate = dateRange.startDate.toISOString().slice(0, 10);\n const endDate = dateRange.endDate.toISOString().slice(0, 10);\n const isAllDateRange =\n dateRange.startDate.getDate() === allDatesRange.startDate.getDate() &&\n dateRange.endDate.getDate() === allDatesRange.endDate.getDate();\n\n const dateRangeText = isAllDateRange ? `All` : `${startDate} to ${endDate}`;\n const initialFocusedRange = isAllDateRange\n ? lastMonthRange\n : unconfirmedDateRange;\n\n function onConfirm() {\n setDateRange(unconfirmedDateRange);\n }\n\n return (\n <>\n \n Dates: {dateRangeText}\n \n \n \n Date Range Picker\n \n \n {\n setUnconfirmedDateRange(item.range1);\n }}\n showSelectionPreview={true}\n moveRangeOnFirstSelection={false}\n months={2}\n shownDate={new Date()}\n ranges={[unconfirmedDateRange]}\n direction=\"horizontal\"\n initialFocusedRange={[initialFocusedRange]}\n />\n \n \n \n {\n setDateRange(allDatesRange);\n handleCloseModal();\n }}\n >\n All Dates\n \n {\n onConfirm();\n handleCloseModal();\n }}\n >\n Apply Selected Dates\n \n \n \n \n );\n}\n","import React from \"react\";\nimport { colors } from \"../../../../constants/colors\";\n\nexport default function RespondentCounter({ respondentCount }) {\n return (\n
\n \n

{respondentCount}

\n
\n

\n Report{respondentCount === 1 ? \"\" : \"s\"}\n

\n
\n );\n}\n","import React from \"react\";\nimport './TabContainer.css';\nimport Tab from \"react-bootstrap/Tab\";\n\nexport default function TabContainer({ children, ...otherProps }) {\n return
\n \n {children}\n \n
;\n}\n","import React, { useState } from \"react\";\nimport { Tab } from \"react-bootstrap\";\nimport OverviewTab from \"./OverviewTab\";\nimport GesturesTab from \"./GesturesTab\";\nimport PhysicalContactTab from \"./PhysicalContactTab\";\nimport ExclusionFavouritismTab from \"./ExclusionFavouritismTab\";\nimport WorkManagementTab from \"./WorkManagementTab\";\nimport WorkCommentsTab from \"./WorkCommentsTab\";\nimport GeneralCommentsTab from \"./GeneralCommentsTab\";\nimport SexualCommentsTab from \"./SexualCommentsTab\";\nimport SexualGesturesTab from \"./SexualGesturesTab\";\nimport PolicyViolationsTab from \"./PolicyViolationsTab\";\nimport StatementsTab from \"./StatementsTab\";\nimport InsightsTab from \"./InsightsTab\";\nimport Spacer from \"../../../../Spacer\";\nimport DateRangeButtonAndModal from \"../../../../DatePickerButtonAndModal\";\nimport RespondentCounter from \"../RespondentCounter\";\n\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport Nav from \"react-bootstrap/Nav\";\nimport Container from \"react-bootstrap/Container\";\nimport TabContainer from \"../../../../TabContainer\";\n\nconst tabs = [\n {\n name: \"Overview\",\n eventKey: \"overview\",\n Component: OverviewTab,\n },\n {\n name: \"Gestures or Body Language\",\n eventKey: \"gestures\",\n Component: GesturesTab,\n },\n {\n name: \"Physical Contact\",\n eventKey: \"physicalContact\",\n Component: PhysicalContactTab,\n },\n {\n name: \"Exclusion or Favouritism\",\n eventKey: \"exclusionFavouritism\",\n Component: ExclusionFavouritismTab,\n },\n {\n name: \"Work Management Issues\",\n eventKey: \"workManagement\",\n Component: WorkManagementTab,\n },\n {\n name: \"Work-related Comments\",\n eventKey: \"workComments\",\n Component: WorkCommentsTab,\n },\n {\n name: \"General Comments\",\n eventKey: \"generalComments\",\n Component: GeneralCommentsTab,\n },\n {\n name: \"Sexual Comments\",\n eventKey: \"sexualComemnts\",\n Component: SexualCommentsTab,\n },\n {\n name: \"Sexual Gestures or Actions\",\n eventKey: \"sexualGestures\",\n Component: SexualGesturesTab,\n },\n {\n name: \"Policy Violations\",\n eventKey: \"policyViolations\",\n Component: PolicyViolationsTab,\n },\n {\n name: \"Statements\",\n eventKey: \"statements\",\n Component: StatementsTab,\n },\n {\n name: \"Insights\",\n eventKey: \"insights\",\n Component: InsightsTab,\n },\n];\n\nconst allDatesRange = {\n startDate: \"1960-01-01\",\n endDate: \"2100-01-01\",\n};\n\nexport default function Dashboard() {\n const [respondentCount, setRespondentCount] = useState(0);\n const [confirmedDateRange, setConfirmedDateRange] = useState(allDatesRange);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n {tabs.map(({ Component, eventKey }) => {\n return (\n \n {\n setRespondentCount(newCount);\n }}\n />\n \n );\n })}\n \n \n \n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function OverviewTab({ dateRange, updateRespondentCounter }) {\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Gestures / Body Language\",\n match: { questionId: \"lXcP5TKUJy1j\", answerId: true },\n },\n {\n label: \"Sexual Gestures or Actions\",\n match: { questionId: \"ijNYixvWCRDN\", answerId: true },\n },\n {\n label: \"Physical Contact\",\n match: { questionId: \"vlipHxg2Vhal\", answerId: true },\n },\n {\n label: \"Exclusion or Favouritism\",\n match: {\n or: [\n { questionId: \"6Scklup520Lb\", answerId: true }, // Avoiding or excluding certain people\n { questionId: \"0aiSGGNFJ9mA\", answerId: true }, // Attention-seeking behaviour\n { questionId: \"T4TywmqAb8e8\", answerId: true }, // Favoritism for certain people\n ],\n },\n },\n {\n label: \"Work Management Issues\",\n match: { questionId: \"h9aCykuWSqZG\", answerId: true },\n },\n {\n label: \"General Comments\",\n match: {\n or: [\n { questionId: \"spNn7xtWmtbz\", answerId: \"R5Gmf2oU2sZk\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"DbhUolHzFjP2\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"MzkQToSTY6rj\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"MB6yadcMi4mn\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"Z2K9rotOmQEc\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"bL747UzeVpRk\" },\n ],\n },\n },\n {\n label: \"Sexual Comments\",\n match: { questionId: \"2mi2KfWz8jLP\", answerId: true },\n },\n {\n label: \"Work Comments\",\n match: { questionId: \"AtEHLMu652zg\", answerId: true },\n },\n {\n label: \"Policy Violations\",\n match: { questionId: \"8OLwDv9zcTpH\", answerId: \"B6rBvv1axgLK\" },\n },\n ],\n };\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function GesturesTab({ dateRange, updateRespondentCounter }) {\n const gesturesFilter = {\n or: [\n {\n questionId: \"lXcP5TKUJy1j\",\n answerId: true,\n },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: gesturesFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Hand/arm gestures\",\n match: { questionId: \"kDpVqncMSOE5\", answerId: true },\n },\n {\n label: \"Eye gestures or gazing\",\n match: { questionId: \"unojU4sBkbx3\", answerId: true },\n },\n {\n label: \"Facial gestures\",\n match: { questionId: \"Joeo8dkL5sbo\", answerId: true },\n },\n {\n label: \"Body gestures or body language\",\n match: { questionId: \"aGtPTMdBZuSd\", answerId: true },\n },\n ],\n };\n\n // TO DO: add more specific charts for each gesture category (types of arm gestures, types of eye gestures, types of facial gestures, types of body gestures)\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport Loader from \"../../../../Loader\";\n\nexport default function PhysicalContactTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const physicalContactFilter = {\n or: [\n {\n questionId: \"vlipHxg2Vhal\",\n answerId: true,\n },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"vlipHxg2Vhal\",\n filter: physicalContactFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n return (\n
\n \n \n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function ExclusionFavouritismTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const exclusionFavoritismFilter = {\n or: [\n { questionId: \"6Scklup520Lb\", answerId: true }, // Avoiding or excluding certain people\n { questionId: \"0aiSGGNFJ9mA\", answerId: true }, // Attention-seeking behaviour\n { questionId: \"T4TywmqAb8e8\", answerId: true }, // Favoritism for certain people\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: exclusionFavoritismFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Avoiding or excluding certain people\",\n match: { questionId: \"6Scklup520Lb\", answerId: true },\n },\n {\n label: \"Attention-seeking behaviour\",\n match: { questionId: \"0aiSGGNFJ9mA\", answerId: true },\n },\n {\n label: \"Favoritism for certain people\",\n match: { questionId: \"T4TywmqAb8e8\", answerId: true },\n },\n ],\n };\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function WorkManagementTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const workManagementFilter = {\n or: [\n {\n questionId: \"h9aCykuWSqZG\",\n answerId: true,\n },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: workManagementFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Unequal distribution of work\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"wuTRI63yb0W2\" },\n },\n {\n label: \"Unfair change in distribution of work\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"402vnuZGkuod\" },\n },\n {\n label: \"Unequal distribution of positive feedback\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"k6dlcGFE3Hq9\" },\n },\n {\n label: \"Unfair distribution of career growth opportunities\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"Q1PKAxVS3UEI\" },\n },\n {\n label: \"Unwarranted criticism\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"jdB5u4MuMDBO\" },\n },\n {\n label: \"Work assignments that are outside job description\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"xt7qLqWMmgg8\" },\n },\n {\n label: \"Setting unreasonable deadlines or expectations\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"h4pchLUwYWb8\" },\n },\n {\n label: \"Lack of resources/support\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"4Eqi9Xvvbfe8\" },\n },\n {\n label: \"Lack of clear instructions\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"FSHvXoUtUW4O\" },\n },\n {\n label: \"Withholding relevant information\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"0GpltVO5nAWS\" },\n },\n {\n label: \"Micromanaging\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"ENXhQbopkdnr\" },\n },\n {\n label: \"The person does not have the skills to do their job\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"obnoxiR9Ioj3\" },\n },\n {\n label: \"Other\",\n match: { questionId: \"qiijfdHOhpmQ\", answerId: \"Ue3fXLBkgIjS\" },\n },\n ],\n };\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function WorkCommentsTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const workCommentsFilter = {\n or: [\n {\n questionId: \"AtEHLMu652zg\",\n answerId: true,\n },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: workCommentsFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n questionId: \"ttw604oekDDt\",\n filter: workCommentsFilter,\n };\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function GeneralCommentsTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const generalCommentsFilter = {\n or: [\n { questionId: \"spNn7xtWmtbz\", answerId: \"R5Gmf2oU2sZk\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"DbhUolHzFjP2\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"MzkQToSTY6rj\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"MB6yadcMi4mn\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"Z2K9rotOmQEc\" },\n { questionId: \"spNn7xtWmtbz\", answerId: \"bL747UzeVpRk\" },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: generalCommentsFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Slurs or derogatory language\",\n match: { questionId: \"spNn7xtWmtbz\", answerId: \"R5Gmf2oU2sZk\" },\n },\n {\n label: \"Teasing or insults\",\n match: { questionId: \"spNn7xtWmtbz\", answerId: \"DbhUolHzFjP2\" },\n },\n {\n label: \"Gossip or spreading rumours\",\n match: { questionId: \"spNn7xtWmtbz\", answerId: \"MzkQToSTY6rj\" },\n },\n {\n label: \"Revealing private or personal information to others\",\n match: { questionId: \"spNn7xtWmtbz\", answerId: \"MB6yadcMi4mn\" },\n },\n {\n label: \"Comments that indicate a bias against certain people\",\n match: { questionId: \"spNn7xtWmtbz\", answerId: \"Z2K9rotOmQEc\" },\n },\n {\n label: \"Other\",\n match: { questionId: \"spNn7xtWmtbz\", answerId: \"bL747UzeVpRk\" },\n },\n ],\n };\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function SexualCommentsTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const sexualCommentsFilter = {\n or: [\n {\n questionId: \"2mi2KfWz8jLP\",\n answerId: true,\n },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: sexualCommentsFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Explicit sexual comments\",\n match: { questionId: \"aDpXyKDc4kY9\", answerId: \"WkfeitNANotY\" },\n },\n {\n label: \"About sexual orientation\",\n match: { questionId: \"aDpXyKDc4kY9\", answerId: \"yjpXgR6nMrH9\" },\n },\n {\n label: \"About gender identity\",\n match: { questionId: \"aDpXyKDc4kY9\", answerId: \"H9UBWkjBk3Zq\" },\n },\n {\n label: \"Sexual advances\",\n match: { questionId: \"aDpXyKDc4kY9\", answerId: \"RhjRBfIS4k5V\" },\n },\n {\n label: \"Requests to be in a romantic relationship\",\n match: { questionId: \"aDpXyKDc4kY9\", answerId: \"FFd0UJxOaQLP\" },\n },\n ],\n };\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport Loader from \"../../../../Loader\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function SexualGesturesTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const sexualGesturesFilter = {\n or: [\n {\n questionId: \"ijNYixvWCRDN\",\n answerId: true,\n },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: sexualGesturesFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n const behavioursReported = {\n formId: forms.concerns,\n buckets: [\n {\n label: \"Exposing oneself\",\n match: { questionId: \"TJNyPIrFg65V\", answerId: \"Fy8LFlM3Tt6S\" },\n },\n {\n label: \"Touching oneself in an intimate manner\",\n match: { questionId: \"TJNyPIrFg65V\", answerId: \"ZkHGTdrDr2sV\" },\n },\n {\n label: \"Making other sexual gestures\",\n match: { questionId: \"TJNyPIrFg65V\", answerId: \"jwqSn0VTNH4o\" },\n },\n {\n label: \"Showing or looking at pornography or other sexual material\",\n match: { questionId: \"TJNyPIrFg65V\", answerId: \"26qNyzOhwfZy\" },\n },\n {\n label: \"Other\",\n match: { questionId: \"TJNyPIrFg65V\", answerId: \"Ncb6FycUr3DJ\" },\n },\n ],\n };\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport IdentityTargetedChart, {\n IDENTITY_BUCKETS_TYPE,\n} from \"./charts/IdentityTargetedChart\";\nimport IncidentTargetChart from \"./charts/IncidentTargetChart\";\nimport IncidentTransgressorChart from \"./charts/IncidentTransgressorChart\";\nimport BottomDoughnuts from \"./charts/BottomDoughnuts\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport Loader from \"../../../../Loader\";\nimport ScalarScore2 from \"../../../../charts/ScalarScore2\";\n\nexport default function PolicyViolationsTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const policyFilter = {\n or: [\n {\n questionId: \"8OLwDv9zcTpH\",\n answerId: \"B6rBvv1axgLK\",\n },\n ],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n filter: policyFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n return (\n
\n \n \n \n \n \n \n \n \n
\n );\n}\n","import React, { useContext, useEffect, useState } from \"react\";\nimport { DataType } from \"line3_shared/types/DataType\";\nimport DateRangeContext from \"../../../../../contexts/DateRangeContext\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport { StatementQueryType } from \"line3_shared/types/StatementQueryType\";\nimport \"./StatementsTab.scss\";\nimport Loader from \"../../../../Loader\";\nimport Statements from \"../../../../charts/Statements\";\n\nexport default function StatementsTab({ updateRespondentCounter }) {\n const { dateRange } = useContext(DateRangeContext);\n const [statements, setStatements] = useState(null);\n const [loading, setLoading] = useState(true);\n\n const statementsFilter = {\n or: [\n {\n questionId: \"iisuvVs6c6yX\",\n answerId: true,\n },\n ],\n };\n\n const query: StatementQueryType = {\n formId: forms.concerns,\n filter: statementsFilter,\n statementQuestionId: \"zukWP6uBW5ts\",\n emailQuestionId: \"u5k8g32qa6i9\",\n };\n\n useEffect(() => {\n async function requestData() {\n setLoading(true);\n const data = {\n dateRange,\n query,\n };\n const res = await fetch(`/api/statements`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(data),\n });\n const results = await res.json();\n setStatements(results);\n updateRespondentCounter(results.length);\n setLoading(false);\n }\n requestData();\n }, [dateRange]); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (loading) return ;\n\n return (\n
\n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\nimport Loader from \"../../../../Loader\";\nimport Spacer from \"../../../../Spacer\";\n\nexport default function InsightsTab({ dateRange, updateRespondentCounter }) {\n const { loading, data } = useGetDataFromQuery({\n formId: forms.concerns,\n questionId: \"hxevrGkgspp5\",\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n return (\n
\n \n \n \n \n \n
\n );\n}\n","import React from \"react\";\nimport { Row, Col, Container } from \"react-bootstrap\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport \"chartjs-plugin-labels\";\n\nexport default function DiscriminationTab() {\n // const [results, setResults] = useState([]);\n // const [loading, setLoading] = useState(false);\n\n // useEffect(() => {\n // setLoading(true);\n // async function requestInitialData() {\n // const res = await fetch(\"/api/surveyResponses\");\n // const results = await res.json();\n // setResults(results);\n // setLoading(false);\n // }\n // requestInitialData();\n // }, []);\n\n const chartData = {\n datasets: [\n {\n data: [12, 38],\n fill: false,\n backgroundColor: [\"rgba(255, 99, 132, 0.4)\", \"rgba(75, 192, 192, 0.4)\"],\n },\n ],\n\n // These labels appear in the legend and in the tooltips when hovering different arcs\n labels: [\"Yes\", \"No\"],\n };\n\n const chartOptions = {\n title: {\n display: true,\n text: \"Respondents Reporting Discrimination\",\n },\n // tooltips: {\n // enabled: false\n // },\n plugins: {\n labels: {\n // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage'\n render: \"value\",\n },\n },\n tooltips: {\n callbacks: {\n label: function (tooltipItem, data) {\n var dataset = data.datasets[tooltipItem.datasetIndex];\n var meta = dataset._meta[Object.keys(dataset._meta)[0]];\n var total = meta.total;\n var currentValue = dataset.data[tooltipItem.index];\n var percentage = parseFloat(\n ((currentValue / total) * 100).toFixed(1)\n );\n return percentage + \"%\";\n },\n title: function (tooltipItem, data) {\n return data.labels[tooltipItem[0].index];\n },\n },\n },\n };\n\n return (\n \n \n \n {/* {loading && } */}\n \n {/*
    \n {results.map((result) => {\n return (\n
  • \n {result.respondent} - {result.isDiscrimination}\n
  • \n );\n })}\n
*/}\n \n
\n
\n );\n}\n","import React from \"react\";\nimport { Row, Col, Container } from \"react-bootstrap\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport \"chartjs-plugin-labels\";\n\nexport default function HarassmentTab() {\n const chartData = {\n datasets: [\n {\n data: [22, 28],\n backgroundColor: [\"rgba(255, 99, 132, 0.4)\", \"rgba(75, 192, 192, 0.4)\"],\n },\n ],\n\n // These labels appear in the legend and in the tooltips when hovering different arcs\n labels: [\"Yes\", \"No\"],\n };\n\n const chartOptions = {\n title: {\n display: true,\n text: \"Respondents Reporting Harassment\",\n },\n plugins: {\n labels: {\n // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage'\n render: \"value\",\n },\n },\n tooltips: {\n callbacks: {\n label: function (tooltipItem, data) {\n var dataset = data.datasets[tooltipItem.datasetIndex];\n var meta = dataset._meta[Object.keys(dataset._meta)[0]];\n var total = meta.total;\n var currentValue = dataset.data[tooltipItem.index];\n var percentage = parseFloat(\n ((currentValue / total) * 100).toFixed(1)\n );\n return percentage + \"%\";\n },\n title: function (tooltipItem, data) {\n return data.labels[tooltipItem[0].index];\n },\n },\n },\n };\n\n return (\n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Row, Col, Container } from \"react-bootstrap\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport \"chartjs-plugin-labels\";\n\nexport default function ViolenceTab() {\n const chartData = {\n datasets: [\n {\n data: [8, 42],\n backgroundColor: [\"rgba(255, 99, 132, 0.4)\", \"rgba(75, 192, 192, 0.4)\"],\n },\n ],\n\n // These labels appear in the legend and in the tooltips when hovering different arcs\n labels: [\"Yes\", \"No\"],\n };\n\n const chartOptions = {\n title: {\n display: true,\n text: \"Respondents Reporting Violence\",\n },\n plugins: {\n labels: {\n // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage'\n render: \"value\",\n },\n },\n tooltips: {\n callbacks: {\n label: function (tooltipItem, data) {\n var dataset = data.datasets[tooltipItem.datasetIndex];\n var meta = dataset._meta[Object.keys(dataset._meta)[0]];\n var total = meta.total;\n var currentValue = dataset.data[tooltipItem.index];\n var percentage = parseFloat(\n ((currentValue / total) * 100).toFixed(1)\n );\n return percentage + \"%\";\n },\n title: function (tooltipItem, data) {\n return data.labels[tooltipItem[0].index];\n },\n },\n },\n };\n\n return (\n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Row, Col, Container } from \"react-bootstrap\";\nimport { Bar } from \"react-chartjs-2\";\n// import 'chartjs-plugin-labels'\n\nexport default function OverviewTab() {\n // const something = {\n // type: \"bar\",\n // data: {\n // labels: [\"January\", \"February\", \"March\", \"April\", \"May\", \"June\", \"July\"],\n // datasets: [\n // {\n // label: \"My First Dataset\",\n // data: [65, 59, 80, 81, 56, 55, 40],\n // fill: false,\n // backgroundColor: [\n // \"rgba(255, 99, 132, 0.2)\",\n // \"rgba(255, 159, 64, 0.2)\",\n // \"rgba(255, 205, 86, 0.2)\",\n // \"rgba(75, 192, 192, 0.2)\",\n // \"rgba(54, 162, 235, 0.2)\",\n // \"rgba(153, 102, 255, 0.2)\",\n // \"rgba(201, 203, 207, 0.2)\",\n // ],\n // borderColor: [\n // \"rgb(255, 99, 132)\",\n // \"rgb(255, 159, 64)\",\n // \"rgb(255, 205, 86)\",\n // \"rgb(75, 192, 192)\",\n // \"rgb(54, 162, 235)\",\n // \"rgb(153, 102, 255)\",\n // \"rgb(201, 203, 207)\",\n // ],\n // borderWidth: 1,\n // },\n // ],\n // },\n // options: {\n // scales: {\n // yAxes: [\n // {\n // ticks: {\n // beginAtZero: true,\n // },\n // },\n // ],\n // },\n // },\n // };\n\n const chartData = {\n labels: [\"Discrimination\", \"Harassment\", \"Violence\", \"Fraud\"],\n datasets: [\n {\n label: \"\",\n data: [24, 44, 16, 8],\n fill: false,\n backgroundColor: [\n \"rgba(255, 99, 132, 0.2)\",\n \"rgba(255, 159, 64, 0.2)\",\n \"rgba(255, 205, 86, 0.2)\",\n \"rgba(75, 192, 192, 0.2)\",\n ],\n borderWidth: 1,\n },\n ],\n\n // These labels appear in the legend and in the tooltips when hovering different arcs\n // labels: ['Yes', 'No'],\n };\n\n const chartOptions = {\n scales: {\n yAxes: [\n {\n ticks: {\n beginAtZero: true,\n suggestedMax: 100,\n },\n },\n ],\n },\n legend: {\n display: false,\n },\n title: {\n display: true,\n text: \"Prevalence of Reported HR Issues\",\n },\n plugins: {\n labels: {\n // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage'\n render: function (args) {\n return args.value + \"%\";\n },\n },\n },\n label: {\n display: true,\n },\n // maintainAspectRatio: false,\n // tooltips: {\n // callbacks: {\n // label: function(tooltipItem, data) {\n // var dataset = data.datasets[tooltipItem.datasetIndex];\n // var meta = dataset._meta[Object.keys(dataset._meta)[0]];\n // var total = meta.total;\n // var currentValue = dataset.data[tooltipItem.index];\n // var percentage = parseFloat((currentValue/total*100).toFixed(1));\n // return percentage + '%';\n // },\n // title: function(tooltipItem, data) {\n // return data.labels[tooltipItem[0].index];\n // }\n // }\n // }\n };\n\n return (\n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Row, Col, Container } from \"react-bootstrap\";\nimport { Doughnut } from \"react-chartjs-2\";\nimport \"chartjs-plugin-labels\";\n\nexport default function FraudTab() {\n const chartData = {\n datasets: [\n {\n data: [4, 46],\n backgroundColor: [\"rgba(255, 99, 132, 0.4)\", \"rgba(75, 192, 192, 0.4)\"],\n },\n ],\n\n // These labels appear in the legend and in the tooltips when hovering different arcs\n labels: [\"Yes\", \"No\"],\n };\n\n const chartOptions = {\n title: {\n display: true,\n text: \"Respondents Reporting Harassment\",\n },\n plugins: {\n labels: {\n // render 'label', 'value', 'percentage', 'image' or custom function, default is 'percentage'\n render: \"value\",\n },\n },\n tooltips: {\n callbacks: {\n label: function (tooltipItem, data) {\n var dataset = data.datasets[tooltipItem.datasetIndex];\n var meta = dataset._meta[Object.keys(dataset._meta)[0]];\n var total = meta.total;\n var currentValue = dataset.data[tooltipItem.index];\n var percentage = parseFloat(\n ((currentValue / total) * 100).toFixed(1)\n );\n return percentage + \"%\";\n },\n title: function (tooltipItem, data) {\n return data.labels[tooltipItem[0].index];\n },\n },\n },\n };\n\n return (\n \n \n \n \n \n \n \n );\n}\n","import React from \"react\";\nimport { Tab } from \"react-bootstrap\";\nimport DiscriminationTab from \"./DiscriminationTab\";\nimport HarassmentTab from \"./HarassmentTab\";\nimport ViolenceTab from \"./ViolenceTab\";\nimport OverviewTab from \"./OverviewTab\";\nimport FraudTab from \"./FraudTab\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport Nav from \"react-bootstrap/Nav\";\nimport Container from \"react-bootstrap/Container\";\nimport TabContainer from \"../../../../TabContainer\";\n\nexport default function Dashboard() {\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","import React from \"react\";\nimport Container from \"react-bootstrap/Container\";\n\ntype PropTypes = {\n text: string;\n height: \"auto\" | number;\n};\n\nexport default function NoResponses({ text, height = \"auto\" }: PropTypes) {\n return (\n \n
{text}
\n \n );\n}\n","import React from \"react\";\nimport { HorizontalBar as ChartJsHorizontalBar } from \"react-chartjs-2\";\nimport truncate from \"lodash.truncate\";\n\nexport default function HorizontalBar({\n data,\n labels,\n title,\n maxValue,\n palette,\n}) {\n // this isn't actually the bar thickness, just a rough number used to get the height somewhat consistent\n const BAR_THICKNESS_MULTIPLIER = 12;\n // this is an approximation as well\n const TITLE_HEIGHT_ROUGHLY = 35;\n const TRUNCATE_TEXT_CHARACTERS = 25;\n const LABEL_WIDTH = 155;\n\n const chartData = {\n labels,\n datasets: [\n {\n data,\n fill: false,\n backgroundColor: palette,\n borderWidth: 1,\n },\n ],\n };\n\n const chartOptions = {\n scales: {\n xAxes: [\n {\n ticks: {\n beginAtZero: true,\n suggestedMax: maxValue,\n precision: 0,\n },\n },\n ],\n yAxes: [\n {\n ticks: {\n callback: (value) => {\n return truncate(value, { length: TRUNCATE_TEXT_CHARACTERS });\n },\n },\n afterFit: (me) => {\n me.width = LABEL_WIDTH;\n },\n },\n ],\n },\n legend: {\n display: false,\n },\n title: {\n display: true,\n text: title,\n },\n };\n\n return (\n \n );\n}\n","import React from \"react\";\nimport { colors } from \"../../constants/colors\";\nimport Tooltip from \"react-bootstrap/Tooltip\";\nimport OverlayTrigger from \"react-bootstrap/OverlayTrigger\";\n\nexport default function ScalarScore({ score, title, tooltip }) {\n function scoreColor() {\n if (score < 10.0 / 6) {\n return colors.chartRedGreen6;\n } else if (score < (10.0 / 6) * 2) {\n return colors.chartRedGreen5;\n } else if (score < (10.0 / 6) * 3) {\n return colors.chartRedGreen4;\n } else if (score < (10.0 / 6) * 4) {\n return colors.chartRedGreen3;\n } else if (score < (10.0 / 6) * 5) {\n return colors.chartRedGreen2;\n } else {\n return colors.chartRedGreen1;\n }\n }\n\n function renderTooltip(props) {\n return (\n \n {tooltip}\n \n );\n }\n\n return (\n
\n \n \n

{Math.round(score * 10) / 10}

\n
\n \n

{title}

\n
\n );\n}\n","import React from \"react\";\nimport { covid19Colors } from \"../../constants/colors\";\nimport Tooltip from \"react-bootstrap/Tooltip\";\nimport OverlayTrigger from \"react-bootstrap/OverlayTrigger\";\nimport { Doughnut as ChartJsDoughnut } from \"react-chartjs-2\";\n\ntype PropTypes = {\n data: any;\n options?: any;\n title?: string;\n tooltip?: string;\n};\n\nexport default function Doughnut({ data, options, title, tooltip }: PropTypes) {\n const chartData = {\n datasets: [\n {\n data: Object.values(data),\n backgroundColor: Object.values(covid19Colors),\n },\n ],\n labels: Object.keys(data),\n };\n\n const chartOptions = {\n legend: {\n display: false,\n },\n ...options,\n };\n\n function renderTooltip(props) {\n return (\n \n {tooltip}\n \n );\n }\n\n return (\n
\n \n
\n \n
\n \n

{title}

\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst ppeEquipmentLabels = [\n \"Masks/N95s\",\n \"Face shields or Eye goggles\",\n \"Gloves\",\n \"Clothing (Gowns)\",\n \"Other\",\n];\nconst ppeIssueLabels = [\n \"It's not available\",\n \"It's not accessible when it's needed\",\n \"There isn't enough\",\n \"It's not the right type of PPE\",\n \"It doesn't fit\",\n \"It doesn't work\",\n \"It's not safely disposed\",\n \"There isn't enough training on how/when to use it\",\n \"The PPE protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function PpeTab({ dateRange, updateRespondentCounter }) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculatePpe?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const ppeEquipmentData = ppeEquipmentLabels.map(\n (label) => results.ppeEquipment[label]\n );\n const ppeIssueData = ppeIssueLabels.map((label) => results.ppeIssue[label]);\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst screeningTypeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst screeningIssueLabels = [\n \"Screening is not being done\",\n \"Screening is not done consistently\",\n \"People are dishonest when answering screening questions\",\n \"There isn't enough training on how/when to do screening\",\n \"The screening protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function ScreeningTab({ dateRange, updateRespondentCounter }) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculateScreening?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange.startDate, dateRange.endDate]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const screeningTypeData = screeningTypeLabels.map(\n (label) => results.screeningType[label]\n );\n const screeningIssueData = screeningIssueLabels.map(\n (label) => results.screeningIssue[label]\n );\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst typeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst issueLabels = [\n \"They are not self-isolating when they should be\",\n \"They are not monitoring symptoms\",\n \"People are dishonest about their self-isolation and monitoring\",\n \"There isn't enough training on how/when to do it\",\n \"There aren't enough employees to allow for self-isolation\",\n \"The monitoring and self-isolation protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function MonitoringTab({ dateRange, updateRespondentCounter }) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculateMonitoring?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange.startDate, dateRange.endDate]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const typeData = typeLabels.map((label) => results.monitoringType[label]);\n const issueData = issueLabels.map((label) => results.monitoringIssue[label]);\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst typeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst issueLabels = [\n \"Personal hygiene supplies (like hand sanitizer) are not available\",\n \"There aren't enough personal hygiene supplies\",\n \"Personal hygiene protocols are not being followed (like regular handwashing and covering mouth when coughing)\",\n \"There isn't enough training on how/when to do it\",\n \"The personal hygiene supplies and protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function PersonalHygieneTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculatePersonalHygiene?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange.startDate, dateRange.endDate]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const typeData = typeLabels.map(\n (label) => results.personalHygieneType[label]\n );\n const issueData = issueLabels.map(\n (label) => results.personalHygieneIssue[label]\n );\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst issueLabels = [\n \"Cleaning supplies are not available\",\n \"There aren't enough cleaning supplies\",\n \"Cleaning protocols are not being followed\",\n \"There isn't enough training on how/when to do it\",\n \"The cleaning supplies and protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function CleaningAndSanitationTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculateCleaningAndSanitation?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const issueData = issueLabels.map(\n (label) => results.cleaningAndSanitationIssue[label]\n );\n\n return (\n
\n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst typeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst issueLabels = [\n \"People are not maintaining a 2-metre distance from each other\",\n \"The design of the workplace doesn't allow for social distancing (including desk spaces and gathering areas)\",\n \"There are too many people in the workplace to maintain social distancing\",\n \"There's not enough training on social distancing protocols\",\n \"The social distancing protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function SocialDistancingTab({\n dateRange,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculateSocialDistancing?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange.startDate, dateRange.endDate]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const typeData = typeLabels.map(\n (label) => results.socialDistancingType[label]\n );\n const issueData = issueLabels.map(\n (label) => results.socialDistancingIssue[label]\n );\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst issueLabels = [\n \"Scheduling (including work hours, and who is allowed to go to the workplace)\",\n \"Working from home\",\n \"Travel to and from the workplace (including transportation, elevators, entry and exit points)\",\n \"Air circulation\",\n \"Physical barriers (Curtains, plexiglass)\",\n \"Privacy of health information\",\n \"Personal health issues (including compromised immunity from other medical conditions)\",\n \"Other\",\n];\n\nexport default function OtherTab({ dateRange, updateRespondentCounter }) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculateOther?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const issueData = issueLabels.map((label) => results.otherIssue[label]);\n\n return (\n
\n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport Tab from \"react-bootstrap/Tab\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport Nav from \"react-bootstrap/Nav\";\nimport TabContainer from \"../../../../TabContainer\";\nimport OverviewTab from \"./OverviewTab\";\nimport PpeTab from \"./PpeTab\";\nimport ScreeningTab from \"./ScreeningTab\";\nimport MonitoringTab from \"./MonitoringTab\";\nimport PersonalHygieneTab from \"./PersonalHygieneTab\";\nimport CleaningAndSanitationTab from \"./CleaningAndSanitationTab\";\nimport SocialDistancingTab from \"./SocialDistancingTab\";\nimport OtherTab from \"./OtherTab\";\nimport StatementsTab from \"./StatementsTab\";\nimport Spacer from \"../../../../Spacer\";\nimport \"react-date-range/dist/styles.css\"; // main style file\nimport \"react-date-range/dist/theme/default.css\"; // theme css file\nimport DateRangeButtonAndModal from \"../../../../DatePickerButtonAndModal\";\nimport RespondentCounter from \"../RespondentCounter\";\n\nconst tabs = [\n {\n name: \"Overview\",\n eventKey: \"overview\",\n Component: OverviewTab,\n },\n {\n name: \"PPE\",\n eventKey: \"ppe\",\n Component: PpeTab,\n },\n {\n name: \"Screening\",\n eventKey: \"screening\",\n Component: ScreeningTab,\n },\n {\n name: \"Monitoring\",\n eventKey: \"monitoring\",\n Component: MonitoringTab,\n },\n {\n name: \"Personal Hygiene\",\n eventKey: \"personalHygiene\",\n Component: PersonalHygieneTab,\n },\n {\n name: \"Cleaning and Sanitation\",\n eventKey: \"cleaningAndSanitation\",\n Component: CleaningAndSanitationTab,\n },\n {\n name: \"Social Distancing\",\n eventKey: \"socialDistancing\",\n Component: SocialDistancingTab,\n },\n {\n name: \"Other\",\n eventKey: \"other\",\n Component: OtherTab,\n },\n {\n name: \"Statements\",\n eventKey: \"statements\",\n Component: StatementsTab,\n },\n];\n\nconst allDatesRange = {\n startDate: \"1960-01-01\",\n endDate: \"2100-01-01\",\n};\n\nexport default function Dashboard() {\n const [respondentCount, setRespondentCount] = useState(0);\n const [confirmedDateRange, setConfirmedDateRange] = useState(allDatesRange);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {tabs.map((tab) => {\n const { Component, eventKey } = tab;\n return (\n \n {\n setRespondentCount(newCount);\n }}\n />\n \n );\n })}\n \n \n \n \n );\n}\n","import React, { useEffect } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore2 from \"../../../../charts/ScalarScore2\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut2 from \"../../../../charts/Doughnut2\";\nimport { forms } from \"line3_shared/constants/forms\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\n\nexport default function OverviewTab({ dateRange, updateRespondentCounter }) {\n const { loading, data } = useGetDataFromQuery({\n formId: forms.covid19,\n questionId: \"Fc7Uv0IxFZLu\",\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, dateRange, data]);\n\n if (loading) return ;\n\n if (data && data.total === 0) {\n return (\n \n );\n }\n\n const palette = [\n covid19Colors.ppe,\n covid19Colors.screening,\n covid19Colors.monitoring,\n covid19Colors.personalHygiene,\n covid19Colors.cleaningAndSanitation,\n covid19Colors.socialDistancing,\n covid19Colors.other,\n ];\n\n const respondentsConcernedWithFollowingIssues = {\n formId: forms.covid19,\n buckets: [\n {\n label: \"PPE\",\n match: { questionId: \"UAvcLLQF88RW\", answerId: true },\n },\n {\n label: \"Screening\",\n match: { questionId: \"p9zJkGaoS7UV\", answerId: true },\n },\n {\n label: \"Monitoring\",\n match: { questionId: \"jmuJmg4wcmYE\", answerId: true },\n },\n {\n label: \"Personal Hygiene\",\n match: { questionId: \"s1sciewot623\", answerId: true },\n },\n {\n label: \"Cleaning and Sanitation\",\n match: { questionId: \"UmQjxBsYKSH8\", answerId: true },\n },\n {\n label: \"Social Distancing\",\n match: { questionId: \"X1jRllrwsGyX\", answerId: true },\n },\n {\n label: \"Other\",\n match: { questionId: \"Y03YGU2ieqvE\", answerId: true },\n },\n ],\n };\n\n const howFrequentlyHasThisOccurred = {\n formId: forms.covid19,\n buckets: [\n {\n label: \"Just once\",\n match: { questionId: \"S8nCYgVo7zjg\", answerId: \"EfEQGDn4XB1G\" },\n },\n {\n label: \"Twice\",\n match: { questionId: \"S8nCYgVo7zjg\", answerId: \"FLTKdDqJjHjv\" },\n },\n {\n label: \"A few times\",\n match: { questionId: \"S8nCYgVo7zjg\", answerId: \"JLg8GiMfJcPg\" },\n },\n {\n match: { questionId: \"cAL6evbL57cb\", answerId: \"oSMtDeNzb06H\" },\n label: \"Once a day\",\n },\n {\n match: { questionId: \"cAL6evbL57cb\", answerId: \"S07Jc1roVLmu\" },\n label: \"Several times a day\",\n },\n {\n match: { questionId: \"cAL6evbL57cb\", answerId: \"ptqbIHL0SxsL\" },\n label: \"Once a week\",\n },\n {\n match: { questionId: \"cAL6evbL57cb\", answerId: \"MoXlqOVKLpqj\" },\n label: \"Several times a week\",\n },\n {\n match: { questionId: \"cAL6evbL57cb\", answerId: \"wo0RR38hA6Lk\" },\n label: \"Once a month\",\n },\n {\n match: { questionId: \"cAL6evbL57cb\", answerId: \"MYPPb733J9r7\" },\n label: \"Several times a month\",\n },\n ],\n };\n\n return (\n
\n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport Spacer from \"../../../../Spacer\";\nimport Container from \"react-bootstrap/Container\";\nimport Card from \"react-bootstrap/Card\";\nimport Pagination from \"react-bootstrap/Pagination\";\nimport NoResponses from \"./NoResponses\";\n\nexport default function OtherTab({ dateRange, updateRespondentCounter }) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n const [activeStatementIndex, setActiveStatementIndex] = useState(0);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19/calculateStatements?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const statements = results.statements;\n let items = [];\n\n statements.forEach((statement, index) => {\n items.push(\n {\n console.log(\"Clicked\");\n setActiveStatementIndex(index);\n }}\n >\n {index + 1}\n \n );\n });\n\n const statementInfo = statements[activeStatementIndex];\n\n return (\n \n \n \n Statement {activeStatementIndex + 1} of {statements.length}\n \n \n \n

\"{statementInfo.text}\"

\n
\n

\n {statementInfo.email\n ? `(Follow-up email: ${statementInfo.email})`\n : `(No follow-up email submitted)`}\n

\n \n
\n
\n \n {statements.length > 1 && {items}}\n
\n );\n}\n","import React from \"react\";\nimport Container from \"react-bootstrap/Container\";\n\nexport default function NoResponses({ text, height = \"auto\" }) {\n return (\n \n
{text}
\n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport Loader from \"../../../../Loader\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst labels = [\n \"PPE\",\n \"Screening\",\n \"Monitoring\",\n \"Personal Hygiene\",\n \"Cleaning and Sanitation\",\n \"Social Distancing\",\n \"Other\",\n];\n\nexport default function OverviewTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculateOverall?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange, projectsFilter]);\n\n if (loading) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const data = [\n results.ppe,\n results.screening,\n results.monitoring,\n results.personalHygiene,\n results.cleaningAndSanitation,\n results.socialDistancing,\n results.other,\n ];\n\n const palette = [\n covid19Colors.ppe,\n covid19Colors.screening,\n covid19Colors.monitoring,\n covid19Colors.personalHygiene,\n covid19Colors.cleaningAndSanitation,\n covid19Colors.socialDistancing,\n covid19Colors.other,\n ];\n\n return (\n
\n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst ppeEquipmentLabels = [\n \"Masks/N95s\",\n \"Face shields or Eye goggles\",\n \"Gloves\",\n \"Clothing (Gowns)\",\n \"Other\",\n];\nconst ppeIssueLabels = [\n \"It's not available\",\n \"It's not accessible when it's needed\",\n \"There isn't enough\",\n \"It's not the right type of PPE\",\n \"It doesn't fit\",\n \"It doesn't work\",\n \"It's not safely disposed\",\n \"There isn't enough training on how/when to use it\",\n \"The PPE protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function PpeTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculatePpe?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange, projectsFilter]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const ppeEquipmentData = ppeEquipmentLabels.map(\n (label) => results.ppeEquipment[label]\n );\n const ppeIssueData = ppeIssueLabels.map((label) => results.ppeIssue[label]);\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst screeningTypeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst screeningIssueLabels = [\n \"Screening is not being done\",\n \"Screening is not done consistently\",\n \"People are dishonest when answering screening questions\",\n \"There isn't enough training on how/when to do screening\",\n \"The screening protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function ScreeningTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculateScreening?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [\n updateRespondentCounter,\n dateRange.startDate,\n dateRange.endDate,\n projectsFilter,\n ]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const screeningTypeData = screeningTypeLabels.map(\n (label) => results.screeningType[label]\n );\n const screeningIssueData = screeningIssueLabels.map(\n (label) => results.screeningIssue[label]\n );\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst typeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst issueLabels = [\n \"They are not self-isolating when they should be\",\n \"They are not monitoring symptoms\",\n \"People are dishonest about their self-isolation and monitoring\",\n \"There isn't enough training on how/when to do it\",\n \"There aren't enough employees to allow for self-isolation\",\n \"The monitoring and self-isolation protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function MonitoringTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculateMonitoring?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [\n updateRespondentCounter,\n dateRange.startDate,\n dateRange.endDate,\n projectsFilter,\n ]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const typeData = typeLabels.map((label) => results.monitoringType[label]);\n const issueData = issueLabels.map((label) => results.monitoringIssue[label]);\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst typeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst issueLabels = [\n \"Personal hygiene supplies (like hand sanitizer) are not available\",\n \"There aren't enough personal hygiene supplies\",\n \"Personal hygiene protocols are not being followed (like regular handwashing and covering mouth when coughing)\",\n \"There isn't enough training on how/when to do it\",\n \"The personal hygiene supplies and protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function PersonalHygieneTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculatePersonalHygiene?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [\n updateRespondentCounter,\n dateRange.startDate,\n dateRange.endDate,\n projectsFilter,\n ]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const typeData = typeLabels.map(\n (label) => results.personalHygieneType[label]\n );\n const issueData = issueLabels.map(\n (label) => results.personalHygieneIssue[label]\n );\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst issueLabels = [\n \"Cleaning supplies are not available\",\n \"There aren't enough cleaning supplies\",\n \"Cleaning protocols are not being followed\",\n \"There isn't enough training on how/when to do it\",\n \"The cleaning supplies and protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function CleaningAndSanitationTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculateCleaningAndSanitation?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange, projectsFilter]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const issueData = issueLabels.map(\n (label) => results.cleaningAndSanitationIssue[label]\n );\n\n return (\n
\n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst typeLabels = [\n \"Employees\",\n \"Visitors (including clients and contractors)\",\n \"Other\",\n];\n\nconst issueLabels = [\n \"People are not maintaining a 2-metre distance from each other\",\n \"The design of the workplace doesn't allow for social distancing (including desk spaces and gathering areas)\",\n \"There are too many people in the workplace to maintain social distancing\",\n \"There's not enough training on social distancing protocols\",\n \"The social distancing protocols are not safe enough\",\n \"Other\",\n];\n\nexport default function SocialDistancingTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculateSocialDistancing?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [\n updateRespondentCounter,\n dateRange.startDate,\n dateRange.endDate,\n projectsFilter,\n ]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const typeData = typeLabels.map(\n (label) => results.socialDistancingType[label]\n );\n const issueData = issueLabels.map(\n (label) => results.socialDistancingIssue[label]\n );\n\n return (\n
\n \n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport HorizontalBar from \"../../../../charts/HorizontalBar\";\nimport { covid19Colors } from \"../../../../../constants/colors\";\nimport ScalarScore from \"../../../../charts/ScalarScore\";\nimport NoResponses from \"./NoResponses\";\nimport Doughnut from \"../../../../charts/Doughnut\";\n\nconst issueLabels = [\n \"Scheduling (including work hours, and who is allowed to go to the workplace)\",\n \"Working from home\",\n \"Travel to and from the workplace (including transportation, elevators, entry and exit points)\",\n \"Air circulation\",\n \"Physical barriers (Curtains, plexiglass)\",\n \"Privacy of health information\",\n \"Personal health issues (including compromised immunity from other medical conditions)\",\n \"Other\",\n];\n\nexport default function OtherTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculateOther?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange, projectsFilter]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n const issueData = issueLabels.map((label) => results.otherIssue[label]);\n\n return (\n
\n \n
\n \n \n \n \n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport Tab from \"react-bootstrap/Tab\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport Nav from \"react-bootstrap/Nav\";\nimport Modal from \"react-bootstrap/Modal\";\nimport Button from \"react-bootstrap/Button\";\nimport Form from \"react-bootstrap/Form\";\nimport TabContainer from \"../../../../TabContainer\";\nimport OverviewTab from \"./OverviewTab\";\nimport PpeTab from \"./PpeTab\";\nimport ScreeningTab from \"./ScreeningTab\";\nimport MonitoringTab from \"./MonitoringTab\";\nimport PersonalHygieneTab from \"./PersonalHygieneTab\";\nimport CleaningAndSanitationTab from \"./CleaningAndSanitationTab\";\nimport SocialDistancingTab from \"./SocialDistancingTab\";\nimport OtherTab from \"./OtherTab\";\nimport StatementsTab from \"./StatementsTab\";\nimport Spacer from \"../../../../Spacer\";\nimport { colors } from \"../../../../../constants/colors\";\nimport \"react-date-range/dist/styles.css\"; // main style file\nimport \"react-date-range/dist/theme/default.css\"; // theme css file\nimport { DateRangePicker } from \"react-date-range\";\nimport { addDays } from \"date-fns\";\nimport {\n PROJECTS_LIST,\n PROJECTS_MAP,\n} from \"line3_shared/constants/covid19BuildingUp/projects\";\nimport RespondentCounter from \"../RespondentCounter\";\n\nconst tabs = [\n {\n name: \"Overview\",\n eventKey: \"overview\",\n Component: OverviewTab,\n },\n {\n name: \"PPE\",\n eventKey: \"ppe\",\n Component: PpeTab,\n },\n {\n name: \"Screening\",\n eventKey: \"screening\",\n Component: ScreeningTab,\n },\n {\n name: \"Monitoring\",\n eventKey: \"monitoring\",\n Component: MonitoringTab,\n },\n {\n name: \"Personal Hygiene\",\n eventKey: \"personalHygiene\",\n Component: PersonalHygieneTab,\n },\n {\n name: \"Cleaning and Sanitation\",\n eventKey: \"cleaningAndSanitation\",\n Component: CleaningAndSanitationTab,\n },\n {\n name: \"Social Distancing\",\n eventKey: \"socialDistancing\",\n Component: SocialDistancingTab,\n },\n {\n name: \"Other\",\n eventKey: \"other\",\n Component: OtherTab,\n },\n {\n name: \"Statements\",\n eventKey: \"statements\",\n Component: StatementsTab,\n },\n];\n\nconst allDatesRange = {\n startDate: \"1960-01-01\",\n endDate: \"2100-01-01\",\n};\n\nconst allProjects = PROJECTS_LIST.reduce((acc, project) => {\n return { ...acc, [project.id]: true };\n}, {});\n\nexport default function Dashboard() {\n const [respondentCount, setRespondentCount] = useState(0);\n const [confirmedDateRange, setConfirmedDateRange] = useState(allDatesRange);\n const [projectsFilter, setProjectsFilter] = useState(allProjects);\n\n const handleSelect = (eventKey) => console.log(`selected ${eventKey}`);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {tabs.map((tab) => {\n const { Component, eventKey } = tab;\n return (\n \n {\n setRespondentCount(newCount);\n }}\n />\n \n );\n })}\n \n \n \n \n );\n}\n\nfunction ProjectButtonAndModal({ setProjectsFilter }) {\n const [showModal, setShowModal] = useState(false);\n const [projects, setProjects] = useState(allProjects);\n const [projectsText, setProjectsText] = useState(\"All\");\n\n const handleCloseModal = () => setShowModal(false);\n const handleShowModal = () => setShowModal(true);\n\n function updateProjectsText() {\n const projectList = [];\n for (let projectId in projects) {\n if (projects[projectId]) {\n projectList.push(PROJECTS_MAP[projectId]);\n }\n }\n\n if (projectList.length === PROJECTS_LIST.LENGTH) {\n setProjectsText(\"All\");\n } else if (projectList.length === 0) {\n setProjectsText(\"None\");\n } else if (projectList.length === 1) {\n setProjectsText(projectList[0]);\n } else {\n setProjectsText(\"Multiple\");\n }\n }\n\n function onSelectedOptionsChange(event) {\n const newProjects = {\n ...projects,\n [event.target.name]: event.target.checked,\n };\n\n setProjects(newProjects);\n }\n\n return (\n <>\n \n Projects: {projectsText}\n \n \n \n Filter by Project\n \n \n
\n {Object.keys(projects).map((projectId, index) => {\n return (\n \n );\n })}\n \n
\n \n \n {\n handleCloseModal();\n setProjectsText(\"All\");\n setProjects(allProjects);\n setProjectsFilter(allProjects);\n }}\n >\n All Projects\n \n {\n handleCloseModal();\n updateProjectsText();\n setProjectsFilter(projects);\n }}\n >\n Filter by Selected Projects\n \n \n
\n \n );\n}\n\nfunction DateRangeButtonAndModal({ setConfirmedDateRange }) {\n const [showModal, setShowModal] = useState(false);\n const [dateRange, setDateRange] = useState([\n {\n startDate: addDays(new Date(), -6),\n endDate: new Date(),\n key: \"selection\",\n },\n ]);\n const [dateRangeText, setDateRangeText] = useState(\"All\");\n\n const handleCloseModal = () => setShowModal(false);\n const handleShowModal = () => {\n setShowModal(true);\n };\n\n return (\n <>\n \n Dates: {dateRangeText}\n \n \n \n Date Range Picker\n \n \n {\n setDateRange([item.selection]);\n }}\n showSelectionPreview={true}\n moveRangeOnFirstSelection={false}\n months={2}\n ranges={dateRange}\n direction=\"horizontal\"\n />\n \n \n \n {\n handleCloseModal();\n setDateRangeText(\"All\");\n setConfirmedDateRange(allDatesRange);\n }}\n >\n All Dates\n \n {\n handleCloseModal();\n const startDate = dateRange[0].startDate\n .toISOString()\n .slice(0, 10);\n const endDate = dateRange[0].endDate.toISOString().slice(0, 10);\n setDateRangeText(`${startDate} to ${endDate}`);\n setConfirmedDateRange({\n startDate,\n endDate,\n });\n }}\n >\n Apply Selected Dates\n \n \n \n \n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport Loader from \"../../../../Loader\";\nimport Spacer from \"../../../../Spacer\";\nimport Container from \"react-bootstrap/Container\";\nimport Card from \"react-bootstrap/Card\";\nimport Pagination from \"react-bootstrap/Pagination\";\nimport NoResponses from \"./NoResponses\";\n\nexport default function OtherTab({\n dateRange,\n projectsFilter,\n updateRespondentCounter,\n}) {\n const [results, setResults] = useState({});\n const [loading, setLoading] = useState(true);\n const [activeStatementIndex, setActiveStatementIndex] = useState(0);\n\n useEffect(() => {\n async function requestInitialData() {\n setLoading(true);\n const res = await fetch(\n `/api/covid19BuildingUp/calculateStatements?startDate=${dateRange.startDate}&endDate=${dateRange.endDate}`,\n {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ projectsFilter }),\n }\n );\n const results = await res.json();\n setResults(results);\n updateRespondentCounter(results.total);\n setLoading(false);\n }\n requestInitialData();\n }, [updateRespondentCounter, dateRange, projectsFilter]);\n\n if (loading || !results) return ;\n\n if (results.total === 0) {\n return (\n \n );\n }\n\n // Safetfy check in case results change to a number too low for the active index\n if (activeStatementIndex > results.total - 1) {\n setActiveStatementIndex(0);\n return ;\n }\n\n const statements = results.statements;\n let items = [];\n\n statements.forEach((statement, index) => {\n items.push(\n {\n console.log(\"Clicked\");\n setActiveStatementIndex(index);\n }}\n >\n {index + 1}\n \n );\n });\n\n const statementInfo = statements[activeStatementIndex];\n\n return (\n \n \n \n Statement {activeStatementIndex + 1} of {statements.length}\n \n \n \n

\"{statementInfo.text}\"

\n
\n

\n {statementInfo.email\n ? `(Follow-up email: ${statementInfo.email})`\n : `(No follow-up email submitted)`}\n

\n \n
\n
\n \n {statements.length > 1 && {items}}\n
\n );\n}\n","export default function convertJSDateStringToISODateFormat(jsDateString): string {\n return new Date(jsDateString).toISOString().slice(0,10) // The slice converts something like '2022-06-05T04:00:00.000Z' to '2022-06-05'\n}","export default function sortFunctionTreatingArraysAsStrings(a, b) {\n if (a.join('') < b.join('')) {\n return -1;\n }\n\n if (a.join('') > b.join('')) {\n return 1;\n }\n\n return 0;\n}","import React, { useState } from \"react\";\nimport { Tab } from \"react-bootstrap\";\nimport Col from \"react-bootstrap/Col\";\nimport Nav from \"react-bootstrap/Nav\";\n\nimport Row from \"react-bootstrap/Row\";\nimport DateRangeButtonAndModal from \"../../../../DatePickerButtonAndModal\";\nimport Spacer from \"../../../../Spacer\";\nimport TabContainer from \"../../../../TabContainer\";\nimport RespondentCounter from \"../RespondentCounter\";\nimport HarassementAndBullyingBehaviourTab from \"./HarassmentAndBullyingBehaviourTab\";\nimport OverviewTab from \"./OverviewTab\";\nimport ReportsTab from \"./ReportsTab\";\nimport WorkplaceCultureIssuesTab from \"./WorkplaceCultureIssuesTab\";\n\nconst TABS = [\n {\n name: \"Overview\",\n eventKey: \"overview\",\n Component: OverviewTab,\n },\n {\n name: \"Workplace Culture Issues\",\n eventKey: \"workplaceCultureIssues\",\n Component: WorkplaceCultureIssuesTab,\n },\n {\n name: \"Harassment and Bullying Behaviour\",\n eventKey: \"harassmentAndBullyingBehaviour\",\n Component: HarassementAndBullyingBehaviourTab,\n },\n {\n name: \"Reports\",\n eventKey: \"reports\",\n Component: ReportsTab,\n },\n];\n\nconst allDatesRange = {\n startDate: \"1960-01-01\",\n endDate: \"2100-01-01\",\n};\n\nexport default function Dashboard() {\n const [respondentCount, setRespondentCount] = useState(0);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n {TABS.map(({ Component, eventKey }) => {\n return (\n \n
\n {\n setRespondentCount(newCount);\n }}\n />\n
\n \n );\n })}\n
\n \n
\n
\n );\n}\n","import { forms } from \"line3_shared/constants/forms\";\nimport React, { useEffect } from \"react\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\nimport Doughnut2 from \"../../../../charts/Doughnut2\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport Loader from \"../../../../Loader\";\nimport Spacer from \"../../../../Spacer\";\n\nexport default function OverviewTab({ updateRespondentCounter }) {\n const { loading, data } = useGetDataFromQuery({\n formId: forms.shortenedForm,\n questionId: \"81iLlOKLMEr2\",\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, data]);\n\n if (loading) return ;\n\n // TODO: remove \"None of the Above\" from the top one\n return (\n
\n \n \n \n \n
\n \n \n
\n
\n );\n}\n","import { forms } from \"line3_shared/constants/forms\";\nimport { FilterType } from \"line3_shared/types/FilterType\";\nimport React, { useEffect } from \"react\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\nimport Doughnut2 from \"../../../../charts/Doughnut2\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport Loader from \"../../../../Loader\";\nimport Spacer from \"../../../../Spacer\";\n\nexport default function WorkplaceCultureIssuesTab({ updateRespondentCounter }) {\n const workplaceCultureIssuesFilter: FilterType = {\n or: [{ questionId: \"81iLlOKLMEr2\", answerId: \"flvYqsoERsWb\" }],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.shortenedForm,\n questionId: \"81iLlOKLMEr2\",\n filter: workplaceCultureIssuesFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, data]);\n\n if (loading) return ;\n\n return (\n
\n \n \n \n \n \n \n
\n \n \n
\n
\n );\n}\n","import { forms } from \"line3_shared/constants/forms\";\nimport { FilterType } from \"line3_shared/types/FilterType\";\nimport React, { useEffect } from \"react\";\nimport { concernsColorPalette } from \"../../../../../constants/colors\";\nimport useGetDataFromQuery from \"../../../../../hooks/useGetDataFromQuery\";\nimport Doughnut2 from \"../../../../charts/Doughnut2\";\nimport HorizontalBar2 from \"../../../../charts/HorizontalBar2\";\nimport Loader from \"../../../../Loader\";\nimport Spacer from \"../../../../Spacer\";\n\nexport default function HarassementAndBullyingBehaviourTab({\n updateRespondentCounter,\n}) {\n const harassmentAndBullyingBehaviourFilter: FilterType = {\n or: [{ questionId: \"81iLlOKLMEr2\", answerId: \"zHhUu9szwaqS\" }],\n };\n\n const { loading, data } = useGetDataFromQuery({\n formId: forms.shortenedForm,\n questionId: \"81iLlOKLMEr2\",\n filter: harassmentAndBullyingBehaviourFilter,\n });\n\n useEffect(() => {\n if (data) {\n updateRespondentCounter(data.total);\n }\n }, [updateRespondentCounter, data]);\n\n if (loading) return ;\n\n return (\n
\n \n \n \n \n \n \n
\n \n \n
\n
\n );\n}\n","import { forms } from \"line3_shared/constants/forms\";\nimport React, { useContext, useEffect, useState } from \"react\";\nimport { RawAnswersQueryType } from \"../../../../../../../line3_shared/types/RawAnswersQueryType\";\nimport DateRangeContext from \"../../../../../contexts/DateRangeContext\";\nimport convertJSDateStringToISODateFormat from \"../../../../../helpers/convertJSDateStringToISODateFormat\";\nimport sortFunctionTreatingArraysAsStrings from \"../../../../../helpers/sortFunctionTreatingArraysAsStrings\";\nimport Loader from \"../../../../Loader\";\nimport \"./Table.css\";\nimport DataTable from \"react-data-table-component\";\n\nexport default function ReportsTab({ updateRespondentCounter }) {\n const [loading, setLoading] = useState(false);\n const [answers, setAnswers] = useState([]);\n const { dateRange } = useContext(DateRangeContext);\n\n const query: RawAnswersQueryType = {\n formId: forms.shortenedForm,\n questions: [\n {\n key: \"writtenStatement\",\n questionId: \"OUJYWFU6MNfE\",\n },\n {\n key: \"suggestedSolution\",\n questionId: \"Wc2h5qJxk4Q8\",\n },\n {\n key: \"reasonsForRemainingAnonymous\",\n questionId: \"Mr0HvqTgFub9\",\n },\n {\n key: \"email\",\n questionId: \"20GSftDVFWMx\",\n },\n {\n key: \"recurence\",\n questionId: \"PpHsLIrUFKq3\",\n },\n {\n key: \"occurredAt_1\", // This question is an OR with the one below, parsed on the frontend (easier that way)\n questionId: \"uEzitB850VwR\",\n },\n {\n key: \"occurredAt_2\",\n questionId: \"5934BsDIK8IO\",\n },\n {\n key: \"reportedToManagementAt_1\", // This question is an OR with the one below, parsed on the frontend (easier that way)\n questionId: \"DWkpb35Fo43S\",\n },\n {\n key: \"reportedToManagementAt_2\",\n questionId: \"ilEmcqYOJOhZ\",\n },\n {\n key: \"transgressor\",\n questionId: \"7kKrhvt40hRq\",\n },\n {\n key: \"issue\",\n questionId: \"81iLlOKLMEr2\",\n },\n ],\n };\n useEffect(() => {\n async function requestData() {\n setLoading(true);\n const body = {\n dateRange,\n query,\n };\n const res = await fetch(`/api/answers`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n const results = await res.json();\n const finalAnswers = results.map((answer) => ({\n ...answer,\n submittedAt: convertJSDateStringToISODateFormat(answer.submittedAt),\n occurredAt: convertJSDateStringToISODateFormat(answer.occurredAt_1 || answer.occurredAt_2),\n reportedToManagementAt:\n convertJSDateStringToISODateFormat(answer.reportedToManagementAt_1 || answer.reportedToManagementAt_2),\n }));\n setAnswers(finalAnswers);\n updateRespondentCounter(results.length);\n setLoading(false);\n }\n requestData();\n }, [dateRange]); // eslint-disable-line react-hooks/exhaustive-deps\n\n const columns = React.useMemo(\n () => [\n {\n name: \"Date Submitted\",\n selector: (row) => row.submittedAt,\n sortable: true,\n wrap: true,\n minWidth: '150px',\n },\n {\n name: \"Written Statement\",\n selector: (row) =>
{row.writtenStatement}
,\n sortable: false,\n wrap: true,\n minWidth: '250px',\n },\n {\n name: \"Suggested Solution\",\n selector: (row) => row.suggestedSolution,\n sortable: false,\n wrap: true,\n minWidth: '200px',\n },\n {\n name: \"Reasons for Remaining Anonymous\",\n selector: (row) => row.reasonsForRemainingAnonymous,\n sortable: false,\n wrap: true,\n minWidth: '250px',\n },\n {\n name: \"Email Address\",\n selector: (row) => row.email,\n sortable: true,\n wrap: true,\n minWidth: '200px',\n },\n {\n name: \"One-time or Ongoing\",\n selector: (row) => row.recurence,\n sortable: true,\n wrap: true,\n minWidth: '200px',\n },\n {\n name: \"Date of Occurrence\",\n selector: (row) => row.occurredAt || '',\n sortable: true,\n wrap: true,\n minWidth: '180px',\n },\n {\n name: \"Date Reported to Management\",\n selector: (row) => row.reportedToManagementAt || '',\n sortable: true,\n wrap: true,\n minWidth: '230px',\n },\n {\n name: \"Transgressor\",\n selector: (row) =>
{row.transgressor.map(x =>

{x}

)}
,\n sortable: true,\n sortFunction: (a,b) => sortFunctionTreatingArraysAsStrings(a.transgressor,b.transgressor),\n wrap: true,\n minWidth: '150px',\n },\n {\n name: \"Issue\",\n selector: (row) =>
{row.issue.map(x =>

{x}

)}
,\n sortable: true,\n sortFunction: (a,b) => sortFunctionTreatingArraysAsStrings(a.issue, b.issue),\n wrap: true,\n minWidth: '150px',\n },\n ],\n []\n );\n\n return (\n
\n }\n noHeader\n striped\n />\n
\n );\n}\n","import { forms } from \"line3_shared/constants/forms\";\nimport React, { useContext } from \"react\";\nimport OrganizationContext from \"../../../../contexts/OrganizationContext\";\nimport Loader from \"../../../Loader\";\nimport ConcernsDashboard from \"./concerns/Dashboard\";\nimport CoreModuleDashboard from \"./coreModule/Dashboard\";\nimport Covid19Dashboard from \"./covid19/Dashboard\";\nimport Covid19BuildingUpDashboard from \"./covid19BuildingUp/Dashboard\";\nimport ShortenedFormDashboard from \"./shortenedForm/Dashboard\";\n\nexport default function DashboardSelector() {\n const { activeFormId } = useContext(OrganizationContext);\n\n if (!activeFormId) {\n return ;\n } else {\n if (activeFormId === forms.covid19) {\n return ;\n } else if (activeFormId === forms.covid19BuildingUp) {\n return ;\n } else if (activeFormId === forms.coreModule) {\n return ;\n } else if (activeFormId === forms.concerns) {\n return ;\n } else if (activeFormId === forms.shortenedForm) {\n return ;\n }\n }\n}\n","import React, { useState, useEffect } from \"react\";\nimport { Link, useHistory } from \"react-router-dom\";\nimport { Card, Spinner } from \"react-bootstrap\";\n\nexport default function Organizations() {\n const history = useHistory();\n const [loading, setLoading] = useState(false);\n const [errors, setErrors] = useState([]);\n const [organizations, setOrganizations] = useState([]);\n\n useEffect(() => {\n setLoading(true);\n fetch(\"/api/organizations\").then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setOrganizations(json.organizations);\n });\n } else {\n if (response.status === 401) {\n history.push(\"/app/login\");\n } else {\n response.json().then((json) => {\n setErrors([\"Something went wrong.\"]);\n });\n }\n }\n setLoading(false);\n });\n }, [history]);\n\n if (loading) return ;\n\n if (organizations.length === 0) {\n return

No organizations found

;\n }\n\n return organizations.map((org) => {\n return (\n \n \n {org.name}\n \n {errors.map((err) => (\n

{err}

\n ))}\n
\n );\n });\n}\n","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button, Form, Col, Alert } from \"react-bootstrap\";\nimport Card from \"react-bootstrap/Card\";\nimport Row from \"react-bootstrap/Row\";\n\nexport default function AddOrganization() {\n let history = useHistory();\n const [errors, setErrors] = useState([]);\n const [successMessage, setSuccessMessage] = useState(\"\");\n\n function createOrganization(event) {\n setErrors([]);\n setSuccessMessage(\"\");\n\n event.preventDefault();\n\n const formInputs = event.target.elements;\n const body = {\n name: formInputs.formOrganizationName.value,\n password: formInputs.formOrganizationPassword.value,\n };\n\n fetch(\"/api/organizations\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setSuccessMessage(json.message);\n });\n } else {\n if (response.status === 401) {\n setErrors([\"You do not have permission to perform that action\"]);\n setTimeout(() => {\n history.push(\"/app/login\");\n }, 3000);\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n });\n }\n }\n })\n .catch((err) => {\n setErrors([\"Something went wrong. Please try again.\"]);\n });\n }\n\n return (\n \n Add a new Organization\n \n
\n
\n \n \n Organization Name\n \n \n \n \n \n\n \n \n Survey Password\n \n \n \n \n \n\n \n
\n
\n
\n {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n {successMessage.length > 0 && (\n {successMessage}\n )}\n
\n
\n
\n );\n}\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button, Form, Col, Alert, Card, Row, Spinner } from \"react-bootstrap\";\n\nconst AddUser = () => {\n const history = useHistory();\n const [errors, setErrors] = useState([]);\n const [successMessage, setSuccessMessage] = useState(\"\");\n const [organizations, setOrganizations] = useState([]);\n\n useEffect(() => {\n fetch(\"/api/organizations\").then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setOrganizations(json.organizations);\n });\n } else {\n if (response.status === 401) {\n history.push(\"/app/login\");\n } else {\n response.json().then((json) => {\n setErrors([\"Something went wrong.\"]);\n });\n }\n }\n });\n }, [history]);\n\n function createUser(event) {\n setErrors([]);\n setSuccessMessage(\"\");\n\n event.preventDefault();\n\n const formInputs = event.target.elements;\n const body = {\n email: formInputs.formUserEmail.value,\n password: formInputs.formUserPassword.value,\n passwordConfirmation: formInputs.formUserPasswordConfirmation.value,\n organizationId: formInputs.formUserOrganization.value,\n };\n\n if (body.password !== body.passwordConfirmation) {\n setErrors([\"Passwords did not match\"]);\n return;\n }\n\n fetch(\"/api/signup\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setSuccessMessage(json.message);\n });\n } else {\n if (response.status === 401) {\n history.push(\"/app/login\");\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n });\n }\n }\n })\n .catch((err) => {\n setErrors([\"User creation failed. Please try again.\"]);\n });\n }\n\n if (organizations.length === 0) {\n return ;\n }\n\n return (\n \n Add a new User\n \n
\n
\n \n \n User Email\n \n \n \n \n \n\n \n \n User Password\n \n \n \n \n \n\n \n \n Confirm Password\n \n \n \n \n \n\n \n \n User Organization\n \n \n \n {organizations.map((org) => {\n return ;\n })}\n \n \n \n\n \n
\n
\n
\n {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n {successMessage.length > 0 && (\n {successMessage}\n )}\n
\n
\n
\n );\n};\n\nexport default AddUser;\n","export const SOURCE_TYPE = {\n EMPLOYER: \"Employer\",\n RESPONDENT: \"Respondent\",\n};\n","import React, { useState, useEffect } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Spinner from \"react-bootstrap/Spinner\";\nimport Table from \"react-bootstrap/Table\";\nimport Alert from \"react-bootstrap/Alert\";\nimport Spacer from \"../../../Spacer\";\nimport { SOURCE_TYPE } from \"../../../../constants/leads\";\nimport { colors } from \"../../../../constants/colors\";\n\nexport default function ViewLeads() {\n const history = useHistory();\n const [loading, setLoading] = useState(false);\n const [errors, setErrors] = useState([]);\n const [leads, setLeads] = useState([]);\n\n useEffect(() => {\n setLoading(true);\n fetch(\"/api/leads\").then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setLeads(json.leads);\n });\n } else {\n if (response.status === 401) {\n history.push(\"/app/login\");\n } else {\n response.json().then((json) => {\n setErrors([\"Something went wrong. Reload and try again\"]);\n });\n }\n }\n setLoading(false);\n });\n }, [history]);\n\n if (errors.length !== 0) {\n console.log(\"There is an error.\");\n return (\n
\n {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n
\n );\n }\n\n if (loading) {\n return (\n
\n \n
\n );\n }\n\n if (leads.length === 0) {\n return

No leads yet!

;\n }\n\n const employerLeads = leads\n .filter((lead) => {\n return lead.sourceType === SOURCE_TYPE.EMPLOYER;\n })\n .reverse(); // most recent first\n const respondentLeads = leads\n .filter((lead) => {\n return lead.sourceType !== SOURCE_TYPE.EMPLOYER;\n })\n .reverse(); // most recent first\n\n return (\n
\n \n \n \n \n
\n );\n}\n\nfunction EmployerLeadsTable({ leads }) {\n return (\n <>\n

Employer Leads

\n \n {leads.length === 0 ? (\n \"No employer leads yet.\"\n ) : (\n \n \n \n \n \n \n \n \n \n \n \n \n \n {leads.map((lead, index) => {\n return (\n \n \n \n \n \n \n \n \n \n );\n })}\n \n
NameEmailCompanyJobLocationInterestTime
{lead.name}{lead.email}{lead.company}{lead.job}\n {lead.city ? `${lead.city}, ${lead.country || \"N/A\"}` : \"\"}\n {lead.interestedIn.join(\"; \")}{new Date(lead.createdAt).toString().slice(4, 24)}
\n )}\n \n );\n}\n\nfunction RespondentLeadsTable({ leads }) {\n return (\n <>\n

Respondent Leads

\n \n {leads.length === 0 ? (\n \"No respondent leads yet.\"\n ) : (\n \n \n \n \n \n \n \n \n \n \n \n {leads.map((lead, index) => {\n return (\n \n \n \n \n \n \n \n );\n })}\n \n
CompanyContact PersonCompany EmailLocationTime
{lead.name}{lead.email}{lead.company}\n {lead.city ? `${lead.city}, ${lead.country || \"N/A\"}` : \"\"}\n {new Date(lead.createdAt).toString().slice(4, 24)}
\n )}\n \n );\n}\n","import React from \"react\";\nimport { Tab } from \"react-bootstrap\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport Nav from \"react-bootstrap/Nav\";\nimport Container from \"react-bootstrap/Container\";\nimport Organizations from \"./Organizations\";\nimport AddOrganization from \"./AddOrganization\";\nimport AddUser from \"./AddUser\";\nimport ViewLeads from \"./ViewLeads\";\nimport TabContainer from \"../../../TabContainer\";\n\nexport default function Settings() {\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","import React from \"react\";\n\nexport default function Checkbox({ checked, onChange, text }) {\n return (\n
\n \n {text &&

{text}

}\n
\n );\n}\n","import React, { useEffect, useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { useParams } from \"react-router-dom\";\nimport Container from \"react-bootstrap/Container\";\nimport Spinner from \"react-bootstrap/Spinner\";\nimport Card from \"react-bootstrap/Card\";\nimport { FORM_NAMES } from \"line3_shared/constants/forms\";\nimport Button from \"react-bootstrap/Button\";\nimport isEqual from \"lodash.isequal\";\nimport Checkbox from \"../../../Checkbox\";\n\nconst defaultOrgFormIds = FORM_NAMES.reduce((hsh, form) => {\n return { ...hsh, [form.id]: false };\n}, {});\n\nexport default function OrganizationPage(props) {\n const { orgId } = useParams();\n let history = useHistory();\n const [loading, setLoading] = useState(false);\n const [organization, setOrganization] = useState({});\n const [errors, setErrors] = useState([]);\n const [orgFormIds, setOrgFormIds] = useState(defaultOrgFormIds);\n const [formIdSetResponse, setFormIdSetResponse] = useState(null);\n\n useEffect(() => {\n setLoading(true);\n fetch(`/api/organizations/${orgId}`).then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setOrganization(json);\n const initialFormIds = json.formIds;\n const fetchedOrgFormIds = { ...orgFormIds };\n for (const formId of initialFormIds) {\n fetchedOrgFormIds[formId] = true;\n }\n setOrgFormIds(fetchedOrgFormIds);\n });\n } else {\n if (response.status === 401) {\n history.push(\"/app/login\");\n } else {\n response.json().then((json) => {\n setErrors([\"Something went wrong.\"]);\n });\n }\n }\n setLoading(false);\n });\n }, [history]); // eslint-disable-line react-hooks/exhaustive-deps\n\n if (loading) return ;\n\n function toggleForm(formId) {\n setOrgFormIds({ ...orgFormIds, [formId]: !orgFormIds[formId] });\n }\n\n function saveOrgFormIds() {\n fetch(\"/api/organizationEdit\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify({ orgId, data: { orgFormIds } }),\n })\n .then((response) => {\n if (response.ok) {\n setFormIdSetResponse(\"Success\");\n setTimeout(() => {\n setFormIdSetResponse(null);\n }, 1500);\n } else {\n if (response.status === 401) {\n history.push(\"/app/login\");\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n });\n }\n }\n })\n .catch((err) => {\n setErrors([\"User creation failed. Please try again.\"]);\n });\n }\n\n return (\n \n

{organization.name}

\n

\n Password for respondents: {organization.password}\n

\n \n Forms this organization has access to:\n \n {FORM_NAMES.map((form) => {\n const belongs = orgFormIds[form.id];\n return (\n toggleForm(form.id)}\n text={form.name}\n />\n );\n })}\n \n \n \n Save\n \n {formIdSetResponse && (\n

{formIdSetResponse}

\n )}\n
\n
\n {errors.map((err) => (\n

{err}

\n ))}\n
\n );\n}\n","import React, { useContext } from \"react\";\nimport NavDropdown from \"react-bootstrap/NavDropdown\";\nimport OrganizationContext from \"../../../contexts/OrganizationContext\";\nimport { FORM_NAMES } from \"line3_shared/constants/forms\";\nimport './FormChooserDropdown.css';\n\nexport default function FormChooserDropdown() {\n const { activeFormId, setActiveFormId, availableFormIds = [] } = useContext(\n OrganizationContext\n );\n\n const options = availableFormIds.map((formId) => {\n return {\n label: FORM_NAMES.find((f) => f.id === formId).name,\n id: formId,\n };\n });\n const activeFormLabel =\n options.length > 0 && activeFormId\n ? options.find((f) => f.id === activeFormId).label\n : \"\";\n\n return (\n {\n setActiveFormId(formId);\n }}\n className='formChooserDropdown'\n >\n {options.map((form) => (\n \n {form.label}\n \n ))}\n \n );\n}\n","import React, { useContext } from \"react\";\nimport { Navbar, Nav } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport {\n AiOutlineHome,\n AiOutlineLogout,\n AiOutlineSetting,\n} from \"react-icons/ai\";\nimport Cookies from \"js-cookie\";\nimport { colors } from \"../../../constants/colors\";\nimport FormChooserDropdown from \"./FormChooserDropdown\";\nimport OrganizationContext from \"../../../contexts/OrganizationContext\";\n\nexport default function AdminPortalNavbar() {\n const { orgName } = useContext(OrganizationContext);\n\n function isSuperUser() {\n return Boolean(Cookies.get(\"su\"));\n }\n\n return (\n \n \n

Canary

\n
\n
\n \n \n
\n\n \n
\n );\n}\n","import { useState } from \"react\";\n\nconst allDatesRange = {\n startDate: new Date(\"1960-01-01\"),\n endDate: new Date(\"2100-01-01\"),\n};\n\nexport default function useDateRangeContext() {\n const [dateRange, setDateRange] = useState({\n startDate: allDatesRange.startDate,\n endDate: allDatesRange.endDate,\n key: \"selection\",\n });\n\n return {\n dateRange,\n setDateRange,\n };\n}\n","import React from \"react\";\nimport { Route, Switch } from \"react-router-dom\";\nimport PrivateRoute from \"../../PrivateRoute\";\nimport DashboardSelector from \"./reports/DashboardSelector\";\nimport Settings from \"./superUser/Settings\";\nimport OrganizationPage from \"./superUser/OrganizationPage\";\nimport NotFound from \"../NotFound\";\nimport AdminPortalNavbar from \"./AdminPortalNavbar\";\nimport OrganizationContext from \"../../../contexts/OrganizationContext\";\nimport DateRangeContext from \"../../../contexts/DateRangeContext\";\nimport { useOrganizationContextData } from \"../../../hooks/useOrganizationContextData\";\nimport useDateRangeContext from \"../../../hooks/useDateRangeContext\";\n\nexport default function AdminPanel() {\n const organizationContextData = useOrganizationContextData();\n const dateRangeContextData = useDateRangeContext();\n return (\n
\n \n \n
\n \n \n \n \n \n \n \n \n
\n
\n
\n );\n}\n","import React from \"react\";\nimport { Image } from \"react-bootstrap\";\nimport colorLogoWithText from \"../static/canary-logo-full@3x.png\";\nimport colorLogoWithoutText from \"../static/canary-1@3x.png\";\n\nexport default function Logo({ xs, sm, md, lg, size, includeText, className }) {\n let logoHeight = size || 75;\n if (xs) {\n logoHeight = 35;\n }\n if (sm) {\n logoHeight = 75;\n }\n if (md) {\n logoHeight = 100;\n }\n if (lg) {\n logoHeight = 160;\n }\n\n const logoWidth = includeText ? logoHeight * 2.75 : logoHeight;\n const logoImage = includeText ? colorLogoWithText : colorLogoWithoutText;\n\n return (\n \n \n
\n );\n}\n","import {useEffect, useState} from \"react\";\n\nexport default function useWindowWidth() {\n const [windowWidth, setWindowWidth] = useState(0);\n const [windowHeight, setWindowHeight] = useState(0);\n\n useEffect(() => {\n updateDimensions();\n window.addEventListener(\"resize\", updateDimensions);\n return () => {\n window.removeEventListener(\"resize\", updateDimensions);\n };\n });\n\n function updateDimensions() {\n let windowWidth = typeof window !== \"undefined\" ? window.innerWidth : 0;\n let windowHeight = typeof window !== \"undefined\" ? window.innerHeight : 0;\n setWindowWidth(windowWidth);\n setWindowHeight(windowHeight);\n }\n\n return { windowWidth, windowHeight, isMobile: windowWidth < 500 }\n}\n","import React from \"react\";\nimport { Link } from \"react-router-dom\";\nimport { AiOutlineLogin } from \"react-icons/ai\";\nimport Button from \"react-bootstrap/Button\";\nimport \"./HomeHeader.scss\";\nimport useWindowWidth from \"../../hooks/useWindowWidth\";\nimport cx from \"classnames\";\nimport useScrollPosition from \"@react-hook/window-scroll\";\nimport Logo from \"../Logo\";\n\nexport default function HomeHeader() {\n const scrollY = useScrollPosition(60 /*frames per second*/);\n const opacity = Math.max(0, scrollY - 25) / 300;\n const fullInfo = opacity > 1;\n\n const { isMobile } = useWindowWidth();\n\n return (\n \n {fullInfo && !isMobile && (\n
\n
\n \n
\n
\n )}\n {fullInfo && (\n
\n \n \n \n
\n )}\n\n
\n \n

Login

\n \n \n
\n
\n );\n}\n","import React from \"react\";\nimport Container from \"react-bootstrap/Container\";\nimport Button from \"react-bootstrap/Button\";\nimport Logo from \"../Logo\";\nimport { Link } from \"react-router-dom\";\nimport Spacer from \"../Spacer\";\nimport { colors } from \"../../constants/colors\";\nimport HomeHeader from \"./HomeHeader\";\nimport \"./Home.scss\";\n\nexport default function Home() {\n return (\n
\n \n \n
\n \n \n\n \n \n \n\n \n

Employer Login

\n \n\n

\n This is a legacy version of Canary. Check out the newest version{\" \"}\n here.\n

\n
\n
\n
\n );\n}\n","import React from \"react\";\nimport { Link, useRouteMatch } from \"react-router-dom\";\nimport Logo from \"./Logo\";\nimport useWindowWidth from \"../hooks/useWindowWidth\";\nimport { colors } from \"../constants/colors\";\nimport \"./Footer.scss\";\n\nexport default function Footer() {\n const isHomePage = useRouteMatch({\n path: \"/\",\n exact: true,\n strict: true,\n sensitive: true,\n });\n\n const isReportPage = useRouteMatch({\n path: \"/org/:orgId/report\",\n strict: true,\n sensitive: true,\n });\n\n const isDashboardPage = useRouteMatch({\n path: \"/app\",\n exact: true,\n strict: true,\n sensitive: true,\n });\n\n const { isMobile } = useWindowWidth();\n\n if (isHomePage || isReportPage || isDashboardPage || isMobile) {\n return null;\n }\n\n return (\n \n
\n \n

info@canary.report

\n
\n
\n \n

Terms of Service

\n \n \n

Privacy Policy

\n \n {/**/}\n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport { Button, Form, Container, Col, Alert } from \"react-bootstrap\";\nimport BackArrow from \"../BackArrow\";\nimport useWindowWidth from \"../../hooks/useWindowWidth\";\nimport { colors } from \"../../constants/colors\";\nimport Logo from \"../Logo\";\nimport \"../FormField.scss\";\n\nexport default function RespondentLogin() {\n let history = useHistory();\n const [errors, setErrors] = useState([]);\n const { isMobile } = useWindowWidth();\n\n function submitForm(event) {\n event.preventDefault();\n\n const formInputs = event.target.elements;\n const body = {\n password: formInputs.formPassword.value,\n };\n\n fetch(\"/api/organizationLogin\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n history.push(`/org/${json.orgId}`);\n });\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n setTimeout(() => {\n setErrors([]);\n }, 3000);\n });\n }\n })\n .catch((err) => {\n setErrors([\"Invalid password. Please try again.\"]);\n setTimeout(() => {\n setErrors([]);\n }, 3000);\n });\n }\n\n return (\n
\n \n \n \n\n
\n
\n \n \n \n\n
\n \n
\n

\n Look for the password in your company's policies or search for\n \"Canary\" in your work email.\n

\n
\n
\n
\n {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n
\n \n
\n
\n );\n}\n","// Organization IDs\nexport const DRAKE_HOTEL_PROPERTIES_ORG_ID = \"60ec9aed27d5a70c61b79e52\";\nexport const CHICKEN_FARMERS_OF_ONTARIO_ORG_ID = \"609a997409319a3a70ee2052\";\nexport const VLAD_LOCAL_TEST_COMPANY_ORG_ID = \"5ec1a5d87130403bc433ed85\";\n","import React, { useState } from \"react\";\nimport Container from \"react-bootstrap/Container\";\nimport Button from \"react-bootstrap/Button\";\nimport { Col } from \"react-bootstrap\";\nimport { Link, useParams } from \"react-router-dom\";\nimport BackArrow from \"../../BackArrow\";\nimport Spacer from \"../../Spacer\";\nimport { colors } from \"../../../constants/colors\";\nimport {\n CHICKEN_FARMERS_OF_ONTARIO_ORG_ID,\n DRAKE_HOTEL_PROPERTIES_ORG_ID,\n VLAD_LOCAL_TEST_COMPANY_ORG_ID,\n} from \"../../../constants/organizations\";\n\nconst canaryCoachFeatureEnabledMap = {\n [DRAKE_HOTEL_PROPERTIES_ORG_ID]: true,\n [VLAD_LOCAL_TEST_COMPANY_ORG_ID]: true,\n [CHICKEN_FARMERS_OF_ONTARIO_ORG_ID]: false,\n};\n\nexport default function OrganizationHome() {\n const [showExplanation, setShowExplanation] = useState(false);\n const { orgId } = useParams();\n\n const canaryCoachFeatureEnabled = canaryCoachFeatureEnabledMap[orgId];\n\n return (\n
\n \n \n \n \n \n \n \n \n Call a Canary Coach\n \n \n \n setShowExplanation(!showExplanation)}\n >\n How is this anonymous?\n \n
\n {showExplanation && (\n <>\n

\n Your report will be anonymous. Remember, you are using the\n same password as every other member of your organization, so\n no one will know that you created this report.\n

\n

\n If you are concerned about Canary having access to your IP\n address, click{\" \"}\n \n here\n {\" \"}\n to install a tool to mask it.\n

\n \n )}\n
\n \n
\n
\n );\n}\n","import React from \"react\";\nimport { useParams } from \"react-router-dom\";\n\nexport default function OrganizationReport() {\n const { orgId, formId } = useParams();\n const markup = {\n __html: ` Canary Report `,\n };\n return
;\n}\n","import React, { useEffect, useState } from \"react\";\nimport Container from \"react-bootstrap/Container\";\nimport Col from \"react-bootstrap/Col\";\nimport Button from \"react-bootstrap/Button\";\nimport { Link, useParams, useHistory } from \"react-router-dom\";\nimport BackArrow from \"../../BackArrow\";\nimport { FORM_NAMES } from \"line3_shared/constants/forms\";\nimport { colors } from \"../../../constants/colors\";\n\nexport default function OrganizationChooseReport() {\n const history = useHistory();\n const { orgId } = useParams();\n const [enabledForms, setEnabledForms] = useState([]);\n const [error, setError] = useState(null);\n\n useEffect(() => {\n fetch(`/api/public/organizations/${orgId}`).then((response) => {\n if (response.ok) {\n response.json().then(({ formIds }) => {\n if (formIds.length === 1) {\n history.replace(`/org/${orgId}/report/${formIds[0]}`);\n } else {\n setEnabledForms(formIds);\n }\n });\n } else {\n response.json().then((json) => {\n setError(\"Something went wrong. Please try again later!\");\n });\n }\n });\n }, []); // eslint-disable-line react-hooks/exhaustive-deps\n\n return (\n
\n \n \n \n {error &&

{error}

}\n {enabledForms.map((formId) => {\n return (\n \n \n \n );\n })}\n \n \n \n \n
\n
\n );\n}\n","import React, { useState } from \"react\";\nimport { useHistory } from \"react-router-dom\";\nimport Form from \"react-bootstrap/Form\";\nimport Button from \"react-bootstrap/Button\";\nimport Alert from \"react-bootstrap/Alert\";\nimport Col from \"react-bootstrap/Col\";\nimport Row from \"react-bootstrap/Row\";\nimport Spacer from \"../Spacer\";\nimport { SOURCE_TYPE } from \"../../constants/leads\";\nimport Image from \"react-bootstrap/Image\";\nimport laptopLady from \"../../static/laptop-lady-facing-right.png\";\nimport \"../FormField.scss\";\nimport useWindowWidth from \"../../hooks/useWindowWidth\";\n\nconst learnMoreOptions = [\"Pricing\", \"How Canary works\", \"Booking a Demo\"];\n\nconst defaultLearnMoreOptionsChecked = learnMoreOptions.reduce((acc, item) => {\n return { ...acc, [item]: false };\n}, {});\n\nexport default function LeadsFormForEmployers() {\n const { isMobile } = useWindowWidth();\n const history = useHistory();\n const [errors, setErrors] = useState([]);\n const [learnMoreOptionsChecked, setLearnMoreOptionsChecked] = useState(\n defaultLearnMoreOptionsChecked\n );\n\n function onSelectedOptionsChange(event) {\n setLearnMoreOptionsChecked({\n ...learnMoreOptionsChecked,\n [event.target.name]: event.target.checked,\n });\n }\n\n function submitForm(event) {\n setErrors([]);\n\n event.preventDefault();\n\n const userInterestedIn = [];\n for (let key in learnMoreOptionsChecked) {\n if (learnMoreOptionsChecked[key]) {\n userInterestedIn.push(key);\n }\n }\n\n const formInputs = event.target.elements;\n\n const body = {\n name: formInputs.formBasicName.value,\n email: formInputs.formBasicEmail.value,\n job: formInputs.formBasicJob.value,\n company: formInputs.formBasicCompany.value,\n city: formInputs.formBasicCity.value,\n country: formInputs.formBasicCountry.value,\n interestedIn: userInterestedIn,\n sourceType: SOURCE_TYPE.EMPLOYER,\n };\n\n if (!body.email) {\n setErrors([\"Email cannot be blank\"]);\n return;\n }\n\n fetch(\"/api/leads\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n history.push(\"interestedEmployerAdditionalInfo\");\n });\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n });\n }\n })\n .catch((err) => {\n setErrors([\"Something went wrong. Please try again.\"]);\n });\n }\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
\n {!isMobile && (\n \n )}\n
\n

What would you like to learn more about?

\n {learnMoreOptions.map((option, index) => {\n return (\n \n );\n })}\n
\n
\n \n \n
\n
\n
\n {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n
\n
\n );\n}\n","import React from \"react\";\nimport Container from \"react-bootstrap/Container\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport LeadsFormForEmployers from \"./LeadsFormForEmployers\";\nimport Spacer from \"../Spacer\";\nimport BackArrow from \"../BackArrow\";\nimport { colors } from \"../../constants/colors\";\nimport Logo from \"../Logo\";\n\nfunction InterestedEmployer() {\n return (\n
\n \n \n \n \n \n Awesome! Please tell us about yourself and your company and we will\n get in touch:\n \n \n \n \n \n \n \n
\n );\n}\n\nexport default InterestedEmployer;\n","import React, { useState } from \"react\";\nimport Form from \"react-bootstrap/Form\";\nimport Button from \"react-bootstrap/Button\";\nimport Alert from \"react-bootstrap/Alert\";\nimport Row from \"react-bootstrap/Row\";\nimport Spacer from \"../Spacer\";\nimport { SOURCE_TYPE } from \"../../constants/leads\";\nimport \"../FormField.scss\";\n\n// const learnMoreOptions = [\"Pricing\", \"How Canary works\", \"Booking a Demo\"];\n\nexport default function LeadsFormForRespondents() {\n const [errors, setErrors] = useState([]);\n const [successMessage, setSuccessMessage] = useState(\"\");\n\n function submitForm(event) {\n setErrors([]);\n setSuccessMessage(\"\");\n\n event.preventDefault();\n\n const formInputs = event.target.elements;\n\n const body = {\n company: formInputs.formBasicCompany.value,\n name: formInputs.formBasicName.value,\n email: formInputs.formBasicEmail.value,\n city: formInputs.formBasicCity.value,\n country: formInputs.formBasicCountry.value,\n sourceType: SOURCE_TYPE.RESPONDENT,\n };\n\n if (!body.email) {\n setErrors([\"Company email address cannot be blank\"]);\n return;\n } else if (!body.company) {\n setErrors([\"Company name cannot be blank\"]);\n return;\n }\n\n fetch(\"/api/leads\", {\n method: \"POST\",\n headers: {\n \"Content-Type\": \"application/json\",\n },\n body: JSON.stringify(body),\n })\n .then((response) => {\n if (response.ok) {\n response.json().then((json) => {\n setSuccessMessage(\"Thank you for providing your company details.\");\n });\n } else {\n response.json().then((json) => {\n setErrors([json.message]);\n });\n }\n })\n .catch((err) => {\n setErrors([\"Something went wrong. Please try again.\"]);\n });\n }\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 {errors.length > 0 &&\n errors.map((error, index) => {\n return (\n \n {error}\n \n );\n })}\n {successMessage.length > 0 && (\n {successMessage}\n )}\n
\n
\n );\n}\n","import React from \"react\";\nimport Container from \"react-bootstrap/Container\";\nimport Row from \"react-bootstrap/Row\";\nimport Col from \"react-bootstrap/Col\";\nimport LeadsFormForRespondents from \"./LeadsFormForRespondents\";\nimport Spacer from \"../Spacer\";\nimport BackArrow from \"../BackArrow\";\nimport { colors } from \"../../constants/colors\";\nimport Logo from \"../Logo\";\n\nfunction InterestedRespondent() {\n return (\n
\n \n \n \n \n Please tell us about your company:\n \n \n \n \n \n \n
\n );\n}\n\nexport default InterestedRespondent;\n","import React from \"react\";\n\nexport default function FreeWorkplaceSurvey() {\n const freeWorkplaceSurveyFormId = \"YXoH7UI5\";\n const markup = {\n __html: ` Canary Report `,\n };\n return
;\n}\n","import React from \"react\";\nimport Container from \"react-bootstrap/Container\";\nimport Row from \"react-bootstrap/Row\";\nimport BackArrow from \"../BackArrow\";\nimport { colors } from \"../../constants/colors\";\nimport Logo from \"../Logo\";\nimport { Button } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\n\nexport default function InterestedEmployerAdditionalInfo() {\n return (\n
\n \n \n \n \n Would you like to tell us (anonymously) about how concerns are handled\n at your company?\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport { colors } from \"../../constants/colors\";\nimport Logo from \"../Logo\";\n\nexport default function PrivacyPolicy() {\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n \n \n

Privacy policy

\n
\n

\n Canary (the “Company”) is committed to protecting the privacy of its\n users. This Privacy Policy (“Privacy Policy”) is designed to help you\n understand what information we gather, how we use it, what we do to\n protect it, and to assist you in making informed decisions when using\n our Service. Unless otherwise indicated below, this Privacy Policy\n applies to any website that references this Privacy Policy, any Company\n website, as well as any data the Company may collect across partnered\n and unaffiliated sites.\n

\n

\n For purposes of this Agreement, “Service” refers to the Company’s\n service which can be accessed via our website at canary.report. The\n terms “we,” “us,” and “our” refer to the Company. “You” refers to you,\n as a user of Service.\n

\n
\n
I. CONSENT
\n

\n By accessing our Service, you accept our Privacy Policy and Terms of\n Use, and you consent to our collection, storage, use and disclosure of\n your personal information as described in this Privacy Policy. In\n addition, by using our Service, or services across partnered and\n unaffiliated sites, you are accepting the policies and practices\n described in this Privacy Policy. Each time you visit our website, or\n use the Service, and any time you voluntarily provide us with\n information, you agree that you are consenting to our collection, use\n and disclosure of the information that you provide, and you are\n consenting to receive emails or otherwise be contacted, as described in\n this Privacy Policy. Whether or not you register or create any kind of\n account with us, this Privacy Policy applies to all users of the website\n and the Service.\n

\n
\n
II. INFORMATION WE COLLECT
\n

\n We may collect both “Non-Personal Information” and “Personal\n Information” about you. “Non-Personal Information” includes information\n that cannot be used to personally identify you, such as anonymous usage\n data, general demographic information we may collect, referring/exit\n pages and URLs, platform types, preferences you submit and preferences\n that are generated based on the data you submit and number of clicks.\n “Personal Information” includes information that can be used to\n personally identify you, such as your name and email address.\n

\n

\n In addition, we may also track information provided to us by your\n browser when you view or use the Service, such as the website you came\n from (known as the “referring URL”), the type of browser you use, the\n device from which you connected to the Service, the time and date of\n access, and other information that does not personally identify you. We\n use this information for, among other things, the operation of the\n Service, to maintain the quality of the Service, to provide general\n statistics regarding use of the Service and for other business purposes.\n We track this information using cookies, or small text files which\n include an anonymous unique identifier. Cookies are sent to a user’s\n browser from our servers and are stored on the user’s computer hard\n drive. Sending a cookie to a user’s browser enables us to collect\n Non-Personal Information about that user and keep a record of the user’s\n preferences when utilizing our services, both on an individual and\n aggregate basis. The Company may use both persistent and session\n cookies; persistent cookies remain on your computer after you close your\n session and until you delete them, while session cookies expire when you\n close your browser. Persistent cookies can be removed by following your\n Internet browser help file directions. If you choose to disable cookies,\n some areas of the Service may not work properly.\n

\n
\n
III. HOW WE USE AND SHARE INFORMATION
\n

Personal Information:

\n

\n In general, we do not sell, trade, rent or otherwise share your Personal\n Information with third parties without your consent. We may share your\n Personal Information with vendors and other third-party providers who\n are performing services for the Company. In general, the vendors and\n third-party providers used by us will only collect, use and disclose\n your information to the extent necessary to allow them to perform the\n services they provide for the Company. For example, when you provide us\n with personal information to complete a transaction, verify your credit\n card, or place an order, you consent to our collecting and using such\n personal information for that specific purpose, including by\n transmitting such information to our vendors (and their service\n providers) performing these services for the Company.\n

\n

\n However, certain third-party service providers, such as payment\n processors, have their own privacy policies in respect of the\n information that we are required to provide to them in order to use\n their services. For these third-party service providers, we recommend\n that you read their privacy policies so that you can understand the\n manner in which your Personal Information will be handled by such\n providers.\n

\n

\n In addition, we may disclose your Personal Information if required to do\n so by law or if you violate our Terms of Use.\n

\n

Non-Personal Information:

\n

\n In general, we use Non-Personal Information to help us improve the\n Service and customize the user experience. We also aggregate\n Non-Personal Information in order to track trends and analyze use\n patterns of the Service. This Privacy Policy does not limit in any way\n our use or disclosure of Non-Personal Information and we reserve the\n right to use and disclose such Non-Personal Information to our partners,\n advertisers and other third parties at our sole discretion.\n

\n
\n
IV. HOW WE PROTECT INFORMATION
\n

\n We implement reasonable precautions and follow industry best practices\n in order to protect your Personal Information and ensure that such\n Personal Information is not accessed, disclosed, altered or destroyed.\n However, these measures do not guarantee that your information will not\n be accessed, disclosed, altered or destroyed by breach of such\n precautions. By using our Service, you acknowledge that you understand\n and agree to assume these risks.\n

\n
\n
V. YOUR RIGHTS REGARDING THE USE OF YOUR PERSONAL INFORMATION
\n

\n You have the right at any time to prevent us from contacting you for\n marketing purposes. When we send a promotional communication to a user\n via Digital Ocean, the user can opt out of further promotional\n communications by following the unsubscribe instructions provided in\n each promotional e-mail. Please note that notwithstanding the\n promotional preferences you indicate by either unsubscribing or opting\n out in the Settings section of the Site, we may continue to send you\n administrative emails including, for example, periodic updates to our\n Privacy Policy.\n

\n
\n
VI. Digital Ocean AND TYPEFORM
\n

\n Our Service is hosted by Digital Ocean and Typeform (“Service\n Providers”). Digital Ocean and Typeform allow us to provide the Service\n to you. Your information, including Personal Information, may be stored\n through Digital Ocean's and Typeform’s servers. By using the Service,\n you consent to Digital Ocean's and Typeform’s collection, disclosure,\n storage, and use of your Personal Information in accordance with{\" \"}\n \n Digital Ocean's privacy policy\n {\" \"}\n and{\" \"}\n \n Typeform’s privacy policy\n \n .\n

\n
\n
VII. LINKS TO OTHER WEBSITES
\n

\n As part of the Service, we may provide links to or compatibility with\n other websites or applications. However, we are not responsible for the\n privacy practices employed by those websites or the information or\n content they contain. This Privacy Policy applies solely to information\n collected by us through the Service. Therefore, this Privacy Policy does\n not apply to your use of a third-party website accessed by selecting a\n link via our Service. To the extent that you access or use the Service\n through or on another website or application, then the privacy policy of\n that other website or application will apply to your access or use of\n that site or application. We encourage our users to read the privacy\n statements of other websites before proceeding to use them.\n

\n
\n
VIII. AGE OF CONSENT
\n

\n By using the Service, you represent that you are at least 18 years of\n age.\n

\n
\n
IX. CHANGES TO OUR PRIVACY POLICY
\n

\n The Company reserves the right to change this Privacy Policy and our\n Terms of Use at any time. If we decide to change this Privacy Policy, we\n will post these changes on this page so that you are always aware of\n what information we collect, how we use it, and under what circumstances\n we disclose it. Any such modifications become effective upon your\n continued access to and/or use of the Service five (5) days after we\n first post the changes on the website or otherwise provide you with\n notice of such modifications. It is your sole responsibility to check\n this website from time to time to view any such changes to the terms of\n this Privacy Policy. If you do not agree to any changes, if and when\n such changes may be made to this Privacy Policy, you must cease access\n to this website. If you have provided your email address to us, you give\n us permission to email you for the purpose of notification as described\n in this Privacy Policy.\n

\n
\n
X. MERGER OR ACQUISITION
\n

\n In the event we or our Service Providers undergo a business transaction\n such as a merger, acquisition by another company, or sale of all or a\n portion of our assets, your Personal Information may be among the assets\n transferred. You acknowledge and consent that such transfers may occur\n and are permitted by this Privacy Policy, and that any acquirer of our\n or our Service Providers’ assets may continue to process your Personal\n Information as set forth in this Privacy Policy. If our information\n practices change at any time in the future, we will post the policy\n changes here so that you may opt out of the new information practices.\n We suggest that you check this Privacy Policy periodically if you are\n concerned about how your information is used.\n

\n
\n
XI. EMAIL COMMUNICATIONS & OPTING OUT
\n

\n We will send you Service-related announcements on occasions when it is\n necessary to do so. For instance, if our Service is temporarily\n suspended for maintenance, or a new enhancement is released, which will\n affect the way you use our Service, we might send you an email.\n Generally, you may not opt-out of these communications, which are not\n promotional in nature. Based upon the Personal Information that you\n provide us, we may communicate with you in response to your inquiries to\n provide the services you request and to manage your account. We will\n communicate with you by email or telephone, in accordance with your\n wishes. We may also use your Personal Information to send you updates\n and other promotional communications. If you no longer wish to receive\n those email updates, you may opt-out of receiving them by following the\n instructions included in each update or communication.\n

\n
\n
XII. CONTACT US & WITHDRAWING CONSENT
\n

\n If you have any questions regarding this Privacy Policy or the practices\n of this Site, or wish to withdraw your consent for the continued\n collection, use or disclosure of your Personal Information, please\n contact us by sending an email to wg@canary.report.\n

\n
\n

\n Last Updated: This Privacy Policy was last updated on{\" \"}\n December 27, 2020.\n

\n
\n

\n This website is hosted by{\" \"}\n Digital Ocean and its use is\n subject to Digital Ocean's{\" \"}\n \n Terms of Service\n {\" \"}\n and{\" \"}\n \n Privacy Policy\n \n .\n

\n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport { colors } from \"../../constants/colors\";\nimport Logo from \"../Logo\";\n\nexport default function TermsOfService() {\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n \n \n

Terms of service

\n
\n
OVERVIEW
\n

\n This website is operated by Canary. Throughout the site, the terms “we”,\n “us” and “our” refer to Canary. Canary offers this website, including\n all information, tools and services available from this site to you, the\n user, conditioned upon your acceptance of all terms, conditions,\n policies and notices stated here. By visiting our site and/ or\n purchasing something from us, you engage in our “Service” and agree to\n be bound by the following terms and conditions (“Terms of Service”,\n “Terms”), including those additional terms and conditions and policies\n referenced herein and/or available by hyperlink. These Terms of Service\n apply to all users of the site, including without limitation users who\n are browsers, vendors, customers, merchants, and/or contributors of\n content. Please read these Terms of Service carefully before accessing\n or using our website. By accessing or using any part of the site, you\n agree to be bound by these Terms of Service. If you do not agree to all\n the terms and conditions of this agreement, then you may not access the\n website or use any services. If these Terms of Service are considered an\n offer, acceptance is expressly limited to these Terms of Service. Any\n new features or tools which are added to the current store shall also be\n subject to the Terms of Service. You can review the most current version\n of the Terms of Service at any time on this page. We reserve the right\n to update, change or replace any part of these Terms of Service by\n posting updates and/or changes to our website. It is your responsibility\n to check this page periodically for changes. Your continued use of or\n access to the website following the posting of any changes constitutes\n acceptance of those changes.\n

\n
\n
SECTION 1 - PURCHASE TERMS
\n

\n By agreeing to these Terms of Service, you represent that you are at\n least the age of majority in your state or province of residence, or\n that you are the age of majority in your state or province of residence\n and you have given us your consent to allow any of your minor dependents\n to use this site. You may not use our products for any illegal or\n unauthorized purpose nor may you, in the use of the Service, violate any\n laws in your jurisdiction (including but not limited to copyright laws).\n You must not transmit any worms or viruses or any code of a destructive\n nature. A breach or violation of any of the Terms will result in an\n immediate termination of your Services.\n

\n
\n
SECTION 2 - GENERAL CONDITIONS
\n

\n We reserve the right to refuse service to anyone for any reason at any\n time. You understand that your content (not including credit card\n information), may be transferred unencrypted and involve (a)\n transmissions over various networks; and (b) changes to conform and\n adapt to technical requirements of connecting networks or devices.\n Credit card information is always encrypted during transfer over\n networks. You agree not to reproduce, duplicate, copy, sell, resell or\n exploit any portion of the Service, use of the Service, or access to the\n Service or any contact on the website through which the service is\n provided, without express written permission by us. The headings used in\n this agreement are included for convenience only and will not limit or\n otherwise affect these Terms.\n

\n
\n
\n SECTION 3 - ACCURACY, COMPLETENESS AND TIMELINESS OF INFORMATION\n
{\" \"}\n

\n We are not responsible if information made available on this site is not\n accurate, complete or current. The material on this site is provided for\n general information only and should not be relied upon or used as the\n sole basis for making decisions without consulting primary, more\n accurate, more complete or more timely sources of information. Any\n reliance on the material on this site is at your own risk. This site may\n contain certain historical information. Historical information,\n necessarily, is not current and is provided for your reference only. We\n reserve the right to modify the contents of this site at any time, but\n we have no obligation to update any information on our site. You agree\n that it is your responsibility to monitor changes to our site.\n

\n
\n
SECTION 4 - MODIFICATIONS TO THE SERVICE AND PRICES
\n

\n Prices for our products and services are subject to change without\n notice. We reserve the right at any time to modify or discontinue our\n Service (or any part or content thereof) without notice at any time. We\n shall not be liable to you or to any third-party for any modification,\n price change, suspension or discontinuance of our Service.{\" \"}\n

\n
\n
SECTION 5 - PRODUCTS OR SERVICES (if applicable)
\n

\n We reserve the right, but are not obligated, to limit the sales of our\n products or Services to any person, geographic region or jurisdiction.\n We may exercise this right on a case-by-case basis. We reserve the right\n to limit the quantities of any products or services that we offer. All\n descriptions of products or product pricing are subject to change at\n anytime without notice, at the sole discretion of us. We reserve the\n right to discontinue any product at any time. Any offer for any product\n or service made on this site is void where prohibited. We do not warrant\n that the quality of any products, services, information, or other\n material purchased or obtained by you will meet your expectations, or\n that any errors in the Service will be corrected.{\" \"}\n

\n
\n
SECTION 6 - ACCURACY OF BILLING AND ACCOUNT INFORMATION
\n

\n {\" \"}\n We reserve the right to refuse any order you place with us. We may, in\n our sole discretion, limit or cancel services purchased per person or\n per order. In the event that we make a change to or cancel an order, we\n may attempt to notify you by contacting the e-mail and/or billing\n address/phone number provided at the time the order was made. We reserve\n the right to limit or prohibit orders. You agree to provide current,\n complete and accurate purchase and account information for all\n purchases. You agree to promptly update your account and other\n information, including your email address and credit card numbers and\n expiration dates, so that we can complete your transactions and contact\n you as needed. Returns are not accepted and there are no refunds for\n digital or service products.{\" \"}\n

\n
\n
SECTION 7 - OPTIONAL TOOLS
\n

\n {\" \"}\n We may provide you with access to third-party tools over which we\n neither monitor nor have any control nor input. You acknowledge and\n agree that we provide access to such tools ”as is” and “as available”\n without any warranties, representations or conditions of any kind and\n without any endorsement. We shall have no liability whatsoever arising\n from or relating to your use of optional third-party tools. Any use by\n you of optional tools offered through the site is entirely at your own\n risk and discretion and you should ensure that you are familiar with and\n approve of the terms on which tools are provided by the relevant\n third-party provider(s). We may also, in the future, offer new services\n and/or features through the website (including, the release of new tools\n and resources). Such new features and/or services shall also be subject\n to these Terms of Service.{\" \"}\n

\n
\n
SECTION 8 - THIRD-PARTY LINKS
\n

\n {\" \"}\n Certain content, products and services available via our Service may\n include materials from third-parties. Third-party links on this site may\n direct you to third-party websites that are not affiliated with us. We\n are not responsible for examining or evaluating the content or accuracy\n and we do not warrant and will not have any liability or responsibility\n for any third-party materials or websites, or for any other materials,\n products, or services of third-parties. We are not liable for any harm\n or damages related to the purchase or use of goods, services, resources,\n content, or any other transactions made in connection with any\n third-party websites. Please review carefully the third-party's policies\n and practices and make sure you understand them before you engage in any\n transaction. Complaints, claims, concerns, or questions regarding\n third-party products should be directed to the third-party.{\" \"}\n

\n
\n
SECTION 9 - USER COMMENTS, FEEDBACK AND OTHER SUBMISSIONS
\n

\n {\" \"}\n If, at our request, you send certain specific submissions (for example\n contest entries) or without a request from us you send creative ideas,\n suggestions, proposals, plans, or other materials, whether online, by\n email, by postal mail, or otherwise (collectively, 'comments'), you\n agree that we may, at any time, without restriction, edit, copy,\n publish, distribute, translate and otherwise use in any medium any\n comments that you forward to us. We are and shall be under no obligation\n (1) to maintain any comments in confidence; (2) to pay compensation for\n any comments; or (3) to respond to any comments. We may, but have no\n obligation to, monitor, edit or remove content that we determine in our\n sole discretion are unlawful, offensive, threatening, libelous,\n defamatory, pornographic, obscene or otherwise objectionable or violates\n any party’s intellectual property or these Terms of Service. You agree\n that your comments will not violate any right of any third-party,\n including copyright, trademark, privacy, personality or other personal\n or proprietary right. You further agree that your comments will not\n contain libelous or otherwise unlawful, abusive or obscene material, or\n contain any computer virus or other malware that could in any way affect\n the operation of the Service or any related website. You may not use a\n false e-mail address, pretend to be someone other than yourself, or\n otherwise mislead us or third-parties as to the origin of any comments.\n You are solely responsible for any comments you make and their accuracy.\n We take no responsibility and assume no liability for any comments\n posted by you or any third-party.{\" \"}\n

\n
\n
SECTION 10 - PERSONAL INFORMATION
\n

\n {\" \"}\n Your submission of personal information through the store is governed by\n our Privacy Policy.{\" \"}\n

\n
\n
SECTION 11 - ERRORS, INACCURACIES AND OMISSIONS
\n

\n {\" \"}\n Occasionally there may be information on our site or in the Service that\n contains typographical errors, inaccuracies or omissions that may relate\n to product descriptions, pricing, promotions, offers, product shipping\n charges, transit times and availability. We reserve the right to correct\n any errors, inaccuracies or omissions, and to change or update\n information or cancel orders if any information in the Service or on any\n related website is inaccurate at any time without prior notice\n (including after you have submitted your order). We undertake no\n obligation to update, amend or clarify information in the Service or on\n any related website, including without limitation, pricing information,\n except as required by law. No specified update or refresh date applied\n in the Service or on any related website, should be taken to indicate\n that all information in the Service or on any related website has been\n modified or updated.{\" \"}\n

\n
\n
SECTION 12 - PROHIBITED USES
\n

\n {\" \"}\n In addition to other prohibitions as set forth in the Terms of Service,\n you are prohibited from using the site or its content: (a) for any\n unlawful purpose; (b) to solicit others to perform or participate in any\n unlawful acts; (c) to violate any international, federal, provincial or\n state regulations, rules, laws, or local ordinances; (d) to infringe\n upon or violate our intellectual property rights or the intellectual\n property rights of others; (e) to harass, abuse, insult, harm, defame,\n slander, disparage, intimidate, or discriminate based on gender, sexual\n orientation, religion, ethnicity, race, age, national origin, or\n disability; (f) to submit false or misleading information; (g) to upload\n or transmit viruses or any other type of malicious code that will or may\n be used in any way that will affect the functionality or operation of\n the Service or of any related website, other websites, or the Internet;\n (h) to collect or track the personal information of others; (i) to spam,\n phish, pharm, pretext, spider, crawl, or scrape; (j) for any obscene or\n immoral purpose; or (k) to interfere with or circumvent the security\n features of the Service or any related website, other websites, or the\n Internet. We reserve the right to terminate your use of the Service or\n any related website for violating any of the prohibited uses.{\" \"}\n

\n
\n
SECTION 13 - DISCLAIMER OF WARRANTIES; LIMITATION OF LIABILITY
\n

\n {\" \"}\n We do not guarantee, represent or warrant that your use of our Service\n will be uninterrupted, timely, secure or error-free. We do not warrant\n that the results that may be obtained from the use of the service will\n be accurate or reliable. You agree that from time to time we may remove\n the Service for indefinite periods of time or cancel the Service at any\n time, without notice to you. You expressly agree that your use of, or\n inability to use, the Service is at your sole risk. The Service and all\n products and services delivered to you through the service are (except\n as expressly stated by us) provided 'as is' and 'as available' for your\n use, without any representation, warranties or conditions of any kind,\n either express or implied, including all implied warranties or\n conditions of merchantability, merchantable quality, fitness for a\n particular purpose, durability, title, and non-infringement. In no case\n shall Canary, our directors, officers, employees, affiliates, agents,\n contractors, interns, suppliers, service providers or licensors be\n liable for any injury, loss, claim, or any direct, indirect, incidental,\n punitive, special, or consequential damages of any kind, including,\n without limitation lost profits, lost revenue, lost savings, loss of\n data, replacement costs, or any similar damages, whether based in\n contract, tort (including negligence), strict liability or otherwise,\n arising from your use of any of the service or any products procured\n using the service, or for any other claim related in any way to your use\n of the service or any product, including, but not limited to, any errors\n or omissions in any content, or any loss or damage of any kind incurred\n as a result of the use of the service or any content (or product)\n posted, transmitted, or otherwise made available via the service, even\n if advised of their possibility. Because some states or jurisdictions do\n not allow the exclusion or the limitation of liability for consequential\n or incidental damages, in such states or jurisdictions, our liability\n shall be limited to the maximum extent permitted by law.{\" \"}\n

\n
\n
SECTION 14 - INDEMNIFICATION
\n

\n {\" \"}\n You agree to indemnify, defend and hold harmless Canary and our parent,\n subsidiaries, affiliates, partners, officers, directors, agents,\n contractors, licensors, service providers, subcontractors, suppliers,\n interns and employees, harmless from any claim or demand, including\n reasonable attorneys’ fees, made by any third-party due to or arising\n out of your breach of these Terms of Service or the documents they\n incorporate by reference, or your violation of any law or the rights of\n a third-party.{\" \"}\n

\n
\n
SECTION 15 - SEVERABILITY
\n

\n {\" \"}\n In the event that any provision of these Terms of Service is determined\n to be unlawful, void or unenforceable, such provision shall nonetheless\n be enforceable to the fullest extent permitted by applicable law, and\n the unenforceable portion shall be deemed to be severed from these Terms\n of Service, such determination shall not affect the validity and\n enforceability of any other remaining provisions.{\" \"}\n

\n
\n
SECTION 16 - TERMINATION
\n

\n {\" \"}\n The obligations and liabilities of the parties incurred prior to the\n termination date shall survive the termination of this agreement for all\n purposes. These Terms of Service are effective unless and until\n terminated by either you or us. You may terminate these Terms of Service\n at any time by notifying us that you no longer wish to use our Services,\n or when you cease using our site. If in our sole judgment you fail, or\n we suspect that you have failed, to comply with any term or provision of\n these Terms of Service, we also may terminate this agreement at any time\n without notice and you will remain liable for all amounts due up to and\n including the date of termination; and/or accordingly may deny you\n access to our Services (or any part thereof).{\" \"}\n

\n
\n
SECTION 17 - ENTIRE AGREEMENT
\n

\n {\" \"}\n The failure of us to exercise or enforce any right or provision of these\n Terms of Service shall not constitute a waiver of such right or\n provision. These Terms of Service and any policies or operating rules\n posted by us on this site or in respect to The Service constitutes the\n entire agreement and understanding between you and us and govern your\n use of the Service, superseding any prior or contemporaneous agreements,\n communications and proposals, whether oral or written, between you and\n us (including, but not limited to, any prior versions of the Terms of\n Service). Any ambiguities in the interpretation of these Terms of\n Service shall not be construed against the drafting party.{\" \"}\n

\n
\n
SECTION 18 - GOVERNING LAW
\n

\n {\" \"}\n These Terms of Service and any separate agreements whereby we provide\n you Services shall be governed by and construed in accordance with the\n laws of Ontario, Canada.{\" \"}\n

\n
\n
SECTION 19 - CHANGES TO TERMS OF SERVICE
\n

\n {\" \"}\n You can review the most current version of the Terms of Service at any\n time at this page. We reserve the right, at our sole discretion, to\n update, change or replace any part of these Terms of Service by posting\n updates and changes to our website. It is your responsibility to check\n our website periodically for changes. Your continued use of or access to\n our website or the Service following the posting of any changes to these\n Terms of Service constitutes acceptance of those changes.{\" \"}\n

\n
\n
SECTION 20 - CONTACT INFORMATION
\n

\n {\" \"}\n Questions about the Terms of Service should be sent to us at\n wg@canary.report.\n

\n
\n );\n}\n","import React from \"react\";\nimport \"./FinePrint.scss\";\n\nexport default function FinePrint() {\n return (\n
\n

\n Images by{\" \"}\n \n Open Peeps\n \n , Pablo Stanley /{\" \"}\n \n CCO\n \n

\n
\n );\n}\n","import React from \"react\";\nimport { colors } from \"../../../constants/colors\";\nimport \"./Pricing.scss\";\nimport { Col } from \"react-bootstrap\";\nimport { Link } from \"react-router-dom\";\nimport Button from \"react-bootstrap/Button\";\nimport Row from \"react-bootstrap/Row\";\n\nexport default function Pricing() {\n return (\n \n
\n
\n
\n Canary's basic plan starts at $99/month or $1000/year.\n
\n
\n Additional costs for customization, setup and extra features may\n apply.\n
\n
\n Discounted pricing is available for non-profits and educational\n organizations.\n
\n
\n
\n

\n To learn more about how we could be of service to your organization,\n schedule your complimentary, no obligation consultation now for more\n information and a demo.\n

\n
\n \n \n \n \n \n \n \n
\n \n );\n}\n","import React, { useState } from \"react\";\nimport Accordion from \"react-bootstrap/Accordion\";\nimport Card from \"react-bootstrap/Card\";\nimport Image from \"react-bootstrap/Image\";\nimport \"./ScenarioAccordion.scss\";\n\nexport default function ScenarioAccordion({ scenario }) {\n const [accordionOpen, setAccordionOpen] = useState(false);\n\n const { image, workplace, problem, solution } = scenario;\n\n return (\n \n \n {\n setAccordionOpen(!accordionOpen);\n }}\n >\n \n
{scenario.title}
\n \n ▼\n \n \n \n \n \n
\n \n \n
\n
\n
The Workplace
\n
{workplace}
\n
\n
\n
The Problem
\n
{problem}
\n
\n
\n
Canary's Solution
\n {solution}\n
\n \n
\n
\n
\n
\n );\n}\n","import React from \"react\";\nimport whiteShirtWoman from \"../../../static/learnMore/red-hair-woman-white-shirt.png\";\nimport beardedBlueShirtMan from \"../../../static/learnMore/bearded-man-blue-shirt.png\";\nimport laptopWoman from \"../../../static/learnMore/laptop-lady-facing-right.png\";\nimport maskedWoman from \"../../../static/learnMore/gray-hair-woman-with-mask.png\";\nimport ScenarioAccordion from \"./ScenarioAccordion\";\n\nconst smallStartup = {\n title: \" A small startup with no HR and lots of conflict\",\n image: whiteShirtWoman,\n workplace: (\n
\n A Fintech startup is rising to success. With a couple of angel investors\n and a lean team, they are poised to launch a premium subscription service\n within a year. Things are looking good.\n
\n ),\n problem: (\n
\n One of the two Product Leads, Skyler is constantly getting into fights\n with the COO, Raven. From Skyler's point of view, Raven is always\n dismissive of their ideas and whenever Skyler is successful, Raven never\n gives praise. To Skyler, It almost feels like harassment or bullying.\n Since it's a small team and Raven is technically responsible for HR\n issues, Skyler can only talk to the CEO about this. But the CEO and Raven\n are best friends and the co-founders of the startup, so Skyler feels like\n the CEO will always side with Raven.\n
\n ),\n solution: (\n
\n The startup purchases a Canary Coach package. Skyler\n calls a neutral, third-party expert in conflict resolution to have an\n off-the-record conversation about how to sort through their issues, look\n at the problem objectively, and figure out a way to resolve it. Skyler\n gains the tools to have an honest conversation with the CEO and Raven in a\n way that is non-adversarial and conducive to a more productive and healthy\n working relationship.\n
\n ),\n};\n\nconst employeesWontSpeakUp = {\n title:\n \"An organization that knows something's wrong but employees won't speak up\",\n image: beardedBlueShirtMan,\n workplace: (\n
\n A restaurant chain with more than 30 locations requires every new hire to\n watch the same 15-minute video on workplace harassment as part of their\n training. Since employees need to maintain good relationships with\n managers to get preferred shifts, they often don't speak up when these\n types of issues arise.\n
\n ),\n problem: (\n
\n Over the last few years there have been a growing number of complaints of\n sexual harassment. Perplexingly, these complaints are only brought up\n months or even years after the incidents have occurred. The investigations\n reveal that the inappropriate comments were said by employees who just did\n not realize that what they were saying was inappropriate.\n
\n ),\n solution: (\n
\n The restaurant chain purchases Canary's signature anonymous complaint\n reporting tool, which allows employees to answer a series of questions to\n help the employer specify the types of concerns that they have without\n triggering an investigation. The reports reveal that employees are making\n inappropriate comments about both gender and race. The restaurant chain\n then trains everyone on those two specific issues and prevents those types\n of comments from recurring.\n
\n ),\n};\n\nconst wantsAnonymousFeedback = {\n title:\n \"An organization that wants a simple, secure way to give anonymous feedback\",\n image: laptopWoman,\n workplace: (\n
\n A consulting firm with about 500 employees operates across two countries\n and has a robust human resources team. They conduct regular pulse-check\n surveys and use an anonymous feedback tool. Employees tend to stay at the\n organization for a long time and work well together.\n
\n ),\n problem: (\n
\n The consulting firm's anonymous feedback tool isn't being used. Many\n employees don't even know it exists. The tool is pretty expensive and it's\n hard to justify the cost when so few people use it. Even though the tool\n has its own sophisticated case management system, it's cumbersome and does\n not get enough reports to justify its use.\n
\n ),\n solution: (\n
\n The consulting firm purchases Canary's basic anonymous reporting tool.\n It's more cost-effective, it's straightforward, and it fulfills the same\n function of allowing employees to submit concerns and feedback\n anonymously. The consulting firm also receives a discount on WG\n Resolutions' workplace harassment training, which promotes the tool so\n everyone knows how to use it when it's necessary. Employees are happy and\n relieved to know that they can use Canary when the time is right.\n
\n ),\n};\n\nconst covidSafetyIssues = {\n title: \"An organization that needs to report specific COVID-19 safety issues\",\n image: maskedWoman,\n workplace: (\n
\n A company owns and operates retirement homes in several locations and it\n needs to meet rigorous sanitation standards to ensure every home is free\n of COVID-19. There are internal health and safety officers for each home\n who are responsible for ensuring that employees and visitors comply with\n these standards.\n
\n ),\n problem: (\n
\n A resident contracted COVID-19 and an internal investigation revealed that\n one or more employees did not consistently screen visitors. More\n importantly, it was clear that this was something other employees knew\n about but never reported to a health and safety officer.\n
\n ),\n solution: (\n
\n The company worked with Canary to create an anonymous reporting tool where\n employees can report any issues with screening visitors for COVID-19, the\n availability of PPE and sanitizer, and violations of sanitation procedures\n for each home. One of the internal health and safety officers uses this\n tool as a precautionary measure. When a report comes in they can attend at\n the specified location to confirm that all sanitation procedures are being\n followed.\n
\n ),\n};\n\nconst scenarios = [\n smallStartup,\n employeesWontSpeakUp,\n wantsAnonymousFeedback,\n covidSafetyIssues,\n];\n\nexport default function ExampleScenarios() {\n return (\n
\n {scenarios.map((scenario, index) => {\n return ;\n })}\n
\n );\n}\n","import React from \"react\";\n\nexport default function LearnMoreSection({ content }) {\n return (\n
\n

{content.title}

\n
{content.body}
\n
\n );\n}\n","import React, { useEffect } from \"react\";\nimport { colors } from \"../../../constants/colors\";\nimport Container from \"react-bootstrap/Container\";\nimport Logo from \"../../Logo\";\nimport Spacer from \"../../Spacer\";\nimport FinePrint from \"../FinePrint\";\nimport useWindowWidth from \"../../../hooks/useWindowWidth\";\nimport \"./LearnMore.scss\";\nimport Pricing from \"./Pricing\";\nimport ExampleScenarios from \"./ExampleScenarios\";\nimport LearnMoreSection from \"./LearnMoreSection\";\nimport BackArrow from \"../../BackArrow\";\n\nconst initialConversationSection = {\n title: \"Initial Conversation - What do you need?\",\n body: (\n
\n

\n Canary offers a variety of ways to help employers respond to concerns\n from employees. When you have your initial consultation with us, we will\n figure out the right kind of solution for you.\n

\n

Here are some examples:

\n
\n ),\n};\n\nconst implementationSection = {\n title: \"Implementation - Making it Happen\",\n body: (\n
\n

\n Once you invest in Canary, you want to make sure employees know about it\n and know how to use it.\n

\n

\n Canary offers everything from video tutorials to posters to live\n training for educating employees about Canary. Canary clients also\n receive reduced rates on WG Resolutions' workplace harassment, code of\n conduct and EDI training programs, which can include instructions on how\n to use Canary.\n

\n
\n ),\n};\n\nconst supportRespondChangeSection = {\n title: \"Support, Respond & Change - Keep doing the Work\",\n body: (\n
\n

\n Canary is designed with the expertise of a law firm that focuses\n exclusively on handling workplace conflict. We can help you figure out\n how to respond to employees' concerns by directing you to the right\n people who do workplace culture audits, training and investigations.\n

\n

\n When things change, we change to suit you. Canary is all about creating\n ways to address employees' concerns as they arise and change over time.\n We can always re-customize your Canary product to ensure it captures the\n concerns that need to be heard.\n

\n
\n ),\n};\n\nexport default function Index() {\n const { isMobile } = useWindowWidth();\n\n useEffect(() => {\n window.scrollTo(0, 0);\n }, []);\n\n return (\n
\n
\n \n \n
\n \n

\n

\n Every employee and employer is different.\n

\n

\n That's why Canary is tailored to every client based on its\n workplace culture and the kinds of concerns that need to be\n heard.\n

\n

\n It all starts with the Initial Conversation.\n

\n

\n
\n \n \n \n \n \n \n \n
\n \n \n \n
\n {!isMobile && }\n
\n );\n}\n","import { InlineWidget } from \"react-calendly\";\nimport React from \"react\";\nimport \"./BookCalendlyAppointment.scss\";\n\nexport default function BookCalendlyAppointment({ calendlyLink }) {\n return (\n
\n \n
\n );\n}\n","import React from \"react\";\nimport BookCalendlyAppointment from \"./BookCalendlyAppointment\";\n\nconst CALENDLY_CONSULTATION_LINK = \"https://calendly.com/canaryconsult/30min\";\n\nexport default function BookConsultation() {\n return ;\n}\n","import React from \"react\";\nimport BookCalendlyAppointment from \"./BookCalendlyAppointment\";\n\nconst CALENDLY_COACHING_SESSION_LINK =\n \"https://calendly.com/canaryconsult/canary-coaching-session\";\n\nexport default function BookCoachingSession() {\n return (\n \n );\n}\n","import React from \"react\";\nimport { Route, Switch, BrowserRouter } from \"react-router-dom\";\nimport \"./App.css\";\nimport EmployerLogin from \"./components/pages/EmployerLogin\";\nimport Signup from \"./components/pages/Signup\";\nimport Logout from \"./components/pages/Logout\";\nimport NotFound from \"./components/pages/NotFound\";\nimport PrivateRoute from \"./components/PrivateRoute\";\nimport AdminPanel from \"./components/pages/adminPanel/AdminPanel\";\nimport Home from \"./components/pages/Home\";\nimport Footer from \"./components/Footer\";\nimport RespondentLogin from \"./components/pages/RespondentLogin\";\nimport OrganizationHome from \"./components/pages/organization/OrganizationHome\";\nimport OrganizationReport from \"./components/pages/organization/OrganizationReport\";\nimport OrganizationChooseReport from \"./components/pages/organization/OrganizationChooseReport\";\nimport InterestedEmployer from \"./components/pages/InterestedEmployer\";\nimport InterestedRespondent from \"./components/pages/InterestedRespondent\";\nimport FreeWorkplaceSurvey from \"./components/pages/FreeWorkplaceSurvey\";\nimport InterestedEmployerAdditionalInfo from \"./components/pages/InterestedEmployerAdditionalInfo\";\nimport PrivacyPolicy from \"./components/pages/PrivacyPolicy\";\nimport TermsOfService from \"./components/pages/TermsOfService\";\nimport LearnMore from \"./components/pages/LearnMore/index\";\nimport BookConsultation from \"./components/pages/BookConsultation\";\nimport BookCoachingSession from \"./components/pages/BookCoachingSession\";\n\nfunction App() {\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