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': "anti-the", 'aTargets' : [ 'anti-the'] }
432 if( $("#mana_results_datatable").length && $("td.dataTables_empty").length == 0){
433 $("#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>");
435 else if ( $("#mana_results_datatable").length ){
436 $("#mana_search").html("<p>" + MSG_MANA_NO_SUBSCRIPTION_FOUND + "</p><p>" + MSG_MANA_SHARE_PATTERN + "</p>");
439 $("#mana_search").html( result );
441 $("#mana_search").show();
445 function mana_use(mana_id){
446 $("tr").removeClass("selected");
447 $("#row"+mana_id).addClass("selected");
450 url: "/cgi-bin/koha/svc/mana/use",
451 data: {id: mana_id, resource: 'subscription'},
454 .done(function(result){
455 var select = document.getElementById('numberpattern');
456 for(i = 0; i < select.length; i++){
457 if(select[i].value === "mana"){
461 var optionnumpattern = document.createElement("option");
462 optionnumpattern.text = result.label + " (mana)";
463 optionnumpattern.selected = true;
464 optionnumpattern.value="mana";
465 select.add(optionnumpattern);
467 mananumpatterndata = {
472 description:result.sndescription,
473 displayorder:result.displayorder,
474 every1:result.every1,
475 every2:result.every2,
476 every3:result.every3,
478 label1:result.label1,
479 label2:result.label2,
480 label3:result.label3,
481 numbering1:result.numbering1,
482 numbering2:result.numbering2,
483 numbering3:result.numbering3,
484 numberingmethod:result.numberingmethod,
485 setto1:result.setto1,
486 setto2:result.setto2,
487 setto3:result.setto3,
488 whenmorethan1:result.whenmorethan1,
489 whenmorethan2:result.whenmorethan2,
490 whenmorethan3:result.whenmorethan3,
492 select = document.getElementById("frequency");
493 for(i = 0; i < select.length; i++){
494 if(select[i].value === "mana"){
498 var optionfreq = document.createElement("option");
499 optionfreq.text = result.sfdescription + " (mana)";
500 optionfreq.selected = true;
501 optionfreq.value="mana";
502 select.add(optionfreq);
505 description:result.sfdescription,
506 displayorder:result.displayorder,
507 issuesperunit:result.issuesperunit,
509 unitsperissue:result.unitsperissue,
512 $("#mana_id").val(manaid);
513 $("#mana_search_result").modal("hide");
518 $("tr").removeClass("selected");
519 $(".mana-use i").attr("class","fa fa-download");
521 .fail( function( result ){
525 function mana_comment_close(){
526 $("#selected_id").val("");
527 $("#mana-resource-id").val("");
528 $("#mana-comment").val("");
529 $("#mana_results").show();
530 $("#new_mana_comment").hide();
533 function showPredictionPatternTest( data ){
534 $("#displayexample").html(data).show();
535 $("#page_2 > div").attr("class","col-xs-6");
538 function hidePredcitionPatternTest(){
539 $("#displayexample").hide();
540 $("#page_2 > div").attr("class","col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2");
543 $(document).ready(function() {
544 if ( mana_enabled == 1 ) {
547 $("#displayexample").hide();
549 // When Mana search results modal is hidden, hide comment form and any status messages
550 $("#mana_search_result").on("hide.bs.modal", function(){
551 $("#mana_results").show();
552 $("#new_mana_comment").hide();
553 $(".mana_comment_status").hide();
556 $("#aqbooksellerid").on('keypress', function(e) {
557 if (e.keyCode == 13) {
562 $("#biblionumber").on('keypress', function(e) {
563 if (e.keyCode == 13) {
568 $("select#frequency").change(function(){
569 patternneedtobetested = 1;
570 $("input[name='enddate']").val('');
573 $("select#numberpattern").change(function(){
574 patternneedtobetested = 1;
577 $("#subtype").change(function(){
578 $("input[name='enddate']").val('');
580 $("#sublength").change(function(){
581 $("input[name='enddate']").val('');
583 $("#lastvaluetemp1").keyup(function(){
584 $("#lastvalue1").val($(this).val());
586 $("#lastvaluetemp2").keyup(function(){
587 $("#lastvalue2").val($(this).val());
589 $("#lastvaluetemp3").keyup(function(){
590 $("#lastvalue3").val($(this).val());
592 $("#lastvalue1").keyup(function(){
593 $("#lastvaluetemp1").val($(this).val());
595 $("#lastvalue2").keyup(function(){
596 $("#lastvaluetemp2").val($(this).val());
598 $("#lastvalue3").keyup(function(){
599 $("#lastvaluetemp3").val($(this).val());
602 $("#innerlooptemp1").keyup(function(){
603 $("#innerloop1").val($(this).val());
605 $("#innerlooptemp2").keyup(function(){
606 $("#innerloop2").val($(this).val());
608 $("#innerlooptemp3").keyup(function(){
609 $("#innerloop3").val($(this).val());
611 $("#innerloop1").keyup(function(){
612 $("#innerlooptemp1").val($(this).val());
614 $("#innerloop2").keyup(function(){
615 $("#innerlooptemp2").val($(this).val());
617 $("#innerloop3").keyup(function(){
618 $("#innerlooptemp3").val($(this).val());
621 if($("#frequency").val() != ""){
624 if($("#numberpattern").val() != ""){
628 if( tags.length > 0 ){
629 tags.forEach( function( item ) {
630 var node = $("[name='" + item + "']");
631 if ( $(node).is('input') || $(node).is('textarea') ) {
633 } else if ( $(node).is('select') ) {
634 $(node).find("option:first").attr('selected','selected');
639 $("#mana_search").hide();
642 $("#subscription_add_form").on("submit",function(){
643 return Check_page2();
645 $("#vendor_search").on("click",function(e){
649 $("#record_search").on("click",function(e){
653 $("#biblio_add_edit").on("click",function(e){
655 if( $(this).data("biblionumber") ){
656 addbiblioPopup( $(this).data("biblionumber") );
661 $("#subscription_add_next").on("click",function(){
662 if ( Check_page1() ){
663 if ( mana_enabled == 1 ) {
669 $("#subscription_add_previous").on("click",function(){
672 $(".toggle_advanced_pattern").on("click",function(e){
674 $("#advancedpredictionpattern").toggle();
675 $(".toggle_advanced_pattern").toggle();
677 $("#modifyadvancedpatternbutton").on("click",function(e){
679 modifyAdvancedPattern();
681 $("#restoreadvancedpatternbutton").on("click",function(e){
683 restoreAdvancedPattern();
685 $("#saveadvancedpatternbutton").on("click",function(e){
687 saveAdvancedPattern();
689 $("#testpatternbutton").on("click",function(e){
691 testPredictionPattern();
693 $('#save-subscription').on("click", function(e){
694 $('select:disabled').removeAttr('disabled');
697 $("body").on("click", ".mana-use", function(e) {
699 $(this).find("i").attr("class","fa fa-refresh fa-spin");
700 var subscription_id = $(this).data("subscription_id");
701 mana_use( subscription_id );
704 $("#displayexample").on("click", "#hidepredictionpattern", function(e){
706 hidePredcitionPatternTest();
709 $("#biblionumber").on("change", function(){
710 var biblionumber = $(this).val();
712 url: "/api/v1/biblios/" + biblionumber,
715 Accept: "application/json",
717 contentType: "application/json",
718 success: function (biblio) {
719 $("input[name='title']").val(biblio['title']);
720 $("#error_bib_not_exist").html("");
722 error: function (x) {
723 $("input[name='title']").val('');
724 $("#error_bib_not_exist").html("This bibliographic record does not exist");