Implement user auth with Firebase

This commit is contained in:
Conor McNamara
2023-03-06 20:23:54 +00:00
parent 2d41b93932
commit ef9b4847af
24 changed files with 1402 additions and 1258 deletions

1
dist/assets/InsightsPage-4addc08f.js vendored Normal file
View File

@ -0,0 +1 @@
import{s as n,n as u}from"./navbar-764b96b5.js";import{_,r as p,o as e,c as a,a as g,b as s,t,d as o,F as l,e as m,p as T,f as b}from"./index-c8c418b0.js";const f={name:"InsightsPage",data(){return{insights:{},latestTrain:{},earliestTrain:{},rawData:{},orderedTrains:[],store:n}},components:{navbar:u},created(){this.insights=n.insights,this.latestTrain=n.latestTrain,this.earliestTrain=n.earliestTrain,this.rawData=n.rawData,this.orderedTrains=n.orderedTrains}},h=i=>(T("data-v-1daafc6b"),i=i(),b(),i),y=h(()=>s("h1",null,"Insights",-1)),v={key:0},I={key:0},k={key:1},C=h(()=>s("h1",null,"Leaderboard",-1)),D={key:0},N={key:1};function S(i,w,x,L,d,P){const c=p("navbar");return e(),a(l,null,[g(c),y,this.insights?(e(),a("div",v,[s("p",null,"Total number of trains: "+t(this.insights.totalNumTrains),1),s("p",null,"Number of actively running trains: "+t(this.insights.numRunningTrains),1),s("p",null,"Percentage late: "+t(this.insights.percentageLate)+"%",1),s("p",null,"Percentage early or ontime: "+t(this.insights.percentageNotLate)+"%",1),this.latestTrain.TrainCode?(e(),a("p",I,"Latest train: "+t(this.latestTrain.TrainCode[0])+", "+t(this.insights.latestTime)+" mins late",1)):o("",!0),this.earliestTrain.TrainCode?(e(),a("p",k,"Earliest train: "+t(this.earliestTrain.TrainCode[0])+", "+t(this.insights.earliestTime*-1)+" mins early",1)):o("",!0),s("p",null,"Mainland: "+t(this.insights.numMainland),1),s("p",null,"Suburban: "+t(this.insights.numSuburban),1),s("p",null,"Darts: "+t(this.insights.numDart),1)])):o("",!0),C,(e(!0),a(l,null,m(d.orderedTrains,r=>(e(),a("div",null,[s("h2",null,t(this.rawData[r.jsonIndex].TrainCode[0]),1),r.time>0?(e(),a("p",D,t(r.time)+" mins late",1)):(e(),a("p",N,t(r.time*-1)+" mins early",1))]))),256))],64)}const $=_(f,[["render",S],["__scopeId","data-v-1daafc6b"]]);export{$ as default};

1
dist/assets/InsightsPage-d4adcdf9.css vendored Normal file
View File

