Koha/koha-tmpl/intranet-tmpl/prog/js/subscription-add.js
Owen Leonard 247dca3064
Bug 23013: Upgrade DataTables in the staff client
This patch upgrades DataTables and makes some style changes to the
default DataTables toolbar style. DataTables assets are now combined and
minified using their download customizer, bundling together these
elements:

 - JSZip 2.5.0
 - pdfmake 0.1.36
 - DataTables 1.10.18
 - Buttons 1.5.6
 - Column visibility 1.5.6
 - HTML5 export 1.5.6
 - Print view 1.5.6
 - FixedHeader 3.1.4

DataTables assets have been moved from lib/jquery/plugins to
lib/datatables. The global header and footer include files are updated
correspondingly.

This patch removes the custom "four_button" pagination configuration and
updates pages which used it to use the built-in "full" type instead.
This is done for the sake of consistency and upgradability. This change
touches a lot of files.

Table-specific CSS has been moved from staff-global.scss to a new
include, _tables.scss. A second common include, _mixins.scss has some
variable definitions used in both files.

Many images have been made obsolete by this change and have been
removed.

To test, apply the patch and regenerate the staff client CSS. View
various pages in the staff client with tables:

 - Not formatted by DataTables:
   - Reports -> Most circulated items
   - Catalog -> Search results
 - Formatted by DataTables without column configuration
   - Acquisitions -> Vendor search
   - Lists
 - Formatted by DataTables with column configuration
   - Administration -> Libraries
   - Administration -> Item types
   - Reports -> Saved SQL reports
 - Non-standard DataTables configurations:
   - Circulation -> Checkouts
   - Administration -> System preferences
   - Reports -> Lost items

Signed-off-by: Jonathan Druart <jonathan.druart@bugs.koha-community.org>
Signed-off-by: Martin Renvoize <martin.renvoize@ptfs-europe.com>
2019-08-22 15:23:19 +01:00

697 lines
22 KiB
JavaScript

/* global _ irregularity more_than_one_serial subscriptionid tags interface theme mana_enabled MSG_FREQUENCY_LENGTH_ERROR */
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() {
if ( $("#aqbooksellerid").val().length == 0) {
input_box = confirm( MSG_LINK_TO_VENDOR );
if (input_box==false) {
return false;
}
}
if ($("#biblionumber").val().length == 0) {
alert( MSG_LINK_BIBLIO );
return false;
}
return true;
}
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": "title-string", "aTargets" : [ "title-string" ] },
{ '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();
});
});