client: reorganize files, router and add inventory skeleton

This commit is contained in:
Matteo Pagliazzi
2017-01-17 19:45:27 +01:00
parent e2b06161e1
commit 563f40e4b7
10 changed files with 95 additions and 76 deletions

View File

@@ -1,37 +0,0 @@
<template lang="pug">
.row
.sixteen.wide.column
.ui.secondary.menu
router-link.item(to="/social/tavern")
| Tavern
router-link.item(to="/social/inbox")
| Inbox
.sixteen.wide.column
router-view
</template>
<script>
export default {
data () {
// @TODO: Abstract to Store
let messages = [
{
from: 'Paglias',
fromUserId: 1234,
to: 'TheHollidayInn',
message: 'I love the Gang of Four',
},
];
let conversations = {};
for (let message of messages) {
if (!conversations[message.fromUserId]) conversations[message.fromUserId] = message;
}
return {
conversations,
};
},
};
</script>

View File

@@ -3,34 +3,34 @@
#app-menu.ui.top.fixed.menu #app-menu.ui.top.fixed.menu
.header.item .header.item
img(src="~assets/header/png/logo@3x.png") img(src="~assets/header/png/logo@3x.png")
router-link.item(to="/", exact) router-link.item(:to="{name: 'tasks'}", exact)
span(v-once) {{ $t('tasks') }} span(v-once) {{ $t('tasks') }}
// .simple makes it possible to have a dropdown without JS // .simple makes it possible to have a dropdown without JS
.ui.simple.dropdown .ui.simple.dropdown
router-link.item(to="/inventory", :class="{'active': $route.path.startsWith('/inventory')}") router-link.item(:to="{name: 'inventory'}", :class="{'active': $route.path.startsWith('/inventory')}")
span(v-once) {{ $t('inventory') }} span(v-once) {{ $t('inventory') }}
.menu .menu
router-link.item(to="/inventory") router-link.item(:to="{name: 'inventory'}")
span(v-once) {{ $t('inventory') }} span(v-once) {{ $t('inventory') }}
router-link.item(to="/inventory/stable") router-link.item(:to="{name: 'equipment'}")
span(v-once) {{ $t('stable') }}
router-link.item(to="/inventory/equipment")
span(v-once) {{ $t('equipment') }} span(v-once) {{ $t('equipment') }}
router-link.item(to="/market") router-link.item(:to="{name: 'stable'}")
span(v-once) {{ $t('stable') }}
router-link.item(:to="{name: 'market'}")
span(v-once) {{ $t('market') }} span(v-once) {{ $t('market') }}
.ui.simple.dropdown .ui.simple.dropdown
router-link.item(to="/social/tavern", :class="{'active': $route.path.startsWith('/social')}") router-link.item(:to="{name: 'tavern'}", :class="{'active': $route.path.startsWith('/social')}")
span(v-once) {{ $t('social') }} span(v-once) {{ $t('social') }}
.menu .menu
router-link.item(to="/social/tavern") router-link.item(:to="{name: 'tavern'}")
span(v-once) {{ $t('tavern') }} span(v-once) {{ $t('tavern') }}
router-link.item(to="/social/inbox") router-link.item(:to="{name: 'inbox'}")
span(v-once) {{ $t('inbox') }} span(v-once) {{ $t('inbox') }}
router-link.item(to="/social/challenges") router-link.item(:to="{name: 'challenges'}")
span(v-once) {{ $t('challenges') }} span(v-once) {{ $t('challenges') }}
router-link.item(to="/social/party") router-link.item(:to="{name: 'party'}")
span(v-once) {{ $t('party') }} span(v-once) {{ $t('party') }}
router-link.item(to="/social/guilds") router-link.item(:to="{name: 'guilds'}")
span(v-once) {{ $t('guilds') }} span(v-once) {{ $t('guilds') }}
.ui.simple.dropdown .ui.simple.dropdown
router-link.item(to="/help", :class="{'active': $route.path.startsWith('/help')}") router-link.item(to="/help", :class="{'active': $route.path.startsWith('/help')}")
@@ -52,7 +52,7 @@
a.item.with-img.notifications-dropdown a.item.with-img.notifications-dropdown
img(src="~assets/header/png/notifications@3x.png") img(src="~assets/header/png/notifications@3x.png")
.ui.simple.dropdown.pointing .ui.simple.dropdown.pointing
router-link.item.with-img.user-dropdown(to="/user/avatar") router-link.item.with-img.user-dropdown(:to="{name: 'avatar'}")
// TODO icons should be white when active // TODO icons should be white when active
img(src="~assets/header/png/user@3x.png") img(src="~assets/header/png/user@3x.png")
.menu .menu
@@ -60,12 +60,12 @@
strong {{user.profile.name}} strong {{user.profile.name}}
a(v-once) {{ $t('editAvatar') }} a(v-once) {{ $t('editAvatar') }}
.divider .divider
router-link.item(to="/user/stats") router-link.item(:to="{name: 'stats'}")
span(v-once) {{ $t('stats') }} span(v-once) {{ $t('stats') }}
router-link.item(to="/user/achievements") router-link.item(:to="{name: 'achievements'}")
span(v-once) {{ $t('achievements') }} span(v-once) {{ $t('achievements') }}
.divider .divider
router-link.item(to="/user/settings") router-link.item(:to="{name: 'settings'}")
span(v-once) {{ $t('settings') }} span(v-once) {{ $t('settings') }}
.divider .divider
router-link.item(to="/logout") router-link.item(to="/logout")

