diff --git a/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderPermissions.vue b/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderPermissions.vue index 55bce10b6b3..8725957175e 100644 --- a/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderPermissions.vue +++ b/client/src/components/LibraryFolder/LibraryFolderPermissions/LibraryFolderPermissions.vue @@ -1,69 +1,81 @@ @@ -72,17 +84,18 @@ import Vue from "vue"; import { getAppRoot } from "onload/loadConfig"; import BootstrapVue from "bootstrap-vue"; import { Services } from "./services"; -import Utils from "utils/utils"; import { Toast } from "ui/toast"; import { FontAwesomeIcon } from "@fortawesome/vue-fontawesome"; import { getGalaxyInstance } from "app"; import PermissionsInputField from "./PermissionsInputField.vue"; +import { initManageFolderIcons } from "components/LibraryFolder/icons"; import "vue-multiselect/dist/vue-multiselect.min.css"; import VueObserveVisibility from "vue-observe-visibility"; Vue.use(VueObserveVisibility); Vue.use(BootstrapVue); +initManageFolderIcons(); export default { props: { @@ -93,16 +106,16 @@ export default { }, components: { PermissionsInputField, + FontAwesomeIcon, }, data() { return { permissions: undefined, folder: undefined, is_admin: undefined, - value: null, - add_ids: [], - modify_ids: [], - manage_ids: [], + add_library_item_role_list: undefined, + modify_folder_role_list: undefined, + manage_folder_role_list: undefined, add_type: "add_type", manage_type: "manage_type", modify_type: "modify_type", @@ -113,9 +126,10 @@ export default { this.root = getAppRoot(); this.services = new Services({ root: this.root }); this.is_admin = Galaxy.user.attributes.is_admin; - - this.services.getFolderPermissions(this.folder_id).then((response) => { - this.permissions = response; + this.services.getFolderPermissions(this.folder_id).then((fetched_permissions) => { + this.add_library_item_role_list = this._serializeRoles(fetched_permissions.add_library_item_role_list); + this.manage_folder_role_list = this._serializeRoles(fetched_permissions.manage_folder_role_list); + this.modify_folder_role_list = this._serializeRoles(fetched_permissions.modify_folder_role_list); }); this.services.getFolder(this.folder_id).then((response) => { this.folder = response; @@ -126,24 +140,25 @@ export default { getParentLink() { return `${this.root}library/folders/${this.folder.parent_id}`; }, - setUserPermissionsPreferences(ids, type) { - switch (type) { - case "manage": - this.manage_ids = ids; + setUserPermissionsPreferences(ids, permission_type) { + switch (permission_type) { + case "manage_type": + this.manage_folder_role_list = ids; break; - case "add": - this.add_ids = ids; + case "add_type": + this.add_library_item_role_list = ids; break; - case "modify": - this.modify_ids = ids; + case "modify_type": + this.modify_folder_role_list = ids; break; } }, postPermissions() { this.services.setPermissions( - this.add_ids, - this.manage_ids, - this.modify_ids, + this.folder_id, + this.add_library_item_role_list, + this.manage_folder_role_list, + this.modify_folder_role_list, (fetched_permissions) => { Toast.success("Permissions saved."); this.permissions = fetched_permissions; @@ -154,6 +169,15 @@ export default { } ); }, + + _serializeRoles: function (role_list) { + const selected_roles = []; + role_list.forEach((item) => { + selected_roles.push({ name: item[0], id: item[1] }); + }); + + return selected_roles; + }, }, }; diff --git a/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue b/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue index d285b8d6054..9991bb87b44 100644 --- a/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue +++ b/client/src/components/LibraryFolder/LibraryFolderPermissions/PermissionsInputField.vue @@ -1,8 +1,8 @@