Skip to content
Main.vue 3.08 KiB
Newer Older
<template>
<div>
  <GroupsBreadcrumb />
  <b-card no-body>
    <b-tabs content-class="mt-3" card v-on:input="tabChanged" v-model="input.tabIndex">
      <GroupsPanel />
      <MembersPanel />
      <PermissionsPanel />
      <template slot="tabs-end">
        <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddGroupBtn" v-on:click="openAddGroupModal">Add group</b-button>
        <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddMemberBtn" v-on:click="openAddMemberModal">Add member</b-button>
        <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddCollaboratorBtn" v-on:click="openAddMemberModal">Add collaborator</b-button>
        <b-button variant="primary" class="in-tabs-header-btn" v-if="showAddPermissionBtn" v-on:click="openAddPermissionModal">Add permission</b-button>
      </template>
    </b-tabs>
  </b-card>
  <AddGroupModal />
  <AddMemberModal />
  <AddPermissionModal />
</div>
</template>

<script>
import GroupsBreadcrumb from './GroupsBreadcrumb.vue'
import GroupsPanel from './GroupsPanel.vue'
import MembersPanel from './MembersPanel.vue'
Sonia Zorba's avatar
Sonia Zorba committed
import PermissionsPanel from './PermissionsPanel.vue'
import AddGroupModal from './modals/AddGroupModal.vue'
import AddMemberModal from './modals/AddMemberModal.vue'
Sonia Zorba's avatar
Sonia Zorba committed
import AddPermissionModal from './modals/AddPermissionModal.vue'
import {
  mapState
} from 'vuex';

export default {
  name: 'Main',
  components: {
    GroupsBreadcrumb,
    GroupsPanel,
Sonia Zorba's avatar
Sonia Zorba committed
    PermissionsPanel,
Sonia Zorba's avatar
Sonia Zorba committed
    AddPermissionModal
Sonia Zorba's avatar
Sonia Zorba committed
    model: state => state.model,
    showAddMemberBtn: state => state.model.permission === 'ADMIN' && state.input.tabIndex === 1,
    showAddCollaboratorBtn: state => state.model.permission === 'MANAGE_MEMBERS' && state.input.tabIndex === 1,
    showAddGroupBtn: state => state.model.permission === 'ADMIN' && state.input.tabIndex === 0,
    showAddPermissionBtn: state => state.model.permission === 'ADMIN' && state.input.tabIndex === 2
  methods: {
Sonia Zorba's avatar
Sonia Zorba committed
    tabChanged: function(tabIndex) {
      switch (tabIndex) {
Sonia Zorba's avatar
Sonia Zorba committed
        case 0:
          client.fetchGroupsTab(this.input)
            .then(model => {
              this.$store.commit('updateGroups', model);
            });
Sonia Zorba's avatar
Sonia Zorba committed
          break;
        case 1:
          client.fetchMembersPanel(this.input)
            .then(panel => {
              this.$store.commit('updateMembersPanel', panel);
            });
Sonia Zorba's avatar
Sonia Zorba committed
          break;
        case 2:
          client.fetchPermissionsPanel(this.input)
            .then(panel => {
              this.$store.commit('updatePermissionsPanel', panel);
            });
Sonia Zorba's avatar
Sonia Zorba committed
          break;
      }
    },
Sonia Zorba's avatar
Sonia Zorba committed
    openAddGroupModal: function() {
      this.$bvModal.show('add-group-modal');
Sonia Zorba's avatar
Sonia Zorba committed
    },
    openAddMemberModal: function() {
      this.$bvModal.show('add-member-modal');
Sonia Zorba's avatar
Sonia Zorba committed
    },
    openAddPermissionModal: function() {
      this.$bvModal.show('add-permission-modal');
    }
  }
}
</script>
Sonia Zorba's avatar
Sonia Zorba committed

<style scoped>
.in-tabs-header-btn {
  position: absolute;
  right: 8px;
  top: 8px;
}
Sonia Zorba's avatar
Sonia Zorba committed
</style>