@ -0,0 +1 @@
.navbarLink[data-v-1daafc6b]{font-family:Franklin Gothic Medium,Arial Narrow,Arial,sans-serif;font-size:24px}body[data-v-1daafc6b]{background-color:#2c6666}

421
dist/assets/MapPage-12ef7403.js vendored Normal file

File diff suppressed because one or more lines are too long

1
dist/assets/MapPage-56e92111.css vendored Normal file
View File

@ -0,0 +1 @@
.overlay-content[data-v-0c5ec56d]{width:1%}.trainMapIcon[data-v-0c5ec56d]{width:28px;height:32px}.slideLeft-enter-active[data-v-0c5ec56d],.slideLeft-leave-active[data-v-0c5ec56d]{transition:opacity .5s;transition:all .8s}.slideLeft-enter-from[data-v-0c5ec56d],.slideLeft-leave-to[data-v-0c5ec56d]{opacity:0;transform:translate(-100px)}@keyframes gradient-0c5ec56d{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}#sidebar[data-v-0c5ec56d]{position:absolute;height:85%;width:20%;left:2%;top:12%;z-index:2;text-align:center;animation:gradient-0c5ec56d 15s ease infinite;background:linear-gradient(45deg,#000000,#111111,#222222,#333333,#444444,#555555);background-size:400%,400%;box-shadow:0 0 4px 2px #333;overflow:hidden;font-family:Franklin Gothic Medium,Arial Narrow,Arial,sans-serif}#sidebarHeader[data-v-0c5ec56d]{position:relative;top:0%;height:15%;width:100%;overflow:hidden}#sidebarDiv[data-v-0c5ec56d]{position:absolute;height:80%;width:100%;color:#fff}#headerImage[data-v-0c5ec56d]{height:80%;width:auto;overflow:hidden;position:relative;top:10px}#xButton[data-v-0c5ec56d]{font-size:80%;font-family:Georgia;color:#fff;position:absolute;top:10px;right:10px}#xButton[data-v-0c5ec56d]:hover{color:red}#hoverButton[data-v-0c5ec56d]{z-index:3;position:absolute;bottom:0px;width:100%}

10
dist/assets/index-a5eb0783.css vendored Normal file

File diff suppressed because one or more lines are too long

575
dist/assets/index-c8c418b0.js vendored Normal file

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

1
dist/assets/loginpage-acff9941.js vendored Normal file
View File

@ -0,0 +1 @@
import{_ as c,r,o as i,c as l,b as e,k as p,a as _,w as d,h as u,p as h,f}from"./index-c8c418b0.js";const m={name:"loginpage",methods:{submit(){this.$router.push("/")}}},t=o=>(h("data-v-9ffc39fa"),o=o(),f(),o),g={id:"background"},v={class:"loginbox"},x=t(()=>e("img",{src:"https://cdn.discordapp.com/attachments/1017419092447207436/1063092138029625394/pixil-frame-0.png",class:"avatar"},null,-1)),w=t(()=>e("h1",null,"Login Here",-1)),b=t(()=>e("p",null,"Username",-1)),k=t(()=>e("input",{type:"text",name:"",placeholder:"Enter Username"},null,-1)),y=t(()=>e("p",null,"Password",-1)),$=t(()=>e("input",{type:"password",name:"",placeholder:"Password"},null,-1)),I=t(()=>e("a",{href:"#"},"Lost your password?",-1)),B=t(()=>e("br",null,null,-1));function C(o,s,L,N,S,n){const a=r("router-link");return i(),l("div",g,[e("div",v,[x,w,e("form",null,[b,k,y,$,e("input",{type:"submit",name:"",value:"Login",onClick:s[0]||(s[0]=p(V=>n.submit(),["stop","prevent"]))}),I,B,e("a",null,[_(a,{to:"/signup"},{default:d(()=>[u("Don't have an account?")]),_:1})])])])])}const P=c(m,[["render",C],["__scopeId","data-v-9ffc39fa"]]);export{P as default};

1
dist/assets/loginpage-caea8f93.css vendored Normal file
View File

@ -0,0 +1 @@
#background[data-v-9ffc39fa]{margin:0;padding:0;width:100%;height:100%;position:absolute;background-color:#e0e0e0;font-family:sans-serif}.loginbox[data-v-9ffc39fa]{height:420px;width:320px;background:#000;color:#fff;top:50%;left:50%;position:absolute;transform:translate(-50%,-50%);box-sizing:border-box;padding:70px 30px}h1[data-v-9ffc39fa]{margin:0;padding:0 0 20px;font-size:22px;text-align:center}.loginbox p[data-v-9ffc39fa]{margin:0;padding:0;font-weight:700}.loginbox input[data-v-9ffc39fa]{width:100%;margin-bottom:20px}.loginbox input[type=text][data-v-9ffc39fa],input[type=password][data-v-9ffc39fa]{border:none;border-bottom:1px solid #fff;background:transparent;outline:none;height:40px;color:#fff;font-size:16px}.loginbox input[type=submit][data-v-9ffc39fa]:hover{cursor:pointer;background:#66a3ff;color:#000}.loginbox a[data-v-9ffc39fa]{text-decoration:none;font-size:12px;line-height:20px;color:#a9a9a9}.loginbox a[data-v-9ffc39fa]:hover{color:#ffc107}.loginbox input[type=submit][data-v-9ffc39fa]{border:none;outline:none;height:40px;background:#0052cc;font-size:18px;border-radius:20px}.avatar[data-v-9ffc39fa]{width:100px;height:100px;border-radius:50%;position:absolute;top:-50px;left:calc(50% - 50px)}

1
dist/assets/navbar-764b96b5.js vendored Normal file
View File

@ -0,0 +1 @@
import{g as _,_ as d,r as l,o as h,c as p,b as a,a as e,w as n,h as i,p as v,f as g}from"./index-c8c418b0.js";const N=_({insights:{},latestTrain:{},earliestTrain:{},orderedTrains:[],rawData:{},setInsights(t){this.insights=t},setLatestTrain(t){this.latestTrain=t},setEarliestTrain(t){this.earliestTrain=t},setRawData(t){this.rawData=t},setOrderedTrains(t){t.sort((o,r)=>o.time-r.time),this.orderedTrains=t}});const m={name:"navbar"},c=t=>(v("data-v-8a119f70"),t=t(),g(),t),f={class:"navbar navbar-light bg-light"},u={class:"container-fluid"},b=c(()=>a("img",{src:"https://cdn.discordapp.com/attachments/1017419092447207436/1063092138029625394/pixil-frame-0.png",alt:"mascot",width:"55",height:"40",class:"d-inline-block align-text-middle"},null,-1)),T=c(()=>a("b",null,"Irish Rail Tracker",-1)),k={class:"navbarLink"},x={class:"navbarLink"},w={class:"navbarLink"};function I(t,o,r,L,$,B){const s=l("router-link");return h(),p("nav",f,[a("div",u,[e(s,{to:"/",class:"navbar-brand"},{default:n(()=>[b,T]),_:1}),a("a",k,[e(s,{to:"/"},{default:n(()=>[i("Home")]),_:1})]),a("a",x,[e(s,{to:"/insights"},{default:n(()=>[i("Insights")]),_:1})]),a("a",w,[e(s,{to:"/login"},{default:n(()=>[i("Login")]),_:1})])])])}const S=d(m,[["render",I],["__scopeId","data-v-8a119f70"]]);export{S as n,N as s};

1
dist/assets/navbar-df4836e9.css vendored Normal file
View File

@ -0,0 +1 @@
.navbarLink[data-v-8a119f70]{font-family:Franklin Gothic Medium,Arial Narrow,Arial,sans-serif;font-size:150%}

1
dist/assets/signup-c9878365.js vendored Normal file
View File

@ -0,0 +1 @@
import{_ as p,r,o as c,c as i,b as e,k as _,a as d,w as l,h as u,p as h,f as m}from"./index-c8c418b0.js";const f={name:"signuppage",methods:{submit(){this.$router.push("/")}}},t=s=>(h("data-v-1069659b"),s=s(),m(),s),g={id:"background"},v={class:"loginbox"},b=t(()=>e("img",{src:"https://cdn.discordapp.com/attachments/1017419092447207436/1063092138029625394/pixil-frame-0.png",class:"avatar"},null,-1)),x=t(()=>e("h1",null,"Sign Up Here",-1)),w=t(()=>e("p",null,"Username",-1)),k=t(()=>e("input",{type:"text",name:"",placeholder:"Enter Username"},null,-1)),y=t(()=>e("p",null,"Password",-1)),S=t(()=>e("input",{type:"password",name:"",placeholder:"Password"},null,-1)),$=t(()=>e("a",{href:"#"},"Lost your password?",-1)),I=t(()=>e("br",null,null,-1));function U(s,o,B,C,N,n){const a=r("router-link");return c(),i("div",g,[e("div",v,[b,x,e("form",null,[w,k,y,S,e("input",{type:"submit",name:"",value:"Sign Up",onClick:o[0]||(o[0]=_(V=>n.submit(),["stop","prevent"]))}),$,I,e("a",null,[d(a,{to:"/login"},{default:l(()=>[u("Already have an account?")]),_:1})])])])])}const P=p(f,[["render",U],["__scopeId","data-v-1069659b"]]);export{P as default};

1
dist/assets/signup-ceddb310.css vendored Normal file
View File

@ -0,0 +1 @@
#background[data-v-1069659b]{margin:0;padding:0;width:100%;height:100%;position:absolute;background-color:#e0e0e0;font-family:sans-serif}.loginbox[data-v-1069659b]{height:420px;width:320px;background:#000;color:#fff;top:50%;left:50%;position:absolute;transform:translate(-50%,-50%);box-sizing:border-box;padding:70px 30px}h1[data-v-1069659b]{margin:0;padding:0 0 20px;font-size:22px;text-align:center}.loginbox p[data-v-1069659b]{margin:0;padding:0;font-weight:700}.loginbox input[data-v-1069659b]{width:100%;margin-bottom:20px}.loginbox input[type=text][data-v-1069659b],input[type=password][data-v-1069659b]{border:none;border-bottom:1px solid #fff;background:transparent;outline:none;height:40px;color:#fff;font-size:16px}.loginbox input[type=submit][data-v-1069659b]:hover{cursor:pointer;background:#00df00;color:#000}.loginbox a[data-v-1069659b]{text-decoration:none;font-size:12px;line-height:20px;color:#a9a9a9}.loginbox a[data-v-1069659b]:hover{color:#ffc107}.loginbox input[type=submit][data-v-1069659b]{border:none;outline:none;height:40px;background:#00a800;font-size:18px;border-radius:20px}.avatar[data-v-1069659b]{width:100px;height:100px;border-radius:50%;position:absolute;top:-50px;left:calc(50% - 50px)}

4
dist/index.html vendored
View File

@ -5,8 +5,8 @@
<link rel="icon" href="/assets/train-solid-e7249eb7.svg">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Irish Rail Tracker</title>
<script type="module" crossorigin src="/assets/index-ed2bec8f.js"></script>
<link rel="stylesheet" href="/assets/index-debbf736.css">
<script type="module" crossorigin src="/assets/index-c8c418b0.js"></script>
<link rel="stylesheet" href="/assets/index-a5eb0783.css">
</head>
<body>
<div id="app"></div>