1 /* global _ irregularity more_than_one_serial subscriptionid tags interface theme mana_enabled MSG_FREQUENCY_LENGTH_ERROR MSG_BIBLIO_NOT_EXIST */
3 var globalnumpatterndata;
5 var mananumpatterndata;
8 var advancedpatternlocked;
9 var patternneedtobetested = 0;
10 if ( irregularity !== "" ){
11 patternneedtobetested = 1;
14 function check_issues(){
15 if (globalfreqdata.unit.length >0) {
16 if (document.f.subtype.value == globalfreqdata.unit){
17 document.f.issuelengthcount.value=(document.f.sublength.value*globalfreqdata.issuesperunit)/globalfreqdata.unitsperissue;
18 } else if (document.f.subtype.value != "issues"){
19 alert( MSG_FREQUENCY_LENGTH_ERROR );
24 function addbiblioPopup(biblionumber) {
25 var destination = "/cgi-bin/koha/cataloguing/addbiblio.pl?mode=popup";
27 destination += "&biblionumber="+biblionumber;
29 window.open(destination,'AddBiblioPopup','width=1024,height=768,toolbar=no,scrollbars=yes');
33 window.open('subscription-bib-search.pl','FindABibIndex','width=800,height=400,toolbar=no,scrollbars=yes');
37 window.open('acqui-search.pl','FindASupplier','width=800,height=400,toolbar=no,scrollbars=yes');
40 function Find_ISSN(f){
41 window.open('issn-search.pl','FindABibIndex','width=800,height=400,toolbar=no,scrollbars=yes');
48 function Check_page1() {
49 var bookseller_id = $("#aqbooksellerid").val();
50 if ( bookseller_id.length == 0) {
51 input_box = confirm( MSG_LINK_TO_VENDOR );
52 if (input_box==false) {
56 var bookseller_ids = BOOKSELLER_IDS;
57 if ( $.inArray(Number(bookseller_id), bookseller_ids) == -1 ) {
58 alert ("The vendor does not exist");
63 var biblionumber = $("#biblionumber").val()
64 if ( biblionumber.length == 0 ) {
65 alert( MSG_LINK_BIBLIO );
69 var bib_exists = $("input[name='title']").val().length;
71 if (!bib_exists) alert(MSG_BIBLIO_NOT_EXIST);
75 function Check_page2(){
76 if( more_than_one_serial == "" ){
77 if($("#acqui_date").val().length == 0){
78 alert( MSG_REQUIRED_PUB_DATE );
82 if($("#sublength").val().length == 0 && $("input[name='enddate']").val().length == 0){
83 alert( MSG_REQUIRED_SUB_LENGTH );
86 if(advancedpatternlocked == 0){
87 alert( MSG_SAVE_PREDICTION_PATTERN );
90 if(patternneedtobetested){
91 if( irregularity !== "" ){
92 alert( MSG_PATTERN_IRREG );
94 alert( MSG_TEST_PREDICTION );
102 function frequencyload(){
103 if ($("#frequency option:selected").val() === "mana"){
104 globalfreqdata=manafreqdata;
105 $("input[name='sfdescription']").val(manafreqdata.description);
106 $("input[name='unit']").val(manafreqdata.unit);
107 $("input[name='unitsperissue']").val(manafreqdata.unitsperissue);
108 $("input[name='issuesperunit']").val(manafreqdata.issuesperunit);
109 if ($( "#numberpattern option:selected" ).val() === "mana" ) {
110 $("#mana_id").val(manaid);
113 $.getJSON("subscription-frequency.pl",{"frequency_id":document.f.frequency.value,ajax:'true'},
115 globalfreqdata=freqdata;
116 if ( globalfreqdata.unit && globalfreqdata.unit.length == 0 ) {
117 var option = $("#subtype option[value='issues']");
118 $(option).attr('selected', 'selected');
119 $("#subtype option[value!='issues']").prop('disabled', true);
121 $("#subtype option").prop('disabled', false);
125 $("#mana_id").val("");
129 function numberpatternload(){
130 if($("#numberpattern option:selected" ).val() === "mana"){
131 globalnumpatterndata=mananumpatterndata;
132 $("input[name='sndescription']").val(mananumpatterndata.description);
133 if($("#frequency option:selected" ).val() === "mana"){
134 $("#mana_id").val(manaid);
136 if (globalnumpatterndata==undefined){
139 displaymoreoptions();
140 restoreAdvancedPattern();
142 $.getJSON("subscription-numberpattern.pl",{"numberpattern_id":document.f.numbering_pattern.value,ajax:'true'},
143 function(numpatterndata){
144 globalnumpatterndata=numpatterndata;
145 if (globalnumpatterndata==undefined){
148 displaymoreoptions();
149 restoreAdvancedPattern();
152 $("#mana_id").val("");
156 function displaymoreoptions() {
157 if(globalnumpatterndata == undefined){
158 $("#moreoptionst").hide();
162 var X = 0, Y = 0, Z = 0;
163 var numberingmethod = globalnumpatterndata.numberingmethod;
164 if(numberingmethod.match(/{X}/)) X = 1;
165 if(numberingmethod.match(/{Y}/)) Y = 1;
166 if(numberingmethod.match(/{Z}/)) Z = 1;
169 $("#moreoptionst").show();
171 $("#moreoptionst").hide();
175 if(globalnumpatterndata.label1) {
176 $("#headerX").html(globalnumpatterndata.label1);
178 $("#headerX").html("X");
180 $("#headerX").show();
181 $("#beginsX").show();
184 $("#headerX").hide();
185 $("#beginsX").hide();
187 $("#lastvaluetemp1").val('');
188 $("#innerlooptemp1").val('');
191 if(globalnumpatterndata.label2) {
192 $("#headerY").html(globalnumpatterndata.label2);
194 $("#headerY").html("Y");
196 $("#headerY").show();
197 $("#beginsY").show();
200 $("#headerY").hide();
201 $("#beginsY").hide();
203 $("#lastvaluetemp2").val('');
204 $("#innerlooptemp2").val('');
207 if(globalnumpatterndata.label3) {
208 $("#headerZ").html(globalnumpatterndata.label3);
210 $("#headerZ").html("Z");
212 $("#headerZ").show();
213 $("#beginsZ").show();
216 $("#headerZ").hide();
217 $("#beginsZ").hide();
219 $("#lastvaluetemp3").val('');
220 $("#innerlooptemp3").val('');
224 function modifyAdvancedPattern() {
225 $("#patternname").prop('readOnly', false).val('').focus();
226 $("#numberingmethod").prop('readOnly', false);
228 $("#advancedpredictionpatternt input").each(function() {
229 $(this).prop('readOnly', false);
231 $("#advancedpredictionpatternt select").each(function() {
232 $(this).prop('disabled', false);
235 $("#restoreadvancedpatternbutton").show();
236 $("#saveadvancedpatternbutton").show();
237 $("#modifyadvancedpatternbutton").hide();
239 advancedpatternlocked = 0;
242 function restoreAdvancedPattern() {
243 $("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
244 $("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
246 $("#advancedpredictionpatternt input").each(function() {
247 $(this).prop('readOnly', true);
248 var id = $(this).attr('id');
249 if(id.match(/lastvalue/) || id.match(/innerloop/)) {
250 var tempid = id.replace(/(\d)/, "temp$1");
251 $(this).val($("#"+tempid).val());
253 $(this).val(globalnumpatterndata[id]);
256 $("#advancedpredictionpatternt select").each(function() {
257 $(this).prop('disabled', true);
258 var id = $(this).attr('id');
259 $(this).val(globalnumpatterndata[id]);
262 $("#restoreadvancedpatternbutton").hide();
263 $("#saveadvancedpatternbutton").hide();
264 $("#modifyadvancedpatternbutton").show();
266 advancedpatternlocked = 1;
269 function testPredictionPattern() {
270 var frequencyid = $("#frequency").val();
274 if(frequencyid == undefined || frequencyid == ""){
275 error_msg += "- " + MSG_FREQUENCY_UNDEFINED + "\n";
278 acquidate = $("#acqui_date").val();
279 if(acquidate == undefined || acquidate == ""){
280 error_msg += "-" + MSG_PUB_DATE_UNDEFINED + "\n";
283 if( more_than_one_serial !== "" ){
284 var nextacquidate = $("#nextacquidate").val();
285 if(nextacquidate == undefined || nextacquidate == ""){
286 error_msg += "-" + MSG_NEXT_ISSUE_UNDEFINED + "\n";
292 alert( MSG_PATTERN_TEST_FAILED.format(error_msg) );
296 var custompattern = 0;
297 if(advancedpatternlocked == 0) {
302 'custompattern': custompattern,
303 'firstacquidate': acquidate
306 if( subscriptionid !== "" ){
307 ajaxData.subscriptionid = subscriptionid;
309 if( more_than_one_serial !== "" ){
310 ajaxData.nextacquidate = nextacquidate;
315 'to', 'subtype', 'sublength', 'frequency', 'numberingmethod',
316 'lastvalue1', 'lastvalue2', 'lastvalue3', 'add1', 'add2', 'add3',
317 'every1', 'every2', 'every3', 'innerloop1', 'innerloop2', 'innerloop3',
318 'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
319 'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale',
320 'sfdescription', 'unitsperissue', 'issuesperunit', 'unit'
322 for(i in ajaxParams) {
323 var param = ajaxParams[i];
324 var value = $("#"+param).val();
326 ajaxData[param] = value;
330 url:"/cgi-bin/koha/serials/showpredictionpattern.pl",
332 success: function(data) {
333 showPredictionPatternTest( data );
334 patternneedtobetested = 0;
339 function saveAdvancedPattern() {
340 if ($("#patternname").val().length == 0) {
341 alert( MSG_PATTERN_NAME );
345 // Check if patternname already exists, and modify pattern
346 // instead of creating it if so
348 $("#numberpattern option").each(function(){
349 if($(this).text() == $("#patternname").val()){
356 var msg = MSG_PATTERN_NAME_EXISTS
357 + "\n" + MSG_OVERWRITE_PATTERNS;
358 cnfrm = confirm(msg);
364 'patternname', 'numberingmethod', 'label1', 'label2', 'label3',
365 'add1', 'add2', 'add3', 'every1', 'every2', 'every3',
366 'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
367 'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale'
369 for(i in ajaxParams) {
370 var param = ajaxParams[i];
371 var value = $("#"+param).val();
373 ajaxData[param] = value;
377 "/cgi-bin/koha/serials/create-numberpattern.pl",
380 if (data.numberpatternid) {
382 $("#numberpattern").append("<option value=\""+data.numberpatternid+"\">"+$("#patternname").val()+"</option>");
384 $("#numberpattern").val(data.numberpatternid);
387 alert( MSG_PATTERN_CREATE_FAILED );
394 function show_page_1() {
397 $("#page_number").text("1/2");
400 function show_page_2() {
403 $("#page_number").text("2/2");
404 displaymoreoptions();
407 function mana_search() {
408 $("#mana_search").html("<p>" + MSG_MANA_SEARCHING + "... <img src='" + interface + "/" + theme + "/img/spinner-small.gif' /></p>");
409 $("#mana_search").show();
413 url: "/cgi-bin/koha/svc/mana/search",
414 data: {id: $("#biblionumber").val(), resource: 'subscription', usecomments: 1},
417 .done( function( result ) {
418 $("#mana_search_result .modal-body").html(result);
419 $("#mana_search_result_label").text( MSG_MANA_RESULTS );
420 $("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults, {
421 "sPaginationType": "full",
422 "order":[[4, "desc"], [5, "desc"]],
425 { "width": "35%", "targets": 1 }
428 { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
429 { "sType": "title-string", "aTargets" : [ "title-string" ] },
430 { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
433 if( $("#mana_results_datatable").length && $("td.dataTables_empty").length == 0){
434 $("#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>");
436 else if ( $("#mana_results_datatable").length ){
437 $("#mana_search").html("<p>" + MSG_MANA_NO_SUBSCRIPTION_FOUND + "</p><p>" + MSG_MANA_SHARE_PATTERN + "</p>");
440 $("#mana_search").html( result );
442 $("#mana_search").show();
446 function mana_use(mana_id){
447 $("tr").removeClass("selected");
448 $("#row"+mana_id).addClass("selected");
451 url: "/cgi-bin/koha/svc/mana/use",
452 data: {id: mana_id, resource: 'subscription'},
455 .done(function(result){
456 var select = document.getElementById('numberpattern');
457 for(i = 0; i < select.length; i++){
458 if(select[i].value === "mana"){
462 var optionnumpattern = document.createElement("option");
463 optionnumpattern.text = result.label + " (mana)";
464 optionnumpattern.selected = true;
465 optionnumpattern.value="mana";
466 select.add(optionnumpattern);
468 mananumpatterndata = {
473 description:result.sndescription,
474 displayorder:result.displayorder,
475 every1:result.every1,
476 every2:result.every2,
477 every3:result.every3,
479 label1:result.label1,
480 label2:result.label2,
481 label3:result.label3,
482 numbering1:result.numbering1,
483 numbering2:result.numbering2,
484 numbering3:result.numbering3,
485 numberingmethod:result.numberingmethod,
486 setto1:result.setto1,
487 setto2:result.setto2,
488 setto3:result.setto3,
489 whenmorethan1:result.whenmorethan1,
490 whenmorethan2:result.whenmorethan2,
491 whenmorethan3:result.whenmorethan3,
493 select = document.getElementById("frequency");
494 for(i = 0; i < select.length; i++){
495 if(select[i].value === "mana"){
499 var optionfreq = document.createElement("option");
500 optionfreq.text = result.sfdescription + " (mana)";
501 optionfreq.selected = true;
502 optionfreq.value="mana";
503 select.add(optionfreq);
506 description:result.sfdescription,
507 displayorder:result.displayorder,
508 issuesperunit:result.issuesperunit,
510 unitsperissue:result.unitsperissue,
513 $("#mana_id").val(manaid);
514 $("#mana_search_result").modal("hide");
519 $("tr").removeClass("selected");
520 $(".mana-use i").attr("class","fa fa-download");
522 .fail( function( result ){
526 function mana_comment_close(){
527 $("#selected_id").val("");
528 $("#mana-resource-id").val("");
529 $("#mana-comment").val("");
530 $("#mana_results").show();
531 $("#new_mana_comment").hide();
534 function showPredictionPatternTest( data ){
535 $("#displayexample").html(data).show();
536 $("#page_2 > div").attr("class","col-xs-6");
539 function hidePredcitionPatternTest(){
540 $("#displayexample").hide();
541 $("#page_2 > div").attr("class","col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2");
544 $(document).ready(function() {
545 if ( mana_enabled == 1 ) {
548 $("#displayexample").hide();
550 // When Mana search results modal is hidden, hide comment form and any status messages
551 $("#mana_search_result").on("hide.bs.modal", function(){
552 $("#mana_results").show();
553 $("#new_mana_comment").hide();
554 $(".mana_comment_status").hide();
557 $("#aqbooksellerid").on('keypress', function(e) {
558 if (e.keyCode == 13) {
563 $("#biblionumber").on('keypress', function(e) {
564 if (e.keyCode == 13) {
569 $("select#frequency").change(function(){
570 patternneedtobetested = 1;
571 $("input[name='enddate']").val('');
574 $("select#numberpattern").change(function(){
575 patternneedtobetested = 1;
578 $("#subtype").change(function(){
579 $("input[name='enddate']").val('');
581 $("#sublength").change(function(){
582 $("input[name='enddate']").val('');
584 $("#lastvaluetemp1").keyup(function(){
585 $("#lastvalue1").val($(this).val());
587 $("#lastvaluetemp2").keyup(function(){
588 $("#lastvalue2").val($(this).val());
590 $("#lastvaluetemp3").keyup(function(){
591 $("#lastvalue3").val($(this).val());
593 $("#lastvalue1").keyup(function(){
594 $("#lastvaluetemp1").val($(this).val());
596 $("#lastvalue2").keyup(function(){
597 $("#lastvaluetemp2").val($(this).val());
599 $("#lastvalue3").keyup(function(){
600 $("#lastvaluetemp3").val($(this).val());
603 $("#innerlooptemp1").keyup(function(){
604 $("#innerloop1").val($(this).val());
606 $("#innerlooptemp2").keyup(function(){
607 $("#innerloop2").val($(this).val());
609 $("#innerlooptemp3").keyup(function(){
610 $("#innerloop3").val($(this).val());
612 $("#innerloop1").keyup(function(){
613 $("#innerlooptemp1").val($(this).val());
615 $("#innerloop2").keyup(function(){
616 $("#innerlooptemp2").val($(this).val());
618 $("#innerloop3").keyup(function(){
619 $("#innerlooptemp3").val($(this).val());
622 if($("#frequency").val() != ""){
625 if($("#numberpattern").val() != ""){
629 if( tags.length > 0 ){
630 tags.forEach( function( item ) {
631 var node = $("[name='" + item + "']");
632 if ( $(node).is('input') || $(node).is('textarea') ) {
634 } else if ( $(node).is('select') ) {
635 $(node).find("option:first").attr('selected','selected');
640 $("#mana_search").hide();
643 $("#subscription_add_form").on("submit",function(){
644 return Check_page2();
646 $("#vendor_search").on("click",function(e){
650 $("#record_search").on("click",function(e){
654 $("#biblio_add_edit").on("click",function(e){
656 if( $(this).data("biblionumber") ){
657 addbiblioPopup( $(this).data("biblionumber") );
662 $("#subscription_add_next").on("click",function(){
663 if ( Check_page1() ){
664 if ( mana_enabled == 1 ) {
670 $("#subscription_add_previous").on("click",function(){
673 $(".toggle_advanced_pattern").on("click",function(e){
675 $("#advancedpredictionpattern").toggle();
676 $(".toggle_advanced_pattern").toggle();
678 $("#modifyadvancedpatternbutton").on("click",function(e){
680 modifyAdvancedPattern();
682 $("#restoreadvancedpatternbutton").on("click",function(e){
684 restoreAdvancedPattern();
686 $("#saveadvancedpatternbutton").on("click",function(e){
688 saveAdvancedPattern();
690 $("#testpatternbutton").on("click",function(e){
692 testPredictionPattern();
694 $('#save-subscription').on("click", function(e){
695 $('select:disabled').removeAttr('disabled');
698 $("body").on("click", ".mana-use", function(e) {
700 $(this).find("i").attr("class","fa fa-refresh fa-spin");
701 var subscription_id = $(this).data("subscription_id");
702 mana_use( subscription_id );
705 $("#displayexample").on("click", "#hidepredictionpattern", function(e){
707 hidePredcitionPatternTest();
710 $("#biblionumber").on("change", function(){
711 var biblionumber = $(this).val();
713 url: "/api/v1/biblios/" + biblionumber,
716 Accept: "application/json",
718 contentType: "application/json",
719 success: function (biblio) {
720 $("input[name='title']").val(biblio['title']);
721 $("#error_bib_not_exist").html("");
723 error: function (x) {
724 $("input[name='title']").val('');
725 $("#error_bib_not_exist").html("This bibliographic record does not exist");