{"version":3,"sources":["locales/index.js","locales/en/resources.js","locales/fr/resources.js","i18n.js","components/Common/Message.jsx","utils/index.js","fitTrackeeApi/index.js","actions/index.js","actions/application.js","components/Admin/AdminApplication.jsx","components/Admin/AdminStats.jsx","components/Admin/AdminDashboard.jsx","components/Admin/AdminSports.jsx","components/Common/Pagination.jsx","components/Admin/AdminUsers.jsx","components/Others/NotFound.jsx","components/Admin/index.jsx","utils/workouts.js","fitTrackeeApi/auth.js","actions/user.js","actions/workouts.js","components/Common/CustomTextArea.jsx","components/Workout/WorkoutForms/FormWithGpx.jsx","components/Workout/WorkoutForms/FormWithoutGpx.jsx","components/Workout/WorkoutAddOrEdit.jsx","components/Workout/WorkoutAdd.jsx","components/Common/CustomModal.jsx","components/Workout/WorkoutDisplay/WorkoutCardHeader.jsx","components/Workout/WorkoutDisplay/WorkoutCharts.jsx","components/Workout/WorkoutDisplay/WorkoutWeather.jsx","components/Workout/WorkoutDisplay/WorkoutDetails.jsx","components/Workout/WorkoutDisplay/Map.jsx","components/Workout/WorkoutDisplay/WorkoutMap.jsx","components/Workout/WorkoutDisplay/WorkoutNoMap.jsx","components/Workout/WorkoutDisplay/WorkoutNotes.jsx","components/Workout/WorkoutDisplay/WorkoutSegments.jsx","components/Workout/WorkoutDisplay/index.jsx","components/Workout/WorkoutEdit.jsx","components/Workout/index.jsx","components/Common/NoWorkouts.jsx","components/Workouts/WorkoutsFilter.jsx","components/Common/StaticMap.jsx","components/Workouts/WorkoutsList.jsx","components/Workouts/index.jsx","components/User/ProfileDetail.jsx","components/User/CurrentUserProfile.jsx","components/Dashboard/CalendarWorkout.jsx","components/Dashboard/CalendarWorkouts.jsx","components/Dashboard/Calendar.jsx","components/Dashboard/Records.jsx","actions/stats.js","utils/stats.js","components/Common/Stats/CustomTooltip.jsx","components/Common/Stats/CustomLabel.jsx","components/Common/Stats/StatsChart.jsx","components/Common/Stats/index.jsx","components/Dashboard/Statistics.jsx","components/Dashboard/UserStatistics.jsx","components/Dashboard/WorkoutCard.jsx","components/Dashboard/index.jsx","components/Footer/index.jsx","images/flags/en.svg","components/User/Logout.jsx","images/flags/fr.svg","images/password.svg","components/NavBar/LanguageDropdown.jsx","components/NavBar/index.jsx","images/mail-send.svg","components/User/PasswordReset.jsx","components/User/ProfileEdit.jsx","components/Statistics/index.jsx","components/User/Form.jsx","components/User/UserForm.jsx","components/User/UserProfile.jsx","components/App.jsx","components/Root.jsx","registerServiceWorker.js","reducers/initial.js","utils/history.js","reducers/index.js","index.js"],"names":["resources","en","workouts","administration","common","dashboard","messages","sports","statistics","user","fr","i18n","use","XHR","LanguageDetector","init","debug","process","lng","fallbackLng","keySeparator","interpolation","escapeValue","ns","defaultNS","Message","this","props","message","t","singleMessage","split","length","className","value","map","msg","id","React","PureComponent","suffixes","getFileSize","fileSize","asText","i","Math","floor","log","size","suffix","pow","toFixed","apiUrl","userFilters","key","label","sortOrders","isLoggedIn","window","localStorage","authToken","generateIds","arr","val","obj","createApiRequest","params","headers","noAuthorization","Authorization","getItem","type","requestParams","method","body","JSON","stringify","request","Request","url","fetch","then","response","status","json","catch","error","console","Error","getDateWithTZ","date","tz","dt","DateTime","fromISO","format","Date","setZone","parse","toFormat","sortValues","a","b","valueALabel","toLowerCase","valueBLabel","translateValues","values","sort","formatUrl","pathname","query","username","Object","keys","filter","index","FitTrackeeApi","target","data","setData","setPaginatedData","pagination","setError","setLoading","loading","updateSportsData","updateUsersData","getOrUpdateData","action","canDispatch","dispatch","isNaN","ret","users","updateLanguage","language","i18next","changeLanguage","setLanguage","setAppConfig","getAppData","FitTrackeeGenericApi","getData","AdminApplication","context","state","formData","initForm","prevProps","appConfig","k","includes","setState","e","name","isInEdition","loadAppConfig","onHandleConfigFormSubmit","onSubmit","preventDefault","htmlFor","title","min","max_users","onChange","handleFormChange","step","max_single_file_size","max_zip_file_size","gpx_limit_import","onClick","history","push","Component","connect","assign","updateData","Array","isArray","updateAppConfig","AdminStats","loadAppStats","appStats","uploadDirSize","uploads_dir_size","withTranslation","application","AdminDashboard","to","is_registration_enabled","AdminSports","loadSports","updateSport","sport","src","img","alt","is_active","has_workouts","sportId","isActive","Pagination","newQuery","page","pages","has_prev","getUrl","from","_","has_next","AdminUsers","per_page","order_by","order","loadUsers","initState","location","authUser","updateUser","translatedFilters","translatedSortOrders","updatePage","picture","now","email","created_at","nb_workouts","admin","disabled","router","userName","isAdmin","NotFound","useTranslation","Helmet","config","exact","path","render","component","workoutColors","recordsLabels","record_type","formatWorkoutDate","dateTime","dateFormat","timeFormat","workout_date","workout_time","formatWorkoutDuration","seconds","newDate","subHours","setSeconds","getTime","formatChartData","chartData","time","duration","sortSports","sportALabel","sportBLabel","translateSports","onlyActive","PictureError","ProfileUpdateError","loadProfile","getProfile","isAuthenticated","profil","handleUserFormSubmit","formType","errMsg","password","password_conf","RegisterFormControl","loginOrRegisterOrPasswordReset","setItem","auth_token","deleteUser","deleteData","r","setGpx","gpxContent","setChartData","editWorkout","form","getMoreWorkouts","CustomTextArea","text","defaultValue","changeEvent","onTextChange","charLimit","maxLength","event","handleOnChange","onAddWorkout","FormData","append","gpxFile","files","notes","addDataWithFile","addWorkout","onEditWorkout","workout","sport_id","translatedSports","zipTooltip","fileSizeLimit","encType","required","Trans","i18nKey","accept","onAddOrEdit","d","distance","addData","workoutDate","workoutTime","workoutDateTime","timezone","pattern","placeholder","WorkoutAddEdit","withGpx","with_gpx","checked","handleRadioChange","WorkoutAddOrEdit","CustomModal","close","confirm","WorkoutCardHeader","dataType","displayModal","segmentId","previousUrl","previous_workout","nextUrl","segments","next_workout","WorkoutCharts","displayDistance","dataToHide","loadWorkoutData","loadSegmentData","find","splice","indexOf","xDataKey","xScale","updateCoordinates","xInterval","parseInt","displayData","handleLegendChange","height","margin","top","right","left","bottom","onMouseMove","activePayload","onMouseLeave","allowDecimals","dataKey","offset","position","scale","interval","tickFormatter","angle","yAxisId","orientation","fill","stroke","dot","unit","strokeWidth","labelFormatter","workoutId","chart_data","getWorkoutChartData","getSegmentChartData","WorkoutWeather","weather_start","weather_end","icon","summary","Number","temperature","humidity","wind","WorkoutDetails","withPauses","pauses","moving","records","record","ave_speed","max_speed","min_alt","max_alt","ascent","descent","Map","bounds","coordinates","jsonData","mapAttribution","useMap","fitBounds","TileLayer","attribution","GeoJSON","hash","latitude","Marker","longitude","WorkoutMap","zoom","loadWorkoutGpx","loadSegmentGpx","gpx","DOMParser","parseFromString","togeojson","getGeoJson","MapContainer","boundsOptions","padding","map_attribution","getWorkoutGpx","getSegmentGpx","WorkoutNoMap","WorkoutNotes","WorkoutSegments","segment","workout_id","WorkoutDisplay","loadWorkout","match","prevState","payload","onDeleteWorkout","s","Promise","resolve","WorkoutEdit","WorkoutAdd","NoWorkouts","WorkoutsFilter","loadWorkouts","updateParams","StaticMap","display","href","rel","WorkoutsList","scope","idx","Workouts","loadMoreWorkouts","paginationEnd","setParams","onDeletePicture","deletePicture","onUploadPicture","reset","uploadPicture","editable","isDeletable","createdAt","birthDate","birth_date","first_name","last_name","bio","weekm","go","CalendarWorkout","isDisabled","isMore","sportImg","rec","CalendarWorkouts","isHidden","dayWorkouts","act","handleDisplayMore","getStartAndEndMonth","weekStartOnMonday","monthStart","startOfMonth","monthEnd","endOfMonth","weekStartsOn","start","startOfWeek","end","endOfWeek","Calendar","calendarDate","currentMonth","startDate","endDate","loadMonthWorkouts","localeOptions","handlePrevMonth","handleNextMonth","days","addDays","day","isSameDay","reverse","rows","formattedDate","filterWorkouts","isSameMonth","isWeekEnd","isToday","addMonths","updateStateDate","subMonths","locale","enGB","renderHeader","renderDays","renderCells","calendarWorkouts","RecordsCard","recordsBySport","reduce","sportList","recordType","formatRecord","sportLabel","colSpan","xAxisFormats","xAxis","formatDuration","totalSeconds","formatWithDay","String","hours","padStart","minutes","formatValue","displayedData","dateIncrement","addYears","formatStats","stats","displayedSports","nbWorkoutsStats","distanceStats","durationStats","x","xAxisFormat","dataNbWorkouts","dataDistance","dataDuration","total_distance","total_duration","startOfYear","CustomTooltip","active","total","p","style","color","CustomLabel","y","width","formattedValue","fontSize","textAnchor","dominantBaseline","StatsCharts","content","isAnimationActive","stackId","Statistics","statsParams","displayEmpty","getStats","Stats","UserStatistics","nb_sports","WorkoutCard","DashBoard","Footer","_path","_path2","_path3","_path4","_path5","_path6","_path7","_path8","_g","_path9","_path10","_path11","_path12","Logout","UserLogout","_excluded","_extends","arguments","source","prototype","hasOwnProperty","call","apply","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","SvgEn","_ref","svgRef","titleId","enableBackground","viewBox","xmlns","ref","ForwardRef","SvgFr","_g2","_g3","_g4","_g5","_g6","_g7","languages","selected","flag","Dropdown","isOpen","onUpdateLanguage","toggleDropdown","lang","NavBar","LanguageDropdown","SvgPassword","xmlnsXlink","xmlSpace","SvgMailSend","PasswordReset","ProfileEdit","onDeleteUser","onHandleProfileFormSubmit","readOnly","postData","handleProfileFormSubmit","durations","updateDisplayedSports","subYears","endOfYear","concat","forward","newStart","newEnd","subWeeks","addWeeks","sports_list","handleOnClickArrows","handleOnChangeDuration","handleOnChangeSports","Form","pageTitle","charAt","toUpperCase","slice","isRegistrationAllowed","userForm","onHandleFormChange","UserForm","emptyForm","onHandleUserFormSubmit","token","UserProfile","loadUser","currentUser","App","Dashboard","CurrentUserProfile","Workout","Admin","Root","store","children","isLocalhost","Boolean","hostname","registerValidSW","swUrl","navigator","serviceWorker","register","registration","onupdatefound","installingWorker","installing","onstatechange","controller","originalHistory","emptyData","handleDataAndError","initial","removeItem","routesWithoutAuthentication","updatePath","toPath","newPath","pathInterceptor","createBrowserHistory","args","replace","listen","scrollTo","rootNode","document","getElementById","createStore","combineReducers","connectRouter","__STATE__","__REDUX_DEVTOOLS_EXTENSION_COMPOSE__","compose","applyMiddleware","routerMiddleware","thunk","ReactDOM","I18nextProvider","URL","origin","addEventListener","get","ready","unregister","reload","checkValidServiceWorker","registerServiceWorker"],"mappings":"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","file":"static/js/main.18465477.chunk.js","sourcesContent":["import { enResources } from './en/resources'\nimport { frResources } from './fr/resources'\n\nexport const resources = {\n en: enResources,\n fr: frResources,\n}\n","import EnWorkoutsTranslations from './workouts.json'\nimport EnAdministrationTranslations from './administration.json'\nimport EnCommonTranslations from './common.json'\nimport EnDashboardTranslations from './dashboard.json'\nimport EnMessagesTranslations from './messages.json'\nimport EnSportsTranslations from './sports.json'\nimport EnStatisticsTranslations from './statistics.json'\nimport EnUserTranslations from './user.json'\n\nexport const enResources = {\n workouts: EnWorkoutsTranslations,\n administration: EnAdministrationTranslations,\n common: EnCommonTranslations,\n dashboard: EnDashboardTranslations,\n messages: EnMessagesTranslations,\n sports: EnSportsTranslations,\n statistics: EnStatisticsTranslations,\n user: EnUserTranslations,\n}\n","import FrWorkoutsTranslations from './workouts.json'\nimport FrAdministrationTranslations from './administration.json'\nimport FrCommonTranslations from './common.json'\nimport FrDashboardTranslations from './dashboard.json'\nimport FrMessagesTranslations from './messages.json'\nimport FrSportsTranslations from './sports.json'\nimport FrStatisticsTranslations from './statistics.json'\nimport FrUserTranslations from './user.json'\n\nexport const frResources = {\n workouts: FrWorkoutsTranslations,\n administration: FrAdministrationTranslations,\n common: FrCommonTranslations,\n dashboard: FrDashboardTranslations,\n messages: FrMessagesTranslations,\n sports: FrSportsTranslations,\n statistics: FrStatisticsTranslations,\n user: FrUserTranslations,\n}\n","import i18n from 'i18next'\nimport LanguageDetector from 'i18next-browser-languagedetector'\nimport XHR from 'i18next-xhr-backend'\n\nimport { resources } from './locales'\n\ni18n\n .use(XHR)\n .use(LanguageDetector)\n .init({\n debug: process.env.NODE_ENV === 'development',\n lng: 'en',\n fallbackLng: 'en',\n keySeparator: false,\n interpolation: {\n escapeValue: false,\n },\n resources,\n ns: ['common'],\n defaultNS: 'common',\n })\n\nexport default i18n\n","import React from 'react'\n\nexport default class Message extends React.PureComponent {\n render() {\n const { message, messages, t } = this.props\n const singleMessage =\n message === '' || !message\n ? ''\n : message.split('|').length > 1\n ? `${t(`messages:${message.split('|')[0]}`)}: ${t(\n `messages:${message.split('|')[1]}`\n )}`\n : t(`messages:${message}`)\n return (\n
\n {singleMessage !== '' && {singleMessage}}\n {messages &&\n messages.length > 0 &&\n (messages.length === 1 ? (\n {messages[0].value}\n ) : (\n \n \n \n ))}\n
\n )\n }\n}\n","import { format, parse } from 'date-fns'\nimport { DateTime } from 'luxon'\n\nconst suffixes = ['bytes', 'KB', 'MB', 'GB', 'TB']\nexport const getFileSize = (fileSize, asText = true) => {\n const i = Math.floor(Math.log(fileSize) / Math.log(1024))\n if (!fileSize) {\n return asText ? '0 bytes' : { size: 0, suffix: 'bytes' }\n }\n const size = (fileSize / Math.pow(1024, i)).toFixed(1)\n const suffix = suffixes[i]\n return asText ? `${size}${suffix}` : { size, suffix }\n}\n\nexport const getFileSizeInMB = fileSize => {\n const value = fileSize / 1048576\n return (!fileSize && 0) || +value.toFixed(2)\n}\n\nexport const version = '0.4.9' // version stored in 'utils' for now\nexport const apiUrl =\n process.env.NODE_ENV === 'production'\n ? '/api/'\n : `${process.env.REACT_APP_API_URL}/api/`\n\nexport const userFilters = [\n { key: 'workouts_count', label: 'workouts count' },\n { key: 'admin', label: 'admin rights' },\n { key: 'created_at', label: 'registration date' },\n { key: 'username', label: 'user name' },\n]\n\nexport const sortOrders = [\n { key: 'asc', label: 'ascending' },\n { key: 'desc', label: 'descending' },\n]\n\nexport const isLoggedIn = () => !!window.localStorage.authToken\n\nexport const generateIds = arr => {\n let i = 0\n return arr.map(val => {\n const obj = { id: i, value: val }\n i++\n return obj\n })\n}\n\nexport const createApiRequest = params => {\n const headers = {}\n if (!params.noAuthorization) {\n headers.Authorization = `Bearer ${window.localStorage.getItem('authToken')}`\n }\n if (params.type) {\n headers['Content-Type'] = params.type\n }\n const requestParams = {\n method: params.method,\n headers: headers,\n }\n if (params.type === 'application/json' && params.body) {\n requestParams.body = JSON.stringify(params.body)\n } else if (params.body) {\n requestParams.body = params.body\n }\n const request = new Request(`${apiUrl}${params.url}`, requestParams)\n return fetch(request)\n .then(response =>\n params.method === 'DELETE' || response.status === 413\n ? response\n : response.json()\n )\n .catch(error => {\n console.error(error)\n return new Error('An error occurred. Please contact the administrator.')\n })\n}\n\nexport const getDateWithTZ = (date, tz) => {\n if (!date) {\n return ''\n }\n const dt = DateTime.fromISO(\n format(new Date(date), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n ).setZone(tz)\n return parse(\n dt.toFormat('yyyy-MM-dd HH:mm:ss'),\n 'yyyy-MM-dd HH:mm:ss',\n new Date()\n )\n}\n\nexport const capitalize = target =>\n target.charAt(0).toUpperCase() + target.slice(1)\n\nexport const rangePagination = pages =>\n Array.from({ length: pages }, (_, i) => i + 1)\n\nconst sortValues = (a, b) => {\n const valueALabel = a.label.toLowerCase()\n const valueBLabel = b.label.toLowerCase()\n return valueALabel > valueBLabel ? 1 : valueALabel < valueBLabel ? -1 : 0\n}\n\nexport const translateValues = (t, values, key = 'common') =>\n values\n .map(value => ({\n ...value,\n label: t(`${key}:${value.label}`),\n }))\n .sort(sortValues)\n\nexport const formatUrl = (pathname, query) => {\n let url = pathname\n if (query.id || (pathname === 'users' && query.username)) {\n url = `${url}/${query.username ? query.username : query.id}`\n } else if (Object.keys(query).length > 0) {\n url += '?'\n Object.keys(query)\n .filter(key => query[key])\n .map(\n (key, index) => (url += `${index === 0 ? '' : '&'}${key}=${query[key]}`)\n )\n }\n return url\n}\n","import { createApiRequest, formatUrl } from '../utils'\n\nexport default class FitTrackeeApi {\n static getData(target, data = {}) {\n const url = formatUrl(target, data)\n const params = {\n url: url,\n method: 'GET',\n type: 'application/json',\n }\n return createApiRequest(params)\n }\n\n static addData(target, data) {\n const params = {\n url: target,\n method: 'POST',\n body: data,\n type: 'application/json',\n }\n return createApiRequest(params)\n }\n\n static addDataWithFile(target, data) {\n const params = {\n url: target,\n method: 'POST',\n body: data,\n }\n return createApiRequest(params)\n }\n\n static postData(target, data) {\n const params = {\n url: `${target}${data.id ? `/${data.id}` : ''}`,\n method: 'POST',\n body: data,\n type: 'application/json',\n }\n return createApiRequest(params)\n }\n\n static updateData(target, data) {\n const params = {\n url: `${target}${\n data.id ? `/${data.id}` : data.username ? `/${data.username}` : ''\n }`,\n method: 'PATCH',\n body: data,\n type: 'application/json',\n }\n return createApiRequest(params)\n }\n\n static deleteData(target, id) {\n const params = {\n url: `${target}/${id}`,\n method: 'DELETE',\n type: 'application/json',\n }\n return createApiRequest(params)\n }\n}\n","import i18next from 'i18next'\n\nimport FitTrackeeApi from '../fitTrackeeApi/index'\nimport { history } from '../index'\n\nexport const emptyMessages = () => ({\n type: 'CLEAN_ALL_MESSAGES',\n})\n\nexport const setData = (target, data) => ({\n type: 'SET_DATA',\n data,\n target,\n})\n\nexport const setPaginatedData = (target, data, pagination) => ({\n type: 'SET_PAGINATED_DATA',\n data,\n pagination,\n target,\n})\n\nexport const setError = message => ({\n type: 'SET_ERROR',\n message,\n})\n\nexport const setLanguage = language => ({\n type: 'SET_LANGUAGE',\n language,\n})\n\nexport const setLoading = loading => ({\n type: 'SET_LOADING',\n loading,\n})\n\nexport const updateSportsData = data => ({\n type: 'UPDATE_SPORT_DATA',\n data,\n})\n\nexport const updateUsersData = data => ({\n type: 'UPDATE_USER_DATA',\n data,\n})\n\nexport const getOrUpdateData =\n (action, target, data, canDispatch = true) =>\n dispatch => {\n dispatch(setLoading(true))\n if (data && data.id && target !== 'workouts' && isNaN(data.id)) {\n dispatch(setLoading(false))\n return dispatch(setError(`${target}|Incorrect id`))\n }\n dispatch(emptyMessages())\n return FitTrackeeApi[action](target, data)\n .then(ret => {\n if (ret.status === 'success') {\n if (canDispatch) {\n if (target === 'users' && action === 'getData') {\n return dispatch(\n setPaginatedData(target, ret.data, ret.pagination)\n )\n }\n dispatch(setData(target, ret.data))\n } else if (action === 'updateData' && target === 'sports') {\n dispatch(updateSportsData(ret.data.sports[0]))\n } else if (action === 'updateData' && target === 'users') {\n dispatch(updateUsersData(ret.data.users[0]))\n }\n } else {\n dispatch(setError(`${target}|${ret.message || ret.status}`))\n }\n dispatch(setLoading(false))\n })\n .catch(error => {\n dispatch(setLoading(false))\n dispatch(setError(`${target}|${error}`))\n })\n }\n\nexport const addData = (target, data) => dispatch =>\n FitTrackeeApi.addData(target, data)\n .then(ret => {\n if (ret.status === 'created') {\n history.push(`/admin/${target}`)\n } else {\n dispatch(setError(`${target}|${ret.status}`))\n }\n })\n .catch(error => dispatch(setError(`${target}|${error}`)))\n\nexport const deleteData = (target, id) => dispatch => {\n if (isNaN(id)) {\n return dispatch(setError(target, `${target}|Incorrect id`))\n }\n return FitTrackeeApi.deleteData(target, id)\n .then(ret => {\n if (ret.status === 204) {\n history.push(`/admin/${target}`)\n } else {\n dispatch(setError(`${target}|${ret.message || ret.status}`))\n }\n })\n .catch(error => dispatch(setError(`${target}|${error}`)))\n}\n\nexport const updateLanguage = language => dispatch => {\n i18next.changeLanguage(language).then(dispatch(setLanguage(language)))\n}\n","import FitTrackeeGenericApi from '../fitTrackeeApi'\nimport { history } from '../index'\nimport { generateIds } from '../utils'\nimport { emptyMessages, setError } from './index'\n\nexport const setAppConfig = data => ({\n type: 'SET_APP_CONFIG',\n data,\n})\n\nexport const setAppStats = data => ({\n type: 'SET_APP_STATS',\n data,\n})\n\nconst SetAppErrors = messages => ({ type: 'APP_ERRORS', messages })\n\nexport const getAppData = target => dispatch =>\n FitTrackeeGenericApi.getData(target)\n .then(ret => {\n if (ret.status === 'success') {\n if (target === 'config') {\n dispatch(setAppConfig(ret.data))\n } else if (target === 'stats/all') {\n dispatch(setAppStats(ret.data))\n }\n } else {\n dispatch(setError(`application|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`application|${error}`)))\n\nexport const updateAppConfig = formData => dispatch => {\n dispatch(emptyMessages())\n FitTrackeeGenericApi.updateData('config', formData)\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(setAppConfig(ret.data))\n history.push('/admin/application')\n } else if (Array.isArray(ret.message)) {\n dispatch(SetAppErrors(generateIds(ret.message)))\n } else {\n dispatch(setError(ret.message))\n }\n })\n .catch(error => dispatch(setError(`application|${error}`)))\n}\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport Message from '../Common/Message'\nimport { getAppData, updateAppConfig } from '../../actions/application'\nimport { history } from '../../index'\nimport { getFileSizeInMB } from '../../utils'\n\nclass AdminApplication extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n formData: {},\n }\n }\n\n componentDidMount() {\n this.initForm()\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.appConfig !== prevProps.appConfig) {\n this.initForm()\n }\n }\n\n initForm() {\n const { appConfig } = this.props\n const formData = {}\n Object.keys(appConfig).map(k =>\n appConfig[k] === null\n ? (formData[k] = '')\n : ['max_single_file_size', 'max_zip_file_size'].includes(k)\n ? (formData[k] = getFileSizeInMB(appConfig[k]))\n : (formData[k] = appConfig[k])\n )\n this.setState({ formData })\n }\n\n handleFormChange(e) {\n const { formData } = this.state\n formData[e.target.name] = +e.target.value\n this.setState(formData)\n }\n\n render() {\n const {\n isInEdition,\n loadAppConfig,\n message,\n messages,\n onHandleConfigFormSubmit,\n t,\n } = this.props\n const { formData } = this.state\n return (\n
\n {(message || messages) && (\n \n )}\n {Object.keys(formData).length > 0 && (\n
\n
\n
\n
\n \n {t('administration:Application configuration')}\n \n
\n
\n {\n e.preventDefault()\n onHandleConfigFormSubmit(formData)\n }}\n >\n
\n \n {t(\n // eslint-disable-next-line max-len\n 'administration:Max. number of active users'\n )}\n \n \n \n :\n \n this.handleFormChange(e)}\n />\n
\n
\n \n {t(\n 'administration:Max. size of uploaded files (in Mb)'\n )}\n :\n \n this.handleFormChange(e)}\n />\n
\n
\n \n {t('administration:Max. size of zip archive (in Mb)')}:\n \n this.handleFormChange(e)}\n />\n
\n
\n \n {t('administration:Max. files of zip archive')}\n \n this.handleFormChange(e)}\n />\n
\n {isInEdition ? (\n <>\n \n {\n e.preventDefault()\n loadAppConfig()\n history.push('/admin/application')\n }}\n value={t('common:Cancel')}\n />\n \n ) : (\n <>\n {\n e.preventDefault()\n history.push('/admin/application/edit')\n }}\n value={t('common:Edit')}\n />\n history.push('/admin')}\n value={t('common:Back')}\n />\n \n )}\n \n
\n
\n
\n
\n )}\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n message: state.message,\n messages: state.messages,\n }),\n dispatch => ({\n loadAppConfig: () => {\n dispatch(getAppData('config'))\n },\n onHandleConfigFormSubmit: formData => {\n const data = Object.assign({}, formData)\n data.max_single_file_size *= 1048576\n data.max_zip_file_size *= 1048576\n dispatch(updateAppConfig(data))\n },\n })\n)(AdminApplication)\n","import React from 'react'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport { getAppData } from '../../actions/application'\nimport { getFileSize } from '../../utils'\n\nclass AdminStats extends React.Component {\n componentDidMount() {\n this.props.loadAppStats()\n }\n\n render() {\n const { appStats, t } = this.props\n const uploadDirSize = getFileSize(appStats.uploads_dir_size, false)\n return (\n
\n
\n
\n
\n
\n \n
\n
\n
\n {appStats.users ? appStats.users : 0}\n
\n
{`${\n appStats.users === 1\n ? t('administration:user')\n : t('administration:users')\n }`}
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n {appStats.sports ? appStats.sports : 0}\n
\n
{`${\n appStats.sports === 1 ? t('common:sport') : t('common:sports')\n }`}
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n {appStats.workouts ? appStats.workouts : 0}\n
\n
{`${\n appStats.workouts === 1\n ? t('common:workout')\n : t('common:workouts')\n }`}
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
{uploadDirSize.size}
\n
\n {uploadDirSize.suffix} ({t('administration:uploads')})\n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default withTranslation()(\n connect(\n state => ({\n appStats: state.application.statistics,\n }),\n dispatch => ({\n loadAppStats: () => {\n dispatch(getAppData('stats/all'))\n },\n })\n )(AdminStats)\n)\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport AdminStats from './AdminStats'\n\nexport default function AdminDashboard(props) {\n const { appConfig, t } = props\n return (\n
\n
\n {t('administration:Administration')}\n
\n
\n \n
\n
\n
\n \n {t('administration:Application')}\n \n
\n
\n {t(\n 'administration:Update application configuration ' +\n '(maximum number of registered users, maximum files size).'\n )}\n
\n \n {t(\n `administration:Registration is currently ${\n appConfig.is_registration_enabled ? 'enabled' : 'disabled'\n }.`\n )}\n \n
\n
\n
\n \n {t('administration:Sports')}\n \n
\n
{t('administration:Enable/disable sports.')}
\n
\n
\n \n {t('administration:Users')}\n \n
\n
\n {t(\n 'administration:Add/remove admin rights, ' +\n 'delete user account.'\n )}\n
\n
\n
\n
\n )\n}\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport Message from '../Common/Message'\nimport { getOrUpdateData } from '../../actions'\nimport { history } from '../../index'\n\nclass AdminSports extends React.Component {\n componentDidMount() {\n this.props.loadSports()\n }\n\n render() {\n const { message, sports, t, updateSport } = this.props\n return (\n
\n {message && }\n
\n
\n
\n
\n {t('administration:Sports')}\n
\n
\n {sports.length > 0 && (\n \n \n \n \n \n \n \n \n \n \n \n {sports.map(sport => (\n \n \n \n \n \n \n \n ))}\n \n
{t('administration:id')}{t('administration:Image')}{t('administration:Label')}{t('administration:Active')}{t('administration:Actions')}
\n \n {t('administration:id')}\n \n {sport.id}\n \n \n {t('administration:Image')}\n \n \n \n \n {t('administration:Label')}\n \n {t(`sports:${sport.label}`)}\n \n \n {t('administration:Active')}\n \n {sport.is_active ? (\n \n ) : (\n \n )}\n \n \n {t('administration:Actions')}\n \n \n updateSport(sport.id, !sport.is_active)\n }\n />\n {sport.has_workouts && (\n \n \n {t('administration:workouts exist')}\n \n )}\n
\n )}\n history.push('/admin/')}\n value={t('common:Back')}\n />\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n message: state.message,\n sports: state.sports.data,\n user: state.user,\n }),\n dispatch => ({\n loadSports: () => {\n dispatch(getOrUpdateData('getData', 'sports'))\n },\n updateSport: (sportId, isActive) => {\n const data = { id: sportId, is_active: isActive }\n dispatch(getOrUpdateData('updateData', 'sports', data, false))\n },\n })\n)(AdminSports)\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { formatUrl, rangePagination } from '../../utils'\n\nexport default class Pagination extends React.PureComponent {\n getUrl(value) {\n const { query, pathname } = this.props\n const newQuery = Object.assign({}, query)\n let page = query.page ? +query.page : 1\n switch (value) {\n case 'prev':\n page -= 1\n break\n case 'next':\n page += 1\n break\n default:\n page = +value\n }\n newQuery.page = page\n return formatUrl(pathname, newQuery)\n }\n\n render() {\n const { pagination, t } = this.props\n return (\n <>\n {pagination && Object.keys(pagination).length > 0 && (\n \n )}\n \n )\n }\n}\n","import { format } from 'date-fns'\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport { Link } from 'react-router-dom'\n\nimport Message from '../Common/Message'\nimport Pagination from '../Common/Pagination'\nimport { history } from '../../index'\nimport { getOrUpdateData } from '../../actions'\nimport {\n apiUrl,\n formatUrl,\n sortOrders,\n translateValues,\n userFilters,\n} from '../../utils'\n\nclass AdminUsers extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n page: null,\n per_page: null,\n order_by: 'created_at',\n order: 'asc',\n }\n }\n\n componentDidMount() {\n this.props.loadUsers(this.initState())\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.location.query !== this.props.location.query) {\n this.props.loadUsers(this.props.location.query)\n }\n }\n\n initState() {\n const { query } = this.props.location\n const newQuery = {\n page: query.page,\n per_page: query.per_page,\n order_by: query.order_by ? query.order_by : 'created_at',\n order: query.order ? query.order : 'asc',\n }\n this.setState(newQuery)\n return newQuery\n }\n\n updatePage(key, value) {\n const query = Object.assign({}, this.state)\n query[key] = value\n this.setState(query)\n const url = formatUrl(this.props.location.pathname, query)\n history.push(url)\n }\n\n render() {\n const { authUser, location, message, t, pagination, updateUser, users } =\n this.props\n const translatedFilters = translateValues(t, userFilters)\n const translatedSortOrders = translateValues(t, sortOrders)\n return (\n
\n {message && }\n
\n
\n
\n
\n
\n {t('administration:Users')}\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n {users.map(user => (\n \n \n \n \n \n \n \n \n \n ))}\n \n
#{t('user:Username')}{t('user:Email')}{t('user:Registration Date')}{t('workouts:Workouts')}{t('user:Admin')}{t('administration:Actions')}
\n #\n {user.picture === true ? (\n \n ) : (\n \n )}\n \n \n {t('user:Username')}\n \n \n {user.username}\n \n \n \n {t('user:Email')}\n \n {user.email}\n \n \n {t('user:Registration Date')}\n \n {format(\n new Date(user.created_at),\n 'dd/MM/yyyy HH:mm'\n )}\n \n \n {t('workouts:Workouts')}\n \n {user.nb_workouts}\n \n \n {t('user:Admin')}\n \n {user.admin ? (\n \n ) : (\n \n )}\n \n \n {t('administration:Actions')}\n \n \n updateUser(user.username, !user.admin)\n }\n />\n
\n \n history.push('/admin/')}\n value={t('common:Back')}\n />\n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n authUser: state.user,\n location: state.router.location,\n message: state.message,\n pagination: state.users.pagination,\n users: state.users.data,\n }),\n dispatch => ({\n loadUsers: query => {\n dispatch(getOrUpdateData('getData', 'users', query))\n },\n updateUser: (userName, isAdmin) => {\n const data = { username: userName, admin: isAdmin }\n dispatch(getOrUpdateData('updateData', 'users', data, false))\n },\n })\n)(AdminUsers)\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { useTranslation } from 'react-i18next'\n\nexport default function NotFound() {\n const { t } = useTranslation()\n return (\n
\n \n fittrackee - 404\n \n

{t('Page not found')}

\n
\n )\n}\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\nimport { Route, Switch } from 'react-router-dom'\n\nimport AdminApplication from './AdminApplication'\nimport AdminDashboard from './AdminDashboard'\nimport AdminSports from './AdminSports'\nimport AdminUsers from './AdminUsers'\nimport NotFound from './../Others/NotFound'\n\nfunction Admin(props) {\n const { appConfig, t, user } = props\n return (\n <>\n \n FitTrackee - {t('administration:Administration')}\n \n
\n {user.admin ? (\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\nexport default withTranslation()(\n connect(state => ({\n appConfig: state.application.config,\n user: state.user,\n }))(Admin)\n)\n","import { format, subHours } from 'date-fns'\nimport togeojson from '@mapbox/togeojson'\n\nimport { getDateWithTZ } from './index'\n\nexport const workoutColors = [\n '#55a8a3',\n '#98C3A9',\n '#D0838A',\n '#ECC77E',\n '#926692',\n '#929292',\n '#428bca',\n]\n\nexport const recordsLabels = [\n { record_type: 'AS', label: 'Ave. speed' },\n { record_type: 'FD', label: 'Farest distance' },\n { record_type: 'LD', label: 'Longest duration' },\n { record_type: 'MS', label: 'Max. speed' },\n]\n\nexport const getGeoJson = gpxContent => {\n let jsonData\n if (gpxContent) {\n const gpx = new DOMParser().parseFromString(gpxContent, 'text/xml')\n jsonData = togeojson.gpx(gpx)\n }\n return { jsonData }\n}\n\nexport const formatWorkoutDate = (\n dateTime,\n dateFormat = null,\n timeFormat = null\n) => {\n if (!dateFormat) {\n dateFormat = 'yyyy/MM/dd'\n }\n if (!timeFormat) {\n timeFormat = 'HH:mm'\n }\n return {\n workout_date: dateTime ? format(dateTime, dateFormat) : null,\n workout_time: dateTime ? format(dateTime, timeFormat) : null,\n }\n}\n\nexport const formatWorkoutDuration = seconds => {\n let newDate = new Date(0)\n newDate = subHours(newDate.setSeconds(seconds), 1)\n return newDate.getTime()\n}\n\nexport const formatChartData = chartData => {\n for (let i = 0; i < chartData.length; i++) {\n chartData[i].time = new Date(chartData[i].time).getTime()\n chartData[i].duration = formatWorkoutDuration(chartData[i].duration)\n }\n return chartData\n}\n\nexport const formatRecord = (record, tz) => {\n let value\n switch (record.record_type) {\n case 'AS':\n case 'MS':\n value = `${record.value} km/h`\n break\n case 'FD':\n value = `${record.value} km`\n break\n default:\n // 'LD'\n value = record.value // eslint-disable-line prefer-destructuring\n }\n const [recordType] = recordsLabels.filter(\n r => r.record_type === record.record_type\n )\n return {\n workout_date: formatWorkoutDate(getDateWithTZ(record.workout_date, tz))\n .workout_date,\n workout_id: record.workout_id,\n id: record.id,\n record_type: recordType.label,\n value: value,\n }\n}\n\nconst sortSports = (a, b) => {\n const sportALabel = a.label.toLowerCase()\n const sportBLabel = b.label.toLowerCase()\n return sportALabel > sportBLabel ? 1 : sportALabel < sportBLabel ? -1 : 0\n}\n\nexport const translateSports = (sports, t, onlyActive = false) =>\n sports\n .filter(sport => (onlyActive ? sport.is_active : true))\n .map(sport => ({\n ...sport,\n label: t(`sports:${sport.label}`),\n }))\n .sort(sortSports)\n","import { createApiRequest } from '../utils'\n\nexport default class FitTrackeeApi {\n static loginOrRegisterOrPasswordReset(target, data) {\n const params = {\n url: `auth/${target}`,\n method: 'POST',\n noAuthorization: true,\n body: data,\n type: 'application/json',\n }\n return createApiRequest(params)\n }\n\n static deletePicture() {\n const params = {\n url: 'auth/picture',\n method: 'DELETE',\n }\n return createApiRequest(params)\n }\n}\n","import FitTrackeeGenericApi from '../fitTrackeeApi'\nimport FitTrackeeApi from '../fitTrackeeApi/auth'\nimport { history } from '../index'\nimport { generateIds } from '../utils'\nimport { getOrUpdateData, setError, updateLanguage } from './index'\nimport { getAppData } from './application'\n\nconst AuthError = message => ({ type: 'AUTH_ERROR', message })\n\nconst AuthErrors = messages => ({ type: 'AUTH_ERRORS', messages })\n\nconst PictureError = message => ({ type: 'PICTURE_ERROR', message })\n\nconst ProfileSuccess = profil => ({ type: 'PROFILE_SUCCESS', profil })\n\nconst ProfileError = message => ({ type: 'PROFILE_ERROR', message })\n\nconst ProfileUpdateError = message => ({\n type: 'PROFILE_UPDATE_ERROR',\n message,\n})\n\nexport const logout = () => ({ type: 'LOGOUT' })\n\nexport const loadProfile = () => dispatch => {\n if (window.localStorage.getItem('authToken')) {\n return dispatch(getProfile())\n }\n return { type: 'LOGOUT' }\n}\n\nexport const getProfile = () => dispatch =>\n FitTrackeeGenericApi.getData('auth/profile')\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(getOrUpdateData('getData', 'sports'))\n ret.data.isAuthenticated = true\n if (ret.data.language) {\n dispatch(updateLanguage(ret.data.language))\n }\n return dispatch(ProfileSuccess(ret.data))\n }\n return dispatch(ProfileError(ret.message))\n })\n .catch(error => {\n throw error\n })\n\nexport const loginOrRegisterOrPasswordReset = (target, formData) => dispatch =>\n FitTrackeeApi.loginOrRegisterOrPasswordReset(target, formData)\n .then(ret => {\n if (ret.status === 'success') {\n if (target === 'password/reset-request') {\n return history.push({\n pathname: '/password-reset/sent',\n })\n }\n if (target === 'password/update') {\n return history.push({\n pathname: '/updated-password',\n })\n }\n if (target === 'login' || target === 'register') {\n window.localStorage.setItem('authToken', ret.auth_token)\n if (target === 'register') {\n dispatch(getAppData('config'))\n }\n return dispatch(getProfile())\n }\n }\n return dispatch(AuthError(ret.message))\n })\n .catch(error => {\n throw error\n })\n\nconst RegisterFormControl = (formData, onlyPasswords = false) => {\n const errMsg = []\n if (\n !onlyPasswords &&\n (formData.username.length < 3 || formData.username.length > 12)\n ) {\n errMsg.push('3 to 12 characters required for username.')\n }\n if (formData.password !== formData.password_conf) {\n errMsg.push(\"Password and password confirmation don't match.\")\n }\n if (formData.password.length < 8) {\n errMsg.push('8 characters required for password.')\n }\n return errMsg\n}\n\nexport const handleUserFormSubmit = (formData, formType) => dispatch => {\n if (formType === 'register' || formType === 'password/update') {\n const ret = RegisterFormControl(formData, formType === 'password/update')\n if (ret.length > 0) {\n return dispatch(AuthErrors(generateIds(ret)))\n }\n }\n return dispatch(loginOrRegisterOrPasswordReset(formType, formData))\n}\n\nexport const handleProfileFormSubmit = formData => dispatch => {\n if (!formData.password === formData.password_conf) {\n return dispatch(\n ProfileUpdateError(\"Password and password confirmation don't match.\")\n )\n }\n delete formData.id\n return FitTrackeeGenericApi.postData('auth/profile/edit', formData)\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(getProfile())\n return history.push('/profile')\n }\n dispatch(ProfileUpdateError(ret.message))\n })\n .catch(error => {\n throw error\n })\n}\n\nexport const uploadPicture = event => dispatch => {\n event.preventDefault()\n const form = new FormData()\n form.append('file', event.target.picture.files[0])\n event.target.reset()\n return FitTrackeeGenericApi.addDataWithFile('auth/picture', form)\n .then(ret => {\n if (ret.status === 'success') {\n return dispatch(getProfile())\n }\n const msg =\n ret.status === 413\n ? 'Error during picture update, file size exceeds max size.'\n : ret.message\n return dispatch(PictureError(msg))\n })\n .catch(error => {\n throw error\n })\n}\n\nexport const deletePicture = () => dispatch =>\n FitTrackeeApi.deletePicture()\n .then(ret => {\n if (ret.status === 204) {\n return dispatch(getProfile())\n }\n return dispatch(PictureError(ret.message))\n })\n .catch(error => {\n throw error\n })\n\nexport const deleteUser =\n (username, isAdmin = false) =>\n dispatch =>\n FitTrackeeGenericApi.deleteData('users', username)\n .then(ret => {\n if (ret.status === 204) {\n dispatch(getAppData('config'))\n if (isAdmin) {\n history.push('/admin/users')\n } else {\n dispatch(logout())\n history.push('/')\n }\n } else {\n ret.json().then(r => dispatch(setError(`${r.message}`)))\n }\n })\n .catch(error => dispatch(setError(`user|${error}`)))\n","import FitTrackeeGenericApi from '../fitTrackeeApi'\nimport { history } from '../index'\nimport { formatChartData } from '../utils/workouts'\nimport { setError, setLoading } from './index'\nimport { loadProfile } from './user'\n\nexport const pushWorkouts = workouts => ({\n type: 'PUSH_WORKOUTS',\n workouts,\n})\n\nexport const removeWorkout = workoutId => ({\n type: 'REMOVE_WORKOUT',\n workoutId,\n})\n\nexport const updateCalendar = workouts => ({\n type: 'UPDATE_CALENDAR',\n workouts,\n})\n\nexport const setGpx = gpxContent => ({\n type: 'SET_GPX',\n gpxContent,\n})\n\nexport const setChartData = chartData => ({\n type: 'SET_CHART_DATA',\n chartData,\n})\n\nexport const addWorkout = form => dispatch =>\n FitTrackeeGenericApi.addDataWithFile('workouts', form)\n .then(ret => {\n if (ret.status === 'created') {\n if (ret.data.workouts.length === 0) {\n dispatch(setError('workouts|no correct file.'))\n } else if (ret.data.workouts.length === 1) {\n dispatch(loadProfile())\n history.push(`/workouts/${ret.data.workouts[0].id}`)\n } else {\n // ret.data.workouts.length > 1\n dispatch(loadProfile())\n history.push('/')\n }\n } else if (ret.status === 413) {\n dispatch(\n setError('workouts|File size is greater than the allowed size')\n )\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n dispatch(setLoading(false))\n })\n .catch(error => {\n dispatch(setLoading(false))\n dispatch(setError(`workouts|${error}`))\n })\n\nexport const addWorkoutWithoutGpx = form => dispatch =>\n FitTrackeeGenericApi.addData('workouts/no_gpx', form)\n .then(ret => {\n if (ret.status === 'created') {\n dispatch(loadProfile())\n history.push(`/workouts/${ret.data.workouts[0].id}`)\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n\nexport const getWorkoutGpx = workoutId => dispatch => {\n if (workoutId) {\n return FitTrackeeGenericApi.getData(`workouts/${workoutId}/gpx`)\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(setGpx(ret.data.gpx))\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n }\n dispatch(setGpx(null))\n}\n\nexport const getSegmentGpx = (workoutId, segmentId) => dispatch => {\n if (workoutId) {\n return FitTrackeeGenericApi.getData(\n `workouts/${workoutId}/gpx/segment/${segmentId}`\n )\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(setGpx(ret.data.gpx))\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n }\n dispatch(setGpx(null))\n}\n\nexport const getWorkoutChartData = workoutId => dispatch => {\n if (workoutId) {\n return FitTrackeeGenericApi.getData(`workouts/${workoutId}/chart_data`)\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(setChartData(formatChartData(ret.data.chart_data)))\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n }\n dispatch(setChartData(null))\n}\n\nexport const getSegmentChartData = (workoutId, segmentId) => dispatch => {\n if (workoutId) {\n return FitTrackeeGenericApi.getData(\n `workouts/${workoutId}/chart_data/segment/${segmentId}`\n )\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(setChartData(formatChartData(ret.data.chart_data)))\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n }\n dispatch(setChartData(null))\n}\n\nexport const deleteWorkout = id => dispatch =>\n FitTrackeeGenericApi.deleteData('workouts', id)\n .then(ret => {\n if (ret.status === 204) {\n Promise.resolve(dispatch(removeWorkout(id)))\n .then(() => dispatch(loadProfile()))\n .then(() => history.push('/'))\n } else {\n dispatch(setError(`workouts|${ret.status}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n\nexport const editWorkout = form => dispatch =>\n FitTrackeeGenericApi.updateData('workouts', form)\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(loadProfile())\n history.push(`/workouts/${ret.data.workouts[0].id}`)\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n dispatch(setLoading(false))\n })\n .catch(error => {\n dispatch(setLoading(false))\n dispatch(setError(`workouts|${error}`))\n })\n\nexport const getMoreWorkouts = params => dispatch =>\n FitTrackeeGenericApi.getData('workouts', params)\n .then(ret => {\n if (ret.status === 'success') {\n if (ret.data.workouts.length > 0) {\n dispatch(pushWorkouts(ret.data.workouts))\n }\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n\nexport const getMonthWorkouts = (from, to) => dispatch =>\n FitTrackeeGenericApi.getData('workouts', {\n from,\n to,\n order: 'desc',\n per_page: 100,\n })\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(updateCalendar(ret.data.workouts))\n } else {\n dispatch(setError(`workouts|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`workouts|${error}`)))\n","import React from 'react'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nclass CustomTextArea extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n text: props.defaultValue ? props.defaultValue : '',\n }\n }\n\n handleOnChange(changeEvent) {\n this.setState({ text: changeEvent.target.value })\n if (this.props.onTextChange) {\n this.props.onTextChange(changeEvent)\n }\n }\n\n render() {\n const { charLimit, loading, name, t } = this.props\n const { text } = this.state\n return (\n <>\n this.handleOnChange(event)}\n />\n
\n {t('common:remaining characters')}: {text.length}/{charLimit}\n
\n \n )\n }\n}\n\nexport default withTranslation()(\n connect(state => ({\n loading: state.loading,\n }))(CustomTextArea)\n)\n","import React from 'react'\nimport { Trans } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport { setLoading } from '../../../actions/index'\nimport { addWorkout, editWorkout } from '../../../actions/workouts'\nimport { history } from '../../../index'\nimport { getFileSize } from '../../../utils'\nimport { translateSports } from '../../../utils/workouts'\nimport CustomTextArea from '../../Common/CustomTextArea'\n\nfunction FormWithGpx(props) {\n const {\n appConfig,\n loading,\n onAddWorkout,\n onEditWorkout,\n sports,\n t,\n workout,\n } = props\n const sportId = workout ? workout.sport_id : ''\n const translatedSports = translateSports(sports, t, true)\n const zipTooltip = `${t('workouts:no folder inside')}, ${\n appConfig.gpx_limit_import\n } ${t('workouts:files max')}, ${t('workouts:max size')}: ${getFileSize(\n appConfig.max_zip_file_size\n )}`\n const fileSizeLimit = getFileSize(appConfig.max_single_file_size)\n return (\n event.preventDefault()}\n >\n
\n \n
\n {workout ? (\n
\n \n
\n ) : (\n
\n \n
\n )}\n
\n \n
\n {loading ? (\n
\n ) : (\n
\n \n workout ? onEditWorkout(event, workout) : onAddWorkout(event)\n }\n value={t('common:Submit')}\n />\n history.push('/')}\n value={t('common:Cancel')}\n />\n
\n )}\n \n )\n}\n\nexport default connect(\n state => ({\n appConfig: state.application.config,\n loading: state.loading,\n }),\n dispatch => ({\n onAddWorkout: e => {\n dispatch(setLoading(true))\n const form = new FormData()\n form.append('file', e.target.form.gpxFile.files[0])\n /* prettier-ignore */\n form.append(\n 'data',\n `{\"sport_id\": ${e.target.form.sport.value\n }, \"notes\": \"${e.target.form.notes.value}\"}`\n )\n dispatch(addWorkout(form))\n },\n onEditWorkout: (e, workout) => {\n dispatch(\n editWorkout({\n id: workout.id,\n notes: e.target.form.notes.value,\n sport_id: +e.target.form.sport.value,\n title: e.target.form.title.value,\n })\n )\n },\n })\n)(FormWithGpx)\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport { addWorkoutWithoutGpx, editWorkout } from '../../../actions/workouts'\nimport { history } from '../../../index'\nimport { getDateWithTZ } from '../../../utils'\nimport { formatWorkoutDate, translateSports } from '../../../utils/workouts'\nimport CustomTextArea from '../../Common/CustomTextArea'\n\nfunction FormWithoutGpx(props) {\n const { onAddOrEdit, sports, t, user, workout } = props\n const translatedSports = translateSports(sports, t, true)\n let workoutDate,\n workoutTime,\n sportId = ''\n if (workout) {\n const workoutDateTime = formatWorkoutDate(\n getDateWithTZ(workout.workout_date, user.timezone),\n 'yyyy-MM-dd'\n )\n workoutDate = workoutDateTime.workout_date\n workoutTime = workoutDateTime.workout_time\n sportId = workout.sport_id\n }\n\n return (\n
event.preventDefault()}>\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n onAddOrEdit(event, workout)}\n value={t('common:Submit')}\n />\n history.push('/')}\n value={t('common:Cancel')}\n />\n \n )\n}\n\nexport default connect(\n state => ({\n user: state.user,\n }),\n dispatch => ({\n onAddOrEdit: (e, workout) => {\n const d = e.target.form.duration.value.split(':')\n const duration = +d[0] * 60 * 60 + +d[1] * 60 + +d[2]\n\n /* prettier-ignore */\n const workoutDate = `${e.target.form.workout_date.value\n } ${ e.target.form.workout_time.value}`\n\n const data = {\n workout_date: workoutDate,\n distance: +e.target.form.distance.value,\n duration,\n notes: e.target.form.notes.value,\n sport_id: +e.target.form.sport_id.value,\n title: e.target.form.title.value,\n }\n if (workout) {\n data.id = workout.id\n dispatch(editWorkout(data))\n } else {\n dispatch(addWorkoutWithoutGpx(data))\n }\n },\n })\n)(FormWithoutGpx)\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport FormWithGpx from './WorkoutForms/FormWithGpx'\nimport FormWithoutGpx from './WorkoutForms/FormWithoutGpx'\nimport Message from '../Common/Message'\n\nclass WorkoutAddEdit extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n withGpx: true,\n }\n }\n\n handleRadioChange(changeEvent) {\n this.setState({\n withGpx:\n changeEvent.target.name === 'withGpx'\n ? changeEvent.target.value\n : !changeEvent.target.value,\n })\n }\n\n render() {\n const { loading, message, sports, t, workout } = this.props\n const { withGpx } = this.state\n return (\n
\n \n \n FitTrackee -{' '}\n {workout\n ? t('workouts:Edit a workout')\n : t('workouts:Add a workout')}\n \n \n
\n
\n \n
\n
\n
\n
\n
\n

\n {workout\n ? t('workouts:Edit a workout')\n : t('workouts:Add a workout')}\n

\n
\n {workout ? (\n workout.with_gpx ? (\n \n ) : (\n \n )\n ) : (\n
\n
\n
\n
\n \n
\n
\n \n
\n
\n
\n {withGpx ? (\n \n ) : (\n \n )}\n
\n )}\n
\n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default withTranslation()(\n connect(state => ({\n loading: state.loading,\n }))(WorkoutAddEdit)\n)\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport WorkoutAddOrEdit from './WorkoutAddOrEdit'\n\nfunction WorkoutAdd(props) {\n const { message, sports } = props\n return (\n
\n \n
\n )\n}\n\nexport default connect(state => ({\n message: state.message,\n sports: state.sports.data,\n user: state.user,\n}))(WorkoutAdd)\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\n\nexport default function CustomModal(props) {\n const { t } = useTranslation()\n return (\n
\n
\n
\n
\n
{props.title}
\n props.close()}\n >\n ×\n \n
\n
\n

{props.text}

\n
\n
\n props.confirm()}\n >\n {t('common:Yes')}\n \n props.close()}\n >\n {t('common:No')}\n \n
\n
\n
\n
\n )\n}\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { getDateWithTZ } from '../../../utils'\nimport { formatWorkoutDate } from '../../../utils/workouts'\n\nexport default function WorkoutCardHeader(props) {\n const { dataType, displayModal, segmentId, sport, t, title, user, workout } =\n props\n const workoutDate = workout\n ? formatWorkoutDate(getDateWithTZ(workout.workout_date, user.timezone))\n : null\n\n const previousUrl =\n dataType === 'segment' && segmentId !== 1\n ? `/workouts/${workout.id}/segment/${segmentId - 1}`\n : dataType === 'workout' && workout.previous_workout\n ? `/workouts/${workout.previous_workout}`\n : null\n const nextUrl =\n dataType === 'segment' && segmentId < workout.segments.length\n ? `/workouts/${workout.id}/segment/${segmentId + 1}`\n : dataType === 'workout' && workout.next_workout\n ? `/workouts/${workout.next_workout}`\n : null\n\n return (\n
\n
\n
\n {previousUrl ? (\n \n \n \n ) : (\n \n )}\n
\n
\n \"sport\n
\n
\n {dataType === 'workout' ? (\n <>\n {title}{' '}\n \n \n \n displayModal(true)}\n title={t('workouts:Delete workout')}\n />\n \n ) : (\n <>\n {/* prettier-ignore */}\n \n {title}\n {' '}\n - {t('workouts:segment')} {segmentId}\n \n )}\n
\n {workoutDate && (\n \n {`${workoutDate.workout_date} - ${workoutDate.workout_time}`}\n \n )}\n
\n
\n {nextUrl ? (\n \n \n \n ) : (\n \n )}\n
\n
\n
\n )\n}\n","import { format } from 'date-fns'\nimport React from 'react'\nimport { connect } from 'react-redux'\nimport {\n Area,\n ComposedChart,\n Line,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts'\n\nimport {\n getSegmentChartData,\n getWorkoutChartData,\n} from '../../../actions/workouts'\n\nclass WorkoutCharts extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n displayDistance: true,\n dataToHide: [],\n }\n }\n\n componentDidMount() {\n if (this.props.dataType === 'workout') {\n this.props.loadWorkoutData(this.props.workout.id)\n } else {\n this.props.loadSegmentData(this.props.workout.id, this.props.segmentId)\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n (this.props.dataType === 'workout' &&\n prevProps.workout.id !== this.props.workout.id) ||\n (this.props.dataType === 'workout' && prevProps.dataType === 'segment')\n ) {\n this.props.loadWorkoutData(this.props.workout.id)\n }\n if (\n this.props.dataType === 'segment' &&\n prevProps.segmentId !== this.props.segmentId\n ) {\n this.props.loadSegmentData(this.props.workout.id, this.props.segmentId)\n }\n }\n\n componentWillUnmount() {\n this.props.loadWorkoutData(null)\n }\n\n handleRadioChange(changeEvent) {\n this.setState({\n displayDistance:\n changeEvent.target.name === 'distance'\n ? changeEvent.target.value\n : !changeEvent.target.value,\n })\n }\n\n handleLegendChange(e) {\n const { dataToHide } = this.state\n const name = e.target.name // eslint-disable-line prefer-destructuring\n if (dataToHide.find(d => d === name)) {\n dataToHide.splice(dataToHide.indexOf(name), 1)\n } else {\n dataToHide.push(name)\n }\n this.setState({ dataToHide })\n }\n\n displayData(name) {\n const { dataToHide } = this.state\n return !dataToHide.find(d => d === name)\n }\n\n render() {\n const { chartData, t, updateCoordinates } = this.props\n const { displayDistance } = this.state\n const xInterval = chartData ? parseInt(chartData.length / 10, 10) : 0\n let xDataKey, xScale\n if (displayDistance) {\n xDataKey = 'distance'\n xScale = 'linear'\n } else {\n xDataKey = 'duration'\n xScale = 'time'\n }\n return (\n
\n {chartData && chartData.length > 0 ? (\n
\n
\n \n \n
\n
\n
\n \n \n
\n
\n
\n \n updateCoordinates(e.activePayload)}\n onMouseLeave={() => updateCoordinates(null)}\n >\n \n displayDistance ? value : format(value, 'HH:mm:ss')\n }\n type=\"number\"\n />\n \n \n {this.displayData('elevation') && (\n \n )}\n {this.displayData('speed') && (\n \n )}\n \n displayDistance\n ? `${t('workouts:distance')}: ${value} km`\n : `${t('workouts:duration')}: ${format(\n value,\n 'HH:mm:ss'\n )}`\n }\n />\n \n \n
\n
\n {t('workouts:data from gpx, without any cleaning')}\n
\n
\n ) : (\n t('workouts:No data to display')\n )}\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n chartData: state.chartData,\n }),\n dispatch => ({\n loadWorkoutData: workoutId => {\n dispatch(getWorkoutChartData(workoutId))\n },\n loadSegmentData: (workoutId, segmentId) => {\n dispatch(getSegmentChartData(workoutId, segmentId))\n },\n })\n)(WorkoutCharts)\n","import React from 'react'\n\nexport default function WorkoutWeather(props) {\n const { t, workout } = props\n return (\n
\n {workout.weather_start && workout.weather_end && (\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 {t('workouts:Start')}\n
\n \n
\n {t('workouts:End')}\n
\n \n
\n \n {Number(workout.weather_start.temperature).toFixed(1)}°C{Number(workout.weather_end.temperature).toFixed(1)}°C
\n \n \n {Number(workout.weather_start.humidity * 100).toFixed(1)}%\n {Number(workout.weather_end.humidity * 100).toFixed(1)}%
\n \n {Number(workout.weather_start.wind).toFixed(1)}m/s{Number(workout.weather_end.wind).toFixed(1)}m/s
\n )}\n
\n )\n}\n","import React from 'react'\n\nimport WorkoutWeather from './WorkoutWeather'\n\nexport default function WorkoutDetails(props) {\n const { t, workout } = props\n const withPauses = workout.pauses !== '0:00:00' && workout.pauses !== null\n return (\n
\n

\n \n {t('workouts:Duration')}: {workout.moving}\n {workout.records &&\n workout.records.find(record => record.record_type === 'LD') && (\n \n \n \n )}\n {withPauses && (\n \n
({t('workouts:pauses')}: {workout.pauses},{' '}\n {t('workouts:total duration')}: {workout.duration})\n
\n )}\n

\n

\n \n {t('workouts:Distance')}: {workout.distance} km\n {workout.records &&\n workout.records.find(record => record.record_type === 'FD') && (\n \n \n \n )}\n

\n

\n \n {t('workouts:Average speed')}: {workout.ave_speed} km/h\n {workout.records &&\n workout.records.find(record => record.record_type === 'AS') && (\n \n \n \n )}\n
\n {t('workouts:Max. speed')}: {workout.max_speed} km/h\n {workout.records &&\n workout.records.find(record => record.record_type === 'MS') && (\n \n \n \n )}\n

\n {workout.min_alt && workout.max_alt && (\n

\n \n {t('workouts:Min. altitude')}: {workout.min_alt}m\n
\n {t('workouts:Max. altitude')}: {workout.max_alt}m\n

\n )}\n {workout.ascent && workout.descent && (\n

\n \n {t('workouts:Ascent')}: {workout.ascent}m\n
\n {t('workouts:Descent')}: {workout.descent}m\n

\n )}\n \n
\n )\n}\n","import React from 'react'\nimport { GeoJSON, Marker, TileLayer, useMap } from 'react-leaflet'\nimport hash from 'object-hash'\n\nimport { apiUrl } from '../../../utils'\n\nexport default function Map({ bounds, coordinates, jsonData, mapAttribution }) {\n const map = useMap()\n map.fitBounds(bounds)\n return (\n <>\n \n \n {coordinates.latitude && (\n \n )}\n \n )\n}\n","import React from 'react'\nimport { MapContainer } from 'react-leaflet'\nimport { connect } from 'react-redux'\n\nimport Map from './Map'\nimport { getSegmentGpx, getWorkoutGpx } from '../../../actions/workouts'\nimport { getGeoJson } from '../../../utils/workouts'\n\nclass WorkoutMap extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n zoom: 13,\n }\n }\n\n componentDidMount() {\n if (this.props.dataType === 'workout') {\n this.props.loadWorkoutGpx(this.props.workout.id)\n } else {\n this.props.loadSegmentGpx(this.props.workout.id, this.props.segmentId)\n }\n }\n\n componentDidUpdate(prevProps) {\n if (\n (this.props.dataType === 'workout' &&\n prevProps.workout.id !== this.props.workout.id) ||\n (this.props.dataType === 'workout' && prevProps.dataType === 'segment')\n ) {\n this.props.loadWorkoutGpx(this.props.workout.id)\n }\n if (\n this.props.dataType === 'segment' &&\n prevProps.segmentId !== this.props.segmentId\n ) {\n this.props.loadSegmentGpx(this.props.workout.id, this.props.segmentId)\n }\n }\n\n componentWillUnmount() {\n this.props.loadWorkoutGpx(null)\n }\n\n render() {\n const { coordinates, gpxContent, mapAttribution, workout } = this.props\n const { jsonData } = getGeoJson(gpxContent)\n const bounds = [\n [workout.bounds[0], workout.bounds[1]],\n [workout.bounds[2], workout.bounds[3]],\n ]\n\n return (\n
\n {jsonData && (\n \n \n \n )}\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n gpxContent: state.gpx,\n mapAttribution: state.application.config.map_attribution,\n }),\n dispatch => ({\n loadWorkoutGpx: workoutId => {\n dispatch(getWorkoutGpx(workoutId))\n },\n loadSegmentGpx: (workoutId, segmentId) => {\n dispatch(getSegmentGpx(workoutId, segmentId))\n },\n })\n)(WorkoutMap)\n","import React from 'react'\n\nexport default function WorkoutNoMap(props) {\n const { t } = props\n return (\n
{t('workouts:No Map')}
\n )\n}\n","import React from 'react'\n\nexport default function WorkoutNotes(props) {\n const { notes, t } = props\n return (\n
\n
\n
\n
\n Notes\n
\n {notes && notes !== '' ? notes : t('workouts:No notes')}\n
\n
\n
\n
\n
\n )\n}\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nexport default function WorkoutSegments(props) {\n const { segments, t } = props\n return (\n
\n
\n
\n
\n {t('workouts:Segments')}\n
\n
    \n {segments.map((segment, index) => (\n \n \n {t('workouts:segment')} {index + 1}\n {' '}\n ({t('workouts:distance')}: {segment.distance} km,{' '}\n {t('workouts:duration')}: {segment.duration})\n \n ))}\n
\n
\n
\n
\n
\n
\n )\n}\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport CustomModal from '../../Common/CustomModal'\nimport Message from '../../Common/Message'\nimport WorkoutCardHeader from './WorkoutCardHeader'\nimport WorkoutCharts from './WorkoutCharts'\nimport WorkoutDetails from './WorkoutDetails'\nimport WorkoutMap from './WorkoutMap'\nimport WorkoutNoMap from './WorkoutNoMap'\nimport WorkoutNotes from './WorkoutNotes'\nimport WorkoutSegments from './WorkoutSegments'\nimport { getOrUpdateData } from '../../../actions'\nimport { deleteWorkout } from '../../../actions/workouts'\n\nclass WorkoutDisplay extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n displayModal: false,\n coordinates: {\n latitude: null,\n longitude: null,\n },\n }\n }\n\n componentDidMount() {\n this.props.loadWorkout(this.props.match.params.workoutId)\n }\n\n componentDidUpdate(prevProps) {\n if (\n prevProps.match.params.workoutId !== this.props.match.params.workoutId\n ) {\n this.props.loadWorkout(this.props.match.params.workoutId)\n }\n }\n\n displayModal(value) {\n this.setState(prevState => ({\n ...prevState,\n displayModal: value,\n }))\n }\n\n updateCoordinates(activePayload) {\n const coordinates =\n activePayload && activePayload.length > 0\n ? {\n latitude: activePayload[0].payload.latitude,\n longitude: activePayload[0].payload.longitude,\n }\n : {\n latitude: null,\n longitude: null,\n }\n this.setState(prevState => ({\n ...prevState,\n coordinates,\n }))\n }\n\n render() {\n const { message, onDeleteWorkout, sports, t, user, workouts } = this.props\n const { coordinates, displayModal } = this.state\n const [workout] = workouts\n const title = workout ? workout.title : t('workouts:Workout')\n const [sport] = workout ? sports.filter(s => s.id === workout.sport_id) : []\n const segmentId = parseInt(this.props.match.params.segmentId)\n const dataType = segmentId >= 0 ? 'segment' : 'workout'\n return (\n
\n \n FitTrackee - {title}\n \n {message ? (\n \n ) : (\n
\n {displayModal && (\n {\n onDeleteWorkout(workout.id)\n this.displayModal(false)\n }}\n close={() => this.displayModal(false)}\n />\n )}\n {workout && sport && workouts.length === 1 && (\n
\n
\n
\n
\n
\n this.displayModal(true)}\n />\n
\n
\n
\n
\n {workout.with_gpx ? (\n \n ) : (\n \n )}\n
\n
\n \n
\n
\n
\n
\n
\n
\n {workout.with_gpx && (\n
\n
\n
\n
\n
\n
\n
\n {t('workouts:Chart')}\n
\n \n this.updateCoordinates(e)\n }\n />\n
\n
\n
\n
\n
\n
\n )}\n {dataType === 'workout' && (\n <>\n \n {workout.segments.length > 1 && (\n \n )}\n \n )}\n
\n )}\n
\n )}\n
\n )\n }\n}\n\nexport default withTranslation()(\n connect(\n state => ({\n workouts: state.workouts.data,\n message: state.message,\n sports: state.sports.data,\n user: state.user,\n }),\n dispatch => ({\n loadWorkout: workoutId => {\n dispatch(getOrUpdateData('getData', 'workouts', { id: workoutId }))\n },\n onDeleteWorkout: workoutId => {\n dispatch(deleteWorkout(workoutId))\n },\n })\n )(WorkoutDisplay)\n)\n","import React from 'react'\nimport { connect } from 'react-redux'\n\nimport WorkoutAddOrEdit from './WorkoutAddOrEdit'\nimport { getOrUpdateData } from '../../actions'\n\nclass WorkoutEdit extends React.Component {\n componentDidMount() {\n this.props.loadWorkout(this.props.match.params.workoutId)\n }\n\n render() {\n const { message, sports, workouts } = this.props\n const [workout] = workouts\n return (\n
\n {sports.length > 0 && (\n \n )}\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n workouts: state.workouts.data,\n message: state.message,\n sports: state.sports.data,\n user: state.user,\n }),\n dispatch => ({\n loadWorkout: workoutId => {\n dispatch(getOrUpdateData('getData', 'workouts', { id: workoutId }))\n },\n })\n)(WorkoutEdit)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { Redirect, Route, Switch } from 'react-router-dom'\n\nimport NotFound from './../Others/NotFound'\nimport WorkoutAdd from './WorkoutAdd'\nimport WorkoutDisplay from './WorkoutDisplay'\nimport WorkoutEdit from './WorkoutEdit'\nimport { isLoggedIn } from '../../utils'\n\nfunction Workout() {\n return (\n
\n {isLoggedIn() ? (\n \n \n \n \n \n \n \n ) : (\n \n )}\n
\n )\n}\n\nexport default connect(state => ({\n user: state.user,\n}))(Workout)\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nexport default class NoWorkouts extends React.PureComponent {\n render() {\n const { t } = this.props\n return (\n
\n
\n {t('common:No workouts.')}{' '}\n \n {t('dashboard:Upload one !')}\n \n
\n
\n )\n }\n}\n","import React from 'react'\n\nimport { translateSports } from '../../utils/workouts'\n\nexport default class WorkoutsFilter extends React.PureComponent {\n render() {\n const { loadWorkouts, sports, t, updateParams } = this.props\n const translatedSports = translateSports(sports, t)\n return (\n
\n
\n
event.preventDefault()}>\n
\n \n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n loadWorkouts()}\n type=\"submit\"\n value={t('workouts:Filter')}\n />\n \n
\n
\n )\n }\n}\n","import React from 'react'\n\nimport { apiUrl } from '../../utils'\n\nexport default class StaticMap extends React.PureComponent {\n render() {\n const { display, workout } = this.props\n\n return (\n
\n \n
\n ©\n \n OpenStreetMap\n \n
\n
\n )\n }\n}\n","import { format } from 'date-fns'\nimport React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport StaticMap from '../Common/StaticMap'\nimport { getDateWithTZ } from '../../utils'\n\nexport default class WorkoutsList extends React.PureComponent {\n render() {\n const { loading, sports, t, user, workouts } = this.props\n return (\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {!loading &&\n sports &&\n workouts.map((workout, idx) => (\n // eslint-disable-next-line react/no-array-index-key\n \n \n \n \n \n \n \n \n \n ))}\n \n
\n {t('common:Workout')}{t('workouts:Date')}{t('workouts:Distance')}{t('workouts:Duration')}{t('workouts:Ave. speed')}{t('workouts:Max. speed')}
\n \n {t('common:Sport')}\n \n s.id === workout.sport_id)\n .map(s => s.img)}\n alt=\"workout sport logo\"\n />\n \n \n {t('common:Workout')}\n \n \n {workout.title}\n \n {workout.map && (\n \n )}\n \n \n {t('workouts:Date')}\n \n {format(\n getDateWithTZ(workout.workout_date, user.timezone),\n 'dd/MM/yyyy HH:mm'\n )}\n \n \n {t('workouts:Distance')}\n \n {Number(workout.distance).toFixed(2)} km\n \n \n {t('workouts:Duration')}\n \n {workout.moving}\n \n \n {t('workouts:Ave. speed')}\n \n {workout.ave_speed} km/h\n \n \n {t('workouts:Max. speed')}\n \n {workout.max_speed} km/h\n
\n {loading &&
}\n
\n
\n )\n }\n}\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport Message from '../Common/Message'\nimport NoWorkouts from '../Common/NoWorkouts'\nimport WorkoutsFilter from './WorkoutsFilter'\nimport WorkoutsList from './WorkoutsList'\nimport { getOrUpdateData } from '../../actions'\nimport { getMoreWorkouts } from '../../actions/workouts'\n\nclass Workouts extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n params: {\n page: 1,\n per_page: 10,\n },\n }\n }\n\n componentDidMount() {\n this.props.loadWorkouts(this.state.params)\n }\n\n setParams(e) {\n const { params } = this.state\n if (e.target.value === '') {\n delete params[e.target.name]\n } else {\n params[e.target.name] = e.target.value\n }\n params.page = 1\n this.setState(params)\n }\n render() {\n const {\n loading,\n loadWorkouts,\n loadMoreWorkouts,\n message,\n sports,\n t,\n user,\n workouts,\n } = this.props\n const { params } = this.state\n const paginationEnd =\n workouts.length > 0\n ? workouts[workouts.length - 1].previous_workout === null\n : true\n return (\n
\n \n FitTrackee - {t('common:Workouts')}\n \n {message ? (\n \n ) : (\n
\n
\n
\n loadWorkouts(params)}\n t={t}\n updateParams={e => this.setParams(e)}\n />\n
\n
\n \n {!paginationEnd && (\n {\n params.page += 1\n loadMoreWorkouts(params)\n this.setState(params)\n }}\n />\n )}\n {workouts.length === 0 && }\n
\n
\n
\n )}\n
\n )\n }\n}\n\nexport default withTranslation()(\n connect(\n state => ({\n workouts: state.workouts.data,\n loading: state.loading,\n message: state.message,\n sports: state.sports.data,\n user: state.user,\n }),\n dispatch => ({\n loadWorkouts: params => {\n dispatch(getOrUpdateData('getData', 'workouts', params))\n },\n loadMoreWorkouts: params => {\n dispatch(getMoreWorkouts(params))\n },\n })\n )(Workouts)\n)\n","import { format } from 'date-fns'\nimport React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport Message from '../Common/Message'\nimport { deletePicture, uploadPicture } from '../../actions/user'\nimport { apiUrl, getFileSize } from '../../utils'\nimport { history } from '../../index'\n\nfunction ProfileDetail({\n appConfig,\n displayModal,\n editable,\n isDeletable,\n message,\n onDeletePicture,\n onUploadPicture,\n pathname,\n t,\n user,\n}) {\n const createdAt = user.created_at\n ? format(new Date(user.created_at), 'dd/MM/yyyy HH:mm')\n : ''\n const birthDate = user.birth_date\n ? format(new Date(user.birth_date), 'dd/MM/yyyy')\n : ''\n const fileSizeLimit = getFileSize(appConfig.max_single_file_size)\n return (\n
\n \n FitTrackee - {t('user:Profile')}\n \n \n
\n

{t('user:Profile')}

\n
\n
\n
\n
\n {user.username}\n
\n
\n
\n
\n

\n {/* eslint-disable-next-line max-len */}\n \n {t('user:Email')}\n : {user.email}\n

\n

\n \n {t('user:Registration Date')}\n \n : {createdAt}\n

\n

\n {t('user:First Name')}\n : {user.first_name}\n

\n

\n {/* eslint-disable-next-line max-len */}\n \n {t('user:Last Name')}\n : {user.last_name}\n

\n

\n {t('user:Birth Date')}\n : {birthDate}\n

\n

\n {/* eslint-disable-next-line max-len */}\n \n {t('user:Location')}\n : {user.location}\n

\n

\n {t('user:Bio')}:{' '}\n {user.bio}\n

\n

\n {/* eslint-disable-next-line max-len */}\n \n {t('user:Language')}\n : {user.language}\n

\n

\n {/* eslint-disable-next-line max-len */}\n \n {t('user:Timezone')}\n : {user.timezone}\n

\n

\n \n {t('user:First day of week')}\n \n : {user.weekm ? t('user:Monday') : t('user:Sunday')}\n

\n
\n
\n {user.picture === true && (\n
\n \n {editable && (\n <>\n
\n onDeletePicture()}\n >\n {t('user:Delete picture')}\n \n
\n
\n \n )}\n
\n )}\n {editable && (\n onUploadPicture(event)}\n >\n \n
\n \n {` (max. size: ${fileSizeLimit})`}\n \n )}{' '}\n
\n
\n {editable && (\n history.push('/profile/edit')}\n >\n {t('common:Edit')}\n \n )}\n {isDeletable && (\n displayModal(true)}\n >\n {t('user:Delete user account')}\n \n )}\n \n pathname === '/profile' ? history.push('/') : history.go(-1)\n }\n >\n {t(\n pathname === '/profile'\n ? 'common:Back to home'\n : 'common:Back'\n )}\n \n
\n
\n
\n
\n
\n
\n )\n}\n\nexport default withTranslation()(\n connect(\n state => ({\n appConfig: state.application.config,\n pathname: state.router.location.pathname,\n message: state.message,\n }),\n dispatch => ({\n onDeletePicture: () => {\n dispatch(deletePicture())\n },\n onUploadPicture: event => {\n dispatch(uploadPicture(event))\n },\n })\n )(ProfileDetail)\n)\n","import React from 'react'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport ProfileDetail from './ProfileDetail'\n\nfunction CurrentUserProfile({ t, user }) {\n return (\n
\n \n
\n )\n}\n\nexport default withTranslation()(\n connect(state => ({\n user: state.user,\n }))(CurrentUserProfile)\n)\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { recordsLabels } from '../../utils/workouts'\n\nexport default function CalendarWorkout(props) {\n const { isDisabled, isMore, sportImg, workout } = props\n return (\n \n <>\n \n {workout.records.length > 0 && (\n \n \n ` ${\n recordsLabels.filter(\n r => r.record_type === rec.record_type\n )[0].label\n }`\n )}\n />\n \n )}\n \n \n )\n}\n","import React from 'react'\n\nimport CalendarWorkout from './CalendarWorkout'\n\nexport default class CalendarWorkouts extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n isHidden: true,\n }\n }\n\n handleDisplayMore() {\n this.setState({\n isHidden: !this.state.isHidden,\n })\n }\n\n render() {\n const { dayWorkouts, isDisabled, sports } = this.props\n const { isHidden } = this.state\n return (\n
\n {dayWorkouts.map(act => (\n s.id === act.sport_id).map(s => s.img)}\n />\n ))}\n {dayWorkouts.length > 2 && (\n this.handleDisplayMore()}\n title=\"show more workouts\"\n />\n )}\n {!isHidden && (\n
\n {dayWorkouts.map(act => (\n s.id === act.sport_id)\n .map(s => s.img)}\n />\n ))}\n
\n )}\n
\n )\n }\n}\n","// eslint-disable-next-line max-len\n// source: https://blog.flowandform.agency/create-a-custom-calendar-in-react-3df1bfd0b728\nimport {\n addDays,\n addMonths,\n endOfMonth,\n endOfWeek,\n format,\n isSameDay,\n isSameMonth,\n isToday,\n startOfMonth,\n startOfWeek,\n subMonths,\n} from 'date-fns'\nimport { enGB, fr } from 'date-fns/locale'\nimport React from 'react'\nimport { connect } from 'react-redux'\n\nimport CalendarWorkouts from './CalendarWorkouts'\nimport { getMonthWorkouts } from '../../actions/workouts'\nimport { getDateWithTZ } from '../../utils'\n\nconst getStartAndEndMonth = (date, weekStartOnMonday) => {\n const monthStart = startOfMonth(date)\n const monthEnd = endOfMonth(date)\n const weekStartsOn = weekStartOnMonday ? 1 : 0\n return {\n start: startOfWeek(monthStart, { weekStartsOn }),\n end: endOfWeek(monthEnd),\n }\n}\n\nclass Calendar extends React.Component {\n constructor(props, context) {\n super(props, context)\n const calendarDate = new Date()\n this.state = {\n currentMonth: calendarDate,\n startDate: getStartAndEndMonth(calendarDate, props.weekm).start,\n endDate: getStartAndEndMonth(calendarDate, props.weekm).end,\n weekStartOnMonday: props.weekm,\n }\n }\n\n componentDidMount() {\n this.props.loadMonthWorkouts(this.state.startDate, this.state.endDate)\n }\n\n renderHeader(localeOptions) {\n const dateFormat = 'MMM yyyy'\n return (\n
\n
this.handlePrevMonth()}>\n \n
\n
\n \n {format(this.state.currentMonth, dateFormat, localeOptions)}\n \n
\n
this.handleNextMonth()}>\n \n
\n
\n )\n }\n\n renderDays(localeOptions) {\n const dateFormat = 'EEE'\n const days = []\n const { startDate } = this.state\n\n for (let i = 0; i < 7; i++) {\n days.push(\n
\n {format(addDays(startDate, i), dateFormat, localeOptions)}\n
\n )\n }\n return
{days}
\n }\n\n filterWorkouts(day) {\n const { workouts, user } = this.props\n if (workouts) {\n return workouts\n .filter(act =>\n isSameDay(getDateWithTZ(act.workout_date, user.timezone), day)\n )\n .reverse()\n }\n return []\n }\n\n renderCells() {\n const { currentMonth, startDate, endDate, weekStartOnMonday } = this.state\n const { sports } = this.props\n\n const dateFormat = 'd'\n const rows = []\n\n let days = []\n let day = startDate\n let formattedDate = ''\n\n while (day <= endDate) {\n for (let i = 0; i < 7; i++) {\n formattedDate = format(day, dateFormat)\n const dayWorkouts = this.filterWorkouts(day)\n const isDisabled = isSameMonth(day, currentMonth) ? '' : '-disabled'\n const isWeekEnd = weekStartOnMonday\n ? [5, 6].includes(i)\n : [0, 6].includes(i)\n days.push(\n \n
\n {formattedDate}\n \n
\n
\n )\n day = addDays(day, 1)\n }\n rows.push(\n
\n {days}\n
\n )\n days = []\n }\n return
{rows}
\n }\n\n updateStateDate(calendarDate) {\n const { start, end } = getStartAndEndMonth(\n calendarDate,\n this.state.weekStartOnMonday\n )\n this.setState({\n currentMonth: calendarDate,\n startDate: start,\n endDate: end,\n })\n this.props.loadMonthWorkouts(start, end)\n }\n\n handleNextMonth() {\n const calendarDate = addMonths(this.state.currentMonth, 1)\n this.updateStateDate(calendarDate)\n }\n\n handlePrevMonth() {\n const calendarDate = subMonths(this.state.currentMonth, 1)\n this.updateStateDate(calendarDate)\n }\n\n render() {\n const localeOptions = {\n locale: this.props.language === 'fr' ? fr : enGB,\n }\n return (\n
\n
\n {this.renderHeader(localeOptions)}\n {this.renderDays(localeOptions)}\n {this.renderCells()}\n
\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n workouts: state.calendarWorkouts.data,\n language: state.language,\n sports: state.sports.data,\n user: state.user,\n }),\n dispatch => ({\n loadMonthWorkouts: (start, end) => {\n const dateFormat = 'yyyy-MM-dd'\n dispatch(\n getMonthWorkouts(format(start, dateFormat), format(end, dateFormat))\n )\n },\n })\n)(Calendar)\n","import React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport { formatRecord, translateSports } from '../../utils/workouts'\n\nexport default function RecordsCard(props) {\n const { records, sports, t, user } = props\n const translatedSports = translateSports(sports, t)\n const recordsBySport = records.reduce((sportList, record) => {\n const sport = translatedSports.find(s => s.id === record.sport_id)\n if (sportList[sport.label] === void 0) {\n sportList[sport.label] = {\n img: sport.img,\n records: [],\n }\n }\n sportList[sport.label].records.push(formatRecord(record, user.timezone))\n return sportList\n }, {})\n\n return (\n
\n
{t('workouts:Personal records')}
\n
\n {Object.keys(recordsBySport).length === 0\n ? t('common:No records.')\n : Object.keys(recordsBySport)\n .sort()\n .map(sportLabel => (\n
\n \n \n {sportLabel}\n \n {/* eslint-disable-next-line max-len */}\n \n \n \n \n \n \n \n {recordsBySport[sportLabel].records.map(rec => (\n \n \n \n \n \n ))}\n \n
\n \n {sportLabel}\n
\n {t(`workouts:${rec.record_type}`)}\n {rec.value}\n \n {rec.workout_date}\n \n
\n
\n ))}\n
\n
\n )\n}\n","import FitTrackeeGenericApi from '../fitTrackeeApi'\nimport { setData, setError } from './index'\n\nexport const getStats = (userName, type, data) => dispatch =>\n FitTrackeeGenericApi.getData(`stats/${userName}/${type}`, data)\n .then(ret => {\n if (ret.status === 'success') {\n dispatch(setData('statistics', ret.data))\n } else {\n dispatch(setError(`statistics|${ret.message}`))\n }\n })\n .catch(error => dispatch(setError(`statistics|${error}`)))\n","import {\n addDays,\n addMonths,\n addYears,\n format,\n startOfMonth,\n startOfWeek,\n startOfYear,\n} from 'date-fns'\n\nconst xAxisFormats = [\n { duration: 'week', dateFormat: 'yyyy-MM-dd', xAxis: 'dd/MM' },\n { duration: 'month', dateFormat: 'yyyy-MM', xAxis: 'MM/yyyy' },\n { duration: 'year', dateFormat: 'yyyy', xAxis: 'yyyy' },\n]\n\nexport const formatDuration = (totalSeconds, formatWithDay = false) => {\n let days = '0'\n if (formatWithDay) {\n days = String(Math.floor(totalSeconds / 86400))\n totalSeconds %= 86400\n }\n const hours = String(Math.floor(totalSeconds / 3600)).padStart(2, '0')\n totalSeconds %= 3600\n const minutes = String(Math.floor(totalSeconds / 60)).padStart(2, '0')\n const seconds = String(totalSeconds % 60).padStart(2, '0')\n if (formatWithDay) {\n return `${days === '0' ? '' : `${days}d:`}${\n hours === '00' ? '' : `${hours}h:`\n }${minutes}m:${seconds}s`\n }\n return `${hours === '00' ? '' : `${hours}:`}${minutes}:${seconds}`\n}\n\nexport const formatValue = (displayedData, value) =>\n value === 0\n ? ''\n : displayedData === 'distance'\n ? `${value.toFixed(2)} km`\n : displayedData === 'duration'\n ? formatDuration(value)\n : value\n\nconst dateIncrement = (duration, day) => {\n switch (duration) {\n case 'week':\n return addDays(day, 7)\n case 'year':\n return addYears(day, 1)\n case 'month':\n default:\n return addMonths(day, 1)\n }\n}\n\nconst startDate = (duration, day, weekm) => {\n switch (duration) {\n case 'week':\n return startOfWeek(day, { weekStartsOn: weekm ? 1 : 0 })\n case 'year':\n return startOfYear(day)\n case 'month':\n default:\n return startOfMonth(day)\n }\n}\n\nexport const formatStats = (stats, sports, params, displayedSports, weekm) => {\n const nbWorkoutsStats = []\n const distanceStats = []\n const durationStats = []\n\n for (\n let day = startDate(params.duration, params.start, weekm);\n day <= params.end;\n day = dateIncrement(params.duration, day)\n ) {\n const [xAxisFormat] = xAxisFormats.filter(\n x => x.duration === params.duration\n )\n const date = format(day, xAxisFormat.dateFormat)\n const xAxis = format(day, xAxisFormat.xAxis)\n const dataNbWorkouts = { date: xAxis }\n const dataDistance = { date: xAxis }\n const dataDuration = { date: xAxis }\n\n if (stats[date]) {\n Object.keys(stats[date])\n .filter(sportId =>\n displayedSports ? displayedSports.includes(+sportId) : true\n )\n .map(sportId => {\n const sportLabel = sports.filter(s => s.id === +sportId)[0].label\n dataNbWorkouts[sportLabel] = stats[date][sportId].nb_workouts\n dataDistance[sportLabel] = stats[date][sportId].total_distance\n dataDuration[sportLabel] = stats[date][sportId].total_duration\n return null\n })\n }\n nbWorkoutsStats.push(dataNbWorkouts)\n distanceStats.push(dataDistance)\n durationStats.push(dataDuration)\n }\n\n return {\n workouts: nbWorkoutsStats,\n distance: distanceStats,\n duration: durationStats,\n }\n}\n","import React from 'react'\n\nimport { formatDuration } from '../../../utils/stats'\n\nconst formatValue = (displayedData, value) =>\n displayedData === 'duration'\n ? formatDuration(value, true)\n : displayedData === 'distance'\n ? value.toFixed(2)\n : value\n\n/**\n * @return {null}\n */\nexport default function CustomTooltip(props) {\n const { active } = props\n if (active) {\n const { displayedData, payload, label } = props\n let total = 0\n payload.map(p => (total += p.value))\n return (\n
\n

{label}

\n {payload.map(p => (\n

\n {p.name}: {formatValue(displayedData, p.value)} {p.unit}\n

\n ))}\n {payload.length > 0 && (\n

Total: {formatValue(displayedData, total)}

\n )}\n
\n )\n }\n return null\n}\n","import React from 'react'\n\nimport { formatValue } from '../../../utils/stats'\n\n/**\n * @return {null}\n */\nexport default function CustomLabel(props) {\n const { displayedData, x, y, width, value } = props\n if (!value) {\n return null\n }\n const radius = 10\n const formattedValue = formatValue(displayedData, value)\n\n return (\n \n \n {formattedValue}\n \n \n )\n}\n","import React from 'react'\nimport {\n Bar,\n BarChart,\n ResponsiveContainer,\n Tooltip,\n XAxis,\n YAxis,\n} from 'recharts'\n\nimport { formatValue } from '../../../utils/stats'\nimport { workoutColors } from '../../../utils/workouts'\nimport CustomTooltip from './CustomTooltip'\nimport CustomLabel from './CustomLabel'\n\nexport default class StatsCharts extends React.PureComponent {\n constructor(props, context) {\n super(props, context)\n this.state = {\n displayedData: 'distance',\n }\n }\n handleRadioChange(changeEvent) {\n this.setState({\n displayedData: changeEvent.target.name,\n })\n }\n\n render() {\n const { displayedData } = this.state\n const { sports, stats, t } = this.props\n if (Object.keys(stats).length === 0) {\n return t('common:No workouts.')\n }\n return (\n
\n
\n \n \n \n
\n \n \n \n formatValue(displayedData, value)} />\n }\n />\n {sports.map((s, i) => (\n \n ) : (\n ''\n )\n }\n name={t(`sports:${s.label}`)}\n />\n ))}\n \n \n
\n )\n }\n}\n","import { format } from 'date-fns'\nimport React from 'react'\nimport { connect } from 'react-redux'\n\nimport { getStats } from '../../../actions/stats'\nimport { formatStats } from '../../../utils/stats'\nimport StatsChart from './StatsChart'\n\nclass Statistics extends React.PureComponent {\n componentDidMount() {\n this.updateData()\n }\n\n componentDidUpdate(prevProps) {\n if (\n (this.props.user.username &&\n this.props.user.username !== prevProps.user.username) ||\n this.props.statsParams !== prevProps.statsParams\n ) {\n this.updateData()\n }\n }\n\n updateData() {\n if (this.props.user.username) {\n this.props.loadWorkouts(\n this.props.user.username,\n this.props.user.weekm,\n this.props.statsParams\n )\n }\n }\n\n render() {\n const {\n displayedSports,\n sports,\n statistics,\n statsParams,\n displayEmpty,\n t,\n user,\n } = this.props\n if (!displayEmpty && Object.keys(statistics).length === 0) {\n return {t('common:No workouts.')}\n }\n const stats = formatStats(\n statistics,\n sports,\n statsParams,\n displayedSports,\n user.weekm\n )\n return \n }\n}\n\nexport default connect(\n state => ({\n sports: state.sports.data,\n statistics: state.statistics.data,\n user: state.user,\n }),\n dispatch => ({\n loadWorkouts: (userName, weekm, data) => {\n const dateFormat = 'yyyy-MM-dd'\n // depends on user config (first day of week)\n const time =\n data.duration === 'week'\n ? `${data.duration}${weekm ? 'm' : ''}`\n : data.duration\n const params = {\n from: format(data.start, dateFormat),\n to: format(data.end, dateFormat),\n time: time,\n }\n dispatch(getStats(userName, data.type, params))\n },\n })\n)(Statistics)\n","import { endOfMonth, startOfMonth } from 'date-fns'\nimport React from 'react'\n\nimport Stats from '../Common/Stats'\n\nexport default class Statistics extends React.Component {\n constructor(props, context) {\n super(props, context)\n const date = new Date()\n this.state = {\n start: startOfMonth(date),\n end: endOfMonth(date),\n duration: 'week',\n type: 'by_time',\n }\n }\n\n render() {\n const { t } = this.props\n return (\n
\n
{t('dashboard:This month')}
\n
\n \n
\n
\n )\n }\n}\n","import React from 'react'\n\nexport default function UserStatistics(props) {\n const { t, user } = props\n const days = user.total_duration.match(/day/g)\n ? `${user.total_duration.split(' ')[0]} ${\n user.total_duration.match(/days/g) ? t('common:days') : t('common:day')\n }`\n : `0 ${t('common:days')},`\n let duration = user.total_duration.match(/day/g)\n ? user.total_duration.split(', ')[1]\n : user.total_duration\n duration = `${duration.split(':')[0]}h ${duration.split(':')[1]}min`\n return (\n
\n
\n
\n
\n
\n \n
\n
\n
{user.nb_workouts}
\n
{`${\n user.nb_workouts === 1\n ? t('common:workout')\n : t('common:workouts')\n }`}
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
\n {Number(user.total_distance).toFixed(2)}\n
\n
km
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
{days}
\n
{duration}
\n
\n
\n
\n
\n
\n
\n
\n
\n \n
\n
\n
{user.nb_sports}
\n
{`${\n user.nb_sports === 1 ? t('common:sport') : t('common:sports')\n }`}
\n
\n
\n
\n
\n
\n )\n}\n","import { format } from 'date-fns'\nimport React from 'react'\nimport { Link } from 'react-router-dom'\n\nimport StaticMap from '../Common/StaticMap'\nimport { getDateWithTZ } from '../../utils'\n\nexport default function WorkoutCard(props) {\n const { sports, t, user, workout } = props\n\n return (\n
\n
\n \n {sports\n .filter(sport => sport.id === workout.sport_id)\n .map(sport => t(`sports:${sport.label}`))}{' '}\n -{' '}\n {format(\n getDateWithTZ(workout.workout_date, user.timezone),\n 'dd/MM/yyyy HH:mm'\n )}\n \n
\n
\n
\n {workout.map && (\n
\n \n
\n )}\n
\n

\n {' '}\n {t('workouts:Duration')}: {workout.moving}\n {workout.map ? (\n \n
\n
\n
\n ) : (\n ' - '\n )}\n {' '}\n {t('workouts:Distance')}: {workout.distance} km\n

\n
\n
\n
\n
\n )\n}\n","import React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport Calendar from './Calendar'\nimport Message from '../Common/Message'\nimport NoWorkouts from '../Common/NoWorkouts'\nimport Records from './Records'\nimport Statistics from './Statistics'\nimport UserStatistics from './UserStatistics'\nimport WorkoutCard from './WorkoutCard'\nimport { getOrUpdateData } from '../../actions'\nimport { getMoreWorkouts } from '../../actions/workouts'\n\nclass DashBoard extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n page: 1,\n }\n }\n\n componentDidMount() {\n this.props.loadWorkouts()\n }\n\n render() {\n const { loadMoreWorkouts, message, records, sports, t, user, workouts } =\n this.props\n const paginationEnd =\n workouts.length > 0\n ? workouts[workouts.length - 1].previous_workout === null\n : true\n const { page } = this.state\n return (\n
\n \n FitTrackee - {t('common:Dashboard')}\n \n {message ? (\n \n ) : (\n workouts &&\n user.total_duration &&\n sports.length > 0 && (\n
\n \n
\n
\n \n \n
\n
\n \n {workouts.length > 0 ? (\n workouts.map(workout => (\n \n ))\n ) : (\n \n )}\n {!paginationEnd && (\n {\n loadMoreWorkouts(page + 1)\n this.setState({ page: page + 1 })\n }}\n />\n )}\n
\n
\n
\n )\n )}\n
\n )\n }\n}\n\nexport default withTranslation()(\n connect(\n state => ({\n workouts: state.workouts.data,\n message: state.message,\n records: state.records.data,\n sports: state.sports.data,\n user: state.user,\n }),\n dispatch => ({\n loadWorkouts: () => {\n dispatch(getOrUpdateData('getData', 'workouts', { page: 1 }))\n dispatch(getOrUpdateData('getData', 'records'))\n },\n loadMoreWorkouts: page => {\n dispatch(getMoreWorkouts({ page }))\n },\n })\n )(DashBoard)\n)\n","import React from 'react'\n\nimport { version } from './../../utils'\n\nexport default function Footer() {\n return (\n
\n
\n FitTrackee v{version} -{' '}\n \n source code\n {' '}\n under{' '}\n \n GPLv3\n {' '}\n license -{' '}\n \n documentation\n \n
\n
\n )\n}\n","var _path, _path2, _path3, _path4, _path5, _path6, _path7, _path8, _g, _path9, _path10, _path11, _path12;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgEn(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n enableBackground: \"new 0 0 512 512\",\n height: 512,\n viewBox: \"0 0 512 512\",\n width: 512,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m466.916 27.803h-421.832c-24.859 0-45.084 20.225-45.084 45.084v366.226c0 24.859 20.225 45.084 45.084 45.084h421.832c24.859 0 45.084-20.225 45.084-45.084v-366.226c0-24.859-20.225-45.084-45.084-45.084z\",\n fill: \"#f0f9ff\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m198.58 188.334-181.344-150.862c-7.75 6.107-13.456 14.691-15.905 24.554l164.142 136.551h33.102z\",\n fill: \"#f40055\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m313.425 198.576h33.93l163.447-135.973c-2.325-9.923-7.93-18.592-15.613-24.796l-181.764 151.211z\",\n fill: \"#c20044\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m165.472 313.425-164.141 136.549c2.449 9.863 8.155 18.447 15.905 24.553l181.344-150.861-.005-10.241z\",\n fill: \"#f40055\"\n })), _path5 || (_path5 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m313.425 313.425v9.557l181.765 151.211c7.683-6.204 13.288-14.874 15.613-24.796l-163.446-135.971z\",\n fill: \"#c20044\"\n })), _path6 || (_path6 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m53.273 27.803 145.302 120.879v-120.879z\",\n fill: \"#406bd4\"\n })), _path7 || (_path7 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m313.425 150.571v-122.768h148.082z\",\n fill: \"#3257b0\"\n })), _path8 || (_path8 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m394.732 198.575 117.268-97.556v97.556z\",\n fill: \"#3257b0\"\n })), _g || (_g = /*#__PURE__*/React.createElement(\"g\", {\n fill: \"#406bd4\"\n }, /*#__PURE__*/React.createElement(\"path\", {\n d: \"m0 99.317v99.258h119.313z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m0 313.425v97.699l117.44-97.699z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"m50.49 484.197 148.085-122.676v122.676z\"\n }))), _path9 || (_path9 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m313.425 484.197v-124.139l149.221 124.139z\",\n fill: \"#3257b0\"\n })), _path10 || (_path10 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m512 409.423-115.395-95.998h115.395z\",\n fill: \"#3257b0\"\n })), _path11 || (_path11 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m512 222.142h-222.142v-194.339h-67.716v194.339h-222.142v67.716h222.142v194.339h67.716v-194.339h222.142z\",\n fill: \"#f40055\"\n })), _path12 || (_path12 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m289.858 222.142v-194.339h-33.858v456.394h33.858v-194.339h222.142v-67.716z\",\n fill: \"#c20044\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgEn);\nexport default __webpack_public_path__ + \"static/media/en.9e6dbfb0.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\nimport { Trans } from 'react-i18next'\nimport { connect } from 'react-redux'\nimport { Link } from 'react-router-dom'\n\nimport { logout } from '../../actions/user'\n\nclass Logout extends React.Component {\n componentDidMount() {\n this.props.UserLogout()\n }\n render() {\n return (\n
\n
\n
\n
\n
\n
\n \n You are now logged out. Click here to\n log back in.\n \n
\n
\n
\n
\n
\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n user: state.user,\n }),\n dispatch => ({\n UserLogout: () => {\n dispatch(logout())\n },\n })\n)(Logout)\n","var _path, _path2, _path3, _path4;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgFr(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n enableBackground: \"new 0 0 512 512\",\n height: 512,\n viewBox: \"0 0 512 512\",\n width: 512,\n xmlns: \"http://www.w3.org/2000/svg\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _path || (_path = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m173.899 31.804h-8.707l-4.397-4h-115.711c-24.859-.001-45.084 20.224-45.084 45.083v366.226c0 24.859 20.225 45.084 45.084 45.084h115.711l6.348-4h6.755v-448.393z\",\n fill: \"#406bd4\"\n })), _path2 || (_path2 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m466.916 27.803h-115.711l-4.523 4h-5.141v448.393h4.141l5.523 4h115.711c24.859 0 45.084-20.225 45.084-45.084v-366.225c0-24.859-20.225-45.084-45.084-45.084z\",\n fill: \"#c20044\"\n })), _path3 || (_path3 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m160.795 27.803h190.409v456.394h-190.409z\",\n fill: \"#f0f9ff\"\n })), _path4 || (_path4 = /*#__PURE__*/React.createElement(\"path\", {\n d: \"m256 27.803h95.205v456.394h-95.205z\",\n fill: \"#cee5f5\"\n })));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgFr);\nexport default __webpack_public_path__ + \"static/media/fr.d0f9280c.svg\";\nexport { ForwardRef as ReactComponent };","var _g, _g2, _g3, _g4, _g5, _g6, _g7;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgPassword(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Layer_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 512.001 512.001\",\n style: {\n enableBackground: \"new 0 0 512.001 512.001\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M468.683,287.265h-69.07c-4.147,0-7.508,3.361-7.508,7.508c0,4.147,3.361,7.508,7.508,7.508h69.07 c4.147,0,7.508-3.361,7.508-7.508C476.191,290.626,472.83,287.265,468.683,287.265z\"\n })))), _g2 || (_g2 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M105.012,268.377L85.781,256l19.231-12.376c3.487-2.243,4.495-6.888,2.251-10.376c-2.244-3.486-6.888-4.497-10.376-2.25 l-17.471,11.243v-20.776c0-4.147-3.361-7.508-7.508-7.508c-4.147,0-7.508,3.361-7.508,7.508v20.775l-17.47-11.243 c-3.486-2.245-8.132-1.238-10.376,2.25c-2.245,3.487-1.237,8.133,2.25,10.376L58.034,256l-19.231,12.376 c-3.487,2.244-4.495,6.889-2.25,10.376c1.435,2.23,3.852,3.446,6.32,3.446c1.391,0,2.799-0.386,4.056-1.196l17.47-11.243v20.775 c0,4.147,3.361,7.508,7.508,7.508c4.147,0,7.508-3.361,7.508-7.508V269.76l17.471,11.243c1.257,0.809,2.664,1.196,4.056,1.196 c2.467,0,4.885-1.216,6.32-3.446C109.507,275.266,108.499,270.62,105.012,268.377z\"\n })))), _g3 || (_g3 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M194.441,268.377L175.21,256l19.231-12.376c3.487-2.244,4.495-6.889,2.25-10.376c-2.245-3.486-6.888-4.497-10.376-2.25 l-17.47,11.243v-20.775c0-4.147-3.361-7.508-7.508-7.508c-4.147,0-7.508,3.361-7.508,7.508v20.776l-17.471-11.243 c-3.487-2.245-8.133-1.238-10.376,2.25c-2.245,3.487-1.237,8.133,2.25,10.376L147.463,256l-19.231,12.376 c-3.487,2.244-4.495,6.889-2.25,10.376c1.435,2.23,3.852,3.446,6.32,3.446c1.391,0,2.799-0.386,4.056-1.196l17.471-11.243v20.776 c0,4.147,3.361,7.508,7.508,7.508c4.147,0,7.508-3.361,7.508-7.508V269.76l17.47,11.243c1.257,0.809,2.664,1.196,4.056,1.196 c2.467,0,4.885-1.216,6.32-3.446C198.936,275.266,197.928,270.62,194.441,268.377z\"\n })))), _g4 || (_g4 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M283.871,268.377L264.64,256l19.231-12.376c3.487-2.243,4.495-6.888,2.251-10.376c-2.245-3.486-6.888-4.497-10.376-2.25 l-17.471,11.243v-20.775c0-4.147-3.361-7.508-7.508-7.508c-4.147,0-7.508,3.361-7.508,7.508v20.775l-17.471-11.243 c-3.486-2.245-8.134-1.238-10.376,2.25c-2.245,3.487-1.237,8.133,2.25,10.376L236.892,256l-19.231,12.376 c-3.487,2.244-4.495,6.889-2.25,10.376c1.435,2.23,3.852,3.446,6.32,3.446c1.391,0,2.799-0.386,4.056-1.196l17.471-11.243v20.775 c0,4.147,3.361,7.508,7.508,7.508c4.147,0,7.508-3.361,7.508-7.508V269.76l17.471,11.243c1.257,0.809,2.664,1.196,4.056,1.196 c2.467,0,4.886-1.216,6.32-3.446C288.366,275.266,287.358,270.62,283.871,268.377z\"\n })))), _g5 || (_g5 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M373.3,268.377L354.069,256l19.231-12.376c3.487-2.244,4.495-6.889,2.25-10.376c-2.244-3.486-6.888-4.497-10.376-2.25 l-17.471,11.243v-20.776c0-4.147-3.361-7.508-7.508-7.508c-4.147,0-7.508,3.361-7.508,7.508v20.775l-17.47-11.243 c-3.486-2.245-8.132-1.238-10.376,2.25c-2.245,3.487-1.237,8.133,2.25,10.376L326.322,256l-19.231,12.376 c-3.487,2.244-4.495,6.889-2.25,10.376c1.435,2.23,3.852,3.446,6.32,3.446c1.391,0,2.799-0.386,4.056-1.196l17.47-11.243v20.776 c0,4.147,3.361,7.508,7.508,7.508c4.147,0,7.508-3.361,7.508-7.508V269.76l17.471,11.243c1.257,0.809,2.664,1.196,4.056,1.196 c2.467,0,4.885-1.216,6.32-3.446C377.795,275.266,376.787,270.62,373.3,268.377z\"\n })))), _g6 || (_g6 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M271.792,330.359H15.016V181.642h93.1c4.147,0,7.508-3.361,7.508-7.508c0-4.147-3.361-7.508-7.508-7.508H12.513 C5.613,166.626,0,172.24,0,179.14v153.722c0,6.9,5.613,12.513,12.513,12.513h259.278c4.147,0,7.508-3.361,7.508-7.508 C279.299,333.72,275.939,330.359,271.792,330.359z\"\n })))), _g7 || (_g7 = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M499.487,166.626H162.174c-4.147,0-7.508,3.361-7.508,7.508c0,4.147,3.361,7.508,7.508,7.508h334.811v148.716H323.848 c-4.147,0-7.508,3.361-7.508,7.508c0,4.147,3.361,7.508,7.508,7.508h175.64c6.9,0,12.513-5.613,12.513-12.513V179.14 C512.001,172.24,506.387,166.626,499.487,166.626z\"\n })))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgPassword);\nexport default __webpack_public_path__ + \"static/media/password.afe6a2a5.svg\";\nexport { ForwardRef as ReactComponent };","import React, { Component } from 'react'\nimport { connect } from 'react-redux'\n\nimport { ReactComponent as EnFlag } from '../../images/flags/en.svg'\nimport { ReactComponent as FrFlag } from '../../images/flags/fr.svg'\nimport { updateLanguage } from '../../actions/index'\n\nexport const languages = [\n {\n name: 'en',\n selected: true,\n flag: ,\n },\n {\n name: 'fr',\n selected: false,\n flag: ,\n },\n]\n\nclass Dropdown extends Component {\n constructor(props) {\n super(props)\n this.state = {\n isOpen: false,\n }\n }\n\n toggleDropdown() {\n this.setState(prevState => ({\n isOpen: !prevState.isOpen,\n }))\n }\n\n render() {\n const { isOpen } = this.state\n const { language: selected, onUpdateLanguage } = this.props\n return (\n
this.toggleDropdown()}>\n
    \n {languages\n .filter(language =>\n isOpen ? language : language.name === selected\n )\n .map(language => (\n onUpdateLanguage(language.name, selected)}\n >\n {language.flag} {language.name}\n \n ))}\n
