{"version":3,"sources":["assets/images/SF-SiteName.png","Reports/Components/FrontNav.tsx","assets/images/EngineeringDashboard.png","App.tsx","index.tsx","assets/images/MonashLogo.png","Store/GlobalStore.ts","Store/ReflectionsReportStore.ts","Store/FuturesReportStore.ts","Store/EngineeringReportStore.ts","Store/MastersEngineeringReportStore.ts","Store/StoreProvider.tsx"],"names":["bannerImage","location","includes","className","src","MonashLogo","alt","href","StudentFutures","FrontNav","useState","isOpen","setIsOpen","url","window","Navbar","color","light","expand","NavbarBrand","NavbarToggler","onClick","Collapse","navbar","Nav","NavItem","to","App","ReflectionsReport","Filter","lazy","Render","FuturesReport","EngineeringReport","MastersEngineeringReport","NavRouter","withRouter","pathname","fallback","showDialog","StoreProvider","Spinner","path","exact","init","dsn","release","process","SENTRYUIRELEASE","environment","hostname","integrations","BrowserTracing","Replay","maskAllText","blockAllMedia","HttpClient","tracesSampleRate","replaysSessionSampleRate","replaysOnErrorSampleRate","ReactDOM","render","document","getElementById","GlobalStore","axios","initialised","userInfo","error","loggingIn","handleError","runInAction","initialiseAsync","a","loadUserInfo","get","user","data","setUser","id","studentId","username","firstName","lastName","catch","this","Axios","create","withCredentials","makeObservable","observable","ReflectionsReportStore","globalStore","experiences","selectedExperienceIds","selectedReflectionIds","selectedSkillNames","selectExperience","filter","x","push","reflections","find","e","forEach","reflection","selectReflection","selected","parent","undefined","selectParent","selectSkill","name","r","skill","skillReflections","toggle","parentExperience","selectAll","length","map","flatMap","allSkills","experience","selectedExperiences","computed","selectedReflections","action","uniq","slice","copy","createViewModel","FuturesReportStore","EngineeringReportStore","filtered","workflow","workflowIds","studentWorkflowFilters","studentWorkflowReflections","loadReflectionsAsync","loadWorkflowDataAsync","MastersEngineeringReportStore","hasLabel","getLabelAsync","storesContext","createContext","useStores","stores","useContext","Error","LoginBlock","observer","children","Container","Row","Col","sm","Card","CardHeader","CardBody","reflectionsReportStore","futuresReportStore","engineeringReportStore","mastersEngineeringReportStore","Provider","value"],"mappings":"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","file":"static/js/main.765928c9.chunk.js","sourcesContent":["export default __webpack_public_path__ + \"static/media/SF-SiteName.50ad1e15.png\";","import React, { useState } from 'react';\nimport { Link } from 'react-router-dom';\nimport { Navbar, NavbarBrand, Nav, NavItem, Collapse, NavbarToggler } from 'reactstrap';\nimport '../../App.scss';\nimport MonashLogo from '../../assets/images/MonashLogo.png';\nimport StudentFutures from '../../assets/images/SF-SiteName.png';\nimport EngineeringDashboard from '../../assets/images/EngineeringDashboard.png';\n\nfunction bannerImage(location: string) {\n if (location.includes('certificate') || location.includes('reflections')) {\n return (\n
\n
\n Monash Logo\n \n Student Futures\n \n
\n
\n );\n }\n if (location.includes('engineering')) {\n return (\n
\n
\n Monash Logo\n \n Engineering Dashboard\n \n
\n
);\n }\n return (<> );\n}\nconst FrontNav = ({ location }: { location: string }) => {\n const [isOpen, setIsOpen] = useState(false);\n const toggle = () => setIsOpen(!isOpen);\n const url = window.location.href;\n return (\n
\n {url.includes('staging') || url.includes('localhost')\n ? \n Monash Reporting Tool\n \n \n \n \n \n : <>}\n {bannerImage(location)}\n
\n );\n};\n\nexport default FrontNav;\n","export default \"data:image/png;base64,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\"","import React, { lazy, Suspense } from 'react';\nimport * as Sentry from '@sentry/react';\nimport { Spinner } from 'reactstrap';\nimport { BrowserRouter as Router, Redirect, Route, Switch, withRouter } from 'react-router-dom';\nimport StoreProvider from './Store/StoreProvider';\nimport FrontNav from './Reports/Components/FrontNav';\nimport './App.scss';\n\nconst App = () => {\n const ReflectionsReport = {\n Filter: lazy(() => import('./Reports/Reflections/Pages/Filter')),\n Render: lazy(() => import('./Reports/Reflections/Pages/Render'))\n };\n const FuturesReport = {\n Filter: lazy(() => import('./Reports/Futures/Pages/Filter')),\n Render: lazy(() => import('./Reports/Futures/Pages/Render'))\n };\n const EngineeringReport = lazy(() => import('./Reports/Engineering/Pages/Page'));\n const MastersEngineeringReport = lazy(() => import('./Reports/MastersEngineering/Pages/Page'));\n const NavRouter = withRouter(({ location }) => );\n return An error has occured} showDialog>\n \n \n \n Downloading Experiences\n }\n >\n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n ;\n};\n\nexport default App;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport { HttpClient } from '@sentry/integrations';\nimport '@careerhub/chubby/scss/main.scss';\nimport { BrowserTracing, Replay, init } from '@sentry/react';\nimport App from './App';\nimport './index.scss';\n\ninit({\n dsn: 'https://613fecc6b6624df4a0ec153ff6f0b4e6@errors.careerhub.support/14',\n release: process.env.SENTRYUIRELEASE,\n environment: (() => {\n const hostname = window.location.hostname;\n if (hostname === 'staging.reports.monash.careerhub.com.au') {\n return 'Staging';\n }\n if (hostname === 'reports.monash.careerhub.com.au') {\n return 'Production';\n }\n return 'Development';\n })(),\n integrations: [\n new BrowserTracing(),\n new Replay({\n maskAllText: true,\n blockAllMedia: true\n }),\n new HttpClient()\n ],\n tracesSampleRate: 0.1, // track 10% of transactions\n // only record sessions if an error has occured\n replaysSessionSampleRate: 0,\n replaysOnErrorSampleRate: 1.0\n});\n\nReactDOM.render(\n ,\n document.getElementById('root')\n);\n","export default __webpack_public_path__ + \"static/media/MonashLogo.c4d57342.png\";","import { setUser } from '@sentry/react';\nimport Axios, { AxiosInstance } from 'axios';\nimport { makeObservable, observable, runInAction } from 'mobx';\nimport UserInfo from '../Models/UserInfo';\n\nexport default class GlobalStore {\n constructor() {\n this.axios = Axios.create({\n withCredentials: true\n });\n\n makeObservable(this, {\n initialised: observable,\n userInfo: observable,\n loggingIn: observable\n });\n }\n\n readonly axios: AxiosInstance;\n\n initialised = false;\n\n userInfo?: UserInfo;\n\n error?: Error;\n\n loggingIn = false;\n\n handleError = (error: Error) => runInAction(() => {\n this.error = error;\n });\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n runInAction(() => {\n this.loadUserInfo();\n });\n };\n\n loadUserInfo = () => {\n (async () => {\n const user = await this.axios.get('/api/auth/user');\n runInAction(() => {\n this.userInfo = user.data;\n });\n setUser({\n id: user.data.studentId,\n username: `${user.data.firstName} ${user.data.lastName}`\n });\n })().catch(() => {\n window.location.href = `/api/auth/login?returnUrl=${window.location.href}`;\n runInAction(() => {\n this.loggingIn = true;\n });\n });\n };\n}\n","import { AxiosInstance } from 'axios';\nimport { action, computed, makeObservable, observable, runInAction } from 'mobx';\nimport { uniq } from 'lodash';\nimport { createViewModel } from 'mobx-utils/lib/create-view-model';\nimport GlobalStore from './GlobalStore';\nimport ReflectionReportModel from '../Models/ReflectionReportModel';\n\nexport default class ReflectionsReportStore {\n constructor(globalStore: GlobalStore) {\n this.axios = globalStore.axios;\n\n makeObservable(this, {\n experiences: observable,\n initialised: observable,\n selectedExperienceIds: observable,\n selectedReflectionIds: observable,\n selectedSkillNames: observable,\n selectedExperiences: computed,\n selectedReflections: computed,\n selectExperience: action,\n selectReflection: action,\n selectSkill: action,\n selectAll: action\n });\n }\n\n axios: AxiosInstance;\n\n experiences?: ReflectionReportModel[];\n\n selectedExperienceIds: number[] = [];\n\n selectedReflectionIds: number[] = [];\n\n selectedSkillNames: string[] = [];\n\n initialised = false;\n\n get selectedExperiences() {\n return this.experiences?.filter(e => this.selectedExperienceIds.includes(e.id));\n }\n\n get allSkills() {\n if (this.experiences === undefined) {\n return undefined;\n }\n\n return uniq(this.experiences.flatMap(e => e.reflections).map(e => e.skill));\n }\n\n get selectedReflections() {\n return this.experiences?.slice()?.map(e => {\n const copy = createViewModel(e);\n copy.reflections = copy.reflections.filter(r => this.selectedReflectionIds.includes(r.id)) ?? [];\n return copy;\n })?.filter(e => e.reflections.length > 0);\n }\n\n selectExperience = (id: number) => {\n if (this.selectedExperienceIds.includes(id)) {\n this.selectedExperienceIds = this.selectedExperienceIds.filter(x => x !== id);\n } else {\n this.selectedExperienceIds.push(id);\n }\n const reflections = this.experiences?.find(e => e.id === id)?.reflections;\n reflections?.forEach(reflection => this.selectReflection(reflection.id, this.selectedExperienceIds.includes(id)));\n };\n\n selectReflection = (id: number, selected?: boolean, parent?: number | string) => {\n if (this.selectedReflectionIds.includes(id) || selected === false) {\n this.selectedReflectionIds = this.selectedReflectionIds.filter(x => x !== id);\n } else {\n this.selectedReflectionIds.push(id);\n }\n if (parent !== undefined) {\n this.selectParent(parent);\n }\n };\n\n selectSkill = (name: string) => {\n if (this.selectedSkillNames.includes(name)) {\n this.selectedSkillNames = this.selectedSkillNames.filter(x => x !== name);\n } else {\n this.selectedSkillNames.push(name);\n }\n const reflections = this.experiences?.find(e => e.reflections.find(r => r.skill === name))?.reflections;\n const skillReflections = reflections?.filter(x => x.skill === name);\n skillReflections?.forEach(reflection => this.selectReflection(reflection.id, this.selectedSkillNames.includes(name)));\n };\n\n selectParent = (parent: number | string) => {\n let toggle = false;\n if (typeof parent === 'number') {\n const parentExperience = this.experiences?.find(e => e.id === parent);\n parentExperience?.reflections.forEach(reflection => {\n if (this.selectedReflectionIds.find(r => r === reflection.id)) { toggle = true; }\n });\n if (!toggle) { this.selectExperience(parent); }\n } else if (typeof parent === 'string') {\n const reflections = this.experiences?.find(e => e.reflections.find(r => r.skill === parent))?.reflections;\n const skillReflections = reflections?.filter(x => x.skill === parent);\n skillReflections?.forEach(reflection => {\n if (this.selectedReflectionIds.find(r => r === reflection.id)) { toggle = true; }\n });\n if (!toggle) { this.selectSkill(parent); }\n }\n };\n\n selectAll = () => {\n if (this.selectedExperienceIds.length !== (this.experiences?.length ?? 0)) {\n this.selectedExperienceIds = this.experiences?.map(e => e.id) ?? [];\n this.selectedReflectionIds = this.experiences?.flatMap(e => e.reflections).map(r => r.id) ?? [];\n this.selectedSkillNames = this.allSkills ?? [];\n } else {\n this.selectedExperienceIds = [];\n this.selectedReflectionIds = [];\n this.selectedSkillNames = [];\n }\n };\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n const experience = await this.axios.get('/api/reflections');\n runInAction(() => {\n this.experiences = experience.data;\n });\n this.selectAll();\n };\n}\n","import { AxiosInstance } from 'axios';\nimport { action, computed, makeObservable, observable, runInAction } from 'mobx';\nimport GlobalStore from './GlobalStore';\nimport FutureReportModel from '../Models/FutureReportModel';\n\nexport default class FuturesReportStore {\n constructor(globalStore: GlobalStore) {\n this.axios = globalStore.axios;\n\n makeObservable(this, {\n experiences: observable,\n initialised: observable,\n selectedExperienceIds: observable,\n selectedExperiences: computed,\n selectExperience: action,\n selectAll: action\n });\n }\n\n axios: AxiosInstance;\n\n experiences?: FutureReportModel[];\n\n selectedExperienceIds: number[] = [];\n\n initialised = false;\n\n get selectedExperiences() {\n return this.experiences?.filter(e => this.selectedExperienceIds.includes(e.id));\n }\n\n selectExperience = (id: number) => {\n if (this.selectedExperienceIds.includes(id)) {\n this.selectedExperienceIds = this.selectedExperienceIds.filter(x => x !== id);\n } else {\n this.selectedExperienceIds.push(id);\n }\n };\n\n selectAll = () => {\n if (this.selectedExperienceIds.length !== (this.experiences?.length ?? 0)) {\n this.selectedExperienceIds = this.experiences?.map(e => e.id) ?? [];\n } else {\n this.selectedExperienceIds = [];\n }\n };\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n const experience = await this.axios.get('/api/futures');\n runInAction(() => {\n this.experiences = experience.data;\n });\n this.selectAll();\n };\n}\n","import { AxiosInstance } from 'axios';\nimport { makeObservable, observable, runInAction } from 'mobx';\nimport GlobalStore from './GlobalStore';\nimport EngineeringReportModel from '../Models/EngineeringReportModel';\nimport EngineeringWorkflowModel from '../Models/EngineeringWorkflowModel';\nimport EngineeringWorkflowIdModel, { WorkflowFilters, WorkflowReflections } from '../Models/EngineeringWorkflowIdModel';\nimport workflowIds from '../assets/data/workflowIds.json';\n\nexport default class EngineeringReportStore {\n constructor(globalStore: GlobalStore) {\n this.axios = globalStore.axios;\n\n makeObservable(this, {\n experiences: observable,\n initialised: observable,\n filtered: observable,\n workflow: observable,\n workflowIds: observable,\n studentWorkflowFilters: observable,\n studentWorkflowReflections: observable\n });\n }\n\n axios: AxiosInstance;\n\n experiences?: EngineeringReportModel[];\n\n filtered?: EngineeringReportModel[];\n\n workflow?: EngineeringWorkflowModel[];\n\n workflowIds?: EngineeringWorkflowIdModel[];\n\n studentWorkflowFilters?: WorkflowFilters;\n\n studentWorkflowReflections?: WorkflowReflections[];\n\n initialised = false;\n\n loadReflectionsAsync = async () => {\n const experience = await this.axios.get('/api/engineering/ers');\n runInAction(() => {\n this.experiences = experience.data;\n this.filtered = experience.data;\n });\n };\n\n loadWorkflowDataAsync = async () => {\n const workflow = await this.axios.get('/api/engineering/workflow/');\n runInAction(() => {\n this.workflow = workflow.data;\n this.workflowIds = workflowIds;\n });\n };\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n runInAction(() => {\n this.loadReflectionsAsync();\n this.loadWorkflowDataAsync();\n });\n };\n}\n","import { AxiosInstance } from 'axios';\nimport { makeObservable, observable, runInAction } from 'mobx';\nimport GlobalStore from './GlobalStore';\nimport EngineeringReportModel from '../Models/EngineeringReportModel';\nimport EngineeringWorkflowModel from '../Models/EngineeringWorkflowModel';\nimport EngineeringWorkflowIdModel, { WorkflowFilters, WorkflowReflections } from '../Models/EngineeringWorkflowIdModel';\nimport workflowIds from '../assets/data/workflowIds.json';\n\nexport default class MastersEngineeringReportStore {\n constructor(globalStore: GlobalStore) {\n this.axios = globalStore.axios;\n\n makeObservable(this, {\n experiences: observable,\n initialised: observable,\n filtered: observable,\n workflow: observable,\n workflowIds: observable,\n studentWorkflowFilters: observable,\n studentWorkflowReflections: observable,\n hasLabel: observable\n });\n }\n\n axios: AxiosInstance;\n\n experiences?: EngineeringReportModel[];\n\n filtered?: EngineeringReportModel[];\n\n workflow?: EngineeringWorkflowModel[];\n\n workflowIds?: EngineeringWorkflowIdModel[];\n\n studentWorkflowFilters?: WorkflowFilters;\n\n studentWorkflowReflections?: WorkflowReflections[];\n\n hasLabel = false;\n\n initialised = false;\n\n loadReflectionsAsync = async () => {\n const experience = await this.axios.get('/api/mastersengineering/ers');\n runInAction(() => {\n this.experiences = experience.data;\n this.filtered = experience.data;\n });\n };\n\n loadWorkflowDataAsync = async () => {\n const workflow = await this.axios.get('/api/mastersengineering/workflow/');\n runInAction(() => {\n this.workflow = workflow.data;\n this.workflowIds = workflowIds;\n });\n };\n\n getLabelAsync = async () => {\n try {\n await this.axios.get('/api/mastersengineering/label/');\n runInAction(() => {\n this.hasLabel = true;\n });\n } catch (err) {\n runInAction(() => {\n this.hasLabel = false;\n });\n }\n };\n\n initialiseAsync = async () => {\n if (this.initialised) {\n return;\n }\n runInAction(() => {\n this.initialised = true;\n });\n runInAction(() => {\n this.loadReflectionsAsync();\n this.loadWorkflowDataAsync();\n this.getLabelAsync();\n });\n };\n}\n","import { observer } from 'mobx-react-lite';\nimport React, { createContext, PropsWithChildren, useContext } from 'react';\nimport { Card, CardBody, CardHeader, Col, Container, Row, Spinner } from 'reactstrap';\nimport GlobalStore from './GlobalStore';\nimport ReflectionsReportStore from './ReflectionsReportStore';\nimport FuturesReportStore from './FuturesReportStore';\nimport EngineeringReportStore from './EngineeringReportStore';\nimport MastersEngineeringReportStore from './MastersEngineeringReportStore';\n\nexport interface Stores {\n globalStore: GlobalStore\n reflectionsReportStore: ReflectionsReportStore\n futuresReportStore: FuturesReportStore\n engineeringReportStore: EngineeringReportStore\n mastersEngineeringReportStore: MastersEngineeringReportStore\n}\n\nexport const storesContext = createContext(undefined);\n\n/** A React Hook to use the app stores inside a provider */\nexport const useStores = () => {\n const stores = useContext(storesContext);\n if (!stores) {\n throw new Error('useStores must be used within a StoreProvider.');\n }\n return stores;\n};\n\nconst LoginBlock = observer(({ children }: PropsWithChildren) => {\n const { globalStore } = useStores();\n\n globalStore.initialiseAsync();\n\n if (globalStore.error) {\n throw globalStore.error;\n }\n\n if (globalStore.userInfo === undefined || globalStore.loggingIn) {\n return \n \n \n \n \n \n {globalStore.loggingIn ? 'Redirecting to login...' : 'Checking if you\\'re logged in...'}\n \n \n \n \n \n \n \n \n ;\n }\n\n return <>{children};\n});\n\nconst StoreProvider = ({ children }: PropsWithChildren) => {\n const globalStore = new GlobalStore();\n const stores = {\n globalStore,\n reflectionsReportStore: new ReflectionsReportStore(globalStore),\n futuresReportStore: new FuturesReportStore(globalStore),\n engineeringReportStore: new EngineeringReportStore(globalStore),\n mastersEngineeringReportStore: new MastersEngineeringReportStore(globalStore)\n };\n return (<>\n \n \n {children}\n \n \n );\n};\n\nexport default StoreProvider;\n"],"sourceRoot":""}