This commit is contained in:
Matteo Pagliazzi
2019-10-12 14:02:37 +02:00
parent d62653f0fd
commit 88243a32fa
14 changed files with 228 additions and 67 deletions

View File

@@ -5,7 +5,12 @@
img.not-found-img(src='~@/assets/images/404.png') img.not-found-img(src='~@/assets/images/404.png')
h1.not-found Sometimes even the bravest adventurer gets lost. h1.not-found Sometimes even the bravest adventurer gets lost.
h2.not-found Looks like this link is broken or the page may have moved, sorry! h2.not-found Looks like this link is broken or the page may have moved, sorry!
h2.not-found Head back to the <router-link to="/">Homepage</router-link> or <router-link :to="contactUsLink">Contact Us</router-link> about the issue. h2.not-found
| Head back to the
<router-link to="/">Homepage</router-link>
| or
<router-link :to="contactUsLink">Contact Us</router-link>
| about the issue.
</template> </template>
<script> <script>

View File

@@ -31,13 +31,23 @@
.svg-icon.align-self-center(v-html='icons[heroClass]') .svg-icon.align-self-center(v-html='icons[heroClass]')
.class-name(:class='`${heroClass}-color`') {{ $t(heroClass) }} .class-name(:class='`${heroClass}-color`') {{ $t(heroClass) }}
div(v-for='heroClass in classes') div(v-for='heroClass in classes')
.class-explanation.text-center(v-if='selectedClass === heroClass') {{ $t(`${heroClass}Text`) }} .class-explanation.text-center(
v-if='selectedClass === heroClass'
) {{ $t(`${heroClass}Text`) }}
.text-center(v-markdown='$t("chooseClassLearnMarkdown")') .text-center(v-markdown='$t("chooseClassLearnMarkdown")')
.modal-actions.text-center .modal-actions.text-center
button.btn.btn-primary.d-inline-block(v-if='!selectedClass', :disabled='true') {{ $t('select') }} button.btn.btn-primary.d-inline-block(
button.btn.btn-primary.d-inline-block(v-else, @click='clickSelectClass(selectedClass); close();') {{ $t('selectClass', {heroClass: $t(selectedClass)}) }} v-if='!selectedClass',
:disabled='true'
) {{ $t('select') }}
button.btn.btn-primary.d-inline-block(
v-else,
@click='clickSelectClass(selectedClass); close();'
) {{ $t('selectClass', {heroClass: $t(selectedClass)}) }}
.opt-out-wrapper .opt-out-wrapper
span#classOptOutBtn.danger(@click='clickDisableClasses(); close();') {{ $t('optOutOfClasses') }} span#classOptOutBtn.danger(
@click='clickDisableClasses(); close();'
) {{ $t('optOutOfClasses') }}
span.opt-out-description {{ $t('optOutOfClassesText') }} span.opt-out-description {{ $t('optOutOfClassesText') }}
</template> </template>

View File

@@ -10,7 +10,8 @@
button.btn.btn-primary(@click='close()') {{ $t('onwards') }} button.btn.btn-primary(@click='close()') {{ $t('onwards') }}
br br
// @TODO: Keep this? .checkbox // @TODO: Keep this? .checkbox
input(type='checkbox', v-model='user.preferences.suppressModals.levelUp', @change='changeLevelupSuppress()') input(type='checkbox', v-model=
'user.preferences.suppressModals.levelUp', @change='changeLevelupSuppress()')
label(style='display:inline-block') {{ $t('dontShowAgain') }} label(style='display:inline-block') {{ $t('dontShowAgain') }}
.container-fluid.share-buttons .container-fluid.share-buttons

View File

