mirror of
https://github.com/HabitRPG/habitica.git
synced 2025-12-17 06:37:23 +01:00
@@ -73,12 +73,10 @@ store.state.user.data = {
|
|||||||
|
|
||||||
Vue.prototype.$store = store;
|
Vue.prototype.$store = store;
|
||||||
|
|
||||||
|
|
||||||
const req = require.context('../../src', true, /.stories.js$/);
|
const req = require.context('../../src', true, /.stories.js$/);
|
||||||
|
|
||||||
function loadStories () {
|
function loadStories () {
|
||||||
req.keys().forEach(filename => req(filename));
|
req.keys().forEach(filename => req(filename));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
configure(loadStories, module);
|
configure(loadStories, module);
|
||||||
|
|||||||
@@ -6,12 +6,16 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-2">
|
<div class="col-12 col-md-2">
|
||||||
<h3>
|
<h3>
|
||||||
<a href="https://itunes.apple.com/us/app/habitica/id994882113?ls=1&mt=8"
|
<a
|
||||||
target="_blank">{{ $t('mobileIOS') }}</a>
|
href="https://itunes.apple.com/us/app/habitica/id994882113?ls=1&mt=8"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('mobileIOS') }}</a>
|
||||||
</h3>
|
</h3>
|
||||||
<h3>
|
<h3>
|
||||||
<a href="https://play.google.com/store/apps/details?id=com.habitrpg.android.habitica"
|
<a
|
||||||
target="_blank">{{ $t('mobileAndroid') }}</a>
|
href="https://play.google.com/store/apps/details?id=com.habitrpg.android.habitica"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('mobileAndroid') }}</a>
|
||||||
</h3>
|
</h3>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-2">
|
<div class="col-12 col-md-2">
|
||||||
@@ -23,12 +27,16 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://habitica.wordpress.com/"
|
<a
|
||||||
target="_blank">{{ $t('companyBlog') }}</a>
|
href="https://habitica.wordpress.com/"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('companyBlog') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="http://blog.habitrpg.com/"
|
<a
|
||||||
target="_blank">{{ $t('tumblr') }}</a>
|
href="http://blog.habitrpg.com/"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('tumblr') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link to="/static/faq">
|
<router-link to="/static/faq">
|
||||||
@@ -36,8 +44,10 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="http://habitica.fandom.com/wiki/Whats_New"
|
<a
|
||||||
target="_blank">{{ $t('oldNews') }}</a>
|
href="http://habitica.fandom.com/wiki/Whats_New"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('oldNews') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<!-- Commenting out merch page see https://github.com/HabitRPG/habitica/issues/12039
|
<!-- Commenting out merch page see https://github.com/HabitRPG/habitica/issues/12039
|
||||||
<li>
|
<li>
|
||||||
@@ -62,8 +72,10 @@
|
|||||||
<h3>{{ $t('footerCommunity') }}</h3>
|
<h3>{{ $t('footerCommunity') }}</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a target="_blank"
|
<a
|
||||||
href="/static/community-guidelines">{{ $t('communityGuidelines') }}</a>
|
target="_blank"
|
||||||
|
href="/static/community-guidelines"
|
||||||
|
>{{ $t('communityGuidelines') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<router-link to="/hall/contributors">
|
<router-link to="/hall/contributors">
|
||||||
@@ -76,17 +88,23 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://docs.google.com/forms/d/e/1FAIpQLScPhrwq_7P1C6PTrI3lbvTsvqGyTNnGzp1ugi1Ml0PFee_p5g/viewform?usp=sf_link"
|
<a
|
||||||
target="_blank">{{ $t('requestFeature') }}</a>
|
href="https://docs.google.com/forms/d/e/1FAIpQLScPhrwq_7P1C6PTrI3lbvTsvqGyTNnGzp1ugi1Ml0PFee_p5g/viewform?usp=sf_link"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('requestFeature') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li v-html="$t('communityExtensions')"></li>
|
<li v-html="$t('communityExtensions')"></li>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://www.facebook.com/Habitica"
|
<a
|
||||||
target="_blank">{{ $t('communityFacebook') }}</a>
|
href="https://www.facebook.com/Habitica"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('communityFacebook') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="https://www.instagram.com/habitica"
|
<a
|
||||||
target="_blank">{{ $t('communityInstagram') }}</a>
|
href="https://www.instagram.com/habitica"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('communityInstagram') }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
@@ -96,39 +114,57 @@
|
|||||||
<h3>{{ $t('footerDevs') }}</h3>
|
<h3>{{ $t('footerDevs') }}</h3>
|
||||||
<ul>
|
<ul>
|
||||||
<li>
|
<li>
|
||||||
<a href="/apidoc"
|
<a
|
||||||
target="_blank">{{ $t('APIv3') }}</a>
|
href="/apidoc"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('APIv3') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a :href="getDataDisplayToolUrl"
|
<a
|
||||||
target="_blank">{{ $t('dataDisplayTool') }}</a>
|
:href="getDataDisplayToolUrl"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('dataDisplayTool') }}</a>
|
||||||
</li>
|
</li>
|
||||||
<li>
|
<li>
|
||||||
<a href="http://habitica.fandom.com/wiki/Guidance_for_Blacksmiths"
|
<a
|
||||||
target="_blank">{{ $t('guidanceForBlacksmiths') }}</a>
|
href="http://habitica.fandom.com/wiki/Guidance_for_Blacksmiths"
|
||||||
|
target="_blank"
|
||||||
|
>{{ $t('guidanceForBlacksmiths') }}</a>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-6 social">
|
<div class="col-6 social">
|
||||||
<h3>{{ $t('footerSocial') }}</h3>
|
<h3>{{ $t('footerSocial') }}</h3>
|
||||||
<div class="icons">
|
<div class="icons">
|
||||||
<a class="social-circle"
|
<a
|
||||||
|
class="social-circle"
|
||||||
href="https://twitter.com/habitica"
|
href="https://twitter.com/habitica"
|
||||||
target="_blank">
|
target="_blank"
|
||||||
<div class="social-icon svg-icon"
|
>
|
||||||
v-html="icons.twitter"></div>
|
<div
|
||||||
|
class="social-icon svg-icon"
|
||||||
|
v-html="icons.twitter"
|
||||||
|
></div>
|
||||||
</a>
|
</a>
|
||||||
<a class="social-circle"
|
<a
|
||||||
|
class="social-circle"
|
||||||
href="https://www.instagram.com/habitica/"
|
href="https://www.instagram.com/habitica/"
|
||||||
target="_blank">
|
target="_blank"
|
||||||
<div class="social-icon svg-icon instagram"
|
>
|
||||||
v-html="icons.instagram"></div>
|
<div
|
||||||
|
class="social-icon svg-icon instagram"
|
||||||
|
v-html="icons.instagram"
|
||||||
|
></div>
|
||||||
</a>
|
</a>
|
||||||
<a class="social-circle"
|
<a
|
||||||
|
class="social-circle"
|
||||||
href="https://www.facebook.com/Habitica"
|
href="https://www.facebook.com/Habitica"
|
||||||
target="_blank">
|
target="_blank"
|
||||||
<div class="social-icon facebook svg-icon"
|
>
|
||||||
v-html="icons.facebook"></div>
|
<div
|
||||||
|
class="social-icon facebook svg-icon"
|
||||||
|
v-html="icons.facebook"
|
||||||
|
></div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
@@ -138,21 +174,31 @@
|
|||||||
{{ $t('donateText3') }}
|
{{ $t('donateText3') }}
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-4">
|
<div class="col-12 col-md-4">
|
||||||
<button v-if="user"
|
<button
|
||||||
|
v-if="user"
|
||||||
class="btn btn-contribute btn-front btn-flat"
|
class="btn btn-contribute btn-front btn-flat"
|
||||||
@click="donate()">
|
@click="donate()"
|
||||||
<div class="svg-icon heart"
|
>
|
||||||
v-html="icons.heart"></div>
|
<div
|
||||||
|
class="svg-icon heart"
|
||||||
|
v-html="icons.heart"
|
||||||
|
></div>
|
||||||
<div class="text">
|
<div class="text">
|
||||||
{{ $t('companyDonate') }}
|
{{ $t('companyDonate') }}
|
||||||
</div>
|
</div>
|
||||||
</button>
|
</button>
|
||||||
<div v-else
|
<div
|
||||||
class="btn btn-contribute btn-front btn-flat">
|
v-else
|
||||||
<a href="http://habitica.fandom.com/wiki/Contributing_to_Habitica"
|
class="btn btn-contribute btn-front btn-flat"
|
||||||
target="_blank">
|
>
|
||||||
<div class="svg-icon heart"
|
<a
|
||||||
v-html="icons.heart"></div>
|
href="http://habitica.fandom.com/wiki/Contributing_to_Habitica"
|
||||||
|
target="_blank"
|
||||||
|
>
|
||||||
|
<div
|
||||||
|
class="svg-icon heart"
|
||||||
|
v-html="icons.heart"
|
||||||
|
></div>
|
||||||
<div class="text">{{ $t('companyContribute') }}</div>
|
<div class="text">{{ $t('companyContribute') }}</div>
|
||||||
</a>
|
</a>
|
||||||
</div>
|
</div>
|
||||||
@@ -168,62 +214,106 @@
|
|||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-12 col-md-5 text-center text-md-left">
|
<div class="col-12 col-md-5 text-center text-md-left">
|
||||||
© 2021 Habitica. All rights reserved.
|
© 2021 Habitica. All rights reserved.
|
||||||
<div v-if="!IS_PRODUCTION && isUserLoaded"
|
<div
|
||||||
class="debug float-left">
|
v-if="!IS_PRODUCTION && isUserLoaded"
|
||||||
<button class="btn btn-primary"
|
class="debug float-left"
|
||||||
@click="debugMenuShown = !debugMenuShown">
|
>
|
||||||
|
<button
|
||||||
|
class="btn btn-primary"
|
||||||
|
@click="debugMenuShown = !debugMenuShown"
|
||||||
|
>
|
||||||
Toggle Debug Menu
|
Toggle Debug Menu
|
||||||
</button>
|
</button>
|
||||||
<div v-if="debugMenuShown"
|
<div
|
||||||
class="debug-group">
|
v-if="debugMenuShown"
|
||||||
<a class="btn btn-secondary"
|
class="debug-group"
|
||||||
@click="setHealthLow()">Health = 1</a>
|
>
|
||||||
<a class="btn btn-secondary"
|
<a
|
||||||
@click="addMissedDay(1)">+1 Missed Day</a>
|
class="btn btn-secondary"
|
||||||
<a class="btn btn-secondary"
|
@click="setHealthLow()"
|
||||||
@click="addMissedDay(2)">+2 Missed Days</a>
|
>Health = 1</a>
|
||||||
<a class="btn btn-secondary"
|
<a
|
||||||
@click="addMissedDay(8)">+8 Missed Days</a>
|
class="btn btn-secondary"
|
||||||
<a class="btn btn-secondary"
|
@click="addMissedDay(1)"
|
||||||
@click="addMissedDay(32)">+32 Missed Days</a>
|
>+1 Missed Day</a>
|
||||||
<a class="btn btn-secondary"
|
<a
|
||||||
@click="addTenGems()">+10 Gems</a>
|
class="btn btn-secondary"
|
||||||
<a class="btn btn-secondary"
|
@click="addMissedDay(2)"
|
||||||
@click="addHourglass()">+1 Mystic Hourglass</a>
|
>+2 Missed Days</a>
|
||||||
<a class="btn btn-secondary"
|
<a
|
||||||
@click="addGold()">+500GP</a>
|
class="btn btn-secondary"
|
||||||
<a class="btn btn-secondary"
|
@click="addMissedDay(8)"
|
||||||
@click="plusTenHealth()">+ 10HP</a>
|
>+8 Missed Days</a>
|
||||||
<a class="btn btn-secondary"
|
<a
|
||||||
@click="addMana()">+MP</a>
|
class="btn btn-secondary"
|
||||||
<a class="btn btn-secondary"
|
@click="addMissedDay(32)"
|
||||||
@click="addLevelsAndGold()">+Exp +GP +MP</a>
|
>+32 Missed Days</a>
|
||||||
<a class="btn btn-secondary"
|
<a
|
||||||
@click="addExp()">+Exp</a>
|
class="btn btn-secondary"
|
||||||
<a class="btn btn-secondary"
|
@click="addTenGems()"
|
||||||
@click="addOneLevel()">+1 Level</a>
|
>+10 Gems</a>
|
||||||
<a class="btn btn-secondary"
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="addHourglass()"
|
||||||
|
>+1 Mystic Hourglass</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="addGold()"
|
||||||
|
>+500GP</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="plusTenHealth()"
|
||||||
|
>+ 10HP</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="addMana()"
|
||||||
|
>+MP</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="addLevelsAndGold()"
|
||||||
|
>+Exp +GP +MP</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="addExp()"
|
||||||
|
>+Exp</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="addOneLevel()"
|
||||||
|
>+1 Level</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
tooltip="+1000 to boss quests. 300 items to collection quests"
|
tooltip="+1000 to boss quests. 300 items to collection quests"
|
||||||
@click="addQuestProgress()">Quest Progress Up</a>
|
@click="addQuestProgress()"
|
||||||
<a class="btn btn-secondary"
|
>Quest Progress Up</a>
|
||||||
@click="makeAdmin()">Make Admin</a>
|
<a
|
||||||
<a class="btn btn-secondary"
|
class="btn btn-secondary"
|
||||||
@click="openModifyInventoryModal()">Modify Inventory</a>
|
@click="makeAdmin()"
|
||||||
|
>Make Admin</a>
|
||||||
|
<a
|
||||||
|
class="btn btn-secondary"
|
||||||
|
@click="openModifyInventoryModal()"
|
||||||
|
>Modify Inventory</a>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-2 text-center">
|
<div class="col-12 col-md-2 text-center">
|
||||||
<div class="logo svg-icon"
|
<div
|
||||||
v-html="icons.gryphon"></div>
|
class="logo svg-icon"
|
||||||
|
v-html="icons.gryphon"
|
||||||
|
></div>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-12 col-md-5 text-center text-md-right my-1">
|
<div class="col-12 col-md-5 text-center text-md-right my-1">
|
||||||
<span class="ml-4">
|
<span class="ml-4">
|
||||||
<a target="_blank"
|
<a
|
||||||
href="/static/privacy">{{ $t('privacy') }}</a>
|
target="_blank"
|
||||||
|
href="/static/privacy"
|
||||||
|
>{{ $t('privacy') }}</a>
|
||||||
</span>
|
</span>
|
||||||
<span class="ml-4">
|
<span class="ml-4">
|
||||||
<a target="_blank"
|
<a
|
||||||
href="/static/terms">{{ $t('terms') }}</a>
|
target="_blank"
|
||||||
|
href="/static/terms"
|
||||||
|
>{{ $t('terms') }}</a>
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ import gem from '@/assets/svg/gem.svg';
|
|||||||
const freeShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price === 0);
|
const freeShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price === 0);
|
||||||
const specialShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price !== 0);
|
const specialShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price !== 0);
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
subMenu,
|
subMenu,
|
||||||
|
|||||||
@@ -332,7 +332,6 @@ export default {
|
|||||||
margin-right: 12px;
|
margin-right: 12px;
|
||||||
margin-bottom: 12px;
|
margin-bottom: 12px;
|
||||||
|
|
||||||
|
|
||||||
width: calc(100% - 24px);
|
width: calc(100% - 24px);
|
||||||
|
|
||||||
padding-left: 0;
|
padding-left: 0;
|
||||||
@@ -342,5 +341,4 @@ export default {
|
|||||||
flex: unset;
|
flex: unset;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|||||||
@@ -68,7 +68,6 @@ import gem from '@/assets/svg/gem.svg';
|
|||||||
const freeShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price === 0);
|
const freeShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price === 0);
|
||||||
const specialShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price !== 0);
|
const specialShirtKeys = Object.keys(appearance.shirt).filter(k => appearance.shirt[k].price !== 0);
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
subMenu,
|
subMenu,
|
||||||
|
|||||||
@@ -41,7 +41,6 @@ import subMenu from './sub-menu';
|
|||||||
import customizeOptions from './customize-options';
|
import customizeOptions from './customize-options';
|
||||||
import gem from '@/assets/svg/gem.svg';
|
import gem from '@/assets/svg/gem.svg';
|
||||||
|
|
||||||
|
|
||||||
const skinsBySet = groupBy(appearance.skin, 'set.key');
|
const skinsBySet = groupBy(appearance.skin, 'set.key');
|
||||||
|
|
||||||
const freeSkinKeys = skinsBySet[undefined].map(s => s.key);
|
const freeSkinKeys = skinsBySet[undefined].map(s => s.key);
|
||||||
|
|||||||
@@ -124,7 +124,6 @@ import challengeUtilities from '@/mixins/challengeUtilities';
|
|||||||
|
|
||||||
import positiveIcon from '@/assets/svg/positive.svg';
|
import positiveIcon from '@/assets/svg/positive.svg';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Sidebar,
|
Sidebar,
|
||||||
|
|||||||
@@ -149,7 +149,6 @@ import challengeUtilities from '@/mixins/challengeUtilities';
|
|||||||
import challengeIcon from '@/assets/svg/challenge.svg';
|
import challengeIcon from '@/assets/svg/challenge.svg';
|
||||||
import positiveIcon from '@/assets/svg/positive.svg';
|
import positiveIcon from '@/assets/svg/positive.svg';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
Sidebar,
|
Sidebar,
|
||||||
|
|||||||
@@ -826,7 +826,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.text-center {
|
.text-center {
|
||||||
.gem-lock, .gold-lock {
|
.gem-lock, .gold-lock {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
|
|||||||
@@ -7,7 +7,6 @@ import { userStyles } from '../../config/storybook/mock.data';
|
|||||||
import content from '../../../common/script/content/index';
|
import content from '../../../common/script/content/index';
|
||||||
import getters from '@/store/getters';
|
import getters from '@/store/getters';
|
||||||
|
|
||||||
|
|
||||||
storiesOf('Face Avatar', module)
|
storiesOf('Face Avatar', module)
|
||||||
.add('simple', () => ({
|
.add('simple', () => ({
|
||||||
components: { FaceAvatar },
|
components: { FaceAvatar },
|
||||||
|
|||||||
@@ -226,7 +226,6 @@ export const groupCollectionQuestPending = {
|
|||||||
id: '96ea599a-737b-47e2-ac17-8bd85b6ab62a',
|
id: '96ea599a-737b-47e2-ac17-8bd85b6ab62a',
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
export const collectionQuestLeaderParticipating = {
|
export const collectionQuestLeaderParticipating = {
|
||||||
leaderOnly: { challenges: false, getGems: false },
|
leaderOnly: { challenges: false, getGems: false },
|
||||||
quest: {
|
quest: {
|
||||||
|
|||||||
@@ -8,7 +8,10 @@
|
|||||||
<div class="dialog-close">
|
<div class="dialog-close">
|
||||||
<close-icon @click="close()" />
|
<close-icon @click="close()" />
|
||||||
</div>
|
</div>
|
||||||
<h2 class="text-center textCondensed" v-once>
|
<h2
|
||||||
|
v-once
|
||||||
|
class="text-center textCondensed"
|
||||||
|
>
|
||||||
{{ $t('invitations') }}
|
{{ $t('invitations') }}
|
||||||
</h2>
|
</h2>
|
||||||
<div
|
<div
|
||||||
@@ -24,17 +27,22 @@
|
|||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div class="usernames">
|
<div class="usernames">
|
||||||
<user-label :user="member" class="user-label" /> <br>
|
<user-label
|
||||||
|
:user="member"
|
||||||
|
class="user-label"
|
||||||
|
/> <br>
|
||||||
<span class="username">
|
<span class="username">
|
||||||
@{{ member.auth.local.username }}
|
@{{ member.auth.local.username }}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
</div>
|
||||||
<div :class="{
|
<div
|
||||||
|
:class="{
|
||||||
'status': true,
|
'status': true,
|
||||||
'accepted': member.accepted === true,
|
'accepted': member.accepted === true,
|
||||||
'declined': member.accepted === false,
|
'declined': member.accepted === false,
|
||||||
'pending': member.accepted === null
|
'pending': member.accepted === null
|
||||||
}">
|
}"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
v-if="member.accepted === true"
|
v-if="member.accepted === true"
|
||||||
class="accepted float-right"
|
class="accepted float-right"
|
||||||
@@ -243,6 +251,7 @@ export default {
|
|||||||
ClassBadge,
|
ClassBadge,
|
||||||
CloseIcon,
|
CloseIcon,
|
||||||
},
|
},
|
||||||
|
props: ['group'],
|
||||||
data () {
|
data () {
|
||||||
return {
|
return {
|
||||||
icons: Object.freeze({
|
icons: Object.freeze({
|
||||||
@@ -251,7 +260,6 @@ export default {
|
|||||||
}),
|
}),
|
||||||
};
|
};
|
||||||
},
|
},
|
||||||
props: ['group'],
|
|
||||||
computed: {
|
computed: {
|
||||||
...mapGetters({
|
...mapGetters({
|
||||||
partyMembers: 'party:members',
|
partyMembers: 'party:members',
|
||||||
|
|||||||
@@ -112,7 +112,6 @@ b-dropdown(:text="$t('sort')", right=true)
|
|||||||
import { mapState } from '@/libs/store';
|
import { mapState } from '@/libs/store';
|
||||||
import groupUtilities from '@/mixins/groupsUtilities';
|
import groupUtilities from '@/mixins/groupsUtilities';
|
||||||
|
|
||||||
|
|
||||||
import PublicGuildItem from './publicGuildItem';
|
import PublicGuildItem from './publicGuildItem';
|
||||||
import Sidebar from './groupSidebar';
|
import Sidebar from './groupSidebar';
|
||||||
|
|
||||||
|
|||||||
@@ -8,7 +8,10 @@
|
|||||||
<div class="dialog-close">
|
<div class="dialog-close">
|
||||||
<close-icon @click="close()" />
|
<close-icon @click="close()" />
|
||||||
</div>
|
</div>
|
||||||
<h2 class="text-center textCondensed" v-once>
|
<h2
|
||||||
|
v-once
|
||||||
|
class="text-center textCondensed"
|
||||||
|
>
|
||||||
{{ $t('participantsTitle') }}
|
{{ $t('participantsTitle') }}
|
||||||
</h2>
|
</h2>
|
||||||
<div
|
<div
|
||||||
@@ -111,7 +114,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#participant-list_modal_body {
|
#participant-list_modal_body {
|
||||||
padding: 0;
|
padding: 0;
|
||||||
max-height: 450px;
|
max-height: 450px;
|
||||||
|
|||||||
@@ -13,7 +13,10 @@
|
|||||||
<h2 class="text-center textCondensed">
|
<h2 class="text-center textCondensed">
|
||||||
{{ selectMode ? $t('selectQuest') : $t('questDetailsTitle') }}
|
{{ selectMode ? $t('selectQuest') : $t('questDetailsTitle') }}
|
||||||
</h2>
|
</h2>
|
||||||
<div class="quest-panel" v-if="selectMode">
|
<div
|
||||||
|
v-if="selectMode"
|
||||||
|
class="quest-panel"
|
||||||
|
>
|
||||||
<div class="quest-panel-header">
|
<div class="quest-panel-header">
|
||||||
<h3>
|
<h3>
|
||||||
{{ $t('yourQuests') }}
|
{{ $t('yourQuests') }}
|
||||||
@@ -77,13 +80,19 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-else>
|
<div v-else>
|
||||||
<div v-if="questData" class="quest-combined-content">
|
<div
|
||||||
|
v-if="questData"
|
||||||
|
class="quest-combined-content"
|
||||||
|
>
|
||||||
<questDialogContent
|
<questDialogContent
|
||||||
:item="questData"
|
:item="questData"
|
||||||
:group="group"
|
:group="group"
|
||||||
class="quest-detail"
|
class="quest-detail"
|
||||||
/>
|
/>
|
||||||
<quest-rewards :quest="questData" class="mt-4" />
|
<quest-rewards
|
||||||
|
:quest="questData"
|
||||||
|
class="mt-4"
|
||||||
|
/>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-if="!groupHasQuest"
|
v-if="!groupHasQuest"
|
||||||
|
|||||||
@@ -6,9 +6,9 @@
|
|||||||
>
|
>
|
||||||
<div class="col-12 text-center">
|
<div class="col-12 text-center">
|
||||||
<div
|
<div
|
||||||
|
v-once
|
||||||
class="svg-icon quest-icon color"
|
class="svg-icon quest-icon color"
|
||||||
v-html="icons.questIcon"
|
v-html="icons.questIcon"
|
||||||
v-once
|
|
||||||
></div>
|
></div>
|
||||||
<h4 v-once>
|
<h4 v-once>
|
||||||
{{ $t('yourPartyIsNotOnQuest') }}
|
{{ $t('yourPartyIsNotOnQuest') }}
|
||||||
@@ -86,8 +86,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="hasPendingQuestItems"
|
<div
|
||||||
class="item-progress-pending mb-2">
|
v-if="hasPendingQuestItems"
|
||||||
|
class="item-progress-pending mb-2"
|
||||||
|
>
|
||||||
<div class="pending-amount pt-2 pb-2">
|
<div class="pending-amount pt-2 pb-2">
|
||||||
{{ $t('questItemsPending', { amount: user.party.quest.progress.collectedItems }) }}
|
{{ $t('questItemsPending', { amount: user.party.quest.progress.collectedItems }) }}
|
||||||
</div>
|
</div>
|
||||||
@@ -126,9 +128,9 @@
|
|||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<span class="float-left hp-value">
|
<span class="float-left hp-value">
|
||||||
<div
|
<div
|
||||||
|
v-once
|
||||||
class="svg-icon health-icon"
|
class="svg-icon health-icon"
|
||||||
v-html="icons.healthNoPaddingIcon"
|
v-html="icons.healthNoPaddingIcon"
|
||||||
v-once
|
|
||||||
></div>
|
></div>
|
||||||
{{
|
{{
|
||||||
(Math.ceil(parseFloat(group.quest.progress.hp) * 100) / 100)
|
(Math.ceil(parseFloat(group.quest.progress.hp) * 100) / 100)
|
||||||
@@ -151,9 +153,9 @@
|
|||||||
progress on the group doc? Each user could have different progress.-->
|
progress on the group doc? Each user could have different progress.-->
|
||||||
<span class="float-right pending-value">
|
<span class="float-right pending-value">
|
||||||
<div
|
<div
|
||||||
|
v-once
|
||||||
class="svg-icon sword-icon"
|
class="svg-icon sword-icon"
|
||||||
v-html="icons.swordIcon"
|
v-html="icons.swordIcon"
|
||||||
v-once
|
|
||||||
></div>
|
></div>
|
||||||
{{
|
{{
|
||||||
(user.party.quest.progress.up || 0)
|
(user.party.quest.progress.up || 0)
|
||||||
@@ -187,9 +189,9 @@
|
|||||||
<div class="col-6">
|
<div class="col-6">
|
||||||
<span class="float-left rage-value">
|
<span class="float-left rage-value">
|
||||||
<div
|
<div
|
||||||
|
v-once
|
||||||
class="svg-icon rage-icon icon-16"
|
class="svg-icon rage-icon icon-16"
|
||||||
v-html="icons.rageIcon"
|
v-html="icons.rageIcon"
|
||||||
v-once
|
|
||||||
>
|
>
|
||||||
</div>
|
</div>
|
||||||
<span
|
<span
|
||||||
@@ -229,8 +231,10 @@
|
|||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="onPendingQuest || onActiveQuest"
|
<div
|
||||||
class="quest-buttons">
|
v-if="onPendingQuest || onActiveQuest"
|
||||||
|
class="quest-buttons"
|
||||||
|
>
|
||||||
<button
|
<button
|
||||||
class="btn btn-secondary w-100"
|
class="btn btn-secondary w-100"
|
||||||
@click="openQuestDetails()"
|
@click="openQuestDetails()"
|
||||||
@@ -238,8 +242,10 @@
|
|||||||
{{ $t('viewDetails') }}
|
{{ $t('viewDetails') }}
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="userIsQuestLeader && !onActiveQuest"
|
<div
|
||||||
class="quest-buttons">
|
v-if="userIsQuestLeader && !onActiveQuest"
|
||||||
|
class="quest-buttons"
|
||||||
|
>
|
||||||
<button
|
<button
|
||||||
class="btn btn-success w-100"
|
class="btn btn-success w-100"
|
||||||
@click="startQuest()"
|
@click="startQuest()"
|
||||||
|
|||||||
@@ -25,9 +25,9 @@
|
|||||||
>
|
>
|
||||||
<template v-slot:button-content>
|
<template v-slot:button-content>
|
||||||
<span
|
<span
|
||||||
|
v-once
|
||||||
class="svg-icon inline menuIcon"
|
class="svg-icon inline menuIcon"
|
||||||
v-html="icons.menuIcon"
|
v-html="icons.menuIcon"
|
||||||
v-once
|
|
||||||
>
|
>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
@@ -38,9 +38,9 @@
|
|||||||
>
|
>
|
||||||
<span class="with-icon">
|
<span class="with-icon">
|
||||||
<span
|
<span
|
||||||
|
v-once
|
||||||
class="svg-icon icon-16 color"
|
class="svg-icon icon-16 color"
|
||||||
v-html="icons.sparklesIcon"
|
v-html="icons.sparklesIcon"
|
||||||
v-once
|
|
||||||
></span>
|
></span>
|
||||||
<span v-once>
|
<span v-once>
|
||||||
{{ $t('upgradeToGroup') }}
|
{{ $t('upgradeToGroup') }}
|
||||||
@@ -54,9 +54,9 @@
|
|||||||
>
|
>
|
||||||
<span class="with-icon">
|
<span class="with-icon">
|
||||||
<span
|
<span
|
||||||
|
v-once
|
||||||
class="svg-icon icon-16 color"
|
class="svg-icon icon-16 color"
|
||||||
v-html="icons.usersIcon"
|
v-html="icons.usersIcon"
|
||||||
v-once
|
|
||||||
></span>
|
></span>
|
||||||
<span v-once>
|
<span v-once>
|
||||||
{{ $t(isParty ? 'inviteToParty' : 'inviteToGuild') }}
|
{{ $t(isParty ? 'inviteToParty' : 'inviteToGuild') }}
|
||||||
@@ -69,9 +69,9 @@
|
|||||||
>
|
>
|
||||||
<span class="with-icon">
|
<span class="with-icon">
|
||||||
<span
|
<span
|
||||||
|
v-once
|
||||||
class="svg-icon icon-16 color"
|
class="svg-icon icon-16 color"
|
||||||
v-html="icons.messageIcon"
|
v-html="icons.messageIcon"
|
||||||
v-once
|
|
||||||
></span>
|
></span>
|
||||||
<span v-once>
|
<span v-once>
|
||||||
{{ $t(isParty ? 'messagePartyLeader' : 'messageGuildLeader') }}
|
{{ $t(isParty ? 'messagePartyLeader' : 'messageGuildLeader') }}
|
||||||
@@ -85,9 +85,9 @@
|
|||||||
>
|
>
|
||||||
<span class="with-icon">
|
<span class="with-icon">
|
||||||
<span
|
<span
|
||||||
|
v-once
|
||||||
class="svg-icon icon-16 color"
|
class="svg-icon icon-16 color"
|
||||||
v-html="icons.editIcon"
|
v-html="icons.editIcon"
|
||||||
v-once
|
|
||||||
></span>
|
></span>
|
||||||
<span v-once>
|
<span v-once>
|
||||||
{{ isParty ? $t('editParty') : $t('editGuild') }}
|
{{ isParty ? $t('editParty') : $t('editGuild') }}
|
||||||
@@ -101,9 +101,9 @@
|
|||||||
>
|
>
|
||||||
<span class="with-icon">
|
<span class="with-icon">
|
||||||
<span
|
<span
|
||||||
|
v-once
|
||||||
class="svg-icon icon-16 color"
|
class="svg-icon icon-16 color"
|
||||||
v-html="icons.leaveIcon"
|
v-html="icons.leaveIcon"
|
||||||
v-once
|
|
||||||
></span>
|
></span>
|
||||||
<span v-once>
|
<span v-once>
|
||||||
{{ isParty ? $t('leaveParty') : $t('leaveGuild') }}
|
{{ isParty ? $t('leaveParty') : $t('leaveGuild') }}
|
||||||
@@ -150,7 +150,6 @@ import editIcon from '@/assets/svg/edit.svg';
|
|||||||
import messageIcon from '@/assets/svg/message.svg';
|
import messageIcon from '@/assets/svg/message.svg';
|
||||||
import usersIcon from '@/assets/svg/users.svg';
|
import usersIcon from '@/assets/svg/users.svg';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
groupChallenges,
|
groupChallenges,
|
||||||
|
|||||||
@@ -744,7 +744,6 @@ import selectUserModal from '@/components/payments/selectUserModal';
|
|||||||
import sync from '@/mixins/sync';
|
import sync from '@/mixins/sync';
|
||||||
import userDropdown from './userDropdown';
|
import userDropdown from './userDropdown';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
creatorIntro,
|
creatorIntro,
|
||||||
|
|||||||
@@ -40,7 +40,6 @@
|
|||||||
|
|
||||||
@import '~@/assets/scss/colors.scss';
|
@import '~@/assets/scss/colors.scss';
|
||||||
|
|
||||||
|
|
||||||
.attributes-group {
|
.attributes-group {
|
||||||
border-radius: 4px;
|
border-radius: 4px;
|
||||||
// unless we have a way to give a popover an id or class, it needs expand the attributes area
|
// unless we have a way to give a popover an id or class, it needs expand the attributes area
|
||||||
|
|||||||
@@ -432,7 +432,6 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
each(this.gearTypesToStrings, (string, type) => {
|
each(this.gearTypesToStrings, (string, type) => {
|
||||||
this.viewOptions[type].firstRender = false; // eslint-disable-line vue/no-side-effects-in-computed-properties, max-len
|
this.viewOptions[type].firstRender = false; // eslint-disable-line vue/no-side-effects-in-computed-properties, max-len
|
||||||
});
|
});
|
||||||
|
|||||||
@@ -44,7 +44,6 @@ import DragDropDirective from '@/directives/dragdrop.directive';
|
|||||||
|
|
||||||
import CountBadge from '@/components/ui/countBadge';
|
import CountBadge from '@/components/ui/countBadge';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
CountBadge,
|
CountBadge,
|
||||||
|
|||||||
@@ -582,7 +582,6 @@ export default {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return petGroups;
|
return petGroups;
|
||||||
},
|
},
|
||||||
mountGroups () {
|
mountGroups () {
|
||||||
@@ -627,7 +626,6 @@ export default {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
return mountGroups;
|
return mountGroups;
|
||||||
},
|
},
|
||||||
drawerTabs () {
|
drawerTabs () {
|
||||||
|
|||||||
@@ -35,7 +35,6 @@
|
|||||||
</b-modal>
|
</b-modal>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import '~@/assets/scss/colors.scss';
|
@import '~@/assets/scss/colors.scss';
|
||||||
@import '~@/assets/scss/mixins.scss';
|
@import '~@/assets/scss/mixins.scss';
|
||||||
@@ -80,7 +79,6 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import markdownDirective from '@/directives/markdown';
|
import markdownDirective from '@/directives/markdown';
|
||||||
import { mountInfo } from '@/../../common/script/content/stable';
|
import { mountInfo } from '@/../../common/script/content/stable';
|
||||||
|
|||||||
@@ -28,11 +28,11 @@
|
|||||||
:name="member.profile.name"
|
:name="member.profile.name"
|
||||||
:backer="member.backer"
|
:backer="member.backer"
|
||||||
:contributor="member.contributor"
|
:contributor="member.contributor"
|
||||||
:smallerStyle="true"
|
:smaller-style="true"
|
||||||
/>
|
/>
|
||||||
<inline-class-badge
|
<inline-class-badge
|
||||||
class="inline-class-badge"
|
|
||||||
v-if="member.stats"
|
v-if="member.stats"
|
||||||
|
class="inline-class-badge"
|
||||||
:member-class="member.stats.class"
|
:member-class="member.stats.class"
|
||||||
/>
|
/>
|
||||||
</h3>
|
</h3>
|
||||||
@@ -72,8 +72,8 @@
|
|||||||
:show-numbers="false"
|
:show-numbers="false"
|
||||||
/>
|
/>
|
||||||
<stats-bar
|
<stats-bar
|
||||||
class="mt-75 stats-bar"
|
|
||||||
v-if="hasClass"
|
v-if="hasClass"
|
||||||
|
class="mt-75 stats-bar"
|
||||||
:icon="icons.mana"
|
:icon="icons.mana"
|
||||||
:value="member.stats.mp"
|
:value="member.stats.mp"
|
||||||
:max-value="maxMP"
|
:max-value="maxMP"
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="class-badge d-flex justify-content-center"
|
<div
|
||||||
:style="{'--badge-size': badgeSize + 'px'}">
|
class="class-badge d-flex justify-content-center"
|
||||||
|
:style="{'--badge-size': badgeSize + 'px'}"
|
||||||
|
>
|
||||||
<div
|
<div
|
||||||
class="align-self-center svg-icon"
|
class="align-self-center svg-icon"
|
||||||
:aria-label="$t(memberClass)"
|
:aria-label="$t(memberClass)"
|
||||||
|
|||||||
@@ -185,7 +185,6 @@
|
|||||||
margin-bottom: 1rem;
|
margin-bottom: 1rem;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
|
|||||||
@@ -6,15 +6,15 @@
|
|||||||
@hide="onHide()"
|
@hide="onHide()"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="g1g1 d-flex flex-column text-center justify-content-center align-items-center"
|
|
||||||
v-if="currentEvent && currentEvent.promo === 'g1g1'"
|
v-if="currentEvent && currentEvent.promo === 'g1g1'"
|
||||||
|
class="g1g1 d-flex flex-column text-center justify-content-center align-items-center"
|
||||||
>
|
>
|
||||||
<h1> {{ $t('g1g1') }} </h1>
|
<h1> {{ $t('g1g1') }} </h1>
|
||||||
<p> {{ $t('g1g1Returning') }} </p>
|
<p> {{ $t('g1g1Returning') }} </p>
|
||||||
</div>
|
</div>
|
||||||
<h2
|
<h2
|
||||||
class="ml-2"
|
|
||||||
v-else
|
v-else
|
||||||
|
class="ml-2"
|
||||||
>
|
>
|
||||||
{{ $t('sendGift') }}
|
{{ $t('sendGift') }}
|
||||||
</h2>
|
</h2>
|
||||||
@@ -83,8 +83,8 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
class="g1g1-fine-print text-center pt-3"
|
|
||||||
slot="modal-footer"
|
slot="modal-footer"
|
||||||
|
class="g1g1-fine-print text-center pt-3"
|
||||||
>
|
>
|
||||||
<strong>
|
<strong>
|
||||||
{{ $t ('howItWorks') }}
|
{{ $t ('howItWorks') }}
|
||||||
|
|||||||
@@ -46,8 +46,8 @@
|
|||||||
</router-link>
|
</router-link>
|
||||||
</secondary-menu>
|
</secondary-menu>
|
||||||
<div
|
<div
|
||||||
class="g1g1-banner d-flex justify-content-center"
|
|
||||||
v-if="$route.name === 'subscription' && promo === 'g1g1'"
|
v-if="$route.name === 'subscription' && promo === 'g1g1'"
|
||||||
|
class="g1g1-banner d-flex justify-content-center"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
v-once
|
v-once
|
||||||
@@ -61,7 +61,9 @@
|
|||||||
> {{ $t('g1g1Event') }} </strong>
|
> {{ $t('g1g1Event') }} </strong>
|
||||||
<p
|
<p
|
||||||
class="mb-auto"
|
class="mb-auto"
|
||||||
> {{ $t('g1g1Details') }} </p>
|
>
|
||||||
|
{{ $t('g1g1Details') }}
|
||||||
|
</p>
|
||||||
</div>
|
</div>
|
||||||
<div
|
<div
|
||||||
v-once
|
v-once
|
||||||
|
|||||||
@@ -41,7 +41,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import '~@/assets/scss/colors.scss';
|
@import '~@/assets/scss/colors.scss';
|
||||||
#subscription-form {
|
#subscription-form {
|
||||||
|
|||||||
@@ -163,7 +163,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<countdown-banner
|
<countdown-banner
|
||||||
v-if="item.event && item.owned == null"
|
v-if="item.event && item.owned == null"
|
||||||
:endDate = "endDate"
|
:end-date="endDate"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
v-if="item.key === 'rebirth_orb' && item.value > 0 && user.stats.lvl >= 100"
|
v-if="item.key === 'rebirth_orb' && item.value > 0 && user.stats.lvl >= 100"
|
||||||
|
|||||||
@@ -68,6 +68,9 @@ export default {
|
|||||||
this.countdownString();
|
this.countdownString();
|
||||||
this.timer = setInterval(this.countdownString, 1000);
|
this.timer = setInterval(this.countdownString, 1000);
|
||||||
},
|
},
|
||||||
|
beforeDestroy () {
|
||||||
|
this.cancelAutoUpdate();
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
countdownString () {
|
countdownString () {
|
||||||
const diffDuration = moment.duration(moment(this.endDate).diff(moment()));
|
const diffDuration = moment.duration(moment(this.endDate).diff(moment()));
|
||||||
@@ -98,8 +101,5 @@ export default {
|
|||||||
clearInterval(this.timer);
|
clearInterval(this.timer);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
beforeDestroy () {
|
|
||||||
this.cancelAutoUpdate();
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -110,6 +110,9 @@ export default {
|
|||||||
this.countdownString();
|
this.countdownString();
|
||||||
this.timer = setInterval(this.countdownString, 1000);
|
this.timer = setInterval(this.countdownString, 1000);
|
||||||
},
|
},
|
||||||
|
beforeDestroy () {
|
||||||
|
this.cancelAutoUpdate();
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
itemSelected (item) {
|
itemSelected (item) {
|
||||||
this.$root.$emit('buyModal::showItem', item);
|
this.$root.$emit('buyModal::showItem', item);
|
||||||
@@ -141,8 +144,5 @@ export default {
|
|||||||
clearInterval(this.timer);
|
clearInterval(this.timer);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
beforeDestroy () {
|
|
||||||
this.cancelAutoUpdate();
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -111,7 +111,6 @@
|
|||||||
height: 38px; // button + margin + padding
|
height: 38px; // button + margin + padding
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.icon-48 {
|
.icon-48 {
|
||||||
width: 48px;
|
width: 48px;
|
||||||
height: 48px;
|
height: 48px;
|
||||||
@@ -146,7 +145,6 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import _filter from 'lodash/filter';
|
import _filter from 'lodash/filter';
|
||||||
import _map from 'lodash/map';
|
import _map from 'lodash/map';
|
||||||
|
|||||||
@@ -17,7 +17,7 @@
|
|||||||
<close-icon @click="hideDialog()" />
|
<close-icon @click="hideDialog()" />
|
||||||
</div>
|
</div>
|
||||||
<h2 class="text-center textCondensed">
|
<h2 class="text-center textCondensed">
|
||||||
{{$t('questDetailsTitle') }}
|
{{ $t('questDetailsTitle') }}
|
||||||
</h2>
|
</h2>
|
||||||
<div
|
<div
|
||||||
v-if="item != null"
|
v-if="item != null"
|
||||||
@@ -82,7 +82,7 @@
|
|||||||
</div>
|
</div>
|
||||||
<countdown-banner
|
<countdown-banner
|
||||||
v-if="item.event"
|
v-if="item.event"
|
||||||
:endDate="endDate"
|
:end-date="endDate"
|
||||||
/>
|
/>
|
||||||
<div
|
<div
|
||||||
slot="modal-footer"
|
slot="modal-footer"
|
||||||
|
|||||||
@@ -396,7 +396,6 @@
|
|||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
||||||
|
|
||||||
<script>
|
<script>
|
||||||
import _filter from 'lodash/filter';
|
import _filter from 'lodash/filter';
|
||||||
import _sortBy from 'lodash/sortBy';
|
import _sortBy from 'lodash/sortBy';
|
||||||
@@ -426,7 +425,6 @@ import FilterGroup from '@/components/ui/filterGroup';
|
|||||||
import SelectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
import SelectTranslatedArray from '@/components/tasks/modal-controls/selectTranslatedArray';
|
||||||
import QuestPopover from './questPopover';
|
import QuestPopover from './questPopover';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
QuestPopover,
|
QuestPopover,
|
||||||
|
|||||||
@@ -28,7 +28,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss" scoped>
|
<style lang="scss" scoped>
|
||||||
@import '~@/assets/scss/colors.scss';
|
@import '~@/assets/scss/colors.scss';
|
||||||
|
|
||||||
@@ -80,11 +79,6 @@ export default {
|
|||||||
UserLabel,
|
UserLabel,
|
||||||
QuestInfo,
|
QuestInfo,
|
||||||
},
|
},
|
||||||
data () {
|
|
||||||
return {
|
|
||||||
leader: null,
|
|
||||||
};
|
|
||||||
},
|
|
||||||
props: {
|
props: {
|
||||||
item: {
|
item: {
|
||||||
type: Object,
|
type: Object,
|
||||||
@@ -93,18 +87,10 @@ export default {
|
|||||||
type: Object,
|
type: Object,
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
async created () {
|
data () {
|
||||||
if (this.group && this.group.quest && this.group.quest.active) {
|
return {
|
||||||
try {
|
leader: null,
|
||||||
const fetchMemberResult = await this.$store.dispatch('members:fetchMember', {
|
};
|
||||||
memberId: this.group.quest.leader,
|
|
||||||
});
|
|
||||||
|
|
||||||
this.leader = fetchMemberResult;
|
|
||||||
} catch {
|
|
||||||
this.leader = null;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
},
|
},
|
||||||
computed: {
|
computed: {
|
||||||
itemText () {
|
itemText () {
|
||||||
@@ -120,5 +106,18 @@ export default {
|
|||||||
return this.item.notes;
|
return this.item.notes;
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
|
async created () {
|
||||||
|
if (this.group && this.group.quest && this.group.quest.active) {
|
||||||
|
try {
|
||||||
|
const fetchMemberResult = await this.$store.dispatch('members:fetchMember', {
|
||||||
|
memberId: this.group.quest.leader,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.leader = fetchMemberResult;
|
||||||
|
} catch {
|
||||||
|
this.leader = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -177,6 +177,9 @@ export default {
|
|||||||
this.countdownString();
|
this.countdownString();
|
||||||
this.timer = setInterval(this.countdownString, 1000);
|
this.timer = setInterval(this.countdownString, 1000);
|
||||||
},
|
},
|
||||||
|
beforeDestroy () {
|
||||||
|
this.cancelAutoUpdate();
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
stars () {
|
stars () {
|
||||||
const result = [];
|
const result = [];
|
||||||
@@ -230,8 +233,5 @@ export default {
|
|||||||
clearInterval(this.timer);
|
clearInterval(this.timer);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
beforeDestroy () {
|
|
||||||
this.cancelAutoUpdate();
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<div
|
<div
|
||||||
class="quest-rewards"
|
|
||||||
v-if="quest.drop"
|
v-if="quest.drop"
|
||||||
|
class="quest-rewards"
|
||||||
>
|
>
|
||||||
<div
|
<div
|
||||||
class="header d-flex align-items-center"
|
class="header d-flex align-items-center"
|
||||||
|
|||||||
@@ -222,7 +222,6 @@
|
|||||||
width: 50%;
|
width: 50%;
|
||||||
margin-bottom: 24px;
|
margin-bottom: 24px;
|
||||||
|
|
||||||
|
|
||||||
.items {
|
.items {
|
||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
background-color: #edecee;
|
background-color: #edecee;
|
||||||
|
|||||||
@@ -327,6 +327,9 @@ export default {
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
},
|
},
|
||||||
|
beforeDestroy () {
|
||||||
|
this.cancelAutoUpdate();
|
||||||
|
},
|
||||||
methods: {
|
methods: {
|
||||||
click () {
|
click () {
|
||||||
this.$emit('click', {});
|
this.$emit('click', {});
|
||||||
@@ -377,8 +380,5 @@ export default {
|
|||||||
clearInterval(this.timer);
|
clearInterval(this.timer);
|
||||||
},
|
},
|
||||||
},
|
},
|
||||||
beforeDestroy () {
|
|
||||||
this.cancelAutoUpdate();
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -1,5 +1,8 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="section" :class="{'visible':visible}">
|
<div
|
||||||
|
class="section"
|
||||||
|
:class="{'visible':visible}"
|
||||||
|
>
|
||||||
<div class="section-header d-flex align-items-center">
|
<div class="section-header d-flex align-items-center">
|
||||||
<h3
|
<h3
|
||||||
v-once
|
v-once
|
||||||
|
|||||||
@@ -773,7 +773,6 @@
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@media only screen and (max-width: 768px) {
|
@media only screen and (max-width: 768px) {
|
||||||
#call-to-action .btn-primary {
|
#call-to-action .btn-primary {
|
||||||
width: 95%;
|
width: 95%;
|
||||||
|
|||||||
@@ -37,7 +37,6 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
|
||||||
<style lang="scss">
|
<style lang="scss">
|
||||||
@import '~@/assets/scss/colors.scss';
|
@import '~@/assets/scss/colors.scss';
|
||||||
|
|
||||||
|
|||||||
@@ -139,7 +139,6 @@ import difficultyMediumIcon from '@/assets/svg/difficulty-medium.svg';
|
|||||||
import difficultyHardIcon from '@/assets/svg/difficulty-hard.svg';
|
import difficultyHardIcon from '@/assets/svg/difficulty-hard.svg';
|
||||||
import selectList from '@/components/ui/selectList';
|
import selectList from '@/components/ui/selectList';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: {
|
components: {
|
||||||
selectList,
|
selectList,
|
||||||
|
|||||||
@@ -87,7 +87,10 @@
|
|||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div v-if="tagsType.key === 'tags'" class="col-6 dragSpace">
|
<div
|
||||||
|
v-if="tagsType.key === 'tags'"
|
||||||
|
class="col-6 dragSpace"
|
||||||
|
>
|
||||||
<input
|
<input
|
||||||
v-model="newTag"
|
v-model="newTag"
|
||||||
class="new-tag-item edit-tag-item inline-edit-input form-control"
|
class="new-tag-item edit-tag-item inline-edit-input form-control"
|
||||||
|
|||||||
@@ -47,7 +47,6 @@ import ResizeDirective from '@/directives/resize.directive';
|
|||||||
import openedItemRowsMixin from '@/mixins/openedItemRows';
|
import openedItemRowsMixin from '@/mixins/openedItemRows';
|
||||||
import ShowMoreButton from '@/components/ui/showMoreButton';
|
import ShowMoreButton from '@/components/ui/showMoreButton';
|
||||||
|
|
||||||
|
|
||||||
export default {
|
export default {
|
||||||
components: { ShowMoreButton },
|
components: { ShowMoreButton },
|
||||||
directives: {
|
directives: {
|
||||||
|
|||||||
@@ -17,7 +17,10 @@
|
|||||||
:style="{width: `${percent(value, maxValue)}%`}"
|
:style="{width: `${percent(value, maxValue)}%`}"
|
||||||
></div>
|
></div>
|
||||||
</div>
|
</div>
|
||||||
<span class="small-text" v-if="showNumbers">
|
<span
|
||||||
|
v-if="showNumbers"
|
||||||
|
class="small-text"
|
||||||
|
>
|
||||||
{{ value | statFloor }} / {{ maxValue }}
|
{{ value | statFloor }} / {{ maxValue }}
|
||||||
</span>
|
</span>
|
||||||
<b-tooltip
|
<b-tooltip
|
||||||
|
|||||||
@@ -719,7 +719,6 @@ import achievementsLib from '@/../../common/script/libs/achievements';
|
|||||||
import Content from '@/../../common/script/content';
|
import Content from '@/../../common/script/content';
|
||||||
import profileStats from './profileStats';
|
import profileStats from './profileStats';
|
||||||
|
|
||||||
|
|
||||||
import message from '@/assets/svg/message.svg';
|
import message from '@/assets/svg/message.svg';
|
||||||
import gift from '@/assets/svg/gift.svg';
|
import gift from '@/assets/svg/gift.svg';
|
||||||
import block from '@/assets/svg/block.svg';
|
import block from '@/assets/svg/block.svg';
|
||||||
|
|||||||
@@ -337,7 +337,6 @@ import autoAllocate from '@/../../common/script/fns/autoAllocate';
|
|||||||
import allocateBulk from '@/../../common/script/ops/stats/allocateBulk';
|
import allocateBulk from '@/../../common/script/ops/stats/allocateBulk';
|
||||||
import statsComputed from '@/../../common/script/libs/statsComputed';
|
import statsComputed from '@/../../common/script/libs/statsComputed';
|
||||||
|
|
||||||
|
|
||||||
const DROP_ANIMALS = keys(Content.pets);
|
const DROP_ANIMALS = keys(Content.pets);
|
||||||
const TOTAL_NUMBER_OF_DROP_ANIMALS = DROP_ANIMALS.length;
|
const TOTAL_NUMBER_OF_DROP_ANIMALS = DROP_ANIMALS.length;
|
||||||
export default {
|
export default {
|
||||||
@@ -694,7 +693,6 @@ export default {
|
|||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.gear.box {
|
.gear.box {
|
||||||
vertical-align: top;
|
vertical-align: top;
|
||||||
margin: 0 auto;
|
margin: 0 auto;
|
||||||
|
|||||||
@@ -1,7 +1,6 @@
|
|||||||
/*
|
/*
|
||||||
import {emit} from './directive.common';
|
import {emit} from './directive.common';
|
||||||
|
|
||||||
|
|
||||||
import _keys from 'lodash/keys';
|
import _keys from 'lodash/keys';
|
||||||
import _without from 'lodash/without';
|
import _without from 'lodash/without';
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import getStore from '@/store';
|
import getStore from '@/store';
|
||||||
|
|
||||||
|
|
||||||
export function setup () { // eslint-disable-line import/prefer-default-export
|
export function setup () { // eslint-disable-line import/prefer-default-export
|
||||||
const store = getStore();
|
const store = getStore();
|
||||||
|
|
||||||
|
|||||||
@@ -35,7 +35,6 @@ function removeLocalSetting (key) {
|
|||||||
return localStorage.removeItem(key);
|
return localStorage.removeItem(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export {
|
export {
|
||||||
CONSTANTS,
|
CONSTANTS,
|
||||||
getLocalSetting,
|
getLocalSetting,
|
||||||
|
|||||||
@@ -5,10 +5,8 @@ import get from 'lodash/get';
|
|||||||
import unlock from '@/../../common/script/ops/unlock';
|
import unlock from '@/../../common/script/ops/unlock';
|
||||||
import buy from '@/../../common/script/ops/buy/buy';
|
import buy from '@/../../common/script/ops/buy/buy';
|
||||||
|
|
||||||
|
|
||||||
import appearanceSets from '@/../../common/script/content/appearance/sets';
|
import appearanceSets from '@/../../common/script/content/appearance/sets';
|
||||||
|
|
||||||
|
|
||||||
import { userStateMixin } from './userState';
|
import { userStateMixin } from './userState';
|
||||||
|
|
||||||
export const avatarEditorUtilies = { // eslint-disable-line import/prefer-default-export
|
export const avatarEditorUtilies = { // eslint-disable-line import/prefer-default-export
|
||||||
|
|||||||
@@ -316,7 +316,6 @@
|
|||||||
border-bottom: 1px solid $gray-500;
|
border-bottom: 1px solid $gray-500;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
.conversations {
|
.conversations {
|
||||||
overflow-x: hidden;
|
overflow-x: hidden;
|
||||||
overflow-y: auto;
|
overflow-y: auto;
|
||||||
@@ -463,7 +462,6 @@
|
|||||||
border-radius: 2px;
|
border-radius: 2px;
|
||||||
margin-left: 1.5rem;
|
margin-left: 1.5rem;
|
||||||
|
|
||||||
|
|
||||||
&.disabled {
|
&.disabled {
|
||||||
cursor: default;
|
cursor: default;
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
|
|||||||
@@ -72,7 +72,6 @@ export async function exportChallengeCsv (store, payload) {
|
|||||||
return response.data.data;
|
return response.data.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export async function updateChallenge (store, payload) {
|
export async function updateChallenge (store, payload) {
|
||||||
const challengeDataToSend = omit(payload.challenge, ['tasks', 'habits', 'todos', 'rewards', 'group']);
|
const challengeDataToSend = omit(payload.challenge, ['tasks', 'habits', 'todos', 'rewards', 'group']);
|
||||||
|
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ export async function getGroup (store, payload) {
|
|||||||
return response.data.data;
|
return response.data.data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export async function join (store, payload) {
|
export async function join (store, payload) {
|
||||||
const { groupId } = payload;
|
const { groupId } = payload;
|
||||||
const { type } = payload;
|
const { type } = payload;
|
||||||
|
|||||||
@@ -43,7 +43,6 @@ export async function clearCompletedTodos (store) {
|
|||||||
store.state.tasks.data.todos = store.state.tasks.data.todos.filter(task => !task.completed);
|
store.state.tasks.data.todos = store.state.tasks.data.todos.filter(task => !task.completed);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
export function order (store, [rawTasks, tasksOrder]) {
|
export function order (store, [rawTasks, tasksOrder]) {
|
||||||
const tasks = {
|
const tasks = {
|
||||||
habits: [],
|
habits: [],
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import { shouldDo } from '@/../../common/script/cron';
|
|||||||
import { orderSingleTypeTasks } from '@/libs/store/helpers/orderTasks';
|
import { orderSingleTypeTasks } from '@/libs/store/helpers/orderTasks';
|
||||||
import { getActiveFilter, sortAndFilterTasks } from '@/libs/store/helpers/filterTasks';
|
import { getActiveFilter, sortAndFilterTasks } from '@/libs/store/helpers/filterTasks';
|
||||||
|
|
||||||
|
|
||||||
// Return all the tags belonging to an user task
|
// Return all the tags belonging to an user task
|
||||||
export function getTagsFor (store) {
|
export function getTagsFor (store) {
|
||||||
return task => store.state.user.data.tags
|
return task => store.state.user.data.tags
|
||||||
@@ -93,7 +92,6 @@ export function canEdit (store) {
|
|||||||
const isUserChallenge = userId === (challenge
|
const isUserChallenge = userId === (challenge
|
||||||
&& challenge.leader !== null && challenge.leader.id);
|
&& challenge.leader !== null && challenge.leader.id);
|
||||||
|
|
||||||
|
|
||||||
switch (taskCategory) {
|
switch (taskCategory) {
|
||||||
case 'challenge':
|
case 'challenge':
|
||||||
if (!onUserDashboard) {
|
if (!onUserDashboard) {
|
||||||
|
|||||||
@@ -4,7 +4,6 @@ import {
|
|||||||
// orderMultipleTypeTasks,
|
// orderMultipleTypeTasks,
|
||||||
} from '@/libs/store/helpers/orderTasks';
|
} from '@/libs/store/helpers/orderTasks';
|
||||||
|
|
||||||
|
|
||||||
describe('Task Order Helper Function', () => {
|
describe('Task Order Helper Function', () => {
|
||||||
let tasks; let shuffledTasks; let
|
let tasks; let shuffledTasks; let
|
||||||
taskOrderList;
|
taskOrderList;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import generateStore from '@/store';
|
import generateStore from '@/store';
|
||||||
|
|
||||||
|
|
||||||
describe('canDelete getter', () => {
|
describe('canDelete getter', () => {
|
||||||
let store;
|
let store;
|
||||||
let group;
|
let group;
|
||||||
|
|||||||
@@ -1,6 +1,5 @@
|
|||||||
import generateStore from '@/store';
|
import generateStore from '@/store';
|
||||||
|
|
||||||
|
|
||||||
describe('canEdit getter', () => {
|
describe('canEdit getter', () => {
|
||||||
let store;
|
let store;
|
||||||
let group;
|
let group;
|
||||||
|
|||||||
@@ -49,7 +49,6 @@ describe('getTaskClasses getter', () => {
|
|||||||
expect(getTaskClasses(task, 'edit-modal-bg')).to.equal('task-better-modal-bg');
|
expect(getTaskClasses(task, 'edit-modal-bg')).to.equal('task-better-modal-bg');
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
it('returns best task edit-modal-bg class', () => {
|
it('returns best task edit-modal-bg class', () => {
|
||||||
const task = { type: 'todo', value: 12 };
|
const task = { type: 'todo', value: 12 };
|
||||||
expect(getTaskClasses(task, 'edit-modal-bg')).to.equal('task-best-modal-bg');
|
expect(getTaskClasses(task, 'edit-modal-bg')).to.equal('task-best-modal-bg');
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ const path = require('path');
|
|||||||
const webpack = require('webpack');
|
const webpack = require('webpack');
|
||||||
const nconf = require('nconf');
|
const nconf = require('nconf');
|
||||||
const { DuplicatesPlugin } = require('inspectpack/plugin');
|
const { DuplicatesPlugin } = require('inspectpack/plugin');
|
||||||
const setupNconf = require('../../website/server/libs/setupNconf');
|
const setupNconf = require('../server/libs/setupNconf');
|
||||||
const pkg = require('./package.json');
|
const pkg = require('./package.json');
|
||||||
|
|
||||||
const configFile = path.join(path.resolve(__dirname, '../../config.json'));
|
const configFile = path.join(path.resolve(__dirname, '../../config.json'));
|
||||||
|
|||||||
Reference in New Issue
Block a user