mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-18 23:27:26 +01:00
update: more analytics work
This commit is contained in:
@@ -251,7 +251,7 @@ import { mapState } from '@/libs/store';
|
|||||||
import paymentsButtons from '@/components/payments/buttons/list';
|
import paymentsButtons from '@/components/payments/buttons/list';
|
||||||
import selectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
import selectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
||||||
import lockableLabel from '@/components/tasks/modal-controls/lockableLabel';
|
import lockableLabel from '@/components/tasks/modal-controls/lockableLabel';
|
||||||
// import * as Analytics from '@/libs/analytics';
|
import * as Analytics from '@/libs/analytics';
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
@@ -282,6 +282,7 @@ export default {
|
|||||||
challenges: false,
|
challenges: false,
|
||||||
},
|
},
|
||||||
demographics: null,
|
demographics: null,
|
||||||
|
user: '',
|
||||||
},
|
},
|
||||||
activePage: 'create-group',
|
activePage: 'create-group',
|
||||||
type: 'guild',
|
type: 'guild',
|
||||||
@@ -305,10 +306,6 @@ export default {
|
|||||||
this.activePage = page;
|
this.activePage = page;
|
||||||
},
|
},
|
||||||
createGroup () {
|
createGroup () {
|
||||||
// Analytics.track({
|
|
||||||
// name: this.paymentData.demographics,
|
|
||||||
// },
|
|
||||||
// console.log(this.paymentData.demographics));
|
|
||||||
this.changePage(this.PAGES.PAY);
|
this.changePage(this.PAGES.PAY);
|
||||||
},
|
},
|
||||||
pay (paymentMethod) {
|
pay (paymentMethod) {
|
||||||
@@ -320,6 +317,16 @@ export default {
|
|||||||
demographics: demographicsKey,
|
demographics: demographicsKey,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
Analytics.track({
|
||||||
|
hitType: 'event',
|
||||||
|
eventName: 'group plan create',
|
||||||
|
eventAction: 'group plan create',
|
||||||
|
eventCategory: 'behavior',
|
||||||
|
createGroupName: this.newGroup.name,
|
||||||
|
demographicsCreated: this.newGroup.demographics,
|
||||||
|
typeCreated: this.newGroup.type,
|
||||||
|
});
|
||||||
|
|
||||||
if (this.upgradingGroup && this.upgradingGroup._id) {
|
if (this.upgradingGroup && this.upgradingGroup._id) {
|
||||||
paymentData.groupId = this.upgradingGroup._id;
|
paymentData.groupId = this.upgradingGroup._id;
|
||||||
paymentData.group = this.upgradingGroup;
|
paymentData.group = this.upgradingGroup;
|
||||||
|
|||||||
@@ -290,6 +290,7 @@
|
|||||||
<script>
|
<script>
|
||||||
import checkIcon from '@/assets/svg/check.svg';
|
import checkIcon from '@/assets/svg/check.svg';
|
||||||
import gemIcon from '@/assets/svg/gem.svg';
|
import gemIcon from '@/assets/svg/gem.svg';
|
||||||
|
import { mapState } from '@/libs/store';
|
||||||
import subscriptionBlocks from '@/../../common/script/content/subscriptionBlocks';
|
import subscriptionBlocks from '@/../../common/script/content/subscriptionBlocks';
|
||||||
import selectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
import selectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
||||||
import lockableLabel from '@/components/tasks/modal-controls/lockableLabel';
|
import lockableLabel from '@/components/tasks/modal-controls/lockableLabel';
|
||||||
@@ -309,16 +310,16 @@ export default {
|
|||||||
gem: gemIcon,
|
gem: gemIcon,
|
||||||
}),
|
}),
|
||||||
paymentData: {},
|
paymentData: {},
|
||||||
groupPlanUpgraded: {
|
upgradedGroupInfo: {
|
||||||
demographics: null,
|
demographics: null,
|
||||||
},
|
},
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
|
...mapState({ user: 'user.data', group: 'group.data' }),
|
||||||
groupPlanCost () {
|
groupPlanCost () {
|
||||||
const sub = this.paymentData.subscription;
|
const sub = this.paymentData.subscription;
|
||||||
const memberCount = this.paymentData.group.memberCount || 1;
|
const memberCount = this.paymentData.group.memberCount || 1;
|
||||||
console.log(this.paymentData);
|
|
||||||
return sub.price + 3 * (memberCount - 1);
|
return sub.price + 3 * (memberCount - 1);
|
||||||
},
|
},
|
||||||
isFromBalance () {
|
isFromBalance () {
|
||||||
@@ -327,10 +328,15 @@ export default {
|
|||||||
upgradedGroup () {
|
upgradedGroup () {
|
||||||
const upgradedGroup = (this.paymentData.paymentType !== 'groupPlan' || this.paymentData.newGroup);
|
const upgradedGroup = (this.paymentData.paymentType !== 'groupPlan' || this.paymentData.newGroup);
|
||||||
const demographicsKey = upgradedGroup.demographics;
|
const demographicsKey = upgradedGroup.demographics;
|
||||||
|
const upgradedGroupName = upgradedGroup.name;
|
||||||
|
const upgradedGroupType = upgradedGroup.type;
|
||||||
const groupPlanUpgraded = {
|
const groupPlanUpgraded = {
|
||||||
demographics: demographicsKey,
|
demographics: demographicsKey,
|
||||||
|
name: upgradedGroupName,
|
||||||
|
type: upgradedGroupType,
|
||||||
};
|
};
|
||||||
return groupPlanUpgraded.demographics;
|
console.log(groupPlanUpgraded.demographics, groupPlanUpgraded.name, groupPlanUpgraded.type);
|
||||||
|
return (groupPlanUpgraded.demographics, groupPlanUpgraded.name, groupPlanUpgraded.type);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
mounted () {
|
mounted () {
|
||||||
@@ -349,9 +355,14 @@ export default {
|
|||||||
methods: {
|
methods: {
|
||||||
submit () {
|
submit () {
|
||||||
Analytics.track({
|
Analytics.track({
|
||||||
name: this.groupPlanUpgraded.demographics,
|
hitType: 'event',
|
||||||
},
|
eventName: 'group plan upgrade',
|
||||||
console.log(Analytics.track));
|
eventAction: 'group plan upgrade',
|
||||||
|
eventCategory: 'behavior',
|
||||||
|
upgradedGroupName: this.upgradedGroup.name,
|
||||||
|
demographicsUpgraded: this.upgradedGroup.demographics,
|
||||||
|
typeUpgraded: this.upgradedGroup.type,
|
||||||
|
});
|
||||||
this.paymentData = {};
|
this.paymentData = {};
|
||||||
this.$root.$emit('bv::hide::modal', 'payments-success-modal');
|
this.$root.$emit('bv::hide::modal', 'payments-success-modal');
|
||||||
},
|
},
|
||||||
|
|||||||
@@ -75,6 +75,22 @@ function _gatherUserStats (properties) {
|
|||||||
if (user.purchased.plan.planId) properties.subscription = user.purchased.plan.planId;
|
if (user.purchased.plan.planId) properties.subscription = user.purchased.plan.planId;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// added to gather group stats
|
||||||
|
function _gatherGroupStats (properties) {
|
||||||
|
const store = getStore();
|
||||||
|
const user = store.state.user.data;
|
||||||
|
const group = store.state.groups.data;
|
||||||
|
|
||||||
|
properties.UUID = user._id;
|
||||||
|
|
||||||
|
properties.createGroupName = group.newGroup.name;
|
||||||
|
properties.demographicsCreated = group.newGroup.demographics;
|
||||||
|
properties.typeCreated = group.newGroup.type;
|
||||||
|
properties.upgradedGroupName = group.upgradedGroup.name;
|
||||||
|
properties.demographicsUpgraded = group.upgradedGroup.demographics;
|
||||||
|
properties.typeUpgraded = group.upgradedGroup.type;
|
||||||
|
}
|
||||||
|
|
||||||
export function setUser () {
|
export function setUser () {
|
||||||
const store = getStore();
|
const store = getStore();
|
||||||
const user = store.state.user.data;
|
const user = store.state.user.data;
|
||||||
@@ -89,6 +105,7 @@ export function track (properties, options = {}) {
|
|||||||
if (_doesNotHaveAllowedHitType(properties)) return;
|
if (_doesNotHaveAllowedHitType(properties)) return;
|
||||||
|
|
||||||
const trackOnClient = options && options.trackOnClient === true;
|
const trackOnClient = options && options.trackOnClient === true;
|
||||||
|
console.log(properties, options); // delete this!
|
||||||
// Track events on the server by default
|
// Track events on the server by default
|
||||||
if (trackOnClient === true) {
|
if (trackOnClient === true) {
|
||||||
amplitude.getInstance().logEvent(properties.eventAction, properties);
|
amplitude.getInstance().logEvent(properties.eventAction, properties);
|
||||||
@@ -114,6 +131,19 @@ export function updateUser (properties = {}) {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// added to get group data
|
||||||
|
export function updateGroup (properties = {}) {
|
||||||
|
Vue.nextTick(() => {
|
||||||
|
_gatherGroupStats(properties);
|
||||||
|
|
||||||
|
forEach(properties, (value, key) => {
|
||||||
|
const idGroup = new amplitude.Identify().set(key, value);
|
||||||
|
amplitude.getInstance().identify(idGroup);
|
||||||
|
});
|
||||||
|
window.ga('set', properties);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
export function setup () {
|
export function setup () {
|
||||||
// Setup queues until the real scripts are loaded
|
// Setup queues until the real scripts are loaded
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user