-
Notifications
You must be signed in to change notification settings - Fork 11
/
TenantPermissionTypes.vue
100 lines (93 loc) · 3.08 KB
/
TenantPermissionTypes.vue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
<template>
<TenantHome title="Permission Types" :breadcrumb-links="breadcrumbLinks" :errors="errors">
<template #header-right>
<router-link :to="`/tenants/${clientId}/permission-types/new`" v-slot="{href, navigate}" tag="">
<b-button variant="primary" @click="navigate">Create New Permission Type</b-button>
</router-link>
</template>
<TableOverlayInfo :rows="5" :columns="3" :data="permissionTypes">
<b-table-simple>
<b-thead>
<b-tr>
<b-th>ID</b-th>
<b-th>Name</b-th>
<b-th>Description</b-th>
<b-th>Actions</b-th>
</b-tr>
</b-thead>
<b-tbody>
<b-tr v-for="permissionType in permissionTypes" :key="permissionType.id">
<b-td>{{ permissionType.id }}
<button-copy :value="permissionType.id"/>
</b-td>
<b-td>{{ permissionType.name }}</b-td>
<b-td>{{ permissionType.description }}</b-td>
<b-td>
<button-overlay :show="processingDelete[permissionType.id]">
<b-button variant="link" size="sm" v-on:click="onClickDelete(permissionType)" v-b-tooltip.hover
title="Delete" :disabled="disabledPermissionType[permissionType.id]">
<b-icon icon="trash"></b-icon>
</b-button>
</button-overlay>
</b-td>
</b-tr>
</b-tbody>
</b-table-simple>
</TableOverlayInfo>
</TenantHome>
</template>
<script>
import TenantHome from "./TenantHome";
import store from "../../store";
import TableOverlayInfo from "../overlay/table-overlay-info";
import ButtonOverlay from "../overlay/button-overlay";
import ButtonCopy from "../button/button-copy";
export default {
name: "TenantPermissionTypes",
store: store,
components: {ButtonCopy, ButtonOverlay, TableOverlayInfo, TenantHome},
data() {
return {
processingDelete: {},
errors: [],
disabledPermissionType: {
"OWNER": true
}
}
},
computed: {
clientId() {
return this.$route.params.clientId;
},
permissionTypes() {
return this.$store.getters["sharing/getPermissionTypes"]({clientId: this.clientId})
},
breadcrumbLinks() {
return [{to: `/tenants/${this.clientId}/permission-types`, name: "Permission Types"}];
}
},
methods: {
refreshData() {
this.$store.dispatch("sharing/fetchPermissionTypes", {clientId: this.clientId});
},
async onClickDelete({id, name, description}) {
this.processingDelete = {...this.processingDelete, [id]: true};
try {
await this.$store.dispatch("sharing/deletePermissionType", {clientId: this.clientId, id, name, description});
this.refreshData();
} catch (error) {
this.errors.push({
title: `Unknown error when deleting the permission type '${id}'.`,
source: error, variant: "danger"
});
}
this.processingDelete = {...this.processingDelete, [id]: false};
}
},
mounted() {
this.refreshData();
}
}
</script>
<style scoped>
</style>