div
b-modal#profile(title="Profile", size='lg', :hide-footer="true")
.row
.col-6.offset-3
button.btn.btn-secondary(@click='sendMessage()') Message
.row
.col-6.offset-3.text-center.nav
.nav-item(@click='selectedPage = "profile"', :class="{active: selectedPage === 'profile'}") Profile
.nav-item(@click='selectedPage = "stats"', :class="{active: selectedPage === 'stats'}") Stats
.nav-item(@click='selectedPage = "achievements"', :class="{active: selectedPage === 'achievements'}") Achievements
.standard-page(v-show='selectedPage === "profile"', v-if='user.profile')
.row
.col-8
.header
h1 {{user.profile.name}}
h4
strong User Id:
| {{user._id}}
.col-4
button.btn.btn-secondary(v-if='user._id === userLoggedIn._id', @click='editing = !editing') Edit
.row(v-if='!editing')
.col-8
.about
h2 About
p {{user.profile.blurb}}
.photo
h2 Photo
img.img-rendering-auto(v-if='user.profile.imageUrl', :src='user.profile.imageUrl')
.col-4
.info
h2 info
div
strong Joined:
| {{user.auth.timestamps.created}}
div
strong Total Log Ins:
span {{ $t('totalCheckins', {count: user.loginIncentives}) }}
div
| {{getProgressDisplay()}}
.progress
.progress-bar(role='progressbar', :aria-valuenow='incentivesProgress', aria-valuemin='0', aria-valuemax='100', :style='{width: incentivesProgress + "%"}')
span.sr-only {{ incentivesProgress }}% Complete
// @TODO: Implement in V2 .social
.row(v-if='editing')
h1 Edit Profile
.col-12
.alert.alert-info.alert-sm(v-html='$t("communityGuidelinesWarning", managerEmail)')
// TODO use photo-upload instead: https://groups.google.com/forum/?fromgroups=#!topic/derbyjs/xMmADvxBOak
.form-group
label {{ $t('displayName') }}
input.form-control(type='text', :placeholder="$t('fullName')", v-model='editingProfile.name')
.form-group
label {{ $t('photoUrl') }}
input.form-control(type='url', v-model='editingProfile.imageUrl', :placeholder="$t('imageUrl')")
.form-group
label {{ $t('about') }}
textarea.form-control(rows=5, :placeholder="$t('displayBlurbPlaceholder')", v-model='editingProfile.blurb')
// include ../../shared/formatting-help
.form-group
label Facebook
input.form-control(type='text', placeholder="Paste your link here", v-model='editingProfile.facebook')
.form-group
label Instagram
input.form-control(type='text', placeholder="Paste your link here", v-model='editingProfile.instagram')
.form-group
label Twitter
input.form-control(type='text', placeholder="Paste your link here", v-model='editingProfile.twitter')
.col-3.offset-6.text.center
button.btn.btn-primary(@click='save()') {{ $t("save") }}
button.btn.btn-warning(@click='editing = false') {{ $t("cancel") }}
.standard-page.container(v-show='selectedPage === "achievements"', v-if='user.achievements')
.row(v-for='(category, key) in achievements')
h2.col-12 {{ $t(key+'Achievs') }}
.col-3.text-center(v-for='achievment in category.achievements')
div.achievement-container(:data-popover-html='achievment.title + achievment.text',
popover-placement='achievPopoverPlacement',
popover-append-to-body='achievAppendToBody')
div(popover-trigger='mouseenter',
:data-popover-html='achievment.title + achievment.text',
popover-placement='achievPopoverPlacement',
popover-append-to-body='achievAppendToBody')
.achievement(:class='achievment.icon + "2x"', v-if='achievment.earned')
.counter.badge.badge-info.stack-count(v-if='achievment.optionalCount') {{achievment.optionalCount}}
.achievement(class='achievement-unearned2x', v-if='!achievment.earned')
.row
.col-6(v-if='user.achievements.challenges')
h2 Challeges Won
div(v-for='chal in user.achievements.challenges')
span {{chal}}
.col-6(v-if='user.achievements.quests')
h2 Quests Completed
div(v-for='(value, key) in user.achievements.quests')
span {{ content.quests[k].text() }}
span {{ value }}
.standard-page(v-show='selectedPage === "stats"', v-if='user.preferences')
.row
.col-6
h2.text-center Equipment
// user.items.gear.equipped
.well
.col-4.item-wrapper
.box
h3 Eyewear
.col-4.item-wrapper
.box
h3 Head Gear
.col-4.item-wrapper
.box
h3 Head Access.
.col-4.item-wrapper
.box
h3 Back Access.
.col-4.item-wrapper
.box
h3 Armor
.col-4.item-wrapper
.box
h3 Body Access.
.col-4.item-wrapper
.box
h3 Main-Hand
.col-4.item-wrapper
.col-4.item-wrapper
.box
h3 Off-Hand
.col-6
h2.text-center Costume
// user.items.gear.costume
.well
.col-4.item-wrapper
.box
h3 Eyewear
.col-4.item-wrapper
.box
h3 Head Gear
.col-4.item-wrapper
.box
h3 Head Access.
.col-4.item-wrapper
.box
h3 Back Access.
.col-4.item-wrapper
.box
h3 Armor
.col-4.item-wrapper
.box
h3 Body Access.
.col-4.item-wrapper
.box
h3 Main-Hand
.col-4.item-wrapper
.box
h3 Background {{ user.preferences.background }}
.col-4.item-wrapper
.box
h3 Off-Hand
.row
.col-6
h2.text-center(v-once) {{ $t('pets') }}
ul
li(ng-if='user.items.currentPet')
| {{ $t('activePet') }}:
| {{ formatAnimal(user.items.currentPet, 'pet') }}
li
| {{ $t('petsFound') }}:
| {{ totalCount(user.items.pets) }}
li
| {{ $t('beastMasterProgress') }}:
| {{ beastMasterProgress(user.items.pets) }}
.col-6
h2.text-center(v-once) {{ $t('mounts') }}
ul
li(v-if='user.items.currentMount')
| {{ $t('activeMount') }}:
| {{ formatAnimal(user.items.currentMount, 'mount') }}
li
| {{ $t('mountsTamed') }}:
| {{ totalCount(user.items.mounts) }}
li
| {{ $t('mountMasterProgress') }}:
| {{ mountMasterProgress(user.items.mounts) }}
.row#attributes
hr.col-12
h2.col-12 Attributes
.row.col-6(v-for="(statInfo, stat) in stats")
.col-4.attribute-label
span.hint(:popover-title='$t(statInfo.title)', popover-placement='right',
:popover='$t(statInfo.popover)', popover-trigger='mouseenter')
div {{ $t(statInfo.title) }}
strong.number {{ statsComputed[stat] }}
.col-6
ul.bonus-stats
li
strong Level:
| {{statsComputed.levelBonus[stat]}}
li
strong Equipment:
| {{statsComputed.gearBonus[stat]}}
li
strong Class:
| {{statsComputed.classBonus[stat]}}
li
strong Allocated:
| {{user.stats[stat]}}
li
strong Buffs:
| {{user.stats.buffs[stat]}}
// @TODO: Implement
div
div
p(v-if='userLevel100Plus', v-once) {{ $t('noMoreAllocate') }}
p(v-if='user.stats.points || userLevel100Plus')
strong.inline
| {{user.stats.points}}
strong.hint(popover-trigger='mouseenter',
popover-placement='right', :popover="$t('levelPopover')") {{ $t('unallocated') }}
div
fieldset.auto-allocate
.checkbox
label
input(type='checkbox', v-model='user.preferences.automaticAllocation',
@change='set({"preferences.automaticAllocation": user.preferences.automaticAllocation, "preferences.allocationMode": "taskbased"})')
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('autoAllocationPop')") {{ $t('autoAllocation') }}
form(v-if='user.preferences.automaticAllocation', style='margin-left:1em')
.radio
label
input(type='radio', name='allocationMode', value='flat', v-model='user.preferences.allocationMode',
@change='set({"preferences.allocationMode": "flat"})')
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('evenAllocationPop')") {{ $t('evenAllocation') }}
.radio
label
input(type='radio', name='allocationMode', value='classbased',
v-model='user.preferences.allocationMode', @change='set({"preferences.allocationMode": "classbased"})')
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('classAllocationPop')") {{ $t('classAllocation') }}
.radio
label
input(type='radio', name='allocationMode', value='taskbased', v-model='user.preferences.allocationMode', @change='set({"preferences.allocationMode": "taskbased"})')
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('taskAllocationPop')") {{ $t('taskAllocation') }}
div(v-if='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)')
button.btn.btn-primary.btn-xs(@click='allocateNow({})', popover-trigger='mouseenter', popover-placement='right', :popover="$t('distributePointsPop')")
span.glyphicon.glyphicon-download
|
| {{ $t('distributePoints') }}
.row(v-for='(statInfo, stat) in allocateStatsList')
.col-8
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover='$t(statInfo.popover)')
| {{ $t(statInfo.title) + user.stats[stat] }}
.col-4(v-if='user.stats.points', @click='allocate(stat)')
button.btn.btn-primary(popover-trigger='mouseenter', popover-placement='right',
:popover='$t(statInfo.allocatepop)') +
// @TODO: Make separate componenet
b-modal#private-message(title="Message", size='sm', :hide-footer="true")
textarea.form-control(v-model='privateMessage')
button.btn.btn-primary(@click='sendPrivateMessage()') Send