2017-05-06 04:15:04 +00:00
|
|
|
<script>
|
|
|
|
import GroupsStore from '../stores/groups_store';
|
|
|
|
import GroupsService from '../services/groups_service';
|
|
|
|
import GroupItem from '../components/group_item.vue';
|
2017-05-08 20:22:26 +00:00
|
|
|
import eventHub from '../event_hub';
|
2017-05-06 04:15:04 +00:00
|
|
|
|
|
|
|
export default {
|
|
|
|
components: {
|
|
|
|
'group-item': GroupItem,
|
|
|
|
},
|
|
|
|
|
|
|
|
data() {
|
|
|
|
const store = new GroupsStore();
|
|
|
|
|
|
|
|
return {
|
|
|
|
store,
|
|
|
|
state: store.state,
|
2017-05-08 20:22:26 +00:00
|
|
|
};
|
2017-05-06 04:15:04 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
created() {
|
|
|
|
const appEl = document.querySelector('#dashboard-group-app');
|
|
|
|
|
|
|
|
this.service = new GroupsService(appEl.dataset.endpoint);
|
|
|
|
this.fetchGroups();
|
2017-05-08 20:22:26 +00:00
|
|
|
|
|
|
|
eventHub.$on('toggleSubGroups', this.toggleSubGroups);
|
2017-05-06 04:15:04 +00:00
|
|
|
},
|
|
|
|
|
|
|
|
methods: {
|
|
|
|
fetchGroups() {
|
|
|
|
this.service.getGroups()
|
|
|
|
.then((response) => {
|
|
|
|
this.store.setGroups(response.json());
|
|
|
|
})
|
|
|
|
.catch(() => {
|
|
|
|
// TODO: Handler error
|
|
|
|
});
|
|
|
|
},
|
2017-05-08 20:22:26 +00:00
|
|
|
toggleSubGroups(group) {
|
|
|
|
GroupsStore.toggleSubGroups(group);
|
|
|
|
},
|
|
|
|
},
|
2017-05-06 04:15:04 +00:00
|
|
|
};
|
|
|
|
</script>
|
|
|
|
|
|
|
|
<template>
|
|
|
|
<table class="table table-bordered">
|
2017-05-08 20:22:26 +00:00
|
|
|
<template v-for="group in state.groups">
|
|
|
|
<tr is="group-item" :group="group" />
|
|
|
|
<tr v-if="group.isOpen">
|
|
|
|
<td>sub groups for {{group.name}}</td>
|
|
|
|
<td></td>
|
|
|
|
</tr>
|
|
|
|
</template>
|
2017-05-06 04:15:04 +00:00
|
|
|
</table>
|
|
|
|
</template>
|