Bug 40982: Allow to force visibility when needed
The _dt_visibility function is only called when the state is
initialized. Here we want to force the visibility of some columns even
if the state exists already.
The idea of this patch is to add a new 'force_visibility' flag to the
column when the visibility needs to be respected regardless what is in
the state. That should only be used when column cannot be toggled.
Signed-off-by: Slava Shishkin <slavashishkin@gmail.com>
Signed-off-by: Martin Renvoize <martin.renvoize@openfifth.co.uk>
Signed-off-by: Lucas Gass <lucas@bywatersolutions.com>
(cherry picked from commit 41b531b315)
Signed-off-by: Paul Derscheid <paul.derscheid@lmscloud.de>
This commit is contained in:
parent
4cb9637be2
commit
7e95ca32da
|
|
@ -1267,24 +1267,33 @@
|
|||
<script>
|
||||
$(document).ready(function() {
|
||||
var table_settings = [% TablesSettings.GetTableSettings( 'acqui', 'basket', 'orders', 'json' ) | $raw %];
|
||||
|
||||
let supplier_report_column = table_settings.columns.find(c => c.columnname == 'supplier_report');
|
||||
[% IF !(Koha.Preference('EDIFACT') && ediaccount) %]
|
||||
table_settings.columns.find(c => c.columnname == 'supplier_report').is_hidden = 1;
|
||||
table_settings.columns.find(c => c.columnname == 'supplier_report').cannot_be_toggled = 1;
|
||||
supplier_report_column.is_hidden = 1;
|
||||
supplier_report_column.cannot_be_toggled = 1;
|
||||
[% ELSE %]
|
||||
table_settings.columns.find(c => c.columnname == 'supplier_report').is_hidden = 0;
|
||||
supplier_report_column.is_hidden = 0;
|
||||
[% END %]
|
||||
supplier_report_column.force_visibility = 1;
|
||||
|
||||
let modify_column = table_settings.columns.find(c => c.columnname == 'modify');
|
||||
[% IF ( active && !closedate ) %]
|
||||
table_settings.columns.find(c => c.columnname == 'modify').is_hidden = 0;
|
||||
modify_column.is_hidden = 0;
|
||||
[% ELSE %]
|
||||
table_settings.columns.find(c => c.columnname == 'modify').is_hidden = 1;
|
||||
table_settings.columns.find(c => c.columnname == 'modify').cannot_be_toggled = 1;
|
||||
modify_column.is_hidden = 1;
|
||||
modify_column.cannot_be_toggled = 1;
|
||||
[% END %]
|
||||
modify_column.force_visibility = 1;
|
||||
|
||||
let cancel_column = table_settings.columns.find(c => c.columnname == 'cancel');
|
||||
[% IF !closedate || Koha.Preference('CancelOrdersInClosedBaskets') %]
|
||||
table_settings.columns.find(c => c.columnname == 'cancel').is_hidden = 0;
|
||||
cancel_column.is_hidden = 0;
|
||||
[% ELSE %]
|
||||
table_settings.columns.find(c => c.columnname == 'cancel').is_hidden = 1;
|
||||
table_settings.columns.find(c => c.columnname == 'cancel').cannot_be_toggled = 1;
|
||||
cancel_column.is_hidden = 1;
|
||||
cancel_column.cannot_be_toggled = 1;
|
||||
[% END %]
|
||||
cancel_column.force_visibility = 1;
|
||||
|
||||
$("#orders").kohaTable({
|
||||
bKohaColumnsUseNames: true,
|
||||
|
|
|
|||
|
|
@ -950,6 +950,39 @@ function _dt_buttons(params) {
|
|||
return buttons;
|
||||
}
|
||||
|
||||
function _dt_force_visibility(table_settings, table_dt, state) {
|
||||
var columns_settings = table_settings.columns;
|
||||
let i = 0;
|
||||
let use_names = $(table_dt.table().node()).data("bKohaColumnsUseNames");
|
||||
if (use_names) {
|
||||
let force_vis_columns = table_settings.columns.filter(
|
||||
c => c.force_visibility
|
||||
);
|
||||
if (!force_vis_columns.length) return state;
|
||||
table_dt
|
||||
.columns(
|
||||
force_vis_columns
|
||||
.map(c => "[data-colname='%s']".format(c.columnname))
|
||||
.join(",")
|
||||
)
|
||||
.every(function () {
|
||||
state.columns[this.index()].visible =
|
||||
table_settings.columns.find(
|
||||
c =>
|
||||
c.columnname ==
|
||||
this.header().getAttribute("data-colname")
|
||||
).is_hidden
|
||||
? false
|
||||
: true;
|
||||
});
|
||||
} else {
|
||||
throw new Error(
|
||||
"Cannot force column visibility without bKohaColumnsUseNames!"
|
||||
);
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
function _dt_visibility(table_settings, table_dt) {
|
||||
let hidden_ids = [];
|
||||
if (table_settings) {
|
||||
|
|
@ -1183,6 +1216,9 @@ function _dt_save_restore_state(table_settings, external_filter_nodes = {}) {
|
|||
delete state.search;
|
||||
state.columns.forEach(c => delete c.search);
|
||||
}
|
||||
|
||||
state = _dt_force_visibility(table_settings, this.api(), state);
|
||||
|
||||
return state;
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue