diff --git a/website/client/components/challenges/challengeDetail.vue b/website/client/components/challenges/challengeDetail.vue
index 6152740022..ae7e88a1a8 100644
--- a/website/client/components/challenges/challengeDetail.vue
+++ b/website/client/components/challenges/challengeDetail.vue
@@ -9,8 +9,12 @@
.col-12.col-md-6
h1(v-markdown='challenge.name')
div
- strong.float-left(v-once) {{ $t('createdBy') }}:
- user-link.mx-1.float-left(:user="challenge.leader")
+ span.mr-1.ml-0
+ strong(v-once) {{ $t('createdBy') }}:
+ user-link.mx-1(:user="challenge.leader")
+ span.mr-1.ml-0(v-if="challenge.group")
+ strong(v-once) {{ $t(challenge.group.type) }}:
+ group-link.mx-1(:group="challenge.group")
// @TODO: make challenge.author a variable inside the createdBy string (helps with RTL languages)
// @TODO: Implement in V2 strong.margin-left(v-once)
.svg-icon.calendar-icon(v-html="icons.calendarIcon")
@@ -152,7 +156,8 @@
}
.challenge-actions {
- margin-bottom: 1em;
+ margin-top: 1em;
+ margin-bottom: 2em;
.view-progress {
margin-right: .5em;
@@ -181,6 +186,7 @@ import challengeMemberSearchMixin from 'client/mixins/challengeMemberSearch';
import leaveChallengeModal from './leaveChallengeModal';
import sidebarSection from '../sidebarSection';
import userLink from '../userLink';
+import groupLink from '../groupLink';
import taskDefaults from 'common/script/libs/taskDefaults';
import gemIcon from 'assets/svg/gem.svg';
@@ -203,6 +209,7 @@ export default {
TaskColumn: Column,
TaskModal,
userLink,
+ groupLink,
},
data () {
return {
diff --git a/website/client/components/challenges/challengeItem.vue b/website/client/components/challenges/challengeItem.vue
index 2b0c12c4c8..bd1407cd4b 100644
--- a/website/client/components/challenges/challengeItem.vue
+++ b/website/client/components/challenges/challengeItem.vue
@@ -1,187 +1,288 @@
-.card
- .row
- router-link.col-12(:to="{ name: 'challenge', params: { challengeId: challenge._id } }")
- h3(v-markdown='challenge.name')
- .row
- .col-6
- div.details
- span
- .svg-icon.member-icon(v-html="icons.memberIcon")
- span {{challenge.memberCount}}
- // @TODO: Add in V2
- span
- .svg-icon.calendar-icon(v-html="icons.calendarIcon")
- span
- strong End Date:
+.challenge
+ .challenge-prize
+ .number
+ span.svg-icon(v-html="icons.gemIcon")
+ span.value {{challenge.prize}}
+ .label {{ $t('challengePrize') }}
+ .challenge-header
+ router-link(
+ :to="{ name: 'challenge', params: { challengeId: challenge._id } }"
+ )
+ h3.challenge-title(v-markdown='challenge.name')
+ .owner(v-if="fullLayout")
+ .owner-item
+ strong {{ $t('createdBy') }}:
+ user-link.mx-1(:user="challenge.leader")
+ .owner-item(v-if="challenge.group")
+ strong {{ $t(challenge.group.type) }}:
+ group-link.mx-1(:group="challenge.group")
+ .meta
+ .meta-item
+ .svg-icon.user-icon(v-html="icons.memberIcon")
+ span.mx-1 {{challenge.memberCount}}
+ // @TODO: add end date
+ .meta-item
+ .svg-icon(v-html="icons.calendarIcon")
+ strong.mx-1 {{ $t('endDate')}}:
span {{challenge.endDate}}
- div.tags
- span.tag(v-for='tag in challenge.tags') {{tag}}
- .col-6.prize-section
- div
- span.svg-icon.gem(v-html="icons.gemIcon")
- span.prize {{challenge.prize}}
- div Challenge Prize
- .row.description
- .col-12
- | {{challenge.summary}}
- .well.row
- .col-3
- .count-details
- .svg-icon.habit-icon(v-html="icons.habitIcon")
- span.count {{challenge.tasksOrder.habits.length}}
- div {{$t('habit')}}
- .col-3
- .count-details
- .svg-icon.daily-icon(v-html="icons.dailyIcon")
- span.count {{challenge.tasksOrder.dailys.length}}
- div {{$t('daily')}}
- .col-3
- .count-details
- .svg-icon.todo-icon(v-html="icons.todoIcon")
- span.count {{challenge.tasksOrder.todos.length}}
- div {{$t('todo')}}
- .col-3
- .count-details
- .svg-icon.reward-icon(v-html="icons.rewardIcon")
- span.count {{challenge.tasksOrder.rewards.length}}
- div {{$t('reward')}}
+ .tags
+ span.tag.tag-blue(v-if='isLeader(challenge)') {{ $t('owned') }}
+ span.tag(v-for='category in challenge.categories', :class="{'tag-purple':isOfficial(category)}") {{ $t(category.name) }}
+ .challenge-description {{challenge.summary}}
+ .well-wrapper(v-if="fullLayout")
+ .well
+ div(:class="{'muted': challenge.tasksOrder.habits.length === 0}")
+ .number
+ .svg-icon.habit-icon(v-html="icons.habitIcon")
+ span.value {{challenge.tasksOrder.habits.length}}
+ .label {{$t('habit')}}
+ div(:class="{'muted': challenge.tasksOrder.dailys.length === 0}")
+ .number
+ .svg-icon.daily-icon(v-html="icons.dailyIcon")
+ span.value {{challenge.tasksOrder.dailys.length}}
+ .label {{$t('daily')}}
+ div(:class="{'muted': challenge.tasksOrder.todos.length === 0}")
+ .number
+ .svg-icon.todo-icon(v-html="icons.todoIcon")
+ span.value {{challenge.tasksOrder.todos.length}}
+ div {{$t('todo')}}
+ div(:class="{'muted': challenge.tasksOrder.rewards.length === 0}")
+ .number
+ .svg-icon.reward-icon(v-html="icons.rewardIcon")
+ span.value {{challenge.tasksOrder.rewards.length}}
+ .label {{$t('reward')}}
+
+
+
diff --git a/website/client/components/challenges/groupChallenges.vue b/website/client/components/challenges/groupChallenges.vue
index 79af7de8be..1415b921a9 100644
--- a/website/client/components/challenges/groupChallenges.vue
+++ b/website/client/components/challenges/groupChallenges.vue
@@ -8,21 +8,7 @@ div
p(v-once) {{ $t('challengeDetails') }}
button.btn.btn-secondary(@click='createChallenge()') {{ $t('createChallenge') }}
template(v-else)
- router-link.title(:to="{ name: 'challenge', params: { challengeId: challenge._id } }", v-for='challenge in challenges',:key='challenge._id')
- .col-12.challenge-item
- .row
- .col-9
- router-link.title(:to="{ name: 'challenge', params: { challengeId: challenge._id } }")
- strong(v-markdown='challenge.name')
- p(v-markdown='challenge.summary || challenge.name')
- div
- .svg-icon.member-icon(v-html="icons.memberIcon")
- .member-count {{challenge.memberCount}}
- .col-3
- div
- span.svg-icon.gem(v-html="icons.gemIcon")
- span.prize {{challenge.prize}}
- div.prize-title Prize
+ challenge-item(v-for='challenge in challenges',:challenge='challenge',:key='challenge._id',:fullLayout='false')
.col-12.text-center
button.btn.btn-secondary(@click='createChallenge()') {{ $t('createChallenge') }}
@@ -51,73 +37,19 @@ div
}
-
-
\ No newline at end of file
diff --git a/website/client/components/groups/group.vue b/website/client/components/groups/group.vue
index 4d128948e2..63b5a1d82f 100644
--- a/website/client/components/groups/group.vue
+++ b/website/client/components/groups/group.vue
@@ -9,8 +9,10 @@
.row
.col-12.col-md-6.title-details
h1 {{group.name}}
- strong.float-left(v-once) {{$t('groupLeader')}}:
- user-link.mx-1.float-left(:user="group.leader")
+ div
+ span.mr-1.ml-0
+ strong(v-once) {{$t('groupLeader')}}:
+ user-link.mx-1(:user="group.leader")
.col-12.col-md-6
.row.icon-row
.col-4.offset-4(v-bind:class="{ 'offset-8': isParty }")
diff --git a/website/common/locales/en/challenge.json b/website/common/locales/en/challenge.json
index a5ca557e4a..ee425c1efc 100644
--- a/website/common/locales/en/challenge.json
+++ b/website/common/locales/en/challenge.json
@@ -13,7 +13,8 @@
"challengeWinner": "Was the winner in the following challenges",
"challenges": "Challenges",
"challengesLink": "Challenges",
-
+ "challengePrize": "Challenge Prize",
+ "endDate": "Ends",
"noChallenges": "No challenges yet, visit",
"toCreate": "to create one.",