Bug 32924: Add the ability to filter agreement by logged in user

This patch adds a new filter checkbox at the top of the agreement list
"Show only mine" that will display agreements linked with the logged in
user.

Test plan:
Create several agreements, add your current logged in user to some of
them
On the agreement list view us the new checkbox to filter the agreements
and see those where you are involved in.

Signed-off-by: Pedro Amorim <pedro.amorim@ptfs-europe.com>
Signed-off-by: Victor Grousset/tuxayo <victor@tuxayo.net>
Signed-off-by: Tomas Cohen Arazi <tomascohen@theke.io>
(cherry picked from commit 2adcd3b828)
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
This commit is contained in:
Jonathan Druart 2023-02-09 14:00:56 +01:00 committed by Martin Renvoize
parent 278d0bf18a
commit 3879855db9
Signed by: martin.renvoize
GPG key ID: 422B469130441A0F
3 changed files with 29 additions and 1 deletions

View file

@ -270,6 +270,13 @@ __PACKAGE__->many_to_many("packages", "erm_eholdings_packages_agreements", "pack
# Created by DBIx::Class::Schema::Loader v0.07049 @ 2022-11-11 11:52:09
# DO NOT MODIFY THIS OR ANYTHING ABOVE! md5sum:N93LnvdKirtuV6BSrTGzVg
__PACKAGE__->has_many(
"user_roles",
"Koha::Schema::Result::ErmUserRole",
{ "foreign.agreement_id" => "self.agreement_id" },
{ cascade_copy => 0, cascade_delete => 0 },
);
__PACKAGE__->add_columns(
'+is_perpetual' => { is_boolean => 1 }
);

View file

@ -42,6 +42,8 @@
const logged_in_user_lists = [% To.json(logged_in_user.virtualshelves.unblessed) | $raw %];
const logged_in_user = [% To.json(logged_in_user.unblessed) | $raw %];
</script>
[% Asset.js("js/vue/dist/erm.js") | $raw %]

View file

@ -17,6 +17,14 @@
:config="fp_config"
/>
<label for="by_mine_filter">{{ $__("Show mine only") }}:</label>
<input
type="checkbox"
id="by_mine_filter"
v-model="filters.by_mine"
@keyup.enter="filter_table"
/>
<input
@click="filter_table"
id="filter_table"
@ -61,6 +69,7 @@ export default {
table_id,
setConfirmationDialog,
setMessage,
logged_in_user,
}
},
data: function () {
@ -72,6 +81,7 @@ export default {
by_expired: this.$route.query.by_expired || false,
max_expiration_date:
this.$route.query.max_expiration_date || "",
by_mine: this.$route.query.by_mine || false,
},
before_route_entered: false,
building_table: false,
@ -178,7 +188,9 @@ export default {
let datatable_url = this.datatable_url
let default_search = this.$route.query.q
let actions = this.before_route_entered ? "edit_delete" : "select"
let filters = this.filters
let table_id = this.table_id
let logged_in_user = this.logged_in_user
window["vendors"] = this.vendors.map(e => {
e["_id"] = e["id"]
@ -203,11 +215,17 @@ export default {
{ _id: 1, _str: _("Yes") },
]
let additional_filters = {
"user_roles.user_id": function () {
return filters.by_mine ? logged_in_user.borrowernumber : ""
},
}
const table = $("#" + table_id).kohaTable(
{
ajax: {
url: datatable_url,
},
embed: ["user_roles"],
order: [[0, "asc"]],
autoWidth: false,
search: { search: default_search },
@ -455,7 +473,8 @@ export default {
},
},
agreement_table_settings,
1
1,
additional_filters
)
},
},