Owen Leonard
27a651388d
This patch updates the "Order staged MARC records" page so that the class which is added upon selection is more unique to avoid a collision with some default DataTables styles. These classes are used in JavaScript selectors, not for visual style. The patch also adds some custom CSS variables to global.scss to override the defaults for the DataTables "selected" style, in case this issue crops up again. To test, apply the patch and rebuild the staff interface CSS. Follow the test plan from the bug report: 1) In system preferences, click Search and then select the Acquisitions option from the left hand menu 2) Paste the following into MarcFieldsToOrder price: 975$p quantity: 975$q budget_code: 975$h 3) Paste the following into MarcItemFieldsToOrder homebranch: 949$a holdingbranch: 949$b itype: 949$y nonpublic_note: 949$x public_note: 949$z loc: 949$c ccode: 949$8 notforloan: 949$7 uri: 949$u copyno: 949$t price: 949$g replacementprice: 949$v itemcallnumber: 949$o quantity: 949$k budget_code: 949$l 4) Save the sysprefs 5) Navigate to acquisitions and go into a basket 6) Click "Add to basket" and select "From a new file" 7) Download the file attached to this bug 8) Import the file and when the job is complete click "Add staged files to basket" 9) Click the checkbox next to the record to display the items. - The expanded form should look correct. 10) Add one or more items to the order and confirm that submitting the form works correctly. To test the new default "selected" DataTables style, view a page with a DataTable, e.g. Administration -> Libraries. - Right-click on one of the table rows and choose "Inspect" - Click the table row element, e.g. '<tr class="odd">' - Double-click the class name and replace it with "selected." - The row you inspected should now have a pale green background and text colors should remain the same. Signed-off-by: Matt Blenkinsop <matt.blenkinsop@ptfs-europe.com> Signed-off-by: Lucas Gass <lucas@bywatersolutions.com> Signed-off-by: Katrin Fischer <katrin.fischer@bsz-bw.de>
161 lines
6 KiB
JavaScript
161 lines
6 KiB
JavaScript
/* global dataTablesDefaults __ template_path */
|
|
|
|
$(document).ready(function() {
|
|
$("#Aform").preventDoubleFormSubmit();
|
|
$("#files").dataTable($.extend(true, {}, dataTablesDefaults, {
|
|
"columnDefs": [
|
|
{ "orderable": false, "searchable": false, "targets": [ 'NoSort' ] },
|
|
{ "type": "anti-the", "targets": [ "anti-the" ] }
|
|
],
|
|
"pagingType": "full",
|
|
"order": []
|
|
}) );
|
|
|
|
checkOrderBudgets();
|
|
var all_budget_id = $("#all_budget_id");
|
|
|
|
$("#all_budget_id,[name='budget_id'],.budget_code_item,[name='import_record_id']").on("change", function(){
|
|
checkOrderBudgets();
|
|
});
|
|
|
|
$(".order_details").hide();
|
|
$('input:checkbox[name="import_record_id"]').change(function(){
|
|
var container = $(this).parents("tr");
|
|
if ( $(this).is(':checked') ) {
|
|
$(container).addClass("order-selected");
|
|
$(container).removeClass("order-unselected");
|
|
$(container).find(".order_details").toggle(true);
|
|
} else {
|
|
$(container).addClass("order-unselected");
|
|
$(container).removeClass("order-selected");
|
|
$(container).find(".order_details").toggle(false);
|
|
}
|
|
} );
|
|
|
|
$("input:checkbox").prop("checked", false);
|
|
$("div.biblio.order-unselected select").prop('disabled', false);
|
|
$("div.biblio.order-unselected input").prop('disabled', false);
|
|
|
|
$("#checkAll").click(function(e){
|
|
e.preventDefault();
|
|
$("input:checkbox[name='import_record_id']").prop("checked", true).change();
|
|
});
|
|
$("#unCheckAll").click(function(e){
|
|
e.preventDefault();
|
|
$("input:checkbox[name='import_record_id']").prop("checked", false).change();
|
|
});
|
|
|
|
$("input#add_order").on("click", function(e){
|
|
e.preventDefault();
|
|
|
|
if ( $("input:checkbox[name='import_record_id']:checked").length < 1 ) {
|
|
alert( __("There is no record selected") );
|
|
return false;
|
|
}
|
|
|
|
var error = 0;
|
|
$("input:checkbox[name='import_record_id']:checked").parents('fieldset').find('input[name="quantity"]').each(function(){
|
|
if ( $(this).val().length < 1 || isNaN( $(this).val() ) ) {
|
|
error++;
|
|
}
|
|
});
|
|
if ( error > 0 ) {
|
|
alert(error + " " + __("quantity values are not filled in or are not numbers") );
|
|
return false;
|
|
|
|
}
|
|
|
|
error = checkOrderBudgets();
|
|
if ( error > 0 ) {
|
|
alert( __("Some funds are not defined in item records") );
|
|
return false;
|
|
}
|
|
|
|
if (0 < CheckMandatorySubfields(this.form)) {
|
|
// Open the item tab
|
|
$('.nav-tabs .items_info').tab('show');
|
|
|
|
alert(__('Some required item subfields are not set'));
|
|
return false;
|
|
}
|
|
|
|
disableUnchecked($(this.form));
|
|
|
|
$(this.form).submit();
|
|
});
|
|
|
|
$(".previewData").on("click", function(e){
|
|
e.preventDefault();
|
|
var ltitle = $(this).text();
|
|
var page = $(this).attr("href");
|
|
$("#dataPreviewLabel").text(ltitle);
|
|
$("#dataPreview .modal-body").load(page + " div");
|
|
$('#dataPreview').modal({show:true});
|
|
});
|
|
$("#dataPreview").on("hidden.bs.modal", function(){
|
|
$("#dataPreviewLabel").html("");
|
|
$("#dataPreview .modal-body").html("<div id=\"loading\"><img src=\"" + template_path + "/img/spinner-small.gif\" alt=\"\" /> " + __("Loading") + "</div>");
|
|
});
|
|
});
|
|
|
|
function disableUnchecked(){
|
|
$("fieldset.biblio.order-unselected").each(function(){
|
|
$(this).remove();
|
|
});
|
|
return 1;
|
|
}
|
|
|
|
function checkOrderBudgets(){
|
|
var unset_funds = 0;
|
|
var all_budget_id = $("#all_budget_id");
|
|
// If we don't have an overarching default set we need to check each selected order
|
|
if ( !all_budget_id.val() ) {
|
|
$("fieldset.biblio.rows.order-selected").each(function(){
|
|
var default_order_fund = $(this).find("[name='budget_id']");
|
|
// For each order we see if budget is set for order
|
|
if( !default_order_fund.val() ){
|
|
$(this).find(".item_fund.required").show();
|
|
//If not we need to check each item on the order
|
|
var item_funds = $(this).find(".budget_code_item");
|
|
if( item_funds.length ){
|
|
item_funds.each(function(){
|
|
if( !$(this).val() ){
|
|
$(this).addClass('required').prop("required", true);
|
|
unset_funds++;
|
|
} else {
|
|
$(this).removeClass('required').prop("required", false);
|
|
}
|
|
});
|
|
} else {
|
|
//If the order has no items defined then the order level fund is required
|
|
default_order_fund.addClass('required').prop("required", true);
|
|
$(this).find(".fund span.required").show();
|
|
$(this).find(".item_fund.required").hide();
|
|
unset_funds++;
|
|
}
|
|
} else {
|
|
$(this).find(".fund span.required").hide();
|
|
// If fund is set for order then none of the others are required
|
|
$(this).find(".budget_code_item").each(function(){
|
|
if( !$(this).val() ){
|
|
$(this).val( default_order_fund.val() );
|
|
$(this).removeClass('required').prop("required", false);
|
|
}
|
|
});
|
|
$(this).removeClass('required').prop("required", false);
|
|
}
|
|
});
|
|
} else {
|
|
// Default is set overall, we just need to populate it through
|
|
// to each order/item
|
|
$("[name='budget_id'],.budget_code_item").each(function(){
|
|
if( !$(this).val() ){
|
|
$(this).val( all_budget_id.val() );
|
|
$(this).removeClass('required').prop("required", false);
|
|
$(".item_fund.required").hide();
|
|
$(".fund span.required").hide();
|
|
}
|
|
});
|
|
}
|
|
return unset_funds;
|
|
}
|