Initial Spark Install
This commit is contained in:
138
spark/resources/assets/js/mixins/register.js
vendored
Normal file
138
spark/resources/assets/js/mixins/register.js
vendored
Normal file
@@ -0,0 +1,138 @@
|
||||
module.exports = {
|
||||
/**
|
||||
* The mixin's data.
|
||||
*/
|
||||
data() {
|
||||
return {
|
||||
plans: [],
|
||||
selectedPlan: null,
|
||||
|
||||
invitation: null,
|
||||
invalidInvitation: false
|
||||
};
|
||||
},
|
||||
|
||||
|
||||
methods: {
|
||||
/**
|
||||
* Get the active plans for the application.
|
||||
*/
|
||||
getPlans() {
|
||||
if ( ! Spark.cardUpFront) {
|
||||
return;
|
||||
}
|
||||
|
||||
axios.get('/spark/plans')
|
||||
.then(response => {
|
||||
var plans = response.data;
|
||||
|
||||
this.plans = _.where(plans, {type: "user"}).length > 0
|
||||
? _.where(plans, {type: "user"})
|
||||
: _.where(plans, {type: "team"});
|
||||
|
||||
this.selectAppropriateDefaultPlan();
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Get the invitation specified in the query string.
|
||||
*/
|
||||
getInvitation() {
|
||||
axios.get(`/invitations/${this.query.invitation}`)
|
||||
.then(response => {
|
||||
this.invitation = response.data;
|
||||
})
|
||||
.catch(response => {
|
||||
this.invalidInvitation = true;
|
||||
});
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Select the appropriate default plan for registration.
|
||||
*/
|
||||
selectAppropriateDefaultPlan() {
|
||||
if (this.query.plan) {
|
||||
this.selectPlanById(this.query.plan) || this.selectPlanByName(this.query.plan);
|
||||
} else if (this.query.invitation) {
|
||||
this.selectFreePlan();
|
||||
} else if (this.paidPlansForActiveInterval.length > 0) {
|
||||
this.selectPlan(this.paidPlansForActiveInterval[0]);
|
||||
} else {
|
||||
this.selectFreePlan();
|
||||
}
|
||||
|
||||
if (this.shouldShowYearlyPlans()) {
|
||||
this.showYearlyPlans();
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Select the free plan.
|
||||
*/
|
||||
selectFreePlan() {
|
||||
const plan = _.find(this.plans, plan => plan.price === 0);
|
||||
|
||||
if (typeof plan !== 'undefined') {
|
||||
this.selectPlan(plan);
|
||||
}
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Select the plan with the given id.
|
||||
*/
|
||||
selectPlanById(id) {
|
||||
_.each(this.plans, plan => {
|
||||
if (plan.id == id) {
|
||||
this.selectPlan(plan);
|
||||
}
|
||||
});
|
||||
|
||||
return this.selectedPlan;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Select the plan with the given name.
|
||||
*/
|
||||
selectPlanByName(name) {
|
||||
_.each(this.plans, plan => {
|
||||
if (plan.name == name) {
|
||||
this.selectPlan(plan);
|
||||
}
|
||||
});
|
||||
|
||||
return this.selectedPlan;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Determine if the given plan is selected.
|
||||
*/
|
||||
isSelected(plan) {
|
||||
return this.selectedPlan && plan.id == this.selectedPlan.id;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Select the given plan.
|
||||
*/
|
||||
selectPlan(plan) {
|
||||
this.selectedPlan = plan;
|
||||
|
||||
this.registerForm.plan = plan.id;
|
||||
},
|
||||
|
||||
|
||||
/**
|
||||
* Determine if we should show the yearly plans.
|
||||
*/
|
||||
shouldShowYearlyPlans(){
|
||||
return (this.monthlyPlans.length == 0 && this.yearlyPlans.length > 0) ||
|
||||
this.selectedPlan.interval == 'yearly'
|
||||
}
|
||||
}
|
||||
};
|
Reference in New Issue
Block a user