@@ -2,17 +2,27 @@
b-modal#login-incentives(:title="data.message", size='md', :hide-footer="true") b-modal#login-incentives(:title="data.message", size='md', :hide-footer="true")
.modal-body .modal-body
.row .row
h3.col-12.text-center(v-if='data.rewardText') {{ $t('unlockedReward', {reward: data.rewardText}) }} h3.col-12.text-center(
v-if='data.rewardText'
) {{ $t('unlockedReward', {reward: data.rewardText}) }}
.row.reward-row .row.reward-row
.col-12 .col-12
avatar.avatar(:member='user', :avatarOnly='true', :withBackground='true') avatar.avatar(:member='user', :avatarOnly='true', :withBackground='true')
.text-center.col-12(v-if='nextReward') .text-center.col-12(v-if='nextReward')
.reward-wrap(v-if="!data.rewardText") .reward-wrap(v-if="!data.rewardText")
div(v-if="nextReward.rewardKey.length === 1", :class="nextReward.rewardKey[0]") div(v-if="nextReward.rewardKey.length === 1", :class="nextReward.rewardKey[0]")
.reward(v-for="reward in nextReward.rewardKey", v-if="nextReward.rewardKey.length > 1", :class='reward') .reward(
v-for="reward in nextReward.rewardKey",
v-if="nextReward.rewardKey.length > 1",
:class='reward'
)
.reward-wrap(v-if="data.rewardText") .reward-wrap(v-if="data.rewardText")
div(v-if="data.rewardKey.length === 1", :class="data.rewardKey[0]") div(v-if="data.rewardKey.length === 1", :class="data.rewardKey[0]")
.reward(v-for="reward in data.rewardKey", v-if="data.rewardKey.length > 1", :class='reward') .reward(
v-for="reward in data.rewardKey",
v-if="data.rewardKey.length > 1",
:class='reward'
)
.col-12.text-center(v-if="data && data.nextRewardAt") .col-12.text-center(v-if="data && data.nextRewardAt")
h4 {{ $t('countLeft', {count: data.nextRewardAt - user.loginIncentives}) }} h4 {{ $t('countLeft', {count: data.nextRewardAt - user.loginIncentives}) }}
.row .row

View File

@@ -4,7 +4,10 @@
@hide='hide') @hide='hide')
.modal-body.text-center .modal-body.text-center
.quest(:class='`quest_${user.party.quest.completed}`') .quest(:class='`quest_${user.party.quest.completed}`')
p(v-if='questData.completion && typeof questData.completion === "function"', v-html='questData.completion()') p(
v-if='questData.completion && typeof questData.completion === "function"',
v-html='questData.completion()'
)
.quest-rewards.text-center .quest-rewards.text-center
h3(v-once) {{ $t('paymentYouReceived') }} h3(v-once) {{ $t('paymentYouReceived') }}
questDialogDrops(:item="questData") questDialogDrops(:item="questData")

View File

