2 <fieldset class="rows" id="user_roles">
3 <legend>{{ $__("Users") }}</legend>
6 v-for="(user_role, counter) in user_roles"
10 {{ user_type.format(counter + 1) }}
11 <a href="#" @click.prevent="deleteUser(counter)"
12 ><i class="fa fa-trash"></i>
13 {{ $__("Remove this user") }}</a
18 <label :for="`user_id_${counter}`" class="required"
19 >{{ $__("User") }}:</label
22 {{ user_role.patron_str }}
25 href="#patron_search_modal"
26 @click="selectUser(counter)"
27 class="btn btn-default"
29 ><i class="fa fa-plus"></i> {{ $__("Select user") }}</a
31 <span class="required">{{ $__("Required") }}</span>
34 <label :for="`user_role_${counter}`" class="required"
35 >{{ $__("Role") }}:</label
38 :id="`user_role_${counter}`"
39 v-model="user_role.role"
41 :reduce="av => av.value"
42 :options="av_user_roles"
44 <template #search="{ attributes, events }">
46 :required="!user_role.role"
53 <span class="required">{{ $__("Required") }}</span>
59 name="selected_patron_id"
60 id="selected_patron_id"
62 <a class="btn btn-default" @click="addUser"
63 ><font-awesome-icon icon="plus" /> {{ $__("Add new user") }}</a
69 import { APIClient } from "../../fetch/api-client.js"
79 this.user_roles.forEach(u => {
80 u.patron_str = $patron_to_html(u.patron)
85 this.user_roles.push({
92 this.user_roles.splice(counter, 1)
95 // This is a bit dirty, the "select user" window should be rewritten and be a Vue component
96 // but that's not for now...
99 "#patron_search_modal",
102 this.selected_user_counter = counter
105 let c = this.selected_user_counter
106 let selected_patron_id =
107 document.getElementById("selected_patron_id").value
109 const client = APIClient.patron
110 // FIXME We are missing a "loading..."
111 client.patrons.get(selected_patron_id).then(p => {
113 this.user_roles[c].patron = patron
114 this.user_roles[c].patron_str = $patron_to_html(patron)
115 this.user_roles[c].user_id = patron.patron_id