{"version":3,"sources":["styles/main.scss","img/avatars/001-tea.svg","img/avatars/002-bird.svg","img/avatars/003-plant-pot.svg","img/avatars/004-peach.svg","img/avatars/005-bird-1.svg","img/avatars/006-monkey.svg","img/avatars/007-summertime.svg","img/60minBadge.svg","img/stop-watch-ticks-only.svg","loc/langs.js","components/Header.js","helpers/ddOptions.js","components/EditActivities.js","components/AddActivity.js","components/ActivititiesContainer.js","components/Stopwatch.js","components/StopwatchContainer.js","components/App.js","index.js"],"names":["module","exports","spLCID","window","locStrings","LocalizedStrings","ChildhoodObesityToolActvityTracker","AddFamilyMember","About","EnterYourName","TypeInTheNameOfAnActivity","AddMoreActivities","Activity","Duration","Intensity","Mins","DeleteStopwatch","DeleteActivity","Swimming","Biking","Hiking","Running","Walking","BurningCalories","Chess","Weights","Basketball","Futbol","FootballAmerican","Volleyball","PingPong","Beach","Yes","No","HighIntensity","LowIntensity","ConfirmStopwatchDelete","ConfirmStopwatchDeleteMsg","ConfirmActivityDelete","ConfirmActivityDeleteMsg","setLanguage","strings","Header","props","state","menuOpen","modelOpen","aboutAppTxt","document","getElementById","innerHTML","handleStateChange","bind","onCloseMenu","onCloseModal","onOpenModal","console","log","menuRef","arguments","this","setState","isOpen","menuNode","className","pageTitle","classNames","modal","closeButton","open","onClose","center","dangerouslySetInnerHTML","__html","React","Component","activityOptions","availableActivities","value","label","title","arrSelectedActivities","split","length","push","filteredAvailableActivities","filter","item","includes","intensityOptions","avatarOptions","avatarTeaMug","avatarBird","avatarPlant","avatarPeach","avatarJoyusBird","avatarMonkey","avatarSunshine","EditActivities","handleOnChange","event","activityIndex","parseInt","currentTarget","attributes","index","fieldValue","updatedActivity","stopwatch","activities","name","updateActivity","stopwatchindex","handleOnClick","deleteActivity","map","activity","i","key","id","onChange","icon","intensity","disabled","option","placeholder","type","onFocus","e","target","select","min","duration","onClick","AddActivity","createActivity","preventDefault","Date","now","Math","floor","random","addActivity","ActivitiesContainer","updateStopwatch","inStopwatchBlurb","Stopwatch","GOAL_MINUTES","LAST_CELEBRATED_DURATION_DIVIDER","handleDeleteClick","deleteStopwatch","updatedStopwatch","handleOnChangeReactSelect","selectValue","avatar","checkIfConfettiShouldFire","totalMinutes","numBadges","getBadges","badgeEls","badgeCount","src","goalBadge","alt","totalLowIntesityMinutes","totalHighIntensityMinutes","fireConfetti","Option","components","SingleValue","topConfig","angle","spread","startVelocity","elementCount","dragFriction","stagger","width","height","colors","active","config","canDelete","style","textAlign","chronograph","size","position","top","left","transform","strokeWidth","styles","buildStyles","pathColor","highintensity","trailColor","lowintensity","options","data","isSearchable","classNamePrefix","menuPlacement","Stopwatches","stopwatches","addStopwatch","stopWatchIndex","deletStopwatch","confirmAlert","message","buttons","splice","calculateTotals","toString","replace","isValidNumber","newVal","isNaN","totalHighMins","reduce","prevTotal","totalLowMins","totalMins","App","aboveToolBlurb","StopwatchContainer","belowToolBlurb","ReactDOM","render"],"mappings":"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","file":"static/js/main.80f44926.chunk.js","sourcesContent":["// extracted by mini-css-extract-plugin\nmodule.exports = {\"highintensity\":\"#ce4a29\",\"lowintensity\":\"#e9b424\"};","module.exports = __webpack_public_path__ + \"static/media/001-tea.59a41bbf.svg\";","module.exports = __webpack_public_path__ + \"static/media/002-bird.abaf030b.svg\";","module.exports = __webpack_public_path__ + \"static/media/003-plant-pot.5fa16952.svg\";","module.exports = __webpack_public_path__ + \"static/media/004-peach.7ecbd697.svg\";","module.exports = __webpack_public_path__ + \"static/media/005-bird-1.dcfe275f.svg\";","module.exports = __webpack_public_path__ + \"static/media/006-monkey.56ab419c.svg\";","module.exports = __webpack_public_path__ + \"static/media/007-summertime.a36b9a77.svg\";","module.exports = __webpack_public_path__ + \"static/media/60minBadge.7f5a4a2c.svg\";","module.exports = __webpack_public_path__ + \"static/media/stop-watch-ticks-only.303cea40.svg\";","import LocalizedStrings from \"react-localization\";\r\n\r\nconst langs = {\r\n //English LCID\r\n \"1033\": {\r\n ChildhoodObesityToolActvityTracker:\r\n \"Childhood Obesity Tool – Activity Tracker\",\r\n AddFamilyMember: \"Add family member\",\r\n About: \"About this tool\",\r\n EnterYourName: \"Enter your name\",\r\n TypeInTheNameOfAnActivity: \"Type in the name of an activity\",\r\n AddMoreActivities: \"Add more activities\",\r\n Activity: \"Activity\",\r\n Duration: \"Duration\",\r\n Intensity: \"Intensity\",\r\n Mins: \"Mins\",\r\n DeleteStopwatch: \"Click to delete this stopwatch and all activities\",\r\n DeleteActivity: \"Click to delete activity\",\r\n Swimming: \"Swimming\",\r\n Biking: \"Biking\",\r\n Hiking: \"Hiking\",\r\n Running: \"Running\",\r\n Walking: \"Walking\",\r\n BurningCalories: \"Burning Calories\",\r\n Chess: \"Chess\",\r\n Weights: \"Weights\",\r\n Basketball: \"Basketball\",\r\n Futbol: \"Futbol\",\r\n FootballAmerican: \"Football (American)\",\r\n Volleyball: \"Volleyball\",\r\n PingPong: \"Ping Pong\",\r\n Beach: \"Beach Exercise\",\r\n Yes: \"Yes\",\r\n No: \"No\",\r\n HighIntensity: \"High Intensity\",\r\n LowIntensity: \"Low Intensity\",\r\n ConfirmStopwatchDelete: \"Confirm Stopwatch deletion\",\r\n ConfirmStopwatchDeleteMsg:\r\n \"Are you sure you want to delete this Stopwatch?\",\r\n ConfirmActivityDelete: \"Confirm Activity deletion\",\r\n ConfirmActivityDeleteMsg: \"Are you sure you want to delete this Activity?\"\r\n },\r\n //Spanish LCID\r\n \"3082\": {\r\n ChildhoodObesityToolActvityTracker:\r\n \"Herramienta para prevenir la obesidad infantil – Monitor de actividad\",\r\n AddFamilyMember: \"Añada otro miembro de la familia\",\r\n About: \"Sobre\",\r\n EnterYourName: \"Introduzca su nombre\",\r\n TypeInTheNameOfAnActivity: \"Escriba el nombre de la actividad\",\r\n AddMoreActivities: \"Añada más actividades\",\r\n Activity: \"Actividad\",\r\n Duration: \"Duración\",\r\n Intensity: \"Intensidad\",\r\n Mins: \"min\",\r\n DeleteStopwatch:\r\n \"Pulse aquí para borrar este cronómetro y todas las actividades\",\r\n DeleteActivity: \"Pulse aquí para borrar la actividad\",\r\n Swimming: \"Natación\",\r\n Biking: \"Ciclismo\",\r\n Hiking: \"Senderismo\",\r\n Running: \"Correr\",\r\n Walking: \"Caminar\",\r\n BurningCalories: \"Quemar calorías\",\r\n Chess: \"Ajedrez (jugar ajedrez)\",\r\n Weights: \"Pesas (ejercicio con pesas)\",\r\n Basketball: \"Baloncesto\",\r\n Futbol: \"Fútbol\",\r\n FootballAmerican: \"Fútbol americano\",\r\n Volleyball: \"Voleibol\",\r\n PingPong: \"Tenis de mesa\",\r\n Beach: \"la playa\",\r\n Yes: \"Si\",\r\n No: \"No\",\r\n HighIntensity: \"es-High Intensity\",\r\n LowIntensity: \"es-Low Intensity\",\r\n ConfirmStopwatchDelete: \"es-Confirm Stopwatch deletion\",\r\n ConfirmStopwatchDeleteMsg:\r\n \"es-Are you sure you want to delete this Stopwatch?\",\r\n ConfirmActivityDelete: \"es-Confirm Activity deletion\",\r\n ConfirmActivityDeleteMsg:\r\n \"es-Are you sure you want to delete this Activity?\"\r\n }\r\n};\r\n\r\n// Get LCID from SharePoint.\r\nlet spLCID = window[\"_stopwatchContextInfo\"][\"localeLCID\"];\r\nlet locStrings = new LocalizedStrings(langs);\r\n// Set the lang.\r\nlocStrings.setLanguage(spLCID);\r\n\r\nexport let strings = { ...locStrings };\r\n","import React from \"react\";\r\nimport { slide as Menu } from \"react-burger-menu\";\r\nimport Modal from \"react-responsive-modal\";\r\nimport { strings } from \"../loc/langs\";\r\n\r\nclass Header extends React.Component {\r\n menuNode;\r\n\r\n constructor(props) {\r\n super(props);\r\n\r\n this.state = {\r\n menuOpen: false,\r\n modelOpen: false\r\n };\r\n\r\n // Get static content from page layout (unrelated to React app).\r\n this.aboutAppTxt = window.document.getElementById(\r\n \"about-app-text\"\r\n ).innerHTML;\r\n\r\n // Bindings.\r\n this.handleStateChange = this.handleStateChange.bind(this);\r\n this.onCloseMenu = this.onCloseMenu.bind(this);\r\n this.onCloseModal = this.onCloseModal.bind(this);\r\n this.onOpenModal = this.onOpenModal.bind(this);\r\n\r\n console.log(this.menuRef);\r\n }\r\n\r\n componentDidMount() {}\r\n\r\n handleStateChange(state) {\r\n console.log(arguments);\r\n this.setState({ menuOpen: state.isOpen });\r\n }\r\n\r\n onCloseMenu() {\r\n this.setState({ menuOpen: false });\r\n }\r\n\r\n onOpenModal() {\r\n // Close the hamburger menu.\r\n this.onCloseMenu();\r\n\r\n this.setState({ modelOpen: true });\r\n }\r\n onCloseModal() {\r\n this.setState({ modelOpen: false });\r\n }\r\n\r\n render() {\r\n console.log(this.menuNode);\r\n\r\n return (\r\n
\r\n
\r\n
\r\n

\r\n {window[\"_stopwatchContextInfo\"].pageTitle}\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Header;\r\n","import { strings } from \"../loc/langs\";\r\nimport avatarTeaMug from \"../img/avatars/001-tea.svg\";\r\nimport avatarBird from \"../img/avatars/002-bird.svg\";\r\nimport avatarPlant from \"../img/avatars/003-plant-pot.svg\";\r\nimport avatarPeach from \"../img/avatars/004-peach.svg\";\r\nimport avatarJoyusBird from \"../img/avatars/005-bird-1.svg\";\r\nimport avatarMonkey from \"../img/avatars/006-monkey.svg\";\r\nimport avatarSunshine from \"../img/avatars/007-summertime.svg\";\r\n\r\nexport const activityOptions = (function() {\r\n const availableActivities = [\r\n { value: \"generic\", label: \"4\", title: `${strings[\"Activity\"]}` },\r\n { value: \"swimming\", label: \"\", title: `${strings[\"Swimming\"]}` },\r\n { value: \"biking\", label: \"\", title: `${strings[\"Biking\"]}` },\r\n { value: \"hiking\", label: \"\", title: `${strings[\"Hiking\"]}` },\r\n { value: \"running\", label: \"\", title: `${strings[\"Running\"]}` },\r\n { value: \"walking\", label: \"\", title: `${strings[\"Walking\"]}` },\r\n { value: \"burning\", label: \"\", title: `${strings[\"BurningCalories\"]}` },\r\n { value: \"chess\", label: \"\", title: `${strings[\"Chess\"]}` },\r\n { value: \"weights\", label: \"\", title: `${strings[\"Weights\"]}` },\r\n { value: \"bball\", label: \"\", title: `${strings[\"Basketball\"]}` },\r\n { value: \"futbol\", label: \"\", title: `${strings[\"Futbol\"]}` },\r\n { value: \"football\", label: \"\", title: `${strings[\"FootballAmerican\"]}` },\r\n { value: \"vball\", label: \"\", title: `${strings[\"Volleyball\"]}` },\r\n { value: \"pingpong\", label: \"\", title: `${strings[\"Ping Pong\"]}` },\r\n { value: \"beach\", label: \"\", title: `${strings[\"Beach\"]}` }\r\n ];\r\n\r\n // Get the activities from the stopwatch context which is passed in from SharePoint.\r\n // Returns in comma delimited format, ex: \"bike,vball,bball\".\r\n let selectedActivities =\r\n window[\"_stopwatchContextInfo\"][\"selectedActivityIcons\"];\r\n // Convert to array.\r\n let arrSelectedActivities = selectedActivities.split(\", \");\r\n\r\n if (arrSelectedActivities.length === 0 || arrSelectedActivities[0] == \"\") {\r\n arrSelectedActivities.push(\"generic\");\r\n }\r\n\r\n // Return a filtered array of available activities.\r\n let filteredAvailableActivities = availableActivities.filter(function(item) {\r\n return arrSelectedActivities.includes(item.value);\r\n });\r\n\r\n // Return the filtered activities or all avtivities if there are no filtered activities.\r\n return filteredAvailableActivities.length !== 0\r\n ? filteredAvailableActivities\r\n : availableActivities;\r\n})();\r\n\r\nexport const intensityOptions = [\r\n { value: \"low\", label: \"\", title: `${strings[\"LowIntensity\"]}` },\r\n { value: \"high\", label: \"\", title: `${strings[\"HighIntensity\"]}` }\r\n];\r\n\r\nexport const avatarOptions = [\r\n { value: \"tea mug\", label: `${avatarTeaMug}` },\r\n { value: \"bird\", label: `${avatarBird}` },\r\n { value: \"plant\", label: `${avatarPlant}` },\r\n { value: \"peach\", label: `${avatarPeach}` },\r\n { value: \"joyusbird\", label: `${avatarJoyusBird}` },\r\n { value: \"monkey\", label: `${avatarMonkey}` },\r\n { value: \"sunshine\", label: `${avatarSunshine}` }\r\n];\r\n","import React from \"react\";\r\nimport { activityOptions, intensityOptions } from \"../helpers/ddOptions\";\r\nimport { strings } from \"../loc/langs\";\r\n\r\nclass EditActivities extends React.Component {\r\n handleOnChange = event => {\r\n let activityIndex = parseInt(\r\n event.currentTarget.attributes.index.value,\r\n 10\r\n );\r\n let fieldValue = event.currentTarget.value;\r\n\r\n // Update the activity.\r\n // Take a copy of the current activity.\r\n const updatedActivity = {\r\n ...this.props.stopwatch.activities[activityIndex],\r\n [event.currentTarget.name]: fieldValue\r\n };\r\n\r\n // The updateActivity method lives in the StopwatchContainer component (where the state is).\r\n this.props.updateActivity(\r\n this.props.stopwatchindex,\r\n activityIndex,\r\n updatedActivity\r\n );\r\n };\r\n\r\n handleOnClick = event => {\r\n let activityIndex = parseInt(\r\n event.currentTarget.attributes.index.value,\r\n 10\r\n );\r\n\r\n // The deleteActivity method lives in the StopwatchContainer component (where the state is).\r\n this.props.deleteActivity(this.props.stopwatchindex, activityIndex);\r\n };\r\n\r\n render() {\r\n const { activities } = this.props.stopwatch;\r\n\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {activities.map((activity, i) => (\r\n \r\n \r\n \r\n \r\n \r\n \r\n ))}\r\n \r\n
\r\n
{strings[\"Activity\"]}
\r\n
\r\n
{strings[\"Duration\"]}
\r\n
\r\n
{strings[\"Intensity\"]}
\r\n
\r\n
\r\n
\r\n
\r\n \r\n {activityOptions.map((option, i) => (\r\n \r\n {option.label}\r\n \r\n ))}\r\n \r\n e.target.select()}\r\n />\r\n
\r\n
\r\n
\r\n e.target.select()}\r\n />\r\n
\r\n
\r\n
\r\n \r\n {intensityOptions.map((option, i) => (\r\n \r\n {option.label}\r\n \r\n ))}\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default EditActivities;\r\n","import React from \"react\";\r\nimport { activityOptions, intensityOptions } from \"../helpers/ddOptions\";\r\nimport { strings } from \"../loc/langs\";\r\n\r\nclass AddActivity extends React.Component {\r\n createActivity = event => {\r\n // Prevent pg refresh.\r\n event.preventDefault();\r\n\r\n const activity = {\r\n id: `A${Date.now()}`,\r\n icon:\r\n activityOptions[Math.floor(Math.random() * activityOptions.length)]\r\n .value,\r\n name: \"\",\r\n duration: 0,\r\n intensity: intensityOptions[0].value\r\n };\r\n\r\n // The addActivity method lives in the StopwatchContainer component (where the state is).\r\n this.props.addActivity(this.props.stopwatchindex, activity);\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default AddActivity;\r\n","import React from \"react\";\r\nimport EditActivities from \"./EditActivities\";\r\nimport AddActivity from \"./AddActivity\";\r\n\r\nclass ActivitiesContainer extends React.Component {\r\n render() {\r\n return (\r\n
\r\n \r\n\r\n
\r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default ActivitiesContainer;\r\n","import React from \"react\";\r\nimport colors from \"../styles/main.scss\";\r\nimport ActivitiesContainer from \"./ActivititiesContainer\";\r\nimport Select, { components } from \"react-select\";\r\nimport goalBadge from \"../img/60minBadge.svg\";\r\nimport chronograph from \"../img/stop-watch-ticks-only.svg\";\r\nimport { avatarOptions } from \"../helpers/ddOptions\";\r\nimport {\r\n CircularProgressbar,\r\n CircularProgressbarWithChildren,\r\n buildStyles\r\n} from \"react-circular-progressbar\";\r\nimport \"react-circular-progressbar/dist/styles.css\";\r\nimport { strings } from \"../loc/langs\";\r\nimport Confetti from \"react-dom-confetti\";\r\nimport { Checkmark } from \"react-checkmark\";\r\n\r\nclass Stopwatch extends React.Component {\r\n // 60 minutes is the default goal to show badge.\r\n GOAL_MINUTES = 60;\r\n LAST_CELEBRATED_DURATION_DIVIDER = 0;\r\n\r\n // Gets called when clicking on deleting stopwatch.\r\n handleDeleteClick = () => {\r\n this.props.deleteStopwatch(this.props.stopwatchindex);\r\n };\r\n\r\n // Change event handler.\r\n handleOnChange = event => {\r\n // Update the current stopwatch.\r\n // Take a copy of the current stopwatch.\r\n const updatedStopwatch = {\r\n ...this.props.stopwatch,\r\n [event.currentTarget.name]: event.currentTarget.value\r\n };\r\n\r\n this.props.updateStopwatch(this.props.stopwatchindex, updatedStopwatch);\r\n };\r\n\r\n // Change event handler for React-Select component.\r\n handleOnChangeReactSelect = selectValue => {\r\n // Update the current stopwatch.\r\n // Take a copy of the current stopwatch.\r\n const updatedStopwatch = {\r\n ...this.props.stopwatch,\r\n avatar: selectValue\r\n };\r\n\r\n this.props.updateStopwatch(this.props.stopwatchindex, updatedStopwatch);\r\n };\r\n\r\n checkIfConfettiShouldFire = (totalMinutes) => {\r\n const numBadges = this.getBadges(totalMinutes).length;\r\n\r\n if(numBadges < this.LAST_CELEBRATED_DURATION_DIVIDER) {\r\n this.LAST_CELEBRATED_DURATION_DIVIDER = numBadges;\r\n return false;\r\n }\r\n\r\n if(numBadges !== this.LAST_CELEBRATED_DURATION_DIVIDER) {\r\n this.LAST_CELEBRATED_DURATION_DIVIDER = numBadges;\r\n\r\n return true\r\n } else {\r\n return false\r\n }\r\n }\r\n\r\n getBadges = totalMinutes => {\r\n const badgeEls = [];\r\n const badgeCount = Math.floor(totalMinutes / this.GOAL_MINUTES);\r\n\r\n for (let i = 0; i < badgeCount; i++) {\r\n badgeEls.push(\r\n \r\n );\r\n }\r\n\r\n return badgeEls;\r\n };\r\n\r\n render() {\r\n // Destructuring\r\n const {\r\n name,\r\n avatar,\r\n totalMinutes,\r\n totalLowIntesityMinutes,\r\n totalHighIntensityMinutes\r\n } = this.props.stopwatch;\r\n\r\n const fireConfetti = this.checkIfConfettiShouldFire(totalMinutes);\r\n\r\n // React Select mods.\r\n const { Option, SingleValue } = components;\r\n const IconOption = props => (\r\n \r\n );\r\n const ValueOption = props => (\r\n \r\n \r\n \r\n );\r\n\r\n // Confetti config.\r\n // original config\r\n const topConfig = {\r\n angle: \"90\",\r\n spread: \"150\",\r\n startVelocity: 45,\r\n elementCount: \"190\",\r\n dragFriction: 0.1,\r\n duration: \"9000\",\r\n stagger: 0,\r\n width: \"10px\",\r\n height: \"10px\",\r\n colors: [\"#a864fd\", \"#29cdff\", \"#78ff44\", \"#ff718d\", \"#fdff6a\"]\r\n };\r\n // new config\r\n const config = {\r\n angle: \"90\",\r\n spread: \"61\",\r\n startVelocity: \"84\",\r\n elementCount: \"166\",\r\n dragFriction: \"0.11\",\r\n duration: \"7930\",\r\n stagger: \"7\",\r\n width: \"16px\",\r\n height: \"16px\",\r\n colors: [\"#a864fd\", \"#29cdff\", \"#78ff44\", \"#ff718d\", \"#fdff6a\"]\r\n };\r\n\r\n return (\r\n = this.GOAL_MINUTES ? \"goal-met\" : \"goal-not-met\"\r\n }`}\r\n >\r\n \r\n \r\n
\r\n
{this.getBadges(totalMinutes)}
\r\n {this.props.canDelete ? (\r\n
\r\n \r\n \r\n \r\n
\r\n ) : null}\r\n
\r\n\r\n

\r\n {\" \"}\r\n {this.props.stopwatch.name}\r\n

\r\n
\r\n \"\"\r\n {totalMinutes >= this.GOAL_MINUTES && (\r\n
\r\n \r\n
\r\n )}\r\n = this.GOAL_MINUTES ? \"goal-met\" : \"\"\r\n }`}\r\n >\r\n {totalMinutes}\r\n {strings[\"Mins\"]}\r\n
\r\n\r\n \r\n \r\n
\r\n \r\n
\r\n \r\n \r\n \r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n\r\n \r\n\r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default Stopwatch;\r\n","import React from 'react';\r\nimport Stopwatch from './Stopwatch';\r\nimport { avatarOptions } from '../helpers/ddOptions';\r\nimport { confirmAlert } from 'react-confirm-alert'; // Import\r\nimport 'react-confirm-alert/src/react-confirm-alert.css'; // Import css\r\nimport { activityOptions, intensityOptions } from '../helpers/ddOptions';\r\nimport { strings } from '../loc/langs';\r\n\r\nclass Stopwatches extends React.Component {\r\n // Initially set the state.\r\n state = {\r\n stopwatches: []\r\n };\r\n\r\n componentDidMount() {\r\n if (this.state.stopwatches.length === 0) {\r\n this.addStopwatch();\r\n }\r\n }\r\n\r\n // Adds a stopwatch for a new family member.\r\n addStopwatch = () => {\r\n // Take a copy of the existing state.\r\n const stopwatches = [...this.state.stopwatches];\r\n\r\n // Create an empty activity to begin with.\r\n const activity = {\r\n id: `A${Date.now()}`,\r\n icon: activityOptions[Math.floor(Math.random() * activityOptions.length)].value,\r\n name: '',\r\n duration: 0,\r\n intensity: intensityOptions[0].value\r\n };\r\n\r\n // Add our new stopwatch object to that stopwatches array w/ a unique index.\r\n stopwatches.push({\r\n id: `SW${Date.now()}`,\r\n name: '',\r\n avatar: avatarOptions[Math.floor(Math.random() * avatarOptions.length)],\r\n totalMinutes: 0,\r\n totalLowIntesityMinutes: 0,\r\n totalHighIntensityMinutes: 0,\r\n activities: [activity]\r\n });\r\n // Set the new stopwatches array to state.\r\n this.setState({\r\n stopwatches: stopwatches\r\n });\r\n };\r\n\r\n // Updates a stopwatch.\r\n updateStopwatch = (stopWatchIndex, stopwatch) => {\r\n // Take a copy of the existing state.\r\n const stopwatches = [...this.state.stopwatches];\r\n // Do some updates here..\r\n stopwatches[stopWatchIndex] = stopwatch;\r\n // Set the new stopwatches array to state.\r\n this.setState({\r\n stopwatches: stopwatches\r\n });\r\n };\r\n\r\n // Delete a stopwatch.\r\n deletStopwatch = stopWatchIndex => {\r\n // Take a copy of the existing state.\r\n const stopwatches = [...this.state.stopwatches];\r\n\r\n confirmAlert({\r\n title: strings['ConfirmStopwatchDelete'],\r\n message: strings['ConfirmStopwatchDeleteMsg'],\r\n buttons: [\r\n {\r\n label: `${strings['Yes']}`,\r\n onClick: () => {\r\n // Remove the stopwatch element by index.\r\n stopwatches.splice(stopWatchIndex, 1);\r\n // Set the state with new array.\r\n this.setState({\r\n stopwatches: stopwatches\r\n });\r\n }\r\n },\r\n {\r\n label: `${strings['No']}`,\r\n onClick: () => {\r\n return;\r\n }\r\n }\r\n ]\r\n });\r\n };\r\n\r\n // Add activity to a stopwatch.\r\n addActivity = (stopWatchIndex, activity) => {\r\n // Take a copy of the existing state.\r\n const stopwatches = [...this.state.stopwatches];\r\n // Add our new activity object to the activities array in the stopwatch object.\r\n stopwatches[stopWatchIndex].activities.push(activity);\r\n // Set the new stopwatches array to state.\r\n this.setState(\r\n {\r\n stopwatches: stopwatches\r\n },\r\n this.calculateTotals(stopWatchIndex)\r\n );\r\n };\r\n\r\n // Update activity in a stopwatch.\r\n updateActivity = (stopWatchIndex, activityIndex, activity) => {\r\n // fix duration\r\n if (parseInt(activity.duration) === 0) {\r\n activity.duration = '0';\r\n } else {\r\n activity.duration = activity.duration.toString().replace(/^0+/, '');\r\n }\r\n\r\n // Take a copy of the existing state.\r\n const stopwatches = [...this.state.stopwatches];\r\n // Update the activity object in the activities array within the stopwatch array of objects.\r\n stopwatches[stopWatchIndex].activities[activityIndex] = activity;\r\n // Set the new stopwatches array to state.\r\n this.setState(\r\n {\r\n stopwatches: stopwatches\r\n },\r\n this.calculateTotals(stopWatchIndex)\r\n );\r\n };\r\n\r\n // Delete an activity form a stopwatch.\r\n deleteActivity = (stopWatchIndex, activityIndex) => {\r\n // Take a copy of the existing state.\r\n const stopwatches = [...this.state.stopwatches];\r\n\r\n confirmAlert({\r\n title: strings['ConfirmActivityDelete'],\r\n message: strings['ConfirmActivityDeleteMsg'],\r\n buttons: [\r\n {\r\n label: `${strings['Yes']}`,\r\n onClick: () => {\r\n // Remove the activity element inside of the activities array by index.\r\n stopwatches[stopWatchIndex].activities.splice(activityIndex, 1);\r\n // Set the state with new array.\r\n this.setState(\r\n {\r\n stopwatches: stopwatches\r\n },\r\n this.calculateTotals(stopWatchIndex)\r\n );\r\n }\r\n },\r\n {\r\n label: `${strings['No']}`,\r\n onClick: () => {\r\n return;\r\n }\r\n }\r\n ]\r\n });\r\n };\r\n\r\n isValidNumber = value => {\r\n const newVal = parseInt(value, 10);\r\n\r\n return !isNaN(newVal);\r\n };\r\n\r\n // Calculate totals.\r\n calculateTotals = stopWatchIndex => {\r\n // Take a copy of the existing state.\r\n const stopwatches = [...this.state.stopwatches];\r\n\r\n // Calculate total high intesity activity minutes.\r\n const totalHighMins = stopwatches[stopWatchIndex].activities.reduce((prevTotal, activity) => {\r\n if (!this.isValidNumber(activity.duration)) {\r\n activity.duration = 0;\r\n }\r\n\r\n if (activity.intensity === 'high') {\r\n return prevTotal + parseInt(activity.duration, 10);\r\n }\r\n\r\n return prevTotal;\r\n }, 0);\r\n\r\n // Calculate total low intensity activity minutes.\r\n const totalLowMins = stopwatches[stopWatchIndex].activities.reduce((prevTotal, activity) => {\r\n if (!this.isValidNumber(activity.duration)) {\r\n activity.duration = 0;\r\n }\r\n\r\n if (activity.intensity === 'low') {\r\n return prevTotal + parseInt(activity.duration, 10);\r\n }\r\n\r\n return prevTotal;\r\n }, 0);\r\n\r\n const totalMins = totalHighMins + totalLowMins;\r\n\r\n // Update the stopwatch object.\r\n stopwatches[stopWatchIndex].totalMinutes = totalMins;\r\n stopwatches[stopWatchIndex].totalLowIntesityMinutes = totalLowMins;\r\n stopwatches[stopWatchIndex].totalHighIntensityMinutes = totalHighMins;\r\n // Set the new stopwatches array to state.\r\n this.setState({\r\n stopwatches: stopwatches\r\n });\r\n };\r\n\r\n render() {\r\n return (\r\n
\r\n
\r\n {this.state.stopwatches.map((stopwatch, i) => {\r\n return (\r\n 1}\r\n />\r\n );\r\n })}\r\n
\r\n
\r\n \r\n
\r\n
\r\n );\r\n }\r\n}\r\n\r\nexport default Stopwatches;\r\n","import React from \"react\";\r\nimport Header from \"./Header\";\r\nimport StopwatchContainer from \"./StopwatchContainer\";\r\n\r\n// TODO - import localization file.\r\n\r\nclass App extends React.Component {\r\n render() {\r\n return (\r\n
\r\n
\r\n
\r\n \r\n \r\n \r\n );\r\n }\r\n}\r\n\r\nexport default App;\r\n","import \"react-app-polyfill/ie9\";\r\nimport \"react-app-polyfill/stable\";\r\nimport \"core-js/es\";\r\nimport \"mutation-observer\";\r\nimport React from \"react\";\r\nimport ReactDOM from \"react-dom\";\r\nimport App from \"./components/App\";\r\nimport \"./styles/aap.scss\";\r\nimport \"./styles/main.scss\";\r\n\r\nReactDOM.render(, document.getElementById(\"root\"));\r\n"],"sourceRoot":""}