@@ -36,7 +36,9 @@
li li
router-link(to='/hall/contributors') {{ $t('hall') }} router-link(to='/hall/contributors') {{ $t('hall') }}
li li
router-link(to='/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac') {{ $t('reportBug') }} router-link(
to='/groups/guild/a29da26b-37de-4a71-b0c6-48e72a900dac'
) {{ $t('reportBug') }}
li li
a(href='https://trello.com/c/odmhIqyW/440-read-first-table-of-contents', target='_blank') {{ $t('requestFeature') }} a(href='https://trello.com/c/odmhIqyW/440-read-first-table-of-contents', target='_blank') {{ $t('requestFeature') }}
li(v-html='$t("communityExtensions")') li(v-html='$t("communityExtensions")')
@@ -97,7 +99,10 @@
a.btn.btn-secondary(@click="addLevelsAndGold()") +Exp +GP +MP a.btn.btn-secondary(@click="addLevelsAndGold()") +Exp +GP +MP
a.btn.btn-secondary(@click="addExp()") +Exp a.btn.btn-secondary(@click="addExp()") +Exp
a.btn.btn-secondary(@click="addOneLevel()") +1 Level a.btn.btn-secondary(@click="addOneLevel()") +1 Level
a.btn.btn-secondary(@click="addQuestProgress()", tooltip="+1000 to boss quests. 300 items to collection quests") Quest Progress Up a.btn.btn-secondary(
@click="addQuestProgress()",
tooltip="+1000 to boss quests. 300 items to collection quests"
) Quest Progress Up
a.btn.btn-secondary(@click="makeAdmin()") Make Admin a.btn.btn-secondary(@click="makeAdmin()") Make Admin
a.btn.btn-secondary(@click="openModifyInventoryModal()") Modify Inventory a.btn.btn-secondary(@click="openModifyInventoryModal()") Modify Inventory
.col-12.col-md-2.text-center .col-12.col-md-2.text-center
@@ -316,7 +321,7 @@ export default {
}); });
}, },
async addMissedDay (numberOfDays) { async addMissedDay (numberOfDays) {
if (!confirm(`Are you sure you want to reset the day by ${numberOfDays} day(s)?`)) return; if (!window.confirm(`Are you sure you want to reset the day by ${numberOfDays} day(s)?`)) return;
const date = moment(this.user.lastCron).subtract(numberOfDays, 'days').toDate(); const date = moment(this.user.lastCron).subtract(numberOfDays, 'days').toDate();

View File

@@ -18,11 +18,14 @@
span(:class="['chair_' + member.preferences.chair, specialMountClass]") span(:class="['chair_' + member.preferences.chair, specialMountClass]")
span(:class="[getGearClass('back'), specialMountClass]") span(:class="[getGearClass('back'), specialMountClass]")
span(:class="[skinClass, specialMountClass]") span(:class="[skinClass, specialMountClass]")
span(:class="[member.preferences.size + '_shirt_' + member.preferences.shirt, specialMountClass]") span(
:class="[member.preferences.size + '_shirt_' + member.preferences.shirt, specialMountClass]"
)
span(:class="['head_0', specialMountClass]") span(:class="['head_0', specialMountClass]")
span(:class="[member.preferences.size + '_' + getGearClass('armor'), specialMountClass]") span(:class="[member.preferences.size + '_' + getGearClass('armor'), specialMountClass]")
span(:class="[getGearClass('back_collar'), specialMountClass]") span(:class="[getGearClass('back_collar'), specialMountClass]")
template(v-for="type in ['bangs', 'base', 'mustache', 'beard']") template(v-for="type in ['bangs', 'base', 'mustache', 'beard']")
// eslint-disable-next-line max-len
span(:class="['hair_' + type + '_' + member.preferences.hair[type] + '_' + member.preferences.hair.color, specialMountClass]") span(:class="['hair_' + type + '_' + member.preferences.hair[type] + '_' + member.preferences.hair.color, specialMountClass]")
span(:class="[getGearClass('body'), specialMountClass]") span(:class="[getGearClass('body'), specialMountClass]")
span(:class="[getGearClass('eyewear'), specialMountClass]") span(:class="[getGearClass('eyewear'), specialMountClass]")
@@ -212,6 +215,8 @@ export default {
return overrideIsTwoHanded; return overrideIsTwoHanded;
} }
return false;
}, },
castEnd (e) { castEnd (e) {
if (!this.$store.state.spellOptions.castingSpell) return; if (!this.$store.state.spellOptions.castingSpell) return;

View File

@@ -1,5 +1,13 @@
<!-- eslint-disable -->
<template lang="pug"> <template lang="pug">
b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true', :hide-footer='true', :modal-class="{'page-2':modalPage > 1 && !editing}") <!-- eslint-disable -->
b-modal#avatar-modal(
title="",
:size='editing ? "lg" : "md"',
:hide-header='true',
:hide-footer='true',
:modal-class="{'page-2':modalPage > 1 && !editing}",
)
.section.row.welcome-section(v-if='modalPage === 1 && !editing') .section.row.welcome-section(v-if='modalPage === 1 && !editing')
.col-6.offset-3.text-center .col-6.offset-3.text-center
h3(v-once) {{$t('welcomeTo')}} h3(v-once) {{$t('welcomeTo')}}
@@ -16,27 +24,43 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
button.btn.btn-secondary(v-once) {{$t('randomize')}} button.btn.btn-secondary(v-once) {{$t('randomize')}}
#options-nav.container.section.text-center.customize-menu #options-nav.container.section.text-center.customize-menu
.row .row
.menu-container(@click='changeTopPage("body", "size")', :class='{"col-3": !editing, "col-2 offset-1": editing, active: activeTopPage === "body"}') .menu-container(
@click='changeTopPage("body", "size")',
:class='{"col-3": !editing, "col-2 offset-1": editing, active: activeTopPage === "body"}'
)
.menu-item .menu-item
.svg-icon(v-html='icons.bodyIcon') .svg-icon(v-html='icons.bodyIcon')
strong(v-once) {{$t('bodyBody')}} strong(v-once) {{$t('bodyBody')}}
.indicator .indicator
.menu-container(@click='changeTopPage("skin", "color")', :class='{"col-3": !editing, "col-2": editing, active: activeTopPage === "skin"}') .menu-container(
@click='changeTopPage("skin", "color")',
:class='{"col-3": !editing, "col-2": editing, active: activeTopPage === "skin"}'
)
.menu-item .menu-item
.svg-icon(v-html='icons.skinIcon') .svg-icon(v-html='icons.skinIcon')
strong(v-once) {{$t('skin')}} strong(v-once) {{$t('skin')}}
.indicator .indicator
.menu-container(@click='changeTopPage("hair", "color")', :class='{"col-3": !editing, "col-2": editing, active: activeTopPage === "hair"}') .menu-container(
@click='changeTopPage("hair", "color")',
:class='{"col-3": !editing, "col-2": editing, active: activeTopPage === "hair"}'
)
.menu-item .menu-item
.svg-icon(v-html='icons.hairIcon') .svg-icon(v-html='icons.hairIcon')
strong(v-once) {{$t('hair')}} strong(v-once) {{$t('hair')}}
.indicator .indicator
.menu-container(@click='changeTopPage("extra", "glasses")', :class='{"col-3": !editing, "col-2": editing, active: activeTopPage === "extra"}') .menu-container(
@click='changeTopPage("extra", "glasses")',
:class='{"col-3": !editing, "col-2": editing, active: activeTopPage === "extra"}'
)
.menu-item .menu-item
.svg-icon(v-html='icons.accessoriesIcon') .svg-icon(v-html='icons.accessoriesIcon')
strong(v-once) {{$t('extra')}} strong(v-once) {{$t('extra')}}
.indicator .indicator
.menu-container.col-2(@click='changeTopPage("backgrounds", "2019")', v-if='editing', :class='{active: activeTopPage === "backgrounds"}') .menu-container.col-2(
@click='changeTopPage("backgrounds", "2019")',
v-if='editing',
:class='{active: activeTopPage === "backgrounds"}'
)
.menu-item .menu-item
.svg-icon(v-html='icons.backgroundsIcon') .svg-icon(v-html='icons.backgroundsIcon')
strong(v-once) {{$t('backgrounds')}} strong(v-once) {{$t('backgrounds')}}
@@ -64,11 +88,16 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
#backgrounds.section.container.customize-section(v-if='activeTopPage === "backgrounds"') #backgrounds.section.container.customize-section(v-if='activeTopPage === "backgrounds"')
.row.title-row .row.title-row
toggle-switch.backgroundFilterToggle(:label="'Hide locked backgrounds'", v-model='filterBackgrounds') toggle-switch.backgroundFilterToggle(
:label="'Hide locked backgrounds'",
v-model='filterBackgrounds',
)
.row.text-center.title-row(v-if='!filterBackgrounds') .row.text-center.title-row(v-if='!filterBackgrounds')
strong {{backgroundShopSets[0].text}} strong {{backgroundShopSets[0].text}}
.row.title-row(v-if='!filterBackgrounds') .row.title-row(v-if='!filterBackgrounds')
.col-12(v-if='showPlainBackgroundBlurb(backgroundShopSets[0].identifier, backgroundShopSets[0].items)') {{ $t('incentiveBackgroundsUnlockedWithCheckins') }} .col-12(
v-if='showPlainBackgroundBlurb(backgroundShopSets[0].identifier, backgroundShopSets[0].items)'
) {{ $t('incentiveBackgroundsUnlockedWithCheckins') }}
.col-2(v-for='bg in backgroundShopSets[0].items', .col-2(v-for='bg in backgroundShopSets[0].items',
@click='unlock("background." + bg.key)', @click='unlock("background." + bg.key)',
:popover-title='bg.text', :popover-title='bg.text',
@@ -76,16 +105,22 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
popover-trigger='mouseenter') popover-trigger='mouseenter')
.incentive-background(:class='[`background_${bg.key}`]') .incentive-background(:class='[`background_${bg.key}`]')
.small-rectangle .small-rectangle
sub-menu.text-center(:items="bgSubMenuItems", :activeSubPage="activeSubPage", @changeSubPage="changeSubPage($event)") sub-menu.text-center(
:items="bgSubMenuItems",
:activeSubPage="activeSubPage",
@changeSubPage="changeSubPage($event)"
)
.row.customize-menu(v-if='!filterBackgrounds' v-for='(sets, key) in backgroundShopSetsByYear') .row.customize-menu(v-if='!filterBackgrounds' v-for='(sets, key) in backgroundShopSetsByYear')
.row.background-set(v-for='set in sets', v-if='activeSubPage === key') .row.background-set(v-for='set in sets', v-if='activeSubPage === key')
.col-8.offset-2.text-center.set-title .col-8.offset-2.text-center.set-title
strong {{set.text}} strong {{set.text}}
.col-4.text-center.customize-option.background-button(v-for='bg in set.items', .col-4.text-center.customize-option.background-button(
v-for='bg in set.items',
@click='!user.purchased.background[bg.key] ? backgroundSelected(bg) : unlock("background." + bg.key)', @click='!user.purchased.background[bg.key] ? backgroundSelected(bg) : unlock("background." + bg.key)',
:popover-title='bg.text', :popover-title='bg.text',
:popover='bg.notes', :popover='bg.notes',
popover-trigger='mouseenter') popover-trigger='mouseenter'
)
.background(:class='[`background_${bg.key}`, backgroundLockedStatus(bg.key)]') .background(:class='[`background_${bg.key}`, backgroundLockedStatus(bg.key)]')
i.glyphicon.glyphicon-lock(v-if='!user.purchased.background[bg.key]') i.glyphicon.glyphicon-lock(v-if='!user.purchased.background[bg.key]')
.purchase-background.single(v-if='!user.purchased.background[bg.key]') .purchase-background.single(v-if='!user.purchased.background[bg.key]')
@@ -97,7 +132,10 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
v-if='!user.purchased.background[bg.key]' v-if='!user.purchased.background[bg.key]'
) )
span.svg-icon.inline.icon-12.color(v-html="icons.pin") span.svg-icon.inline.icon-12.color(v-html="icons.pin")
.purchase-background.set(v-if='!ownsSet("background", set.items) && set.identifier !== "incentiveBackgrounds"' @click='unlock(setKeys("background", set.items))') .purchase-background.set(
v-if='!ownsSet("background", set.items) && set.identifier !== "incentiveBackgrounds"',
@click='unlock(setKeys("background", set.items))'
)
span.label {{ $t('purchaseAll') }} span.label {{ $t('purchaseAll') }}
.svg-icon.gem(v-html='icons.gem') .svg-icon.gem(v-html='icons.gem')
span.price 15 span.price 15
@@ -122,31 +160,58 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
label.custom-control-label(v-once, for="work") {{ $t('work') }} label.custom-control-label(v-once, for="work") {{ $t('work') }}
.task-option .task-option
.custom-control.custom-checkbox .custom-control.custom-checkbox
input.custom-control-input#excercise(type="checkbox", value='exercise', v-model='taskCategories') input.custom-control-input#excercise(
type="checkbox",
value='exercise',
v-model='taskCategories'
)
label.custom-control-label(v-once, for="excercise") {{ $t('exercise') }} label.custom-control-label(v-once, for="excercise") {{ $t('exercise') }}
.task-option .task-option
.custom-control.custom-checkbox .custom-control.custom-checkbox
input.custom-control-input#health_wellness(type="checkbox", value='health_wellness', v-model='taskCategories') input.custom-control-input#health_wellness(
type="checkbox",
value='health_wellness',
v-model='taskCategories'
)
label.custom-control-label(v-once, for="health_wellness") {{ $t('health_wellness') }} label.custom-control-label(v-once, for="health_wellness") {{ $t('health_wellness') }}
.task-option .task-option
.custom-control.custom-checkbox .custom-control.custom-checkbox
input.custom-control-input#school(type="checkbox", value='school', v-model='taskCategories') input.custom-control-input#school(
type="checkbox",
value='school',
v-model='taskCategories'
)
label.custom-control-label(v-once, for="school") {{ $t('school') }} label.custom-control-label(v-once, for="school") {{ $t('school') }}
.col-6 .col-6
.task-option .task-option
.custom-control.custom-checkbox .custom-control.custom-checkbox
input.custom-control-input#chores(type="checkbox", value='chores', v-model='taskCategories') input.custom-control-input#chores(
type="checkbox",
value='chores',
v-model='taskCategories'
)
label.custom-control-label(v-once, for="chores") {{ $t('chores') }} label.custom-control-label(v-once, for="chores") {{ $t('chores') }}
.task-option .task-option
.custom-control.custom-checkbox .custom-control.custom-checkbox
input.custom-control-input#creativity(type="checkbox", value='creativity', v-model='taskCategories') input.custom-control-input#creativity(
type="checkbox",
value='creativity',
v-model='taskCategories'
)
label.custom-control-label(v-once, for="creativity") {{ $t('creativity') }} label.custom-control-label(v-once, for="creativity") {{ $t('creativity') }}
.task-option .task-option
.custom-control.custom-checkbox .custom-control.custom-checkbox
input.custom-control-input#self_care(type="checkbox", value='self_care', v-model='taskCategories') input.custom-control-input#self_care(
type="checkbox",
value='self_care',
v-model='taskCategories'
)
label.custom-control-label(v-once, for="self_care") {{ $t('self_care') }} label.custom-control-label(v-once, for="self_care") {{ $t('self_care') }}
.section.d-flex.justify-content-center.justin-outer-section(:class='{top: modalPage > 1}', v-if='!editing') .section.d-flex.justify-content-center.justin-outer-section(
:class='{top: modalPage > 1}',
v-if='!editing'
)
.justin-section.d-flex.align-items-center .justin-section.d-flex.align-items-center
.featured-label .featured-label
span.rectangle span.rectangle
@@ -182,7 +247,11 @@ b-modal#avatar-modal(title="", :size='editing ? "lg" : "md"', :hide-header='true
div.next-outer(v-if='modalPage < 3', @click='next()') div.next-outer(v-if='modalPage < 3', @click='next()')
.next(v-once) {{$t('next')}} .next(v-once) {{$t('next')}}
.next-arrow.svg-icon(v-html='icons.arrowRight') .next-arrow.svg-icon(v-html='icons.arrowRight')
div.next-outer(v-if='modalPage === 3 && !loading', @click='done()', :class="{disabled: taskCategories.length === 0}") div.next-outer(
v-if='modalPage === 3 && !loading',
@click='done()',
:class="{disabled: taskCategories.length === 0}"
)
.next(v-once) {{$t('finish')}} .next(v-once) {{$t('finish')}}
.next-arrow.svg-icon(v-html='icons.arrowRight') .next-arrow.svg-icon(v-html='icons.arrowRight')
</template> </template>

