Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
48 commits
Select commit Hold shift + click to select a range
7618dcf
production dotenv
kisonecat Dec 29, 2019
c51a43a
Update Apply.vue
dshapiroww Dec 30, 2019
b513344
emphasize just one letter is needed
kisonecat Dec 30, 2019
8ef2329
Make clear that gender is free-form
kisonecat Dec 30, 2019
6c20f6a
sort the previous application years
kisonecat Dec 30, 2019
f8e4b77
Merge pull request #1 from dshapiroww/patch-1
kisonecat Dec 30, 2019
a7c67b4
better favicon
kisonecat Dec 30, 2019
cdd24c8
Include start dates
kisonecat Dec 30, 2019
e12d4db
Better essays
kisonecat Dec 30, 2019
9332f35
Some changes from talking with Dan
kisonecat Dec 30, 2019
9e1e334
Some typo fixes from Dan
kisonecat Dec 31, 2019
bd7c238
Ask for transcripts
kisonecat Jan 1, 2020
4aa1217
link to application problems
kisonecat Jan 2, 2020
b8adf09
Shorter hint
kisonecat Jan 2, 2020
9056119
Include save message
kisonecat Jan 4, 2020
f70a6fd
JC application portal too
kisonecat Jan 22, 2020
6092e89
New version supports JCs
kisonecat Jan 22, 2020
114caee
Better explanations for users
kisonecat Feb 13, 2020
62b80c2
New version
kisonecat Feb 13, 2020
addb6f3
Use Indiana on website
kisonecat Mar 2, 2020
9025d61
Some status display
kisonecat Apr 13, 2020
1f56546
cleaning up status page
kisonecat Apr 14, 2020
61ba9e8
more instructions
kisonecat Apr 14, 2020
b4f7403
Payment portal
kisonecat Apr 30, 2020
7eeeb97
remove some logging
kisonecat Apr 30, 2020
1ecb664
remove some error processing
kisonecat Apr 30, 2020
40c2b2d
Scholarship displayed on fee page
kisonecat May 15, 2020
df8858e
More intake questions
kisonecat May 15, 2020
bf30d46
remove logging
kisonecat May 15, 2020
f6a7f41
Force login for fee page
kisonecat May 21, 2020
1aaefaa
updated version with Shapiro's recommended edits
kisonecat Dec 30, 2020
ab8fd4d
Update Essays.vue
kisonecat Dec 28, 2021
8d8f97e
Update Essays.vue
kisonecat Dec 28, 2021
8c0fd31
Update Apply.vue
kisonecat Dec 28, 2021
edc930e
Update Apply.vue
kisonecat Dec 28, 2021
14d9614
Update Essays.vue
kisonecat Dec 28, 2021
8a0a667
Update JCEssays.vue
kisonecat Dec 30, 2021
1361b7c
Update JCEssays.vue
kisonecat Dec 30, 2021
abc4139
locations for 2022
kisonecat Jan 3, 2022
f29327f
logo is now transparent
kisonecat Jan 3, 2022
dec98b3
typos found by Shapiro
kisonecat Jan 3, 2022
91e492d
not asking about interesting problem anymore
kisonecat Mar 29, 2022
778a2e5
fix warning text
kisonecat Mar 31, 2022
d8d98b5
shorter status page
kisonecat Apr 4, 2022
241f293
new logo
kisonecat Apr 30, 2022
4dd8824
include course fee button
kisonecat May 5, 2022
cd3bf5a
ask for travel info
kisonecat May 11, 2022
b9932fc
Bump node-fetch from 2.6.6 to 2.6.7
dependabot[bot] Jun 26, 2022
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions .env.production
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
VUE_APP_API_URL=https://api.rossprogram.org
VUE_APP_STRIPE_API_KEY=pk_live_EVv0HE4EnEnGBfjY2iBzPnuS003Q0UNubO
6 changes: 4 additions & 2 deletions package.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"name": "frontend",
"version": "1.0.0",
"version": "1.6.0",
"private": true,
"scripts": {
"serve": "vue-cli-service serve",
Expand All @@ -14,6 +14,8 @@
"core-js": "^3.4.3",
"material-design-icons-iconfont": "^5.0.1",
"pluralize": "^8.0.0",
"v-currency-field": "^3.0.7",
"v-stripe-elements": "^1.2.0",
"vue": "^2.6.10",
"vue-moment": "^4.0.0",
"vue-router": "^3.1.3",
Expand All @@ -22,7 +24,6 @@
"vuex": "^3.1.2"
},
"devDependencies": {
"vue-cli-plugin-s3-deploy": "^3.0.0",
"@vue/cli-plugin-babel": "^4.1.0",
"@vue/cli-plugin-eslint": "^4.1.0",
"@vue/cli-plugin-router": "^4.1.0",
Expand All @@ -36,6 +37,7 @@
"node-sass": "^4.12.0",
"sass": "^1.19.0",
"sass-loader": "^8.0.0",
"vue-cli-plugin-s3-deploy": "^3.0.0",
"vue-cli-plugin-vuetify": "^2.0.2",
"vue-template-compiler": "^2.6.10",
"vuetify-loader": "^1.3.0"
Expand Down
Binary file added public/android-chrome-192x192.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/android-chrome-512x512.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/apple-touch-icon.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicon-16x16.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added public/favicon-32x32.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file modified public/favicon.ico
Binary file not shown.
6 changes: 5 additions & 1 deletion public/index.html
Original file line number Diff line number Diff line change
Expand Up @@ -4,11 +4,15 @@
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="apple-touch-icon" sizes="180x180" href="<%= BASE_URL %>apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="<%= BASE_URL %>favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="<%= BASE_URL %>favicon-16x16.png">
<link rel="manifest" href="<%= BASE_URL %>site.webmanifest">
<link rel="icon" href="<%= BASE_URL %>favicon.ico">
<script src="https://js.stripe.com/v3/"></script>
<title>Apply - Ross Mathematics Program</title>
<link href='https://fonts.googleapis.com/css?family=Roboto:300,400,500,700,300italic,400italic|Material+Icons' rel="stylesheet" type="text/css">
<link href="https://cdn.jsdelivr.net/npm/@mdi/[email protected]/css/materialdesignicons.min.css" rel="stylesheet">

</head>
<body>
<noscript>
Expand Down
Binary file modified public/logo.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions public/site.webmanifest
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{
"background_color" : "#ffffff",
"display" : "standalone",
"icons" : [
{
"sizes" : "192x192",
"src" : "/android-chrome-192x192.png",
"type" : "image/png"
},
{
"sizes" : "512x512",
"src" : "/android-chrome-512x512.png",
"type" : "image/png"
}
],
"name" : "Apply to the Ross Program",
"short_name" : "apply to ross",
"theme_color" : "#ffffff"
}
139 changes: 94 additions & 45 deletions src/App.vue
Original file line number Diff line number Diff line change
Expand Up @@ -70,9 +70,10 @@
nav
>
<v-list-item
v-for="item in items"
v-for="item in (application.juniorCounselor ? jcItems : items)"
:key="item.title"
:to="item.to"
:exact="true"
link
>
<v-list-item-icon>
Expand Down Expand Up @@ -105,56 +106,104 @@ export default {
name: 'App',
computed: {
...mapState(['profile']),
...mapState(['application']),
},

components: {
Snackbar,
},
data() {
return {
drawer: true,
items: [
{
title: 'Background',
icon: 'person',
to: '/apply/background',
},
{
title: 'Parent Information',
icon: 'supervisor_account',
to: '/apply/parent',
},
{
title: 'Short Essays',
icon: 'message',
to: '/apply/essays',
},
{
title: 'Recommendation',
icon: 'mail',
to: '/apply/recommendation',
},
{
title: 'Solutions',
icon: 'assignment',
to: '/apply/solutions',
},
{
title: 'Personal Statement',
icon: 'face',
to: '/apply/statement',
},
{
title: 'Attachments',
icon: 'attachment',
to: '/apply/attachments',
},
{
title: 'Submit',
icon: 'done',
to: '/apply/submit',
},
],
return {
drawer: true,
jcItems: [
{
title: 'Instructions',
icon: 'grading',
to: '/apply/',
},
{
title: 'Background',
icon: 'person',
to: '/apply/background',
},
{
title: 'Parent Information',
icon: 'supervisor_account',
to: '/apply/parent',
},
{
title: 'Transcript',
icon: 'school',
to: '/apply/transcript',
},
{
title: 'JC Essays',
icon: 'message',
to: '/apply/jc-essays',
},
{
title: 'Attachments',
icon: 'attachment',
to: '/apply/attachments',
},
{
title: 'Submit',
icon: 'done',
to: '/apply/submit',
},
],
items: [
{
title: 'Instructions',
icon: 'grading',
to: '/apply/',
},
{
title: 'Background',
icon: 'person',
to: '/apply/background',
},
{
title: 'Parent Information',
icon: 'supervisor_account',
to: '/apply/parent',
},
{
title: 'Personal Statement',
icon: 'face',
to: '/apply/statement',
},
{
title: 'Short Essays',
icon: 'message',
to: '/apply/essays',
},
{
title: 'Solutions',
icon: 'assignment',
to: '/apply/solutions',
},
{
title: 'Transcript',
icon: 'school',
to: '/apply/transcript',
},
{
title: 'Recommendation',
icon: 'mail',
to: '/apply/recommendation',
},
{
title: 'Attachments',
icon: 'attachment',
to: '/apply/attachments',
},
{
title: 'Submit',
icon: 'done',
to: '/apply/submit',
},
],
publicPath: process.env.BASE_URL,
};
},
Expand Down
12 changes: 12 additions & 0 deletions src/main.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ import Vue from 'vue';
import pluralize from 'pluralize';
import VueTelInput from 'vue-tel-input';
import moment from 'vue-moment';
import VCurrencyField from 'v-currency-field';
import { VTextField } from 'vuetify/lib'; // Globally import VTextField
import App from './App.vue';
import router from './router';
import store from './store';
Expand All @@ -14,6 +16,16 @@ Vue.config.productionTip = false;

Vue.filter('pluralize', (value, number) => pluralize(value, number));

Vue.component('v-text-field', VTextField);
Vue.use(VCurrencyField, {
locale: 'en-US',
decimalLength: 2,
autoDecimalMode: true,
min: null,
max: null,
defaultValue: 0,
});

new Vue({
router,
store,
Expand Down
43 changes: 43 additions & 0 deletions src/router/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,20 @@ import VueRouter from 'vue-router';
import Home from '../views/Home.vue';
import Signup from '../views/Signup.vue';
import Apply from '../views/Apply.vue';
import Status from '../views/Status.vue';
import Fees from '../views/Fees.vue';
import Background from '../views/Background.vue';
import Essays from '../views/Essays.vue';
import JCEssays from '../views/JCEssays.vue';
import Login from '../views/Login.vue';
import ParentInformation from '../views/ParentInformation.vue';
import PersonalStatement from '../views/PersonalStatement.vue';
import Recommendation from '../views/Recommendation.vue';
import Attachments from '../views/Attachments.vue';
import Solutions from '../views/Solutions.vue';
import Transcript from '../views/Transcript.vue';
import SubmitApplication from '../views/SubmitApplication.vue';
import store from '../store';

Vue.use(VueRouter);

Expand All @@ -36,11 +41,32 @@ const routes = [
name: 'apply',
component: Apply,
},
{
path: '/status',
name: 'status',
component: Status,
meta: {
requiresAuth: true,
},
},
{
path: '/fees',
name: 'fees',
component: Fees,
meta: {
requiresAuth: true,
},
},
{
path: '/apply/essays',
name: 'essays',
component: Essays,
},
{
path: '/apply/jc-essays',
name: 'jc-essays',
component: JCEssays,
},
{
path: '/apply/background',
name: 'background',
Expand All @@ -61,6 +87,11 @@ const routes = [
name: 'solutions',
component: Solutions,
},
{
path: '/apply/transcript',
name: 'transcript',
component: Transcript,
},
{
path: '/apply/attachments',
name: 'attachments',
Expand All @@ -84,4 +115,16 @@ const router = new VueRouter({
routes,
});

router.beforeEach((to, from, next) => {
if (to.matched.some(record => record.meta.requiresAuth)) {
if (store.state.profile) {
next();
return;
}
next('/login');
} else {
next();
}
});

export default router;
16 changes: 16 additions & 0 deletions src/services/user.js
Original file line number Diff line number Diff line change
Expand Up @@ -19,6 +19,22 @@ export default {
});
},

async getPayments() {
return axios.get('/users/me/payments');
},

async postPayment(data) {
return axios.post(`/users/me/payments/${data.amount}`);
},

async getOffer() {
return axios.get(`/users/me/application/${new Date().getFullYear()}/offer`);
},

async putOffer(data) {
return axios.put(`/users/me/application/${new Date().getFullYear()}/offer`, data);
},

async putApplication(id, data) {
return axios.put(`/users/${id}/application/${new Date().getFullYear()}`, data);
},
Expand Down
Loading