\n
\n )\n }\n}\n\nexport default connect(\n state => ({\n language: state.language,\n }),\n dispatch => ({\n onUpdateLanguage: (lang, selected) => {\n if (lang !== selected) {\n dispatch(updateLanguage(lang))\n }\n },\n })\n)(Dropdown)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { withTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\n\nimport LanguageDropdown from './LanguageDropdown'\nimport { apiUrl } from '../../utils'\n\nclass NavBar extends React.PureComponent {\n render() {\n const { admin, isAuthenticated, picture, t, username } = this.props\n return (\n
\n
\n \n \n )\n }\n}\n\nexport default withTranslation()(\n connect(({ user }) => ({\n admin: user.admin,\n isAuthenticated: user.isAuthenticated,\n picture: user.picture,\n username: user.username,\n }))(NavBar)\n)\n","var _g;\n\nvar _excluded = [\"title\", \"titleId\"];\n\nfunction _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }\n\nfunction _objectWithoutProperties(source, excluded) { if (source == null) return {}; var target = _objectWithoutPropertiesLoose(source, excluded); var key, i; if (Object.getOwnPropertySymbols) { var sourceSymbolKeys = Object.getOwnPropertySymbols(source); for (i = 0; i < sourceSymbolKeys.length; i++) { key = sourceSymbolKeys[i]; if (excluded.indexOf(key) >= 0) continue; if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue; target[key] = source[key]; } } return target; }\n\nfunction _objectWithoutPropertiesLoose(source, excluded) { if (source == null) return {}; var target = {}; var sourceKeys = Object.keys(source); var key, i; for (i = 0; i < sourceKeys.length; i++) { key = sourceKeys[i]; if (excluded.indexOf(key) >= 0) continue; target[key] = source[key]; } return target; }\n\nimport * as React from \"react\";\n\nfunction SvgMailSend(_ref, svgRef) {\n var title = _ref.title,\n titleId = _ref.titleId,\n props = _objectWithoutProperties(_ref, _excluded);\n\n return /*#__PURE__*/React.createElement(\"svg\", _extends({\n id: \"Capa_1\",\n xmlns: \"http://www.w3.org/2000/svg\",\n xmlnsXlink: \"http://www.w3.org/1999/xlink\",\n x: \"0px\",\n y: \"0px\",\n viewBox: \"0 0 345.834 345.834\",\n style: {\n enableBackground: \"new 0 0 345.834 345.834\"\n },\n xmlSpace: \"preserve\",\n ref: svgRef,\n \"aria-labelledby\": titleId\n }, props), title ? /*#__PURE__*/React.createElement(\"title\", {\n id: titleId\n }, title) : null, _g || (_g = /*#__PURE__*/React.createElement(\"g\", null, /*#__PURE__*/React.createElement(\"path\", {\n d: \"M339.798,260.429c0.13-0.026,0.257-0.061,0.385-0.094c0.109-0.028,0.219-0.051,0.326-0.084 c0.125-0.038,0.247-0.085,0.369-0.129c0.108-0.039,0.217-0.074,0.324-0.119c0.115-0.048,0.226-0.104,0.338-0.157 c0.109-0.052,0.22-0.1,0.327-0.158c0.107-0.057,0.208-0.122,0.312-0.184c0.107-0.064,0.215-0.124,0.319-0.194 c0.111-0.074,0.214-0.156,0.321-0.236c0.09-0.067,0.182-0.13,0.27-0.202c0.162-0.133,0.316-0.275,0.466-0.421 c0.027-0.026,0.056-0.048,0.083-0.075c0.028-0.028,0.052-0.059,0.079-0.088c0.144-0.148,0.284-0.3,0.416-0.46 c0.077-0.094,0.144-0.192,0.216-0.289c0.074-0.1,0.152-0.197,0.221-0.301c0.074-0.111,0.139-0.226,0.207-0.34 c0.057-0.096,0.118-0.19,0.171-0.289c0.062-0.115,0.114-0.234,0.169-0.351c0.049-0.104,0.101-0.207,0.146-0.314 c0.048-0.115,0.086-0.232,0.128-0.349c0.041-0.114,0.085-0.227,0.12-0.343c0.036-0.118,0.062-0.238,0.092-0.358 c0.029-0.118,0.063-0.234,0.086-0.353c0.028-0.141,0.045-0.283,0.065-0.425c0.014-0.1,0.033-0.199,0.043-0.3 c0.025-0.249,0.038-0.498,0.038-0.748V92.76c0-4.143-3.357-7.5-7.5-7.5h-236.25c-0.066,0-0.13,0.008-0.196,0.01 c-0.143,0.004-0.285,0.01-0.427,0.022c-0.113,0.009-0.225,0.022-0.337,0.037c-0.128,0.016-0.255,0.035-0.382,0.058 c-0.119,0.021-0.237,0.046-0.354,0.073c-0.119,0.028-0.238,0.058-0.356,0.092c-0.117,0.033-0.232,0.069-0.346,0.107 c-0.117,0.04-0.234,0.082-0.349,0.128c-0.109,0.043-0.216,0.087-0.322,0.135c-0.118,0.053-0.235,0.11-0.351,0.169 c-0.099,0.051-0.196,0.103-0.292,0.158c-0.116,0.066-0.23,0.136-0.343,0.208c-0.093,0.06-0.184,0.122-0.274,0.185 c-0.106,0.075-0.211,0.153-0.314,0.235c-0.094,0.075-0.186,0.152-0.277,0.231c-0.09,0.079-0.179,0.158-0.266,0.242 c-0.099,0.095-0.194,0.194-0.288,0.294c-0.047,0.05-0.097,0.094-0.142,0.145c-0.027,0.03-0.048,0.063-0.074,0.093 c-0.094,0.109-0.182,0.223-0.27,0.338c-0.064,0.084-0.13,0.168-0.19,0.254c-0.078,0.112-0.15,0.227-0.222,0.343 c-0.059,0.095-0.12,0.189-0.174,0.286c-0.063,0.112-0.118,0.227-0.175,0.342c-0.052,0.105-0.106,0.21-0.153,0.317 c-0.049,0.113-0.092,0.23-0.135,0.345c-0.043,0.113-0.087,0.225-0.124,0.339c-0.037,0.115-0.067,0.232-0.099,0.349 c-0.032,0.12-0.066,0.239-0.093,0.36c-0.025,0.113-0.042,0.228-0.062,0.342c-0.022,0.13-0.044,0.26-0.06,0.39 c-0.013,0.108-0.019,0.218-0.027,0.328c-0.01,0.14-0.019,0.28-0.021,0.421c-0.001,0.041-0.006,0.081-0.006,0.122v46.252 c0,4.143,3.357,7.5,7.5,7.5s7.5-3.357,7.5-7.5v-29.595l66.681,59.037c-0.348,0.245-0.683,0.516-0.995,0.827l-65.687,65.687v-49.288 c0-4.143-3.357-7.5-7.5-7.5s-7.5,3.357-7.5,7.5v9.164h-38.75c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h38.75v43.231 c0,4.143,3.357,7.5,7.5,7.5h236.25c0.247,0,0.494-0.013,0.74-0.037c0.115-0.011,0.226-0.033,0.339-0.049 C339.542,260.469,339.67,260.454,339.798,260.429z M330.834,234.967l-65.688-65.687c-0.042-0.042-0.087-0.077-0.13-0.117 l49.383-41.897c3.158-2.68,3.546-7.412,0.866-10.571c-2.678-3.157-7.41-3.547-10.571-0.866l-84.381,71.59l-98.444-87.158h208.965 V234.967z M185.878,179.888c0.535-0.535,0.969-1.131,1.308-1.765l28.051,24.835c1.418,1.255,3.194,1.885,4.972,1.885 c1.726,0,3.451-0.593,4.853-1.781l28.587-24.254c0.26,0.38,0.553,0.743,0.89,1.08l65.687,65.687H120.191L185.878,179.888z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M7.5,170.676h126.667c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H7.5c-4.143,0-7.5,3.357-7.5,7.5 S3.357,170.676,7.5,170.676z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M20.625,129.345H77.5c4.143,0,7.5-3.357,7.5-7.5s-3.357-7.5-7.5-7.5H20.625c-4.143,0-7.5,3.357-7.5,7.5 S16.482,129.345,20.625,129.345z\"\n }), /*#__PURE__*/React.createElement(\"path\", {\n d: \"M62.5,226.51h-55c-4.143,0-7.5,3.357-7.5,7.5s3.357,7.5,7.5,7.5h55c4.143,0,7.5-3.357,7.5-7.5S66.643,226.51,62.5,226.51z\"\n }))));\n}\n\nvar ForwardRef = /*#__PURE__*/React.forwardRef(SvgMailSend);\nexport default __webpack_public_path__ + \"static/media/mail-send.619079f0.svg\";\nexport { ForwardRef as ReactComponent };","import React from 'react'\nimport { Trans, useTranslation } from 'react-i18next'\nimport { Link } from 'react-router-dom'\n\nimport { ReactComponent as Password } from '../../images/password.svg'\nimport { ReactComponent as MailSend } from '../../images/mail-send.svg'\n\nexport default function PasswordReset(props) {\n const { t } = useTranslation()\n const { action } = props\n return (\n
\n
\n
\n
\n
\n
\n {action === 'sent' && (\n <>\n
\n \n
\n {t(\n // eslint-disable-next-line max-len\n \"user:Check your email. If your address is in our database, you'll received an email with a link to reset your password.\"\n )}\n \n )}\n {action === 'updated' && (\n <>\n
\n \n
\n \n {/* prettier-ignore */}\n Your password have been updated. Click\n here to log in.\n \n \n )}\n
\n
\n
\n
\n
\n
\n )\n}\n","import { format } from 'date-fns'\nimport React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\nimport TimezonePicker from 'react-timezone'\n\nimport Message from '../Common/Message'\nimport { deleteUser, handleProfileFormSubmit } from '../../actions/user'\nimport { history } from '../../index'\nimport { languages } from '../NavBar/LanguageDropdown'\nimport CustomModal from '../Common/CustomModal'\nimport CustomTextArea from '../Common/CustomTextArea'\n\nclass ProfileEdit extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n formData: {},\n displayModal: false,\n }\n }\n\n componentDidMount() {\n this.initForm()\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.user !== this.props.user) {\n this.initForm()\n }\n }\n\n initForm() {\n const { user } = this.props\n const formData = {}\n Object.keys(user).map(k =>\n user[k] === null\n ? (formData[k] = '')\n : k === 'birth_date'\n ? (formData[k] = format(new Date(user[k]), 'yyyy-MM-dd'))\n : (formData[k] = user[k])\n )\n this.setState({ formData })\n }\n\n handleFormChange(e) {\n const { formData } = this.state\n if (e.target.name === 'weekm') {\n formData.weekm = e.target.value === 'Monday'\n } else {\n formData[e.target.name] = e.target.value\n }\n this.setState(formData)\n }\n\n displayModal(value) {\n this.setState(prevState => ({\n ...prevState,\n displayModal: value,\n }))\n }\n\n render() {\n const { message, onDeleteUser, onHandleProfileFormSubmit, t, user } =\n this.props\n const { displayModal, formData } = this.state\n return (\n
\n \n FitTrackee - {t('user:Profile Edition')}\n \n {formData.isAuthenticated && (\n
\n {displayModal && (\n {\n onDeleteUser(user.username)\n this.displayModal(false)\n }}\n close={() => this.displayModal(false)}\n />\n )}\n

{t('user:Profile Edition')}

\n
\n
\n
\n
\n
{user.username}
\n
\n
\n
\n {\n event.preventDefault()\n onHandleProfileFormSubmit(formData)\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 event.preventDefault()\n this.displayModal(true)\n }}\n >\n {t('user:Delete my account')}\n \n history.push('/profile')}\n >\n {t('common:Cancel')}\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n )}\n
\n )\n }\n}\n\nexport default withTranslation()(\n connect(\n state => ({\n location: state.router.location,\n message: state.message,\n user: state.user,\n }),\n dispatch => ({\n onDeleteUser: username => {\n dispatch(deleteUser(username))\n },\n onHandleProfileFormSubmit: formData => {\n dispatch(handleProfileFormSubmit(formData))\n },\n })\n )(ProfileEdit)\n)\n","import {\n endOfMonth,\n endOfWeek,\n endOfYear,\n startOfMonth,\n startOfYear,\n startOfWeek,\n addMonths,\n addWeeks,\n addYears,\n subMonths,\n subWeeks,\n subYears,\n} from 'date-fns'\nimport React from 'react'\nimport { Helmet } from 'react-helmet'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport NoWorkouts from '../Common/NoWorkouts'\nimport Stats from '../Common/Stats'\nimport { workoutColors, translateSports } from '../../utils/workouts'\n\nconst durations = ['week', 'month', 'year']\n\nclass Statistics extends React.Component {\n constructor(props, context) {\n super(props, context)\n const date = new Date()\n this.state = {\n displayedSports: props.sports.map(sport => sport.id),\n statsParams: {\n start: startOfMonth(subMonths(date, 11)),\n end: endOfMonth(date),\n duration: 'month',\n type: 'by_time',\n },\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.sports !== prevProps.sports) {\n this.updateDisplayedSports()\n }\n }\n\n updateDisplayedSports() {\n const { sports } = this.props\n this.setState({ displayedSports: sports.map(sport => sport.id) })\n }\n\n handleOnChangeDuration(e) {\n const duration = e.target.name\n\n const date = new Date()\n const start =\n duration === 'year'\n ? startOfYear(subYears(date, 9))\n : duration === 'week'\n ? startOfMonth(subMonths(date, 2))\n : startOfMonth(subMonths(date, 11))\n const end =\n duration === 'year'\n ? endOfYear(date)\n : duration === 'week'\n ? endOfWeek(date)\n : endOfMonth(date)\n this.setState({ statsParams: { duration, end, start, type: 'by_time' } })\n }\n\n handleOnChangeSports(sportId) {\n const { displayedSports } = this.state\n if (displayedSports.includes(sportId)) {\n this.setState({\n displayedSports: displayedSports.filter(s => s !== sportId),\n })\n } else {\n this.setState({ displayedSports: displayedSports.concat([sportId]) })\n }\n }\n\n handleOnClickArrows(forward) {\n const { start, end, duration } = this.state.statsParams\n let newStart, newEnd\n if (forward) {\n newStart =\n duration === 'year'\n ? startOfYear(subYears(start, 1))\n : duration === 'week'\n ? startOfWeek(subWeeks(start, 1))\n : startOfMonth(subMonths(start, 1))\n newEnd =\n duration === 'year'\n ? endOfYear(subYears(end, 1))\n : duration === 'week'\n ? endOfWeek(subWeeks(end, 1))\n : endOfMonth(subMonths(end, 1))\n } else {\n newStart =\n duration === 'year'\n ? startOfYear(addYears(start, 1))\n : duration === 'week'\n ? startOfWeek(addWeeks(start, 1))\n : startOfMonth(addMonths(start, 1))\n newEnd =\n duration === 'year'\n ? endOfYear(addYears(end, 1))\n : duration === 'week'\n ? endOfWeek(addWeeks(end, 1))\n : endOfMonth(addMonths(end, 1))\n }\n this.setState({\n statsParams: { duration, end: newEnd, start: newStart, type: 'by_time' },\n })\n }\n\n render() {\n const { displayedSports, statsParams } = this.state\n const { sports, t, user } = this.props\n const translatedSports = translateSports(\n sports.filter(sport => user.sports_list.includes(sport.id)),\n t\n )\n return (\n <>\n \n FitTrackee - {t('statistics:Statistics')}\n \n
\n
\n
{t('statistics:Statistics')}
\n \n
\n
\n

\n this.handleOnClickArrows(true)}\n />\n

\n
\n
\n {durations.map(d => (\n
\n \n
\n ))}\n
\n
\n

\n this.handleOnClickArrows(false)}\n />\n

\n
\n
\n \n
\n {translatedSports.map(sport => (\n \n ))}\n
\n
\n
\n {user.nb_workouts === 0 && }\n
\n \n )\n }\n}\n\nexport default withTranslation()(\n connect(state => ({\n sports: state.sports.data,\n user: state.user,\n }))(Statistics)\n)\n","import React from 'react'\nimport { useTranslation } from 'react-i18next'\nimport { Helmet } from 'react-helmet'\nimport { Link } from 'react-router-dom'\n\nimport { history } from '../../index'\n\nexport default function Form(props) {\n const { t } = useTranslation()\n const pageTitle = `user:${props.formType\n .charAt(0)\n .toUpperCase()}${props.formType.slice(1)}`\n return (\n
\n \n FitTrackee - {t(`user:${props.formType}`)}\n \n

{t(pageTitle)}

\n
\n
\n
\n
\n
\n {props.formType === 'register' && !props.isRegistrationAllowed ? (\n
\n
Registration is disabled.
\n
\n history.go(-1)}\n >\n Back\n \n
\n
\n ) : (\n <>\n \n props.handleUserFormSubmit(event, props.formType)\n }\n >\n {props.formType === 'register' && (\n
\n \n
\n )}\n {props.formType !== 'password reset' && (\n
\n \n
\n )}\n {props.formType !== 'reset your password' && (\n <>\n
\n \n
\n {props.formType !== 'login' && (\n
\n \n
\n )}\n \n )}\n \n \n

\n {props.formType === 'login' && (\n \n {t('user:Forgot password?')}\n \n )}\n

\n \n )}\n
\n
\n
\n
\n
\n )\n}\n","import React from 'react'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\nimport { Redirect } from 'react-router-dom'\n\nimport Form from './Form'\nimport Message from '../Common/Message'\nimport { handleUserFormSubmit } from '../../actions/user'\nimport { isLoggedIn } from '../../utils'\n\nclass UserForm extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n formData: {\n username: '',\n email: '',\n password: '',\n password_conf: '',\n },\n }\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.location.pathname !== this.props.location.pathname) {\n this.emptyForm()\n }\n }\n\n emptyForm() {\n const { formData } = this.state\n Object.keys(formData).map(k => (formData[k] = ''))\n this.setState(formData)\n }\n\n onHandleFormChange(e) {\n const { formData } = this.state\n formData[e.target.name] = e.target.value\n this.setState(formData)\n }\n\n render() {\n const {\n formType,\n isRegistrationAllowed,\n message,\n messages,\n onHandleUserFormSubmit,\n t,\n } = this.props\n const { formData } = this.state\n const { token } = this.props.location.query\n return (\n
\n {isLoggedIn() || (formType === 'password reset' && !token) ? (\n \n ) : (\n
\n \n this.onHandleFormChange(event)}\n handleUserFormSubmit={event => {\n event.preventDefault()\n if (formType === 'password reset') {\n formData.token = token\n }\n onHandleUserFormSubmit(formData, formType)\n }}\n />\n
\n )}\n
\n )\n }\n}\nexport default withTranslation()(\n connect(\n state => ({\n isRegistrationAllowed: state.application.config.is_registration_enabled,\n location: state.router.location,\n message: state.message,\n messages: state.messages,\n }),\n dispatch => ({\n onHandleUserFormSubmit: (formData, formType) => {\n formType =\n formType === 'password reset'\n ? 'password/update'\n : formType === 'reset your password'\n ? 'password/reset-request'\n : formType\n dispatch(handleUserFormSubmit(formData, formType))\n },\n })\n )(UserForm)\n)\n","import React from 'react'\nimport { withTranslation } from 'react-i18next'\nimport { connect } from 'react-redux'\n\nimport CustomModal from '../Common/CustomModal'\nimport ProfileDetail from './ProfileDetail'\nimport { getOrUpdateData } from '../../actions'\nimport { deleteUser } from '../../actions/user'\n\nclass UserProfile extends React.Component {\n constructor(props, context) {\n super(props, context)\n this.state = {\n displayModal: false,\n }\n }\n\n componentDidMount() {\n this.props.loadUser(this.props.match.params.userName)\n }\n\n componentDidUpdate(prevProps) {\n if (prevProps.match.params.userName !== this.props.match.params.userName) {\n this.props.loadUser(this.props.match.params.userName)\n }\n }\n\n displayModal(value) {\n this.setState(prevState => ({\n ...prevState,\n displayModal: value,\n }))\n }\n\n render() {\n const { t, currentUser, onDeleteUser, users } = this.props\n const { displayModal } = this.state\n const [user] = users\n const editable = user ? currentUser.username === user.username : false\n return (\n
\n {displayModal && (\n {\n onDeleteUser(user.username)\n this.displayModal(false)\n }}\n close={() => this.displayModal(false)}\n />\n )}\n {user && (\n this.displayModal(e)}\n t={t}\n user={user}\n />\n )}\n
\n )\n }\n}\n\nexport default withTranslation()(\n connect(\n state => ({\n currentUser: state.user,\n users: state.users.data,\n }),\n dispatch => ({\n onDeleteUser: username => {\n dispatch(deleteUser(username, true))\n },\n loadUser: userName => {\n dispatch(getOrUpdateData('getData', 'users', { username: userName }))\n },\n })\n )(UserProfile)\n)\n","import React from 'react'\nimport { connect } from 'react-redux'\nimport { Route, Switch } from 'react-router-dom'\n\nimport './App.css'\nimport Admin from './Admin'\nimport Workout from './Workout'\nimport Workouts from './Workouts'\nimport CurrentUserProfile from './User/CurrentUserProfile'\nimport Dashboard from './Dashboard'\nimport Footer from './Footer'\nimport Logout from './User/Logout'\nimport NavBar from './NavBar'\nimport NotFound from './Others/NotFound'\nimport PasswordReset from './User/PasswordReset'\nimport ProfileEdit from './User/ProfileEdit'\nimport Statistics from './Statistics'\nimport UserForm from './User/UserForm'\nimport UserProfile from './User/UserProfile'\nimport { getAppData } from '../actions/application'\n\nclass App extends React.Component {\n constructor(props) {\n super(props)\n this.props = props\n }\n componentDidMount() {\n this.props.loadAppConfig()\n }\n\n render() {\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}\nexport default connect(\n () => ({}),\n dispatch => ({\n loadAppConfig: () => {\n dispatch(getAppData('config'))\n },\n })\n)(App)\n","import React from 'react'\nimport { Provider } from 'react-redux'\nimport { ConnectedRouter } from 'connected-react-router'\n\nexport default function Root({ store, history, children }) {\n return (\n \n {children}\n \n )\n}\n","// In production, we register a service worker to serve assets from local cache.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on the \"N+1\" visit to a page, since previously\n// cached resources are updated in the background.\n\n// To learn more about the benefits of this model, read https://goo.gl/KwvDNy.\n// This link also includes instructions on opting out of this behavior.\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.1/8 is considered localhost for IPv4.\n window.location.hostname.match(\n /^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/\n )\n)\n\nexport default function register() {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location)\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets;\n // see https://github.com/facebookincubator/create-react-app/issues/2374\n return\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`\n\n if (isLocalhost) {\n // This is running on localhost.\n // Lets check if a service worker still exists or not.\n checkValidServiceWorker(swUrl)\n } else {\n // Is not local host. Just register service worker\n registerValidSW(swUrl)\n }\n })\n }\n}\n\nfunction registerValidSW(swUrl) {\n navigator.serviceWorker\n .register(swUrl)\n .then(registration => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the old content will have been purged and\n // the fresh content will have been added to the cache.\n // It's the perfect time to display a \"New content is\n // available; please refresh.\" message in your web app.\n // eslint-disable-next-line no-console\n console.log('New content is available; please refresh.')\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n // eslint-disable-next-line no-console\n console.log('Content is cached for offline use.')\n }\n }\n }\n }\n })\n .catch(error => {\n console.error('Error during service worker registration:', error)\n })\n}\n\nfunction checkValidServiceWorker(swUrl) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl)\n .then(response => {\n // Ensure service worker exists, and that we really are getting a JS file.\n if (\n response.status === 404 ||\n response.headers.get('content-type').indexOf('javascript') === -1\n ) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister().then(() => {\n window.location.reload()\n })\n })\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl)\n }\n })\n .catch(() => {\n // eslint-disable-next-line no-console\n console.log(\n 'No internet connection found. App is running in offline mode.'\n )\n })\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready.then(registration => {\n registration.unregister()\n })\n }\n}\n","const emptyData = {\n data: [],\n}\n\nexport default {\n language: 'en',\n message: '',\n messages: [],\n user: {\n isAuthenticated: false,\n },\n workouts: {\n ...emptyData,\n },\n application: {\n statistics: {},\n config: {\n gpx_limit_import: null,\n is_registration_enabled: null,\n max_single_file_size: null,\n max_users: null,\n max_zip_file_size: null,\n registration: null,\n },\n },\n calendarWorkouts: {\n ...emptyData,\n },\n chartData: [],\n // check if storing gpx content is OK\n gpx: null,\n loading: false,\n records: {\n ...emptyData,\n },\n sports: {\n ...emptyData,\n },\n statistics: {\n data: {},\n },\n users: {\n ...emptyData,\n },\n}\n","const routesWithoutAuthentication = [\n '/login',\n '/register',\n '/password-reset',\n '/password-reset/request',\n '/password-reset/sent',\n '/updated-password',\n]\n\nconst updatePath = (toPath, newPath) => {\n if (typeof toPath === 'string' || toPath instanceof String) {\n toPath = newPath\n } else {\n toPath.pathname = newPath\n }\n return toPath\n}\n\nconst pathInterceptor = toPath => {\n if (\n !window.localStorage.authToken &&\n !routesWithoutAuthentication.includes(toPath.pathname)\n ) {\n toPath = updatePath(toPath, '/login')\n }\n if (\n window.localStorage.authToken &&\n routesWithoutAuthentication.includes(toPath.pathname)\n ) {\n toPath = updatePath(toPath, '/')\n }\n return toPath\n}\n\nexport const historyEnhancer = originalHistory => {\n originalHistory.location = pathInterceptor(originalHistory.location)\n return {\n ...originalHistory,\n push: (path, ...args) =>\n originalHistory.push(pathInterceptor(path), ...args),\n replace: (path, ...args) =>\n originalHistory.replace(pathInterceptor(path), ...args),\n }\n}\n","import { connectRouter } from 'connected-react-router'\nimport { combineReducers } from 'redux'\n\nimport initial from './initial'\n\nconst handleDataAndError = (state, type, action) => {\n if (action.target !== type) {\n return state\n }\n if (action.type === 'SET_DATA') {\n return {\n ...state,\n data: action.data[action.target],\n }\n }\n if (action.type === 'SET_PAGINATED_DATA') {\n return {\n ...state,\n data: action.data[action.target],\n pagination: action.pagination,\n }\n }\n return state\n}\n\nconst workouts = (state = initial.workouts, action) => {\n switch (action.type) {\n case 'LOGOUT':\n return initial.workouts\n case 'PUSH_WORKOUTS':\n return {\n ...state,\n data: state.data.concat(action.workouts),\n }\n case 'REMOVE_WORKOUT':\n return {\n ...state,\n data: state.data.filter(workout => workout.id !== action.workoutId),\n }\n default:\n return handleDataAndError(state, 'workouts', action)\n }\n}\n\nconst application = (state = initial.application, action) => {\n if (action.type === 'SET_APP_CONFIG') {\n return {\n ...state,\n config: action.data,\n }\n }\n if (action.type === 'SET_APP_STATS') {\n return {\n ...state,\n statistics: action.data,\n }\n }\n return state\n}\n\nconst calendarWorkouts = (state = initial.calendarWorkouts, action) => {\n switch (action.type) {\n case 'LOGOUT':\n return initial.calendarWorkouts\n case 'UPDATE_CALENDAR':\n return {\n ...state,\n data: action.workouts,\n }\n default:\n return handleDataAndError(state, 'calendarWorkouts', action)\n }\n}\n\nconst chartData = (state = initial.chartData, action) => {\n if (action.type === 'SET_CHART_DATA') {\n return action.chartData\n }\n return state\n}\n\nconst gpx = (state = initial.gpx, action) => {\n if (action.type === 'SET_GPX') {\n return action.gpxContent\n }\n return state\n}\n\nconst language = (state = initial.language, action) => {\n if (action.type === 'SET_LANGUAGE') {\n return action.language\n }\n return state\n}\n\nconst loading = (state = initial.loading, action) => {\n if (action.type === 'SET_LOADING') {\n return action.loading\n }\n return state\n}\n\nconst message = (state = initial.message, action) => {\n switch (action.type) {\n case 'AUTH_ERROR':\n case 'PROFILE_ERROR':\n case 'PROFILE_UPDATE_ERROR':\n case 'PICTURE_ERROR':\n case 'SET_ERROR':\n return action.message\n case 'CLEAN_ALL_MESSAGES':\n case 'LOGOUT':\n case 'PROFILE_SUCCESS':\n case 'SET_APP_CONFIG':\n case 'SET_RESULTS':\n case '@@router/LOCATION_CHANGE':\n return ''\n default:\n return state\n }\n}\n\nconst messages = (state = initial.messages, action) => {\n switch (action.type) {\n case 'AUTH_ERRORS':\n case 'APP_ERRORS':\n return action.messages\n case 'CLEAN_ALL_MESSAGES':\n case 'LOGOUT':\n case 'PROFILE_SUCCESS':\n case '@@router/LOCATION_CHANGE':\n return []\n default:\n return state\n }\n}\n\nconst records = (state = initial.records, action) => {\n if (action.type === 'LOGOUT') {\n return initial.records\n }\n return handleDataAndError(state, 'records', action)\n}\n\nconst sports = (state = initial.sports, action) => {\n if (action.type === 'UPDATE_SPORT_DATA') {\n return {\n ...state,\n data: state.data.map(sport => {\n if (sport.id === action.data.id) {\n sport.is_active = action.data.is_active\n }\n return sport\n }),\n }\n }\n return handleDataAndError(state, 'sports', action)\n}\n\nconst users = (state = initial.users, action) => {\n if (action.type === 'UPDATE_USER_DATA') {\n return {\n ...state,\n data: state.data.map(user => {\n if (user.username === action.data.username) {\n user.admin = action.data.admin\n }\n return user\n }),\n }\n }\n return handleDataAndError(state, 'users', action)\n}\n\nconst user = (state = initial.user, action) => {\n switch (action.type) {\n case 'AUTH_ERROR':\n case 'PROFILE_ERROR':\n case 'LOGOUT':\n window.localStorage.removeItem('authToken')\n return initial.user\n case 'PROFILE_SUCCESS':\n return action.profil\n default:\n return state\n }\n}\n\nconst statistics = (state = initial.statistics, action) => {\n if (action.type === 'LOGOUT') {\n return initial.statistics\n }\n return handleDataAndError(state, 'statistics', action)\n}\n\nexport default history =>\n combineReducers({\n workouts,\n application,\n calendarWorkouts,\n chartData,\n gpx,\n language,\n loading,\n message,\n messages,\n records,\n router: connectRouter(history),\n sports,\n statistics,\n user,\n users,\n })\n","/* eslint-disable react/jsx-filename-extension */\nimport { createBrowserHistory } from 'history'\nimport React from 'react'\nimport { I18nextProvider } from 'react-i18next'\nimport ReactDOM from 'react-dom'\nimport { routerMiddleware } from 'connected-react-router'\nimport { applyMiddleware, compose, createStore } from 'redux'\nimport thunk from 'redux-thunk'\n\nimport i18n from './i18n'\nimport App from './components/App'\nimport Root from './components/Root'\nimport registerServiceWorker from './registerServiceWorker'\nimport createRootReducer from './reducers'\nimport { loadProfile } from './actions/user'\nimport { historyEnhancer } from './utils/history'\n\nexport const history = historyEnhancer(createBrowserHistory())\n\nhistory.listen(() => {\n window.scrollTo(0, 0)\n})\n\nexport const rootNode = document.getElementById('root')\n\nexport const store = createStore(\n createRootReducer(history),\n window.__STATE__, // Server state\n (window.__REDUX_DEVTOOLS_EXTENSION_COMPOSE__ || compose)(\n applyMiddleware(routerMiddleware(history), thunk)\n )\n)\n\nif (window.localStorage.authToken !== null) {\n store.dispatch(loadProfile())\n}\n\nReactDOM.render(\n \n \n \n \n ,\n rootNode\n)\nregisterServiceWorker()\n"],"sourceRoot":""}