├── .env
├── .eslintrc.js
├── .gitignore
├── README.md
├── babel.config.js
├── dist
├── css
│ └── app.4bfd59e4.css
├── favicon.ico
├── img
│ ├── dumbbell-light-green.e9869f64.png
│ ├── dumbbell-light.ef471ab1.png
│ ├── pencil-light.67a7865c.png
│ ├── running-light-green.599f4302.png
│ ├── trash-light-green.f27ed677.png
│ └── trash-light.f5a99b6a.png
├── index.html
└── js
│ ├── app.f1ad2084.js
│ ├── app.f1ad2084.js.map
│ ├── chunk-vendors.9f568594.js
│ └── chunk-vendors.9f568594.js.map
├── package-lock.json
├── package.json
├── postcss.config.js
├── public
├── favicon.ico
└── index.html
├── src
├── App.vue
├── assets
│ ├── images
│ │ ├── dumbbell-light-green.png
│ │ ├── dumbbell-light.png
│ │ ├── pencil-light.png
│ │ ├── running-light-green.png
│ │ ├── running-light.png
│ │ ├── trash-light-green.png
│ │ └── trash-light.png
│ └── tailwind.css
├── components
│ └── Navigation.vue
├── main.js
├── router
│ └── index.js
├── store
│ └── index.js
├── supabase
│ └── init.js
└── views
│ ├── Create.vue
│ ├── Home.vue
│ ├── Login.vue
│ ├── Register.vue
│ └── ViewWorkout.vue
├── static.json
└── tailwind.config.js
/.env:
--------------------------------------------------------------------------------
1 | VUE_APP_SUPABASE_URL=https://auktqraarxzziersepme.supabase.co
2 | VUE_APP_SUPABASE_ANON_KEY=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJyb2xlIjoiYW5vbiIsImlhdCI6MTYzMjE3ODYwOCwiZXhwIjoxOTQ3NzU0NjA4fQ.z1WdA8nfYfpju48ojyL6e-IPr3dcmjSH-dQkzpOYH1M
--------------------------------------------------------------------------------
/.eslintrc.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | root: true,
3 | env: {
4 | node: true
5 | },
6 | 'extends': [
7 | 'plugin:vue/vue3-essential',
8 | 'eslint:recommended'
9 | ],
10 | parserOptions: {
11 | parser: 'babel-eslint'
12 | },
13 | rules: {
14 | 'no-console': process.env.NODE_ENV === 'production' ? 'warn' : 'off',
15 | 'no-debugger': process.env.NODE_ENV === 'production' ? 'warn' : 'off'
16 | }
17 | }
18 |
--------------------------------------------------------------------------------
/.gitignore:
--------------------------------------------------------------------------------
1 | .DS_Store
2 | node_modules
3 |
4 |
5 | # local env files
6 | .env.local
7 | .env.*.local
8 |
9 | # Log files
10 | npm-debug.log*
11 | yarn-debug.log*
12 | yarn-error.log*
13 | pnpm-debug.log*
14 |
15 | # Editor directories and files
16 | .idea
17 | .vscode
18 | *.suo
19 | *.ntvs*
20 | *.njsproj
21 | *.sln
22 | *.sw?
23 |
--------------------------------------------------------------------------------
/README.md:
--------------------------------------------------------------------------------
1 | # workout_tracker
2 |
3 | ## Project setup
4 | ```
5 | npm install
6 | ```
7 |
8 | ### Compiles and hot-reloads for development
9 | ```
10 | npm run serve
11 | ```
12 |
13 | ### Compiles and minifies for production
14 | ```
15 | npm run build
16 | ```
17 |
18 | ### Lints and fixes files
19 | ```
20 | npm run lint
21 | ```
22 |
23 | ### Customize configuration
24 | See [Configuration Reference](https://cli.vuejs.org/config/).
25 |
--------------------------------------------------------------------------------
/babel.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | presets: [
3 | '@vue/cli-plugin-babel/preset'
4 | ]
5 | }
6 |
--------------------------------------------------------------------------------
/dist/css/app.4bfd59e4.css:
--------------------------------------------------------------------------------
1 | @import url(https://fonts.googleapis.com/css2?family=Poppins:wght@100;200;300;400;500;600;700&display=swap);
2 | /*! tailwindcss v2.2.14 | MIT License | https://tailwindcss.com */
3 |
4 | /*! modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize */html{-moz-tab-size:4;-o-tab-size:4;tab-size:4;line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif,Apple Color Emoji,Segoe UI Emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}[type=button],[type=submit],button{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}summary{display:list-item}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,:after,:before{box-sizing:border-box;border-width:0;border-style:solid;border-color:currentColor}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}*,:after,:before{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.container{width:100%;margin-right:auto;margin-left:auto}@media (min-width:1124px){.container{max-width:1124px}}.absolute{position:absolute}.relative{position:relative}.top-2{top:.5rem}.left-2{left:.5rem}.-left-5{left:-1.25rem}.mx-auto{margin-left:auto;margin-right:auto}.mt-4{margin-top:1rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.mt-10{margin-top:2.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-10{margin-bottom:2.5rem}.box-border{box-sizing:border-box}.flex{display:flex}.table{display:table}.grid{display:grid}.h-3{height:.75rem}.h-4{height:1rem}.h-7{height:1.75rem}.h-24{height:6rem}.h-3\.5{height:.875rem}.min-h-full{min-height:100%}.w-7{width:1.75rem}.w-14{width:3.5rem}.w-auto{width:auto}.w-full{width:100%}.max-w-screen-sm{max-width:640px}.max-w-screen-md{max-width:768px}.flex-1{flex:1 1 0%}.flex-2{flex:2 2 0%}@-webkit-keyframes spin{to{transform:rotate(1turn)}}@keyframes spin{to{transform:rotate(1turn)}}@-webkit-keyframes ping{75%,to{transform:scale(2);opacity:0}}@keyframes ping{75%,to{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,to{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.flex-col{flex-direction:column}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-x-2{-moz-column-gap:.5rem;column-gap:.5rem}.gap-x-4{-moz-column-gap:1rem;column-gap:1rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-x-10{-moz-column-gap:2.5rem;column-gap:2.5rem}.gap-y-2{row-gap:.5rem}.gap-y-4{row-gap:1rem}.gap-y-5{row-gap:1.25rem}.self-start{align-self:flex-start}.rounded-sm{border-radius:.125rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-2{border-width:2px}.border-solid{border-style:solid}.border-transparent{border-color:transparent}.hover\:border-white:hover{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.hover\:border-at-light-green:hover{--tw-border-opacity:1;border-color:rgba(68,186,159,var(--tw-border-opacity))}.bg-at-light-green{--tw-bg-opacity:1;background-color:rgba(68,186,159,var(--tw-bg-opacity))}.bg-light-grey{--tw-bg-opacity:1;background-color:rgba(241,241,241,var(--tw-bg-opacity))}.hover\:bg-white:hover{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.p-2{padding:.5rem}.p-4{padding:1rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.text-center{text-align:center}.font-Poppins{font-family:Poppins,sans-serif}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-lg{font-size:1.125rem}.text-lg,.text-xl{line-height:1.75rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.capitalize{text-transform:capitalize}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-red-500{--tw-text-opacity:1;color:rgba(239,68,68,var(--tw-text-opacity))}.hover\:text-at-light-green:hover,.text-at-light-green{--tw-text-opacity:1;color:rgba(68,186,159,var(--tw-text-opacity))}*,:after,:before{--tw-shadow:0 0 transparent}.shadow-md{--tw-shadow:0 4px 6px -1px rgba(0,0,0,0.1),0 2px 4px -1px rgba(0,0,0,0.06)}.shadow-lg,.shadow-md{box-shadow:var(--tw-ring-offset-shadow,0 0 transparent),var(--tw-ring-shadow,0 0 transparent),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0,0,0,0.1),0 4px 6px -2px rgba(0,0,0,0.05)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}*,:after,:before{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59,130,246,0.5);--tw-ring-offset-shadow:0 0 transparent;--tw-ring-shadow:0 0 transparent}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur) var(--tw-brightness) var(--tw-contrast) var(--tw-grayscale) var(--tw-hue-rotate) var(--tw-invert) var(--tw-saturate) var(--tw-sepia) var(--tw-drop-shadow)}.duration-200{transition-duration:.2s}@media (min-width:640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}}@media (min-width:768px){.md\:w-1\/3{width:33.333333%}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:flex-row{flex-direction:row}}@media (min-width:1024px){.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}}
--------------------------------------------------------------------------------
/dist/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/dist/favicon.ico
--------------------------------------------------------------------------------
/dist/img/dumbbell-light-green.e9869f64.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/dist/img/dumbbell-light-green.e9869f64.png
--------------------------------------------------------------------------------
/dist/img/dumbbell-light.ef471ab1.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/dist/img/dumbbell-light.ef471ab1.png
--------------------------------------------------------------------------------
/dist/img/pencil-light.67a7865c.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/dist/img/pencil-light.67a7865c.png
--------------------------------------------------------------------------------
/dist/img/running-light-green.599f4302.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/dist/img/running-light-green.599f4302.png
--------------------------------------------------------------------------------
/dist/img/trash-light-green.f27ed677.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/dist/img/trash-light-green.f27ed677.png
--------------------------------------------------------------------------------
/dist/img/trash-light.f5a99b6a.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/dist/img/trash-light.f5a99b6a.png
--------------------------------------------------------------------------------
/dist/index.html:
--------------------------------------------------------------------------------
1 |
workout_tracker We're sorry but workout_tracker doesn't work properly without JavaScript enabled. Please enable it to continue.
--------------------------------------------------------------------------------
/dist/js/app.f1ad2084.js:
--------------------------------------------------------------------------------
1 | (function(e){function t(t){for(var n,l,o=t[0],s=t[1],u=t[2],b=0,d=[];b1?r.value=r.value.filter((function(t){return t.id!==e})):(c.value="Error: Cannot remove, need to at least have one exercise",setTimeout((function(){c.value=!1}),5e3))},s=function(){r.value=[],l()},i=function(){var n=Object(w["a"])(regeneratorRuntime.mark((function n(){var l,o;return regeneratorRuntime.wrap((function(n){while(1)switch(n.prev=n.next){case 0:return n.prev=0,n.next=3,u.from("workouts").insert([{workoutName:e.value,workoutType:t.value,exercises:r.value}]);case 3:if(l=n.sent,o=l.error,!o){n.next=7;break}throw o;case 7:a.value="Success: Workout Created!",e.value=null,t.value="select-workout",r.value=[],setTimeout((function(){a.value=!1}),5e3),n.next=18;break;case 14:n.prev=14,n.t0=n["catch"](0),c.value="Error: ".concat(n.t0.message),setTimeout((function(){c.value=!1}),5e3);case 18:case"end":return n.stop()}}),n,null,[[0,14]])})));return function(){return n.apply(this,arguments)}}();return{workoutName:e,workoutType:t,exercises:r,statusMsg:a,errorMsg:c,workoutChange:s,addExercise:l,deleteExercise:o,createWorkout:i}}},vt=V()(ht,[["render",Ot]]),yt=r("6122"),wt=r.n(yt),kt=r("a407"),Et=r.n(kt),Ut={key:0,class:"max-w-screen-sm mx-auto px-4 py-10"},Vt={key:0,class:"mb-10 p-4 rounded-md bg-light-grey"},Tt={class:"text-at-light-green"},Ct={class:"text-red-500"},Rt={class:"p-8 rounded-md flex flex-col items-center bg-light-grey shadow-md relative"},Mt={key:0,class:"flex absolute left-2 top-2 gap-x-2"},Bt=Object(n["g"])("img",{class:"h-3.5 w-auto",src:wt.a,alt:""},null,-1),Wt=[Bt],qt=Object(n["g"])("img",{class:"h-3.5 w-auto",src:Et.a,alt:""},null,-1),Lt=[qt],Pt={key:1,class:"h-24 w-auto",src:B.a,alt:""},St={key:2,class:"h-24 w-auto",src:q.a,alt:""},Nt={class:"mt-6 py-1.5 px-5 text-xs text-white bg-at-light-green rounded-lg shadow-md"},Dt={class:"w-full mt-6"},It={key:1,class:"text-at-light-green text-2xl text-center"},_t={class:"mt-10 p-8 rounded-md flex flex-col items-center bg-light-grey shadow-md"},At={key:0,class:"flex flex-col gap-y-4 w-full"},Ht={class:"flex flex-2 flex-col md:w-1/3"},zt=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Exercise",-1),Jt=["onUpdate:modelValue"],Yt={key:1},Ft={class:"flex flex-1 flex-col"},Qt=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Sets",-1),Xt=["onUpdate:modelValue"],Gt={key:1},Zt={class:"flex flex-1 flex-col"},Kt=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Repetitions",-1),$t=["onUpdate:modelValue"],er={key:1},tr={class:"flex flex-1 flex-col"},rr=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Weight (LB's)",-1),nr=["onUpdate:modelValue"],ar={key:1},cr=["onClick"],lr={key:1,class:"flex flex-col w-full gap-y-4"},or={class:"flex flex-2 md:w-1/3 flex-col"},sr=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Type",-1),ur=["onUpdate:modelValue"],ir={key:1,class:"capitalize"},br={class:"flex flex-1 flex-col"},dr=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Distance",-1),gr=["onUpdate:modelValue"],pr={key:1},fr={class:"flex flex-1 flex-col"},xr=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Duration",-1),jr=["onUpdate:modelValue"],Or={key:1},mr={class:"flex flex-1 flex-col"},hr=Object(n["g"])("label",{for:"exercise-name",class:"mb-1 text-sm text-at-light-green"},"Pace",-1),vr=["onUpdate:modelValue"],yr={key:1},wr=["onClick"],kr={class:"mt-10"};function Er(e,t,r,a,c,l){return a.dataLoaded?(Object(n["r"])(),Object(n["f"])("div",Ut,[a.statusMsg||a.errorMsg?(Object(n["r"])(),Object(n["f"])("div",Vt,[Object(n["g"])("p",Tt,Object(n["y"])(a.statusMsg),1),Object(n["g"])("p",Ct,Object(n["y"])(a.errorMsg),1)])):Object(n["e"])("",!0),Object(n["g"])("div",Rt,[a.user?(Object(n["r"])(),Object(n["f"])("div",Mt,[Object(n["g"])("div",{class:"h-7 w-7 rounded-full flex justify-center items-center cursor-pointer bg-at-light-green shadow-lg",onClick:t[0]||(t[0]=function(){return a.editMode&&a.editMode.apply(a,arguments)})},Wt),Object(n["g"])("div",{onClick:t[1]||(t[1]=function(){return a.deleteWorkout&&a.deleteWorkout.apply(a,arguments)}),class:"h-7 w-7 rounded-full flex justify-center items-center cursor-pointer bg-at-light-green shadow-lg"},Lt)])):Object(n["e"])("",!0),"cardio"===a.data.workoutType?(Object(n["r"])(),Object(n["f"])("img",Pt)):(Object(n["r"])(),Object(n["f"])("img",St)),Object(n["g"])("span",Nt,Object(n["y"])(a.data.workoutType),1),Object(n["g"])("div",Dt,[a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":t[2]||(t[2]=function(e){return a.data.workoutName=e})},null,512)),[[n["B"],a.data.workoutName]]):(Object(n["r"])(),Object(n["f"])("h1",It,Object(n["y"])(a.data.workoutName),1))])]),Object(n["g"])("div",_t,["strength"===a.data.workoutType?(Object(n["r"])(),Object(n["f"])("div",At,[(Object(n["r"])(!0),Object(n["f"])(n["a"],null,Object(n["v"])(a.data.exercises,(function(e,t){return Object(n["r"])(),Object(n["f"])("div",{class:"flex flex-col gap-x-6 gap-y-2 relative sm:flex-row",key:t},[Object(n["g"])("div",Ht,[zt,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":function(t){return e.exercise=t}},null,8,Jt)),[[n["B"],e.exercise]]):(Object(n["r"])(),Object(n["f"])("p",Yt,Object(n["y"])(e.exercise),1))]),Object(n["g"])("div",Ft,[Qt,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":function(t){return e.sets=t}},null,8,Xt)),[[n["B"],e.sets]]):(Object(n["r"])(),Object(n["f"])("p",Gt,Object(n["y"])(e.sets),1))]),Object(n["g"])("div",Zt,[Kt,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":function(t){return e.reps=t}},null,8,$t)),[[n["B"],e.reps]]):(Object(n["r"])(),Object(n["f"])("p",er,Object(n["y"])(e.reps),1))]),Object(n["g"])("div",tr,[rr,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":function(t){return e.weight=t}},null,8,nr)),[[n["B"],e.weight]]):(Object(n["r"])(),Object(n["f"])("p",ar,Object(n["y"])(e.weight),1))]),a.edit?(Object(n["r"])(),Object(n["f"])("img",{key:0,onClick:function(t){return a.deleteExercise(e.id)},class:"absolute h-4 w-auto -left-5 cursor-pointer",src:ke.a,alt:""},null,8,cr)):Object(n["e"])("",!0)])})),128)),a.edit?(Object(n["r"])(),Object(n["f"])("button",{key:0,type:"button",class:"py-2 px-6 rounded-sm self-start text-sm text-white bg-at-light-green duration-200 border-solid border-2 border-transparent hover:border-white hover:bg-white hover:text-at-light-green",onClick:t[3]||(t[3]=function(){return a.addExercise&&a.addExercise.apply(a,arguments)})}," Add Exercise ")):Object(n["e"])("",!0)])):(Object(n["r"])(),Object(n["f"])("div",lr,[(Object(n["r"])(!0),Object(n["f"])(n["a"],null,Object(n["v"])(a.data.exercises,(function(e,t){return Object(n["r"])(),Object(n["f"])("div",{class:"flex flex-col gap-x-6 gap-y-2 sm:flex-row relative",key:t},[Object(n["g"])("div",or,[sr,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none capitalize","onUpdate:modelValue":function(t){return e.cardioType=t}},null,8,ur)),[[n["B"],e.cardioType]]):(Object(n["r"])(),Object(n["f"])("p",ir,Object(n["y"])(e.cardioType),1))]),Object(n["g"])("div",br,[dr,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":function(t){return e.distance=t}},null,8,gr)),[[n["B"],e.distance]]):(Object(n["r"])(),Object(n["f"])("p",pr,Object(n["y"])(e.distance),1))]),Object(n["g"])("div",fr,[xr,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":function(t){return e.duration=t}},null,8,jr)),[[n["B"],e.duration]]):(Object(n["r"])(),Object(n["f"])("p",Or,Object(n["y"])(e.duration),1))]),Object(n["g"])("div",mr,[hr,a.edit?Object(n["E"])((Object(n["r"])(),Object(n["f"])("input",{key:0,type:"text",class:"p-2 w-full text-gray-500 focus:outline-none","onUpdate:modelValue":function(t){return e.pace=t}},null,8,vr)),[[n["B"],e.pace]]):(Object(n["r"])(),Object(n["f"])("p",yr,Object(n["y"])(e.pace),1))]),a.edit?(Object(n["r"])(),Object(n["f"])("img",{key:0,onClick:function(t){return a.deleteExercise(e.id)},class:"absolute h-4 w-auto -left-5 cursor-pointer",src:ke.a,alt:""},null,8,wr)):Object(n["e"])("",!0)])})),128)),a.edit?(Object(n["r"])(),Object(n["f"])("button",{key:0,type:"button",class:"py-2 px-6 rounded-sm self-start text-sm text-white bg-at-light-green duration-200 border-solid border-2 border-transparent hover:border-white hover:bg-white hover:text-at-light-green",onClick:t[4]||(t[4]=function(){return a.addExercise&&a.addExercise.apply(a,arguments)})}," Add Exercise ")):Object(n["e"])("",!0)]))]),Object(n["g"])("div",kr,[a.edit?(Object(n["r"])(),Object(n["f"])("button",{key:0,onClick:t[5]||(t[5]=function(){return a.update&&a.update.apply(a,arguments)}),class:"py-2 px-6 rounded-sm text-sm text-white bg-at-light-green duration-200 border-solid border-2 border-transparent hover:border-white hover:bg-white hover:text-at-light-green",type:"submit"}," Update Workout ")):Object(n["e"])("",!0)])])):Object(n["e"])("",!0)}var Ur={setup:function(){var e=Object(k["c"])(),t=Object(k["d"])(),r=Object(n["u"])(null),a=Object(n["u"])(null),c=Object(n["b"])((function(){return d.state.user})),l=e.params.id,o=Object(n["u"])([]),s=Object(n["u"])(null),i=function(){var e=Object(w["a"])(regeneratorRuntime.mark((function e(){var t,r,n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,u.from("workouts").select("*").eq("id",l);case 3:if(t=e.sent,r=t.data,n=t.error,!n){e.next=8;break}throw n;case 8:o.value=r[0],s.value=!0,e.next=16;break;case 12:e.prev=12,e.t0=e["catch"](0),s.value=!0,console.warn(e.t0.message);case 16:case"end":return e.stop()}}),e,null,[[0,12]])})));return function(){return e.apply(this,arguments)}}();i();var b=function(){var e=Object(w["a"])(regeneratorRuntime.mark((function e(){var r,n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,u.from("workouts")["delete"]().eq("id",l);case 3:if(r=e.sent,n=r.error,!n){e.next=7;break}throw n;case 7:t.push({name:"Home"}),e.next=14;break;case 10:e.prev=10,e.t0=e["catch"](0),a.value="Error: ".concat(e.t0.message),setTimeout((function(){a.value=!1}),5e3);case 14:case"end":return e.stop()}}),e,null,[[0,10]])})));return function(){return e.apply(this,arguments)}}(),g=Object(n["u"])(null),p=function(){g.value=!g.value},f=function(){"strength"!==o.value.workoutType?o.value.exercises.push({id:Object(mt["a"])(),cardioType:"",distance:"",duration:"",pace:""}):o.value.exercises.push({id:Object(mt["a"])(),exercise:"",sets:"",reps:"",weight:""})},x=function(e){o.value.exercises.length>1?o.value.exercises=o.value.exercises.filter((function(t){return t.id!==e})):(a.value="Error: Cannot remove, need to at least have one exercise",setTimeout((function(){a.value=!1}),5e3))},j=function(){var e=Object(w["a"])(regeneratorRuntime.mark((function e(){var t,n;return regeneratorRuntime.wrap((function(e){while(1)switch(e.prev=e.next){case 0:return e.prev=0,e.next=3,u.from("workouts").update({workoutName:o.value.workoutName,exercises:o.value.exercises}).eq("id",o.value.id);case 3:if(t=e.sent,n=t.error,!n){e.next=7;break}throw n;case 7:g.value=!1,r.value="Success: Workout Updated!",setTimeout((function(){r.value=!1}),5e3),e.next=16;break;case 12:e.prev=12,e.t0=e["catch"](0),a.value="Error: ".concat(e.t0.message),setTimeout((function(){a.value=!1}),5e3);case 16:case"end":return e.stop()}}),e,null,[[0,12]])})));return function(){return e.apply(this,arguments)}}();return{data:o,dataLoaded:s,editMode:p,edit:g,deleteWorkout:b,addExercise:f,update:j,deleteExercise:x,statusMsg:r,errorMsg:a,user:c}}},Vr=V()(Ur,[["render",Er]]),Tr=[{path:"/",name:"Home",component:Y,meta:{auth:!1,title:"Home"}},{path:"/login",name:"Login",component:le,meta:{auth:!1,title:"Login"}},{path:"/register",name:"Register",component:ye,meta:{title:"Register",auth:!1}},{path:"/create",name:"Create",component:vt,meta:{auth:!0,title:"Create"}},{path:"/view-exercise/:id",name:"view-exercise",component:Vr,meta:{auth:!1,title:"View Workout"}}],Cr=Object(k["a"])({history:Object(k["b"])("/"),routes:Tr});Cr.beforeEach((function(e,t,r){document.title="".concat(e.meta.title," | Active Tracker"),r()})),Cr.beforeEach((function(e,t,r){var n=u.auth.user();if(e.matched.some((function(e){return e.meta.auth})))return n?void r():void r({name:"Login"});r()}));var Rr=Cr;r("ba8c");Object(n["c"])(R).use(Rr).mount("#app")},6122:function(e,t,r){e.exports=r.p+"img/pencil-light.67a7865c.png"},"9b82":function(e,t,r){e.exports=r.p+"img/trash-light-green.f27ed677.png"},a25c:function(e,t,r){e.exports=r.p+"img/dumbbell-light-green.e9869f64.png"},a407:function(e,t,r){e.exports=r.p+"img/trash-light.f5a99b6a.png"},ba8c:function(e,t,r){},bbf4:function(e,t,r){},d1ce:function(e,t,r){"use strict";r("bbf4")},f7da:function(e,t,r){e.exports=r.p+"img/running-light-green.599f4302.png"}});
2 | //# sourceMappingURL=app.f1ad2084.js.map
--------------------------------------------------------------------------------
/dist/js/app.f1ad2084.js.map:
--------------------------------------------------------------------------------
1 | {"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/assets/images/dumbbell-light.png","webpack:///./src/App.vue","webpack:///./src/supabase/init.js","webpack:///./src/store/index.js","webpack:///./src/components/Navigation.vue","webpack:///./src/components/Navigation.vue?e903","webpack:///./src/App.vue?dfb6","webpack:///./src/views/Home.vue","webpack:///./src/views/Home.vue?ab8c","webpack:///./src/views/Login.vue","webpack:///./src/views/Login.vue?e63b","webpack:///./src/views/Register.vue","webpack:///./src/views/Register.vue?be94","webpack:///./src/views/Create.vue","webpack:///./src/views/Create.vue?6417","webpack:///./src/views/ViewExercise.vue","webpack:///./src/views/ViewExercise.vue?8bd1","webpack:///./src/router/index.js","webpack:///./src/main.js","webpack:///./src/assets/images/pencil-light.png","webpack:///./src/assets/images/trash-light-green.png","webpack:///./src/assets/images/dumbbell-light-green.png","webpack:///./src/assets/images/trash-light.png","webpack:///./src/App.vue?759a","webpack:///./src/assets/images/running-light-green.png"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","exports","module","l","m","c","d","name","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","p","jsonpArray","window","oldJsonpFunction","slice","class","appReady","supabaseUrl","process","supabaseAnonKey","supabase","createClient","state","reactive","user","methods","setUser","payload","src","alt","to","logout","setup","store","router","auth","signOut","components","Navigation","onAuthStateChange","_","session","render","dataLoaded","exercise","index","id","workoutType","workoutName","getData","from","select","workouts","error","console","warn","message","for","type","errorMsg","login","required","email","password","signIn","register","confirmPassword","signUp","log","setTimeout","statusMsg","createWorkout","workoutChange","exercises","item","sets","reps","weight","deleteExercise","addExercise","cardioType","distance","duration","pace","filter","insert","editMode","deleteWorkout","edit","update","route","currentId","params","eq","routes","path","component","Home","meta","title","Login","Register","Create","ViewExercise","createRouter","history","createWebHistory","beforeEach","next","document","matched","some","res","createApp","App","use","mount"],"mappings":"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","file":"js/app.f1ad2084.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","module.exports = __webpack_public_path__ + \"img/dumbbell-light.ef471ab1.png\";","\n \n \n \n
\n \n\n\n\n\n","import { createClient } from \"@supabase/supabase-js\";\n\nconst supabaseUrl = process.env.VUE_APP_SUPABASE_URL;\nconst supabaseAnonKey = process.env.VUE_APP_SUPABASE_ANON_KEY;\n\nexport const supabase = createClient(supabaseUrl, supabaseAnonKey);\n","import { reactive } from \"vue\";\n\nconst state = reactive({\n user: null,\n});\n\nconst methods = {\n setUser(payload) {\n state.user = payload ? payload.user : null;\n },\n};\n\nexport default {\n state,\n methods,\n};\n","\n \n \n \n
\n
Active Tracker \n
\n \n Home \n Create \n Logout \n Login \n \n \n \n \n\n\n\n\n","import { render } from \"./Navigation.vue?vue&type=template&id=21fb30bd\"\nimport script from \"./Navigation.vue?vue&type=script&lang=js\"\nexport * from \"./Navigation.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/johnny/active_tracker/node_modules/vue-loader-v16/dist/exportHelper.js\"\nexport default /*#__PURE__*/exportComponent(script, [['render',render]])","import { render } from \"./App.vue?vue&type=template&id=228711a8\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\n\nimport \"./App.vue?vue&type=style&index=0&id=228711a8&lang=scss\"\n\nimport exportComponent from \"/Users/johnny/active_tracker/node_modules/vue-loader-v16/dist/exportHelper.js\"\nexport default /*#__PURE__*/exportComponent(script, [['render',render]])","\n \n \n
\n
Looks empty here.... \n Create Workout \n \n\n
\n
\n \n \n\n \n \n\n \n {{ exercise.workoutType }}\n
\n\n \n {{ exercise.workoutName }}\n \n \n
\n
\n \n\n\n","import { render } from \"./Home.vue?vue&type=template&id=5c776653\"\nimport script from \"./Home.vue?vue&type=script&lang=js\"\nexport * from \"./Home.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/johnny/active_tracker/node_modules/vue-loader-v16/dist/exportHelper.js\"\nexport default /*#__PURE__*/exportComponent(script, [['render',render]])","\n \n \n\n\n","import { render } from \"./Login.vue?vue&type=template&id=511cd536\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/johnny/active_tracker/node_modules/vue-loader-v16/dist/exportHelper.js\"\nexport default /*#__PURE__*/exportComponent(script, [['render',render]])","\n \n \n\n\n","import { render } from \"./Register.vue?vue&type=template&id=6ef67ace\"\nimport script from \"./Register.vue?vue&type=script&lang=js\"\nexport * from \"./Register.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/johnny/active_tracker/node_modules/vue-loader-v16/dist/exportHelper.js\"\nexport default /*#__PURE__*/exportComponent(script, [['render',render]])","\n \n \n
\n
\n {{ statusMsg }}\n
\n
{{ errorMsg }}
\n
\n\n \n
\n
\n \n\n\n","import { render } from \"./Create.vue?vue&type=template&id=f55b347c\"\nimport script from \"./Create.vue?vue&type=script&lang=js\"\nexport * from \"./Create.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/johnny/active_tracker/node_modules/vue-loader-v16/dist/exportHelper.js\"\nexport default /*#__PURE__*/exportComponent(script, [['render',render]])","\n \n \n
\n
\n {{ statusMsg }}\n
\n
{{ errorMsg }}
\n
\n\n \n
\n \n
\n
\n
\n
\n
\n
\n
\n
\n\n \n
\n\n \n
\n\n \n
{{ data.workoutType }} \n\n \n
\n \n
\n {{ data.workoutName }}\n \n \n
\n\n \n
\n \n
\n
\n
\n
Exercise \n
\n
{{ item.exercise }}
\n
\n
\n
Sets \n
\n
{{ item.sets }}
\n
\n
\n
Repetitions \n
\n
{{ item.reps }}
\n
\n
\n
Weight (LB's) \n
\n
{{ item.weight }}
\n
\n
\n
\n
\n Add Exercise\n \n
\n\n \n
\n
\n
\n
Type \n
\n
{{ item.cardioType }}
\n
\n
\n
Distance \n
\n
{{ item.distance }}
\n
\n
\n
Duration \n
\n
{{ item.duration }}
\n
\n
\n
Pace \n
\n
{{ item.pace }}
\n
\n
\n
\n
\n Add Exercise\n \n
\n
\n\n \n
\n \n Update Workout\n \n
\n
\n \n\n\n","import { render } from \"./ViewExercise.vue?vue&type=template&id=b0776856\"\nimport script from \"./ViewExercise.vue?vue&type=script&lang=js\"\nexport * from \"./ViewExercise.vue?vue&type=script&lang=js\"\n\nimport exportComponent from \"/Users/johnny/active_tracker/node_modules/vue-loader-v16/dist/exportHelper.js\"\nexport default /*#__PURE__*/exportComponent(script, [['render',render]])","import { createRouter, createWebHistory } from \"vue-router\";\nimport { supabase } from \"../supabase/init\";\nimport Home from \"../views/Home.vue\";\nimport Login from \"../views/Login.vue\";\nimport Register from \"../views/Register.vue\";\nimport Create from \"../views/Create.vue\";\nimport ViewExercise from \"../views/ViewExercise.vue\";\n\nconst routes = [\n {\n path: \"/\",\n name: \"Home\",\n component: Home,\n meta: {\n auth: false,\n title: \"Home\",\n },\n },\n {\n path: \"/login\",\n name: \"Login\",\n component: Login,\n meta: {\n auth: false,\n title: \"Login\",\n },\n },\n {\n path: \"/register\",\n name: \"Register\",\n component: Register,\n meta: {\n title: \"Register\",\n auth: false,\n },\n },\n {\n path: \"/create\",\n name: \"Create\",\n component: Create,\n meta: {\n auth: true,\n title: \"Create\",\n },\n },\n {\n path: \"/view-exercise/:id\",\n name: \"view-exercise\",\n component: ViewExercise,\n meta: {\n auth: false,\n title: \"View Workout\",\n },\n },\n];\n\nconst router = createRouter({\n history: createWebHistory(process.env.BASE_URL),\n routes,\n});\n\nrouter.beforeEach((to, from, next) => {\n document.title = `${to.meta.title} | Active Tracker`;\n next();\n});\n\nrouter.beforeEach((to, from, next) => {\n const user = supabase.auth.user();\n if (to.matched.some((res) => res.meta.auth)) {\n if (user) {\n next();\n return;\n }\n next({ name: \"Login\" });\n return;\n }\n next();\n});\n\nexport default router;\n","import { createApp } from \"vue\";\nimport App from \"./App.vue\";\nimport router from \"./router\";\nimport \"./assets/tailwind.css\";\n\ncreateApp(App)\n .use(router)\n .mount(\"#app\");\n","module.exports = __webpack_public_path__ + \"img/pencil-light.67a7865c.png\";","module.exports = __webpack_public_path__ + \"img/trash-light-green.f27ed677.png\";","module.exports = __webpack_public_path__ + \"img/dumbbell-light-green.e9869f64.png\";","module.exports = __webpack_public_path__ + \"img/trash-light.f5a99b6a.png\";","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--8-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--8-oneOf-1-1!../node_modules/vue-loader-v16/dist/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--8-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--8-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--0-0!../node_modules/vue-loader-v16/dist/index.js??ref--0-1!./App.vue?vue&type=style&index=0&id=228711a8&lang=scss\"","module.exports = __webpack_public_path__ + \"img/running-light-green.599f4302.png\";"],"sourceRoot":""}
--------------------------------------------------------------------------------
/package.json:
--------------------------------------------------------------------------------
1 | {
2 | "name": "workout_tracker",
3 | "version": "0.1.0",
4 | "private": true,
5 | "scripts": {
6 | "serve": "vue-cli-service serve",
7 | "build": "vue-cli-service build",
8 | "lint": "vue-cli-service lint"
9 | },
10 | "dependencies": {
11 | "@supabase/supabase-js": "^1.24.0",
12 | "@tailwindcss/postcss7-compat": "^2.0.2",
13 | "autoprefixer": "^9",
14 | "core-js": "^3.6.5",
15 | "postcss": "^7",
16 | "tailwindcss": "npm:@tailwindcss/postcss7-compat@^2.0.2",
17 | "uid": "^2.0.0",
18 | "vue": "^3.0.0",
19 | "vue-router": "^4.0.0-0"
20 | },
21 | "devDependencies": {
22 | "@vue/cli-plugin-babel": "~4.5.0",
23 | "@vue/cli-plugin-eslint": "~4.5.0",
24 | "@vue/cli-plugin-router": "~4.5.0",
25 | "@vue/cli-service": "~4.5.0",
26 | "@vue/compiler-sfc": "^3.0.0",
27 | "babel-eslint": "^10.1.0",
28 | "eslint": "^6.7.2",
29 | "eslint-plugin-vue": "^7.0.0",
30 | "sass": "^1.26.5",
31 | "sass-loader": "^8.0.2",
32 | "vue-cli-plugin-tailwind": "~2.0.6"
33 | }
34 | }
35 |
--------------------------------------------------------------------------------
/postcss.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | plugins: {
3 | tailwindcss: {},
4 | autoprefixer: {}
5 | }
6 | }
7 |
--------------------------------------------------------------------------------
/public/favicon.ico:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/public/favicon.ico
--------------------------------------------------------------------------------
/public/index.html:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 | <%= htmlWebpackPlugin.options.title %>
9 |
10 |
11 |
12 | We're sorry but <%= htmlWebpackPlugin.options.title %> doesn't work properly without JavaScript enabled. Please enable it to continue.
13 |
14 |
15 |
16 |
17 |
18 |
--------------------------------------------------------------------------------
/src/App.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
40 |
41 |
44 |
--------------------------------------------------------------------------------
/src/assets/images/dumbbell-light-green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/src/assets/images/dumbbell-light-green.png
--------------------------------------------------------------------------------
/src/assets/images/dumbbell-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/src/assets/images/dumbbell-light.png
--------------------------------------------------------------------------------
/src/assets/images/pencil-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/src/assets/images/pencil-light.png
--------------------------------------------------------------------------------
/src/assets/images/running-light-green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/src/assets/images/running-light-green.png
--------------------------------------------------------------------------------
/src/assets/images/running-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/src/assets/images/running-light.png
--------------------------------------------------------------------------------
/src/assets/images/trash-light-green.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/src/assets/images/trash-light-green.png
--------------------------------------------------------------------------------
/src/assets/images/trash-light.png:
--------------------------------------------------------------------------------
https://raw.githubusercontent.com/johnkomarnicki/active_tracker/627b2a0c418999eacbbb42622f37be57b5206258/src/assets/images/trash-light.png
--------------------------------------------------------------------------------
/src/assets/tailwind.css:
--------------------------------------------------------------------------------
1 | @tailwind base;
2 |
3 | @tailwind components;
4 |
5 | @tailwind utilities;
6 |
--------------------------------------------------------------------------------
/src/components/Navigation.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
6 |
Active Tracker
7 |
8 |
9 | Home
10 | Create
13 | Login
16 | Logout
17 |
18 |
19 |
20 |
21 |
22 |
45 |
--------------------------------------------------------------------------------
/src/main.js:
--------------------------------------------------------------------------------
1 | import { createApp } from "vue";
2 | import App from "./App.vue";
3 | import router from "./router";
4 | import "./assets/tailwind.css";
5 |
6 | createApp(App)
7 | .use(router)
8 | .mount("#app");
9 |
--------------------------------------------------------------------------------
/src/router/index.js:
--------------------------------------------------------------------------------
1 | import { createRouter, createWebHistory } from "vue-router";
2 | import { supabase } from "../supabase/init";
3 | import Home from "../views/Home.vue";
4 | import Login from "../views/Login.vue";
5 | import Register from "../views/Register.vue";
6 | import Create from "../views/Create.vue";
7 | import ViewWorkout from "../views/ViewWorkout.vue";
8 |
9 | const routes = [
10 | {
11 | path: "/",
12 | name: "Home",
13 | component: Home,
14 | meta: {
15 | title: "Home",
16 | auth: false,
17 | },
18 | },
19 | {
20 | path: "/login",
21 | name: "Login",
22 | component: Login,
23 | meta: {
24 | title: "Login",
25 | auth: false,
26 | },
27 | },
28 | {
29 | path: "/register",
30 | name: "Register",
31 | component: Register,
32 | meta: {
33 | title: "Register",
34 | auth: false,
35 | },
36 | },
37 | {
38 | path: "/create",
39 | name: "Create",
40 | component: Create,
41 | meta: {
42 | title: "Create",
43 | auth: true,
44 | },
45 | },
46 | {
47 | path: "/view-workout/:workoutId",
48 | name: "View-Workout",
49 | component: ViewWorkout,
50 | meta: {
51 | title: "View Workout",
52 | auth: false,
53 | },
54 | },
55 | ];
56 |
57 | const router = createRouter({
58 | history: createWebHistory(process.env.BASE_URL),
59 | routes,
60 | });
61 |
62 | // Change document titles
63 | router.beforeEach((to, from, next) => {
64 | document.title = `${to.meta.title} | Active Tracker`;
65 | next();
66 | });
67 |
68 | // Route guard for auth routes
69 | router.beforeEach((to, from, next) => {
70 | const user = supabase.auth.user();
71 | if (to.matched.some((res) => res.meta.auth)) {
72 | if (user) {
73 | next();
74 | return;
75 | }
76 | next({ name: "Login" });
77 | return;
78 | }
79 | next();
80 | });
81 |
82 | export default router;
83 |
--------------------------------------------------------------------------------
/src/store/index.js:
--------------------------------------------------------------------------------
1 | import { reactive } from "vue";
2 |
3 | const state = reactive({
4 | user: null,
5 | });
6 |
7 | const methods = {
8 | setUser(payload) {
9 | state.user = payload ? payload.user : null;
10 | },
11 | };
12 |
13 | export default {
14 | state,
15 | methods,
16 | };
17 |
--------------------------------------------------------------------------------
/src/supabase/init.js:
--------------------------------------------------------------------------------
1 | import { createClient } from "@supabase/supabase-js";
2 |
3 | const supabaseUrl = process.env.VUE_APP_SUPABASE_URL;
4 | const supabaseAnonKey = process.env.VUE_APP_SUPABASE_ANON_KEY;
5 |
6 | export const supabase = createClient(supabaseUrl, supabaseAnonKey);
7 |
--------------------------------------------------------------------------------
/src/views/Create.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 | {{ statusMsg }}
10 |
11 |
{{ errorMsg }}
12 |
13 |
14 |
15 |
200 |
201 |
202 |
203 |
296 |
--------------------------------------------------------------------------------
/src/views/Home.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
5 |
Looks empty here...
6 | Create Workout
14 |
15 |
16 |
17 |
21 |
27 |
28 |
34 |
35 |
36 |
42 |
43 |
46 | {{ workout.workoutType }}
47 |
48 |
49 |
50 | {{ workout.workoutName }}
51 |
52 |
53 |
54 |
55 |
56 |
57 |
87 |
--------------------------------------------------------------------------------
/src/views/Login.vue:
--------------------------------------------------------------------------------
1 |
2 |
52 |
53 |
54 |
89 |
--------------------------------------------------------------------------------
/src/views/Register.vue:
--------------------------------------------------------------------------------
1 |
2 |
65 |
66 |
67 |
110 |
--------------------------------------------------------------------------------
/src/views/ViewWorkout.vue:
--------------------------------------------------------------------------------
1 |
2 |
3 |
4 |
8 |
9 | {{ statusMsg }}
10 |
11 |
12 | {{ errorMsg }}
13 |
14 |
15 |
16 |
17 |
18 |
22 |
23 |
28 |
29 |
30 |
35 |
36 |
37 |
38 |
39 |
45 |
46 |
52 |
53 |
57 | {{ data.workoutType }}
58 |
59 |
60 |
61 |
67 |
68 | {{ data.workoutName }}
69 |
70 |
71 |
72 |
73 |
74 |
78 |
79 |
80 |
85 |
86 |
87 | Exercise
88 |
89 |
96 |
{{ item.exercise }}
97 |
98 |
99 |
100 | Sets
101 |
102 |
109 |
{{ item.sets }}
110 |
111 |
112 |
113 | Reps
114 |
115 |
122 |
{{ item.reps }}
123 |
124 |
125 |
126 | Weight (LB's)
127 |
128 |
135 |
{{ item.weight }}
136 |
137 |
144 |
145 |
153 | Add Exercise
154 |
155 |
156 |
157 |
158 |
159 |
164 |
165 |
166 | Type
167 |
168 |
175 | Select Type
176 | Runs
177 | Walk
178 |
179 |
{{ item.cardioType }}
180 |
181 |
182 |
183 | Distance
184 |
185 |
192 |
{{ item.distance }}
193 |
194 |
195 |
196 | Duration
197 |
198 |
205 |
{{ item.duration }}
206 |
207 |
208 |
209 | Pace
210 |
211 |
218 |
{{ item.pace }}
219 |
220 |
227 |
228 |
236 | Add Exercise
237 |
238 |
239 |
240 |
241 |
242 |
250 | Update Workout
251 |
252 |
253 |
254 |
255 |
256 |
397 |
--------------------------------------------------------------------------------
/static.json:
--------------------------------------------------------------------------------
1 | {
2 | "root": "dist",
3 | "clean_urls": true,
4 | "routes": {
5 | "/**": "index.html"
6 | }
7 | }
8 |
--------------------------------------------------------------------------------
/tailwind.config.js:
--------------------------------------------------------------------------------
1 | module.exports = {
2 | purge: { content: ["./public/**/*.html", "./src/**/*.vue"] },
3 | darkMode: false, // or 'media' or 'class'
4 | theme: {
5 | extend: {
6 | colors: {
7 | "at-light-green": "#44ba9f",
8 | "at-green": "#286d5d",
9 | "light-grey": "#f1f1f1",
10 | },
11 | },
12 | fontFamily: {
13 | Poppins: ["Poppins, sans-serif"],
14 | },
15 | flex: {
16 | "1": "1 1 0%",
17 | "2": "2 2 0%",
18 | },
19 | container: {
20 | center: true,
21 | screens: {
22 | lg: "1124px",
23 | xl: "1124px",
24 | "2xl": "1124px",
25 | },
26 | },
27 | },
28 | variants: {
29 | extend: {},
30 | },
31 | plugins: [],
32 | };
33 |
--------------------------------------------------------------------------------