View File

@@ -2,12 +2,24 @@
div.attributes-group div.attributes-group
.popover-content-attr(v-for="attr in ATTRIBUTES", :key="attr") .popover-content-attr(v-for="attr in ATTRIBUTES", :key="attr")
.group-content .group-content
span.popover-content-attr-cell.key(:class="{'hasValue': hasSumValue(attr) }") {{ `${$t(attr)}: ` }} span.popover-content-attr-cell.key(
span.popover-content-attr-cell.label.value(:class="{'green': hasSumValue(attr) }") {{ `${stats.sum[attr]}` }} :class="{'hasValue': hasSumValue(attr) }"
span.popover-content-attr-cell.label.bold(:class="{'hasValue': hasGearValue(attr) }") {{ $t('gear') }}: ) {{ `${$t(attr)}: ` }}
span.popover-content-attr-cell.label(:class="{'hasValue': hasGearValue(attr) }") {{ stats.gear[attr] }} span.popover-content-attr-cell.label.value(
span.popover-content-attr-cell.label.bold(:class="{'hasValue': hasClassBonus(attr) }") {{ $t('classEquipBonus') }}: :class="{'green': hasSumValue(attr) }"
span.popover-content-attr-cell.label(:class="{'hasValue': hasClassBonus(attr) }") {{ `${stats.classBonus[attr]}` }} ) {{ `${stats.sum[attr]}` }}
span.popover-content-attr-cell.label.bold(
:class="{'hasValue': hasGearValue(attr) }"
) {{ $t('gear') }}:
span.popover-content-attr-cell.label(
:class="{'hasValue': hasGearValue(attr) }"
) {{ stats.gear[attr] }}
span.popover-content-attr-cell.label.bold(
:class="{'hasValue': hasClassBonus(attr) }"
) {{ $t('classEquipBonus') }}:
span.popover-content-attr-cell.label(
:class="{'hasValue': hasClassBonus(attr) }"
) {{ `${stats.classBonus[attr]}` }}
</template> </template>
<style lang="scss"> <style lang="scss">

