Koha/koha-tmpl/intranet-tmpl/prog/js/vue/components/ERM/UserRoles.vue
Pedro Amorim 03d23be15d
Bug 32030: Add users to licenses - Preparation
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
Signed-off-by: Kyle M Hall <kyle@bywatersolutions.com>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
2022-11-08 09:44:47 -03:00

123 lines
4.1 KiB
Vue

<template>
<div class="page-section" id="user_roles">
<legend>{{ $__("Users") }}</legend>
<fieldset
class="rows"
v-for="(user_role, counter) in user_roles"
v-bind:key="counter"
>
<legend>
{{ user_type.format(counter + 1) }}
<a href="#" @click.prevent="deleteUser(counter)"
><i class="fa fa-trash"></i>
{{ $__("Remove this user") }}</a
>
</legend>
<ol>
<li>
<label :for="`user_id_${counter}`"
>{{ $__("User") }}:</label
>
<span class="user">
{{ user_role.patron_str }}
</span>
(<a
href="#"
@click="selectUser(counter)"
class="btn btn-default"
>{{ $__("Select user") }}</a
>)
</li>
<li>
<label :for="`user_role_${counter}`"
>{{ $__("Role") }}:</label
>
<v-select
:id="`user_role_${counter}`"
v-model="user_role.role"
label="lib"
:reduce="av => av.authorised_value"
:options="av_user_roles"
>
<template #search="{ attributes, events }">
<input
:required="!user_role.role"
class="vs__search"
v-bind="attributes"
v-on="events"
/>
</template>
</v-select>
<span class="required">{{ $__("Required") }}</span>
</li>
</ol>
</fieldset>
<input
type="hidden"
name="selected_patron_id"
id="selected_patron_id"
/>
<a class="btn btn-default" @click="addUser"
><font-awesome-icon icon="plus" /> {{ $__("Add new user") }}</a
>
</div>
</template>
<script>
import { fetchPatron } from "../../fetch"
export default {
name: "UserRoles",
props: {
user_type: String,
av_user_roles: Array,
user_roles: Array,
},
beforeCreate() {
this.user_roles.forEach(u => {
u.patron_str = $patron_to_html(u.patron)
})
},
methods: {
addUser() {
this.user_roles.push({
user_id: null,
role: null,
patron_str: "",
})
},
deleteUser(counter) {
this.user_roles.splice(counter, 1)
},
selectUser(counter) {
let select_user_window = window.open(
"/cgi-bin/koha/members/search.pl?columns=cardnumber,name,category,branch,action&selection_type=select&filter=erm_users",
"PatronPopup",
"width=740,height=450,location=yes,toolbar=no," +
"scrollbars=yes,resize=yes"
)
// This is a bit dirty, the "select user" window should be rewritten and be a Vue component
// but that's not for now...
select_user_window.addEventListener(
"beforeunload",
this.newUserSelected,
false
)
select_user_window.counter = counter
},
newUserSelected(e) {
let c = e.currentTarget.counter
let selected_patron_id =
document.getElementById("selected_patron_id").value
let patron
// FIXME We are missing a "loading..."
fetchPatron(selected_patron_id).then(p => {
patron = p
this.user_roles[c].patron = patron
this.user_roles[c].patron_str = $patron_to_html(patron)
this.user_roles[c].user_id = patron.patron_id
})
},
},
}
</script>