Added new award flow to challenges (#10512)

This commit is contained in:
Keith Holliday
2018-07-13 21:58:28 -05:00
committed by GitHub
parent 3b36046a6a
commit 896a1b74b6
4 changed files with 45 additions and 5 deletions

View File

@@ -3,7 +3,7 @@
challenge-modal(v-on:updatedChallenge='updatedChallenge') challenge-modal(v-on:updatedChallenge='updatedChallenge')
leave-challenge-modal(:challengeId='challenge._id') leave-challenge-modal(:challengeId='challenge._id')
close-challenge-modal(:members='members', :challengeId='challenge._id') close-challenge-modal(:members='members', :challengeId='challenge._id')
challenge-member-progress-modal(:memberId='progressMemberId', :challengeId='challenge._id') challenge-member-progress-modal(:challengeId='challenge._id')
.col-12.col-md-8.standard-page .col-12.col-md-8.standard-page
.row .row
.col-12.col-md-6 .col-12.col-md-6
@@ -231,7 +231,6 @@ export default {
creatingTask: {}, creatingTask: {},
workingTask: {}, workingTask: {},
taskFormPurpose: 'create', taskFormPurpose: 'create',
progressMemberId: '',
searchTerm: '', searchTerm: '',
memberResults: [], memberResults: [],
}; };
@@ -345,6 +344,7 @@ export default {
this.tasksByType[task.type].splice(index, 1); this.tasksByType[task.type].splice(index, 1);
}, },
showMemberModal () { showMemberModal () {
// @TODO: Change these to options and add a custom event to members modal
this.$store.state.memberModalOptions.challengeId = this.challenge._id; this.$store.state.memberModalOptions.challengeId = this.challenge._id;
this.$store.state.memberModalOptions.groupId = 'challenge'; // @TODO: change these terrible settings this.$store.state.memberModalOptions.groupId = 'challenge'; // @TODO: change these terrible settings
this.$store.state.memberModalOptions.group = this.group; this.$store.state.memberModalOptions.group = this.group;
@@ -374,8 +374,9 @@ export default {
Object.assign(this.challenge, eventData.challenge); Object.assign(this.challenge, eventData.challenge);
}, },
openMemberProgressModal (member) { openMemberProgressModal (member) {
this.progressMemberId = member._id; this.$root.$emit('habitica:challenge:member-progress', {
this.$root.$emit('bv::show::modal', 'challenge-member-modal'); progressMemberId: member._id,
});
}, },
async exportChallengeCsv () { async exportChallengeCsv () {
// let response = await this.$store.dispatch('challenges:exportChallengeCsv', { // let response = await this.$store.dispatch('challenges:exportChallengeCsv', {

View File

@@ -1,5 +1,8 @@
<template lang="pug"> <template lang="pug">
b-modal#challenge-member-modal(title="User Progress", size='lg') b-modal#challenge-member-modal(title="User Progress", size='lg')
.row.award-row
.col-12.text-center
button.btn.btn-primary(v-once, @click='closeChallenge()') {{ $t('awardWinners') }}
.row .row
task-column.col-6( task-column.col-6(
v-for="column in columns", v-for="column in columns",
@@ -8,12 +11,19 @@
:taskListOverride='tasksByType[column]') :taskListOverride='tasksByType[column]')
</template> </template>
<style scoped>
.award-row {
padding-top: 1rem;
padding-bottom: 1rem;
}
</style>
<script> <script>
import axios from 'axios'; import axios from 'axios';
import Column from '../tasks/column'; import Column from '../tasks/column';
export default { export default {
props: ['challengeId', 'memberId'], props: ['challengeId'],
components: { components: {
TaskColumn: Column, TaskColumn: Column,
}, },
@@ -26,8 +36,19 @@ export default {
todo: [], todo: [],
reward: [], reward: [],
}, },
memberId: '',
}; };
}, },
mounted () {
this.$root.$on('habitica:challenge:member-progress', (data) => {
if (!data.progressMemberId) return;
this.memberId = data.progressMemberId;
this.$root.$emit('bv::show::modal', 'challenge-member-modal');
});
},
beforeDestroy () {
this.$root.$off('habitica:challenge:member-progress');
},
watch: { watch: {
async memberId (id) { async memberId (id) {
if (!id) return; if (!id) return;
@@ -45,5 +66,14 @@ export default {
}); });
}, },
}, },
methods: {
async closeChallenge () {
this.challenge = await this.$store.dispatch('challenges:selectChallengeWinner', {
challengeId: this.challengeId,
winnerId: this.memberId,
});
this.$router.push('/challenges/myChallenges');
},
},
}; };
</script> </script>

View File

@@ -53,6 +53,9 @@ div
span.dropdown-icon-item span.dropdown-icon-item
.svg-icon.inline(v-html="icons.removeIcon") .svg-icon.inline(v-html="icons.removeIcon")
span.text {{$t('removeManager2')}} span.text {{$t('removeManager2')}}
b-dropdown-item(@click='viewProgress(member)')
span.dropdown-icon-item
span.text {{ $t('viewProgress') }}
.row(v-if='isLoadMoreAvailable') .row(v-if='isLoadMoreAvailable')
.col-12.text-center .col-12.text-center
button.btn.btn-secondary(@click='loadMoreMembers()') {{ $t('loadMore') }} button.btn.btn-secondary(@click='loadMoreMembers()') {{ $t('loadMore') }}
@@ -475,6 +478,11 @@ export default {
groupData.leader = member; groupData.leader = member;
this.$root.$emit('updatedGroup', groupData); this.$root.$emit('updatedGroup', groupData);
}, },
viewProgress (member) {
this.$root.$emit('habitica:challenge:member-progress', {
progressMemberId: member._id,
});
},
}, },
}; };
</script> </script>

View File

@@ -132,6 +132,7 @@
"locationRequired": "Location of challenge is required ('Add to')", "locationRequired": "Location of challenge is required ('Add to')",
"categoiresRequired": "One or more categories must be selected", "categoiresRequired": "One or more categories must be selected",
"viewProgressOf": "View Progress Of", "viewProgressOf": "View Progress Of",
"viewProgress": "View Progress",
"selectMember": "Select Member", "selectMember": "Select Member",
"confirmKeepChallengeTasks": "Do you want to keep challenge tasks?", "confirmKeepChallengeTasks": "Do you want to keep challenge tasks?",
"selectParticipant": "Select a Participant" "selectParticipant": "Select a Participant"