View File

@@ -40,8 +40,8 @@
<style lang="scss"> <style lang="scss">
@import '~client/assets/scss/colors.scss'; @import '~@/assets/scss/colors.scss';
@import '~client/assets/scss/modal.scss'; @import '~@/assets/scss/modal.scss';
#equipgear-modal { #equipgear-modal {
@include centeredModal(); @include centeredModal();
@@ -117,16 +117,16 @@
</style> </style>
<script> <script>
import { mapState } from 'client/libs/store'; import { mapState } from '@/libs/store';
import svgClose from 'assets/svg/close.svg'; import svgClose from '@/assets/svg/close.svg';
import svgWarrior from 'assets/svg/warrior.svg'; import svgWarrior from '@/assets/svg/warrior.svg';
import svgWizard from 'assets/svg/wizard.svg'; import svgWizard from '@/assets/svg/wizard.svg';
import svgRogue from 'assets/svg/rogue.svg'; import svgRogue from '@/assets/svg/rogue.svg';
import svgHealer from 'assets/svg/healer.svg'; import svgHealer from '@/assets/svg/healer.svg';
import Avatar from 'client/components/avatar'; import Avatar from '@/components/avatar';
import attributesGrid from 'client/components/inventory/equipment/attributesGrid.vue'; import attributesGrid from '@/components/inventory/equipment/attributesGrid.vue';
export default { export default {
components: { components: {

View File

@@ -20,7 +20,9 @@
.is-buffed(v-if="isBuffed", v-b-tooltip.hover.bottom="$t('buffed')") .is-buffed(v-if="isBuffed", v-b-tooltip.hover.bottom="$t('buffed')")
.svg-icon(v-html="icons.buff") .svg-icon(v-html="icons.buff")
.small-text.character-level .small-text.character-level
span.mr-1(v-if="member.auth && member.auth.local && member.auth.local.username") @{{ member.auth.local.username }} span.mr-1(
v-if="member.auth && member.auth.local && member.auth.local.username"
) @{{ member.auth.local.username }}
span.mr-1(v-if="member.auth && member.auth.local && member.auth.local.username") span.mr-1(v-if="member.auth && member.auth.local && member.auth.local.username")
span {{ characterLevel }} span {{ characterLevel }}
stats-bar( stats-bar(

View File

@@ -18,7 +18,11 @@ div
.col-4.offset-2 .col-4.offset-2
span.dropdown-label {{ $t('sortBy') }} span.dropdown-label {{ $t('sortBy') }}
b-dropdown(:text="$t('sort')", right=true) b-dropdown(:text="$t('sort')", right=true)
b-dropdown-item(v-for='sortOption in sortOptions', @click='sort(sortOption.value)', :key='sortOption.value') {{sortOption.text}} b-dropdown-item(
v-for='sortOption in sortOptions',
@click='sort(sortOption.value)',
:key='sortOption.value'
) {{sortOption.text}}
.row(v-for='member in sortedMembers') .row(v-for='member in sortedMembers')
.col-10 .col-10
member-details(:member='member') member-details(:member='member')
@@ -147,13 +151,13 @@ export default {
sortBy(this.members, [member => { sortBy(this.members, [member => {
if (this.sortOption === 'tier') { if (this.sortOption === 'tier') {
if (!member.contributor) return; if (!member.contributor) return;
return member.contributor.level; return member.contributor.level; // eslint-disable-line consistent-return
} if (this.sortOption === 'name') { } if (this.sortOption === 'name') {
return member.profile.name; return member.profile.name; // eslint-disable-line consistent-return
} if (this.sortOption === 'lvl') { } if (this.sortOption === 'lvl') {
return member.stats.lvl; return member.stats.lvl; // eslint-disable-line consistent-return
} if (this.sortOption === 'class') { } if (this.sortOption === 'class') {
return member.stats.class; return member.stats.class; // eslint-disable-line consistent-return
} }
}]); }]);

View File

@@ -38,8 +38,13 @@
ul ul
li(v-for='(key, itemType) in user.items.gear.equipped', v-if='flatGear[key]') li(v-for='(key, itemType) in user.items.gear.equipped', v-if='flatGear[key]')
strong {{ flatGear[key].text() }} strong {{ flatGear[key].text() }}
strong(v-if='flatGear[key].str || flatGear[key].con || flatGear[key].per || flatGear[key].int') :&nbsp; strong(
span(v-for='stat in ["str","con","per","int"]', v-if='flatGear[key][stat]') {{flatGear[key][stat]}} {{ $t(stat) }}&nbsp; v-if='flatGear[key].str || flatGear[key].con || flatGear[key].per || flatGear[key].int'
) :&nbsp;
span(
v-for='stat in ["str","con","per","int"]',
v-if='flatGear[key][stat]'
) {{flatGear[key][stat]}} {{ $t(stat) }}&nbsp;
div(v-if='user.preferences.costume') div(v-if='user.preferences.costume')
h4(v-once) {{ $t('costume') }} h4(v-once) {{ $t('costume') }}
@@ -147,21 +152,51 @@
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('evenAllocationPop')") {{ $t('evenAllocation') }} span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('evenAllocationPop')") {{ $t('evenAllocation') }}
.radio .radio
label label
input(type='radio', name='allocationMode', value='classbased', input(
v-model='user.preferences.allocationMode', @change='set({"preferences.allocationMode": "classbased"})') type='radio',
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('classAllocationPop')") {{ $t('classAllocation') }} 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 .radio
label label
input(type='radio', name='allocationMode', value='taskbased', v-model='user.preferences.allocationMode', @change='set({"preferences.allocationMode": "taskbased"})') input(
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover="$t('taskAllocationPop')") {{ $t('taskAllocation') }} type='radio',
div(v-if='user.preferences.automaticAllocation && !(user.preferences.allocationMode === "taskbased") && (user.stats.points > 0)') name='allocationMode',
button.btn.btn-primary.btn-xs(@click='allocateNow({})', popover-trigger='mouseenter', popover-placement='right', :popover="$t('distributePointsPop')") 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 span.glyphicon.glyphicon-download
|&nbsp; |&nbsp;
| {{ $t('distributePoints') }} | {{ $t('distributePoints') }}
.row(v-for='(statInfo, stat) in allocateStatsList') .row(v-for='(statInfo, stat) in allocateStatsList')
.col-8 .col-8
span.hint(popover-trigger='mouseenter', popover-placement='right', :popover='$t(statInfo.popover)') span.hint(
popover-trigger='mouseenter',
popover-placement='right',
:popover='$t(statInfo.popover)'
)
| {{ $t(statInfo.title) + user.stats[stat] }} | {{ $t(statInfo.title) + user.stats[stat] }}
.col-4(v-if='user.stats.points', @click='allocate(stat)') .col-4(v-if='user.stats.points', @click='allocate(stat)')
button.btn.btn-primary(popover-trigger='mouseenter', popover-placement='right', button.btn.btn-primary(popover-trigger='mouseenter', popover-placement='right',

View File

@@ -10,7 +10,7 @@ if (process.env.NODE_ENV !== 'production') {
const cluster = require('cluster'); const cluster = require('cluster');
const nconf = require('nconf'); const nconf = require('nconf');
const setupNconf = require('./libs/setupNconf').default; const setupNconf = require('./libs/setupNconf');
// Initialize configuration BEFORE anything // Initialize configuration BEFORE anything
setupNconf(); setupNconf();