View File

@@ -0,0 +1,4 @@
<template lang="pug">
// Container component used when you only need an empty view to support children routes
router-view
</template>

View File

@@ -0,0 +1,19 @@
<template lang="pug">
.row
.sixteen.wide.column
.ui.secondary.menu
router-link.item(:to="{name: 'inventory'}")
span(v-once) {{ $t('inventory') }}
router-link.item(:to="{name: 'equipment'}")
span(v-once) {{ $t('equipment') }}
router-link.item(:to="{name: 'stable'}")
span(v-once) {{ $t('stable') }}
.sixteen.wide.column
router-view
</template>
<script>
export default {
};
</script>

View File

@@ -0,0 +1,8 @@
<template lang="pug">
h2 {{ $t('stable') }}
</template>
<script>
export default {
};
</script>

View File

@@ -2,7 +2,7 @@
.ui.internally.celled.grid .ui.internally.celled.grid
.row .row
.sixteen.wide.colum .sixteen.wide.colum
h2.ui.dividing.header Inbox h2.ui.dividing.header(v-once) {{ $t('inbox') }}
.ui.middle.aligned.selection.list .ui.middle.aligned.selection.list
.item(v-for="conversation in conversations") .item(v-for="conversation in conversations")
img.ui.avatar.image(src='http://semantic-ui.com/images/avatar/small/daniel.jpg') img.ui.avatar.image(src='http://semantic-ui.com/images/avatar/small/daniel.jpg')

View File

@@ -0,0 +1,17 @@
<template lang="pug">
.row
.sixteen.wide.column
.ui.secondary.menu
router-link.item(:to="{name: 'tavern'}")
span(v-once) {{ $t('tavern') }}
router-link.item(:to="{name: 'inbox'}")
span(v-once) {{ $t('inbox') }}
.sixteen.wide.column
router-view
</template>
<script>
export default {
};
</script>

View File

@@ -1,15 +1,23 @@
import Vue from 'vue'; import Vue from 'vue';
import VueRouter from 'vue-router'; import VueRouter from 'vue-router';
import UserTasks from './components/userTasks';
import EmptyView from './components/emptyView';
// TODO Dummy elements used as placeholder until real components are implemented
import ParentPage from './components/parentPage'; import ParentPage from './components/parentPage';
import Page from './components/page'; import Page from './components/page';
// Social // Tasks
import SocialPage from './components/SocialPage'; import UserTasks from './components/userTasks';
import TavernPage from './components/Social/TavernPage';
import InboxPage from './components/Inbox/InboxPage';
import InboxConversationPage from './components/Inbox/InboxConversationPage';
// Inventory
import InventoryContainer from './components/inventory/index';
import StablePage from './components/inventory/stable';
// Social
import SocialContainer from './components/social/index';
import TavernPage from './components/social/tavern';
import InboxPage from './components/social/inbox/index';
import InboxConversationPage from './components/social/inbox/conversationPage';
Vue.use(VueRouter); Vue.use(VueRouter);
@@ -18,25 +26,25 @@ export default new VueRouter({
base: process.env.NODE_ENV === 'production' ? '/new-app' : __dirname, // eslint-disable-line no-process-env base: process.env.NODE_ENV === 'production' ? '/new-app' : __dirname, // eslint-disable-line no-process-env
linkActiveClass: 'active', linkActiveClass: 'active',
routes: [ routes: [
{ path: '/', component: UserTasks }, { name: 'tasks', path: '/', component: UserTasks },
{ {
path: '/inventory', path: '/inventory',
component: ParentPage, component: InventoryContainer,
children: [ children: [
{path: '', component: Page}, { name: 'inventory', path: '', component: Page },
{path: 'equipment', component: Page}, { name: 'equipment', path: 'equipment', component: Page },
{path: 'stable', component: Page}, { name: 'stable', path: 'stable', component: StablePage },
], ],
}, },
{ path: '/market', component: Page }, { name: 'market', path: '/market', component: Page },
{ {
path: '/social', path: '/social',
component: SocialPage, component: SocialContainer,
children: [ children: [
{ name: 'tavern', path: 'tavern', component: TavernPage }, { name: 'tavern', path: 'tavern', component: TavernPage },
{ {
path: 'inbox', path: 'inbox',
component: ParentPage, component: EmptyView,
children: [ children: [
{ {
name: 'inbox', name: 'inbox',
@@ -50,19 +58,19 @@ export default new VueRouter({
}, },
], ],
}, },
{path: 'challenges', component: Page}, { name: 'challenges', path: 'challenges', component: Page },
{path: 'party', component: Page}, { name: 'party', path: 'party', component: Page },
{path: 'guilds', component: Page}, { name: 'guilds', path: 'guilds', component: Page },
], ],
}, },
{ {
path: '/user', path: '/user',
component: ParentPage, component: ParentPage,
children: [ children: [
{path: 'avatar', component: Page}, { name: 'avatar', path: 'avatar', component: Page },
{path: 'stats', component: Page}, { name: 'stats', path: 'stats', component: Page },
{path: 'achievements', component: Page}, { name: 'achievements', path: 'achievements', component: Page },
{path: 'settings', component: Page}, { name: 'settings', path: 'settings', component: Page },
], ],
}, },
], ],