Koha/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js
Owen Leonard 769556b42a Bug 27998: (follow-up) Address missing instances
Remove title-string option from dataTable configurations.

Signed-off-by: Katrin Fischer <katrin.fischer.83@web.de>

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
2021-04-06 15:56:31 +02:00

729 lines
23 KiB
JavaScript

/* global __ irregularity more_than_one_serial subscriptionid tags interface theme mana_enabled MSG_FREQUENCY_LENGTH_ERROR MSG_BIBLIO_NOT_EXIST */
var globalnumpatterndata;
var globalfreqdata;
var mananumpatterndata;
var manafreqdata;
var manaid;
var advancedpatternlocked;
var patternneedtobetested = 0;
if ( irregularity !== "" ){
patternneedtobetested = 1;
}
function check_issues(){
if (globalfreqdata.unit.length >0) {
if (document.f.subtype.value == globalfreqdata.unit){
document.f.issuelengthcount.value=(document.f.sublength.value*globalfreqdata.issuesperunit)/globalfreqdata.unitsperissue;
} else if (document.f.subtype.value != "issues"){
alert( MSG_FREQUENCY_LENGTH_ERROR );
}
}
}
function addbiblioPopup(biblionumber) {
var destination = "/cgi-bin/koha/cataloguing/addbiblio.pl?mode=popup";
if(biblionumber){
destination += "&biblionumber="+biblionumber;
}
window.open(destination,'AddBiblioPopup','width=1024,height=768,toolbar=no,scrollbars=yes');
}
function Plugin(){
window.open('subscription-bib-search.pl','FindABibIndex','width=800,height=400,toolbar=no,scrollbars=yes');
}
function FindAcqui(){
window.open('acqui-search.pl','FindASupplier','width=800,height=400,toolbar=no,scrollbars=yes');
}
function Find_ISSN(f){
window.open('issn-search.pl','FindABibIndex','width=800,height=400,toolbar=no,scrollbars=yes');
}
function Clear(id) {
$("#"+id).val('');
}
function Check_page1() {
var bookseller_id = $("#aqbooksellerid").val();
if ( bookseller_id.length == 0) {
input_box = confirm( MSG_LINK_TO_VENDOR );
if (input_box==false) {
return false;
}
} else {
var bookseller_ids = BOOKSELLER_IDS;
if ( $.inArray(Number(bookseller_id), bookseller_ids) == -1 ) {
alert ( __("The vendor does not exist") );
return false;
}
}
var biblionumber = $("#biblionumber").val()
if ( biblionumber.length == 0 ) {
alert( MSG_LINK_BIBLIO );
return false;
}
var bib_exists = $("input[name='title']").val().length;
if (!bib_exists) alert(MSG_BIBLIO_NOT_EXIST);
return bib_exists;
}
function Check_page2(){
if( more_than_one_serial == "" ){
if($("#acqui_date").val().length == 0){
alert( MSG_REQUIRED_PUB_DATE );
return false;
}
}
if($("#sublength").val().length == 0 && $("input[name='enddate']").val().length == 0){
alert( MSG_REQUIRED_SUB_LENGTH );
return false;
}
if(advancedpatternlocked == 0){
alert( MSG_SAVE_PREDICTION_PATTERN );
return false;
}
if(patternneedtobetested){
if( irregularity !== "" ){
alert( MSG_PATTERN_IRREG );
} else {
alert( MSG_TEST_PREDICTION );
}
return false;
}
return true;
}
function frequencyload(){
if ($("#frequency option:selected").val() === "mana"){
globalfreqdata=manafreqdata;
$("input[name='sfdescription']").val(manafreqdata.description);
$("input[name='unit']").val(manafreqdata.unit);
$("input[name='unitsperissue']").val(manafreqdata.unitsperissue);
$("input[name='issuesperunit']").val(manafreqdata.issuesperunit);
if ($( "#numberpattern option:selected" ).val() === "mana" ) {
$("#mana_id").val(manaid);
}
} else {
$.getJSON("subscription-frequency.pl",{"frequency_id":document.f.frequency.value,ajax:'true'},
function(freqdata){
globalfreqdata=freqdata;
if ( globalfreqdata.unit && globalfreqdata.unit.length == 0 ) {
var option = $("#subtype option[value='issues']");
$(option).attr('selected', 'selected');
$("#subtype option[value!='issues']").prop('disabled', true);
} else {
$("#subtype option").prop('disabled', false);
}
}
);
$("#mana_id").val("");
}
}
function numberpatternload(){
if($("#numberpattern option:selected" ).val() === "mana"){
globalnumpatterndata=mananumpatterndata;
$("input[name='sndescription']").val(mananumpatterndata.description);
if($("#frequency option:selected" ).val() === "mana"){
$("#mana_id").val(manaid);
}
if (globalnumpatterndata==undefined){
return false;
}
displaymoreoptions();
restoreAdvancedPattern();
} else {
$.getJSON("subscription-numberpattern.pl",{"numberpattern_id":document.f.numbering_pattern.value,ajax:'true'},
function(numpatterndata){
globalnumpatterndata=numpatterndata;
if (globalnumpatterndata==undefined){
return false;
}
displaymoreoptions();
restoreAdvancedPattern();
}
);
$("#mana_id").val("");
}
}
function displaymoreoptions() {
if(globalnumpatterndata == undefined){
$("#moreoptionst").hide();
return false;
}
var X = 0, Y = 0, Z = 0;
var numberingmethod = globalnumpatterndata.numberingmethod;
if(numberingmethod.match(/{X}/)) X = 1;
if(numberingmethod.match(/{Y}/)) Y = 1;
if(numberingmethod.match(/{Z}/)) Z = 1;
if(X || Y || Z) {
$("#moreoptionst").show();
} else {
$("#moreoptionst").hide();
}
if(X) {
if(globalnumpatterndata.label1) {
$("#headerX").html(globalnumpatterndata.label1);
} else {
$("#headerX").html("X");
}
$("#headerX").show();
$("#beginsX").show();
$("#innerX").show();
} else {
$("#headerX").hide();
$("#beginsX").hide();
$("#innerX").hide();
$("#lastvaluetemp1").val('');
$("#innerlooptemp1").val('');
}
if(Y) {
if(globalnumpatterndata.label2) {
$("#headerY").html(globalnumpatterndata.label2);
} else {
$("#headerY").html("Y");
}
$("#headerY").show();
$("#beginsY").show();
$("#innerY").show();
} else {
$("#headerY").hide();
$("#beginsY").hide();
$("#innerY").hide();
$("#lastvaluetemp2").val('');
$("#innerlooptemp2").val('');
}
if(Z) {
if(globalnumpatterndata.label3) {
$("#headerZ").html(globalnumpatterndata.label3);
} else {
$("#headerZ").html("Z");
}
$("#headerZ").show();
$("#beginsZ").show();
$("#innerZ").show();
} else {
$("#headerZ").hide();
$("#beginsZ").hide();
$("#innerZ").hide();
$("#lastvaluetemp3").val('');
$("#innerlooptemp3").val('');
}
}
function modifyAdvancedPattern() {
$("#patternname").prop('readOnly', false).val('').focus();
$("#numberingmethod").prop('readOnly', false);
$("#advancedpredictionpatternt input").each(function() {
$(this).prop('readOnly', false);
});
$("#advancedpredictionpatternt select").each(function() {
$(this).prop('disabled', false);
});
$("#restoreadvancedpatternbutton").show();
$("#saveadvancedpatternbutton").show();
$("#modifyadvancedpatternbutton").hide();
advancedpatternlocked = 0;
}
function restoreAdvancedPattern() {
$("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
$("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
$("#advancedpredictionpatternt input").each(function() {
$(this).prop('readOnly', true);
var id = $(this).attr('id');
if(id.match(/lastvalue/) || id.match(/innerloop/)) {
var tempid = id.replace(/(\d)/, "temp$1");
$(this).val($("#"+tempid).val());
} else {
$(this).val(globalnumpatterndata[id]);
}
});
$("#advancedpredictionpatternt select").each(function() {
$(this).prop('disabled', true);
var id = $(this).attr('id');
$(this).val(globalnumpatterndata[id]);
});
$("#restoreadvancedpatternbutton").hide();
$("#saveadvancedpatternbutton").hide();
$("#modifyadvancedpatternbutton").show();
advancedpatternlocked = 1;
}
function testPredictionPattern() {
var frequencyid = $("#frequency").val();
var acquidate;
var error = 0;
var error_msg = "";
if(frequencyid == undefined || frequencyid == ""){
error_msg += "- " + MSG_FREQUENCY_UNDEFINED + "\n";
error ++;
}
acquidate = $("#acqui_date").val();
if(acquidate == undefined || acquidate == ""){
error_msg += "-" + MSG_PUB_DATE_UNDEFINED + "\n";
error ++;
}
if( more_than_one_serial !== "" ){
var nextacquidate = $("#nextacquidate").val();
if(nextacquidate == undefined || nextacquidate == ""){
error_msg += "-" + MSG_NEXT_ISSUE_UNDEFINED + "\n";
error ++;
}
}
if(error){
alert( MSG_PATTERN_TEST_FAILED.format(error_msg) );
return false;
}
var custompattern = 0;
if(advancedpatternlocked == 0) {
custompattern = 1;
}
var ajaxData = {
'custompattern': custompattern,
'firstacquidate': acquidate
};
if( subscriptionid !== "" ){
ajaxData.subscriptionid = subscriptionid;
}
if( more_than_one_serial !== "" ){
ajaxData.nextacquidate = nextacquidate;
}
var ajaxParams = [
'to', 'subtype', 'sublength', 'frequency', 'numberingmethod',
'lastvalue1', 'lastvalue2', 'lastvalue3', 'add1', 'add2', 'add3',
'every1', 'every2', 'every3', 'innerloop1', 'innerloop2', 'innerloop3',
'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale',
'sfdescription', 'unitsperissue', 'issuesperunit', 'unit'
];
for(i in ajaxParams) {
var param = ajaxParams[i];
var value = $("#"+param).val();
if(value.length > 0)
ajaxData[param] = value;
}
$.ajax({
url:"/cgi-bin/koha/serials/showpredictionpattern.pl",
data: ajaxData,
success: function(data) {
showPredictionPatternTest( data );
patternneedtobetested = 0;
}
});
}
function saveAdvancedPattern() {
if ($("#patternname").val().length == 0) {
alert( MSG_PATTERN_NAME );
return false;
}
// Check if patternname already exists, and modify pattern
// instead of creating it if so
var found = 0;
$("#numberpattern option").each(function(){
if($(this).text() == $("#patternname").val()){
found = 1;
return false;
}
});
var cnfrm = 1;
if(found){
var msg = MSG_PATTERN_NAME_EXISTS
+ "\n" + MSG_OVERWRITE_PATTERNS;
cnfrm = confirm(msg);
}
if(cnfrm) {
var ajaxData = {};
var ajaxParams = [
'patternname', 'numberingmethod', 'label1', 'label2', 'label3',
'add1', 'add2', 'add3', 'every1', 'every2', 'every3',
'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale'
];
for(i in ajaxParams) {
var param = ajaxParams[i];
var value = $("#"+param).val();
if(value.length > 0)
ajaxData[param] = value;
}
$.getJSON(
"/cgi-bin/koha/serials/create-numberpattern.pl",
ajaxData,
function(data){
if (data.numberpatternid) {
if(found == 0){
$("#numberpattern").append("<option value=\""+data.numberpatternid+"\">"+$("#patternname").val()+"</option>");
}
$("#numberpattern").val(data.numberpatternid);
numberpatternload();
} else {
alert( MSG_PATTERN_CREATE_FAILED );
}
}
);
}
}
function show_page_1() {
$("#page_1").show();
$("#page_2").hide();
$("#page_number").text("1/2");
}
function show_page_2() {
$("#page_1").hide();
$("#page_2").show();
$("#page_number").text("2/2");
displaymoreoptions();
}
function mana_search() {
$("#mana_search").html("<p>" + MSG_MANA_SEARCHING + "... <img src='" + interface + "/" + theme + "/img/spinner-small.gif' /></p>");
$("#mana_search").show();
$.ajax({
type: "POST",
url: "/cgi-bin/koha/svc/mana/search",
data: {id: $("#biblionumber").val(), resource: 'subscription', usecomments: 1},
dataType: "html",
})
.done( function( result ) {
$("#mana_search_result .modal-body").html(result);
$("#mana_search_result_label").text( MSG_MANA_RESULTS );
$("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults, {
"sPaginationType": "full",
"order":[[4, "desc"], [5, "desc"]],
"autoWidth": false,
"columnDefs": [
{ "width": "35%", "targets": 1 }
],
"aoColumnDefs": [
{ 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
{ 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
]
}));
if( $("#mana_results_datatable").length && $("td.dataTables_empty").length == 0){
$("#mana_search").html("<p>" + MSG_MANA_SUBSCRIPTION_FOUND + "</p><p> <a href=\"#\" data-toggle=\"modal\" data-target=\"#mana_search_result\"><i class=\"fa fa-window-maximize\"></i> " + MSG_MANA_SHOW_DETAILS + "</a></p>");
}
else if ( $("#mana_results_datatable").length ){
$("#mana_search").html("<p>" + MSG_MANA_NO_SUBSCRIPTION_FOUND + "</p><p>" + MSG_MANA_SHARE_PATTERN + "</p>");
}
else{
$("#mana_search").html( result );
}
$("#mana_search").show();
});
}
function mana_use(mana_id){
$("tr").removeClass("selected");
$("#row"+mana_id).addClass("selected");
$.ajax( {
type: "POST",
url: "/cgi-bin/koha/svc/mana/use",
data: {id: mana_id, resource: 'subscription'},
dataType: "json",
})
.done(function(result){
var select = document.getElementById('numberpattern');
for(i = 0; i < select.length; i++){
if(select[i].value === "mana"){
select.remove(i);
}
}
var optionnumpattern = document.createElement("option");
optionnumpattern.text = result.label + " (mana)";
optionnumpattern.selected = true;
optionnumpattern.value="mana";
select.add(optionnumpattern);
mananumpatterndata = {
id:"mana",
add1:result.add1,
add2:result.add2,
add3:result.add3,
description:result.sndescription,
displayorder:result.displayorder,
every1:result.every1,
every2:result.every2,
every3:result.every3,
label:result.label,
label1:result.label1,
label2:result.label2,
label3:result.label3,
numbering1:result.numbering1,
numbering2:result.numbering2,
numbering3:result.numbering3,
numberingmethod:result.numberingmethod,
setto1:result.setto1,
setto2:result.setto2,
setto3:result.setto3,
whenmorethan1:result.whenmorethan1,
whenmorethan2:result.whenmorethan2,
whenmorethan3:result.whenmorethan3,
};
select = document.getElementById("frequency");
for(i = 0; i < select.length; i++){
if(select[i].value === "mana"){
select.remove(i);
}
}
var optionfreq = document.createElement("option");
optionfreq.text = result.sfdescription + " (mana)";
optionfreq.selected = true;
optionfreq.value="mana";
select.add(optionfreq);
manafreqdata = {
id:"mana",
description:result.sfdescription,
displayorder:result.displayorder,
issuesperunit:result.issuesperunit,
unit:result.unit,
unitsperissue:result.unitsperissue,
};
manaid = result.id;
$("#mana_id").val(manaid);
$("#mana_search_result").modal("hide");
frequencyload();
numberpatternload();
})
.done( function(){
$("tr").removeClass("selected");
$(".mana-use i").attr("class","fa fa-download");
})
.fail( function( result ){
});
}
function mana_comment_close(){
$("#selected_id").val("");
$("#mana-resource-id").val("");
$("#mana-comment").val("");
$("#mana_results").show();
$("#new_mana_comment").hide();
}
function showPredictionPatternTest( data ){
$("#displayexample").html(data).show();
$("#page_2 > div").attr("class","col-xs-6");
}
function hidePredcitionPatternTest(){
$("#displayexample").hide();
$("#page_2 > div").attr("class","col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2");
}
$(document).ready(function() {
if ( mana_enabled == 1 ) {
mana_search();
}
$("#displayexample").hide();
// When Mana search results modal is hidden, hide comment form and any status messages
$("#mana_search_result").on("hide.bs.modal", function(){
$("#mana_results").show();
$("#new_mana_comment").hide();
$(".mana_comment_status").hide();
});
$("#aqbooksellerid").on('keypress', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
FindAcqui();
}
});
$("#biblionumber").on('keypress', function(e) {
if (e.keyCode == 13) {
e.preventDefault();
Plugin();
}
});
$("select#frequency").change(function(){
patternneedtobetested = 1;
$("input[name='enddate']").val('');
frequencyload();
});
$("select#numberpattern").change(function(){
patternneedtobetested = 1;
numberpatternload();
});
$("#subtype").change(function(){
$("input[name='enddate']").val('');
});
$("#sublength").change(function(){
$("input[name='enddate']").val('');
});
$("#lastvaluetemp1").keyup(function(){
$("#lastvalue1").val($(this).val());
});
$("#lastvaluetemp2").keyup(function(){
$("#lastvalue2").val($(this).val());
});
$("#lastvaluetemp3").keyup(function(){
$("#lastvalue3").val($(this).val());
});
$("#lastvalue1").keyup(function(){
$("#lastvaluetemp1").val($(this).val());
});
$("#lastvalue2").keyup(function(){
$("#lastvaluetemp2").val($(this).val());
});
$("#lastvalue3").keyup(function(){
$("#lastvaluetemp3").val($(this).val());
});
$("#innerlooptemp1").keyup(function(){
$("#innerloop1").val($(this).val());
});
$("#innerlooptemp2").keyup(function(){
$("#innerloop2").val($(this).val());
});
$("#innerlooptemp3").keyup(function(){
$("#innerloop3").val($(this).val());
});
$("#innerloop1").keyup(function(){
$("#innerlooptemp1").val($(this).val());
});
$("#innerloop2").keyup(function(){
$("#innerlooptemp2").val($(this).val());
});
$("#innerloop3").keyup(function(){
$("#innerlooptemp3").val($(this).val());
});
if($("#frequency").val() != ""){
frequencyload();
}
if($("#numberpattern").val() != ""){
numberpatternload();
}
if( tags.length > 0 ){
tags.forEach( function( item ) {
var node = $("[name='" + item + "']");
if ( $(node).is('input') || $(node).is('textarea') ) {
$(node).val("");
} else if ( $(node).is('select') ) {
$(node).find("option:first").attr('selected','selected');
}
});
}
$("#mana_search").hide();
show_page_1();
$("#subscription_add_form").on("submit",function(){
return Check_page2();
});
$("#vendor_search").on("click",function(e){
e.preventDefault();
FindAcqui();
});
$("#record_search").on("click",function(e){
e.preventDefault();
Plugin();
});
$("#biblio_add_edit").on("click",function(e){
e.preventDefault();
if( $(this).data("biblionumber") ){
addbiblioPopup( $(this).data("biblionumber") );
} else {
addbiblioPopup();
}
});
$("#subscription_add_next").on("click",function(){
if ( Check_page1() ){
if ( mana_enabled == 1 ) {
mana_search();
}
show_page_2();
}
});
$("#subscription_add_previous").on("click",function(){
show_page_1();
});
$(".toggle_advanced_pattern").on("click",function(e){
e.preventDefault();
$("#advancedpredictionpattern").toggle();
$(".toggle_advanced_pattern").toggle();
});
$("#modifyadvancedpatternbutton").on("click",function(e){
e.preventDefault();
modifyAdvancedPattern();
});
$("#restoreadvancedpatternbutton").on("click",function(e){
e.preventDefault();
restoreAdvancedPattern();
});
$("#saveadvancedpatternbutton").on("click",function(e){
e.preventDefault();
saveAdvancedPattern();
});
$("#testpatternbutton").on("click",function(e){
e.preventDefault();
testPredictionPattern();
});
$('#save-subscription').on("click", function(e){
$('select:disabled').removeAttr('disabled');
});
$("body").on("click", ".mana-use", function(e) {
e.preventDefault();
$(this).find("i").attr("class","fa fa-refresh fa-spin");
var subscription_id = $(this).data("subscription_id");
mana_use( subscription_id );
});
$("#displayexample").on("click", "#hidepredictionpattern", function(e){
e.preventDefault();
hidePredcitionPatternTest();
});
$("#biblionumber").on("change", function(){
var biblionumber = $(this).val();
$.ajax({
url: "/api/v1/biblios/" + biblionumber,
type: "GET",
headers: {
Accept: "application/json",
},
contentType: "application/json",
success: function (biblio) {
$("input[name='title']").val(biblio['title']);
$("#error_bib_not_exist").html("");
},
error: function (x) {
$("input[name='title']").val('');
$("#error_bib_not_exist").html("This bibliographic record does not exist");
}
});
});
});