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 if ( $("#aqbooksellerid").val().length == 0) {
50 input_box = confirm( MSG_LINK_TO_VENDOR );
51 if (input_box==false) {
56 var biblionumber = $("#biblionumber").val()
57 if ( biblionumber.length == 0 ) {
58 alert( MSG_LINK_BIBLIO );
62 var bib_exists = $("input[name='title']").val().length;
64 if (!bib_exists) alert(MSG_BIBLIO_NOT_EXIST);
68 function Check_page2(){
69 if( more_than_one_serial == "" ){
70 if($("#acqui_date").val().length == 0){
71 alert( MSG_REQUIRED_PUB_DATE );
75 if($("#sublength").val().length == 0 && $("input[name='enddate']").val().length == 0){
76 alert( MSG_REQUIRED_SUB_LENGTH );
79 if(advancedpatternlocked == 0){
80 alert( MSG_SAVE_PREDICTION_PATTERN );
83 if(patternneedtobetested){
84 if( irregularity !== "" ){
85 alert( MSG_PATTERN_IRREG );
87 alert( MSG_TEST_PREDICTION );
95 function frequencyload(){
96 if ($("#frequency option:selected").val() === "mana"){
97 globalfreqdata=manafreqdata;
98 $("input[name='sfdescription']").val(manafreqdata.description);
99 $("input[name='unit']").val(manafreqdata.unit);
100 $("input[name='unitsperissue']").val(manafreqdata.unitsperissue);
101 $("input[name='issuesperunit']").val(manafreqdata.issuesperunit);
102 if ($( "#numberpattern option:selected" ).val() === "mana" ) {
103 $("#mana_id").val(manaid);
106 $.getJSON("subscription-frequency.pl",{"frequency_id":document.f.frequency.value,ajax:'true'},
108 globalfreqdata=freqdata;
109 if ( globalfreqdata.unit && globalfreqdata.unit.length == 0 ) {
110 var option = $("#subtype option[value='issues']");
111 $(option).attr('selected', 'selected');
112 $("#subtype option[value!='issues']").prop('disabled', true);
114 $("#subtype option").prop('disabled', false);
118 $("#mana_id").val("");
122 function numberpatternload(){
123 if($("#numberpattern option:selected" ).val() === "mana"){
124 globalnumpatterndata=mananumpatterndata;
125 $("input[name='sndescription']").val(mananumpatterndata.description);
126 if($("#frequency option:selected" ).val() === "mana"){
127 $("#mana_id").val(manaid);
129 if (globalnumpatterndata==undefined){
132 displaymoreoptions();
133 restoreAdvancedPattern();
135 $.getJSON("subscription-numberpattern.pl",{"numberpattern_id":document.f.numbering_pattern.value,ajax:'true'},
136 function(numpatterndata){
137 globalnumpatterndata=numpatterndata;
138 if (globalnumpatterndata==undefined){
141 displaymoreoptions();
142 restoreAdvancedPattern();
145 $("#mana_id").val("");
149 function displaymoreoptions() {
150 if(globalnumpatterndata == undefined){
151 $("#moreoptionst").hide();
155 var X = 0, Y = 0, Z = 0;
156 var numberingmethod = globalnumpatterndata.numberingmethod;
157 if(numberingmethod.match(/{X}/)) X = 1;
158 if(numberingmethod.match(/{Y}/)) Y = 1;
159 if(numberingmethod.match(/{Z}/)) Z = 1;
162 $("#moreoptionst").show();
164 $("#moreoptionst").hide();
168 if(globalnumpatterndata.label1) {
169 $("#headerX").html(globalnumpatterndata.label1);
171 $("#headerX").html("X");
173 $("#headerX").show();
174 $("#beginsX").show();
177 $("#headerX").hide();
178 $("#beginsX").hide();
180 $("#lastvaluetemp1").val('');
181 $("#innerlooptemp1").val('');
184 if(globalnumpatterndata.label2) {
185 $("#headerY").html(globalnumpatterndata.label2);
187 $("#headerY").html("Y");
189 $("#headerY").show();
190 $("#beginsY").show();
193 $("#headerY").hide();
194 $("#beginsY").hide();
196 $("#lastvaluetemp2").val('');
197 $("#innerlooptemp2").val('');
200 if(globalnumpatterndata.label3) {
201 $("#headerZ").html(globalnumpatterndata.label3);
203 $("#headerZ").html("Z");
205 $("#headerZ").show();
206 $("#beginsZ").show();
209 $("#headerZ").hide();
210 $("#beginsZ").hide();
212 $("#lastvaluetemp3").val('');
213 $("#innerlooptemp3").val('');
217 function modifyAdvancedPattern() {
218 $("#patternname").prop('readOnly', false).val('').focus();
219 $("#numberingmethod").prop('readOnly', false);
221 $("#advancedpredictionpatternt input").each(function() {
222 $(this).prop('readOnly', false);
224 $("#advancedpredictionpatternt select").each(function() {
225 $(this).prop('disabled', false);
228 $("#restoreadvancedpatternbutton").show();
229 $("#saveadvancedpatternbutton").show();
230 $("#modifyadvancedpatternbutton").hide();
232 advancedpatternlocked = 0;
235 function restoreAdvancedPattern() {
236 $("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
237 $("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
239 $("#advancedpredictionpatternt input").each(function() {
240 $(this).prop('readOnly', true);
241 var id = $(this).attr('id');
242 if(id.match(/lastvalue/) || id.match(/innerloop/)) {
243 var tempid = id.replace(/(\d)/, "temp$1");
244 $(this).val($("#"+tempid).val());
246 $(this).val(globalnumpatterndata[id]);
249 $("#advancedpredictionpatternt select").each(function() {
250 $(this).prop('disabled', true);
251 var id = $(this).attr('id');
252 $(this).val(globalnumpatterndata[id]);
255 $("#restoreadvancedpatternbutton").hide();
256 $("#saveadvancedpatternbutton").hide();
257 $("#modifyadvancedpatternbutton").show();
259 advancedpatternlocked = 1;
262 function testPredictionPattern() {
263 var frequencyid = $("#frequency").val();
267 if(frequencyid == undefined || frequencyid == ""){
268 error_msg += "- " + MSG_FREQUENCY_UNDEFINED + "\n";
271 acquidate = $("#acqui_date").val();
272 if(acquidate == undefined || acquidate == ""){
273 error_msg += "-" + MSG_PUB_DATE_UNDEFINED + "\n";
276 if( more_than_one_serial !== "" ){
277 var nextacquidate = $("#nextacquidate").val();
278 if(nextacquidate == undefined || nextacquidate == ""){
279 error_msg += "-" + MSG_NEXT_ISSUE_UNDEFINED + "\n";
285 alert( MSG_PATTERN_TEST_FAILED.format(error_msg) );
289 var custompattern = 0;
290 if(advancedpatternlocked == 0) {
295 'custompattern': custompattern,
296 'firstacquidate': acquidate
299 if( subscriptionid !== "" ){
300 ajaxData.subscriptionid = subscriptionid;
302 if( more_than_one_serial !== "" ){
303 ajaxData.nextacquidate = nextacquidate;
308 'to', 'subtype', 'sublength', 'frequency', 'numberingmethod',
309 'lastvalue1', 'lastvalue2', 'lastvalue3', 'add1', 'add2', 'add3',
310 'every1', 'every2', 'every3', 'innerloop1', 'innerloop2', 'innerloop3',
311 'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
312 'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale',
313 'sfdescription', 'unitsperissue', 'issuesperunit', 'unit'
315 for(i in ajaxParams) {
316 var param = ajaxParams[i];
317 var value = $("#"+param).val();
319 ajaxData[param] = value;
323 url:"/cgi-bin/koha/serials/showpredictionpattern.pl",
325 success: function(data) {
326 showPredictionPatternTest( data );
327 patternneedtobetested = 0;
332 function saveAdvancedPattern() {
333 if ($("#patternname").val().length == 0) {
334 alert( MSG_PATTERN_NAME );
338 // Check if patternname already exists, and modify pattern
339 // instead of creating it if so
341 $("#numberpattern option").each(function(){
342 if($(this).text() == $("#patternname").val()){
349 var msg = MSG_PATTERN_NAME_EXISTS
350 + "\n" + MSG_OVERWRITE_PATTERNS;
351 cnfrm = confirm(msg);
357 'patternname', 'numberingmethod', 'label1', 'label2', 'label3',
358 'add1', 'add2', 'add3', 'every1', 'every2', 'every3',
359 'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
360 'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale'
362 for(i in ajaxParams) {
363 var param = ajaxParams[i];
364 var value = $("#"+param).val();
366 ajaxData[param] = value;
370 "/cgi-bin/koha/serials/create-numberpattern.pl",
373 if (data.numberpatternid) {
375 $("#numberpattern").append("<option value=\""+data.numberpatternid+"\">"+$("#patternname").val()+"</option>");
377 $("#numberpattern").val(data.numberpatternid);
380 alert( MSG_PATTERN_CREATE_FAILED );
387 function show_page_1() {
390 $("#page_number").text("1/2");
393 function show_page_2() {
396 $("#page_number").text("2/2");
397 displaymoreoptions();
400 function mana_search() {
401 $("#mana_search").html("<p>" + MSG_MANA_SEARCHING + "... <img src='" + interface + "/" + theme + "/img/spinner-small.gif' /></p>");
402 $("#mana_search").show();
406 url: "/cgi-bin/koha/svc/mana/search",
407 data: {id: $("#biblionumber").val(), resource: 'subscription', usecomments: 1},
410 .done( function( result ) {
411 $("#mana_search_result .modal-body").html(result);
412 $("#mana_search_result_label").text( MSG_MANA_RESULTS );
413 $("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults, {
414 "sPaginationType": "full",
415 "order":[[4, "desc"], [5, "desc"]],
418 { "width": "35%", "targets": 1 }
421 { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
422 { "sType": "title-string", "aTargets" : [ "title-string" ] },
423 { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
426 if( $("#mana_results_datatable").length && $("td.dataTables_empty").length == 0){
427 $("#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>");
429 else if ( $("#mana_results_datatable").length ){
430 $("#mana_search").html("<p>" + MSG_MANA_NO_SUBSCRIPTION_FOUND + "</p><p>" + MSG_MANA_SHARE_PATTERN + "</p>");
433 $("#mana_search").html( result );
435 $("#mana_search").show();
439 function mana_use(mana_id){
440 $("tr").removeClass("selected");
441 $("#row"+mana_id).addClass("selected");
444 url: "/cgi-bin/koha/svc/mana/use",
445 data: {id: mana_id, resource: 'subscription'},
448 .done(function(result){
449 var select = document.getElementById('numberpattern');
450 for(i = 0; i < select.length; i++){
451 if(select[i].value === "mana"){
455 var optionnumpattern = document.createElement("option");
456 optionnumpattern.text = result.label + " (mana)";
457 optionnumpattern.selected = true;
458 optionnumpattern.value="mana";
459 select.add(optionnumpattern);
461 mananumpatterndata = {
466 description:result.sndescription,
467 displayorder:result.displayorder,
468 every1:result.every1,
469 every2:result.every2,
470 every3:result.every3,
472 label1:result.label1,
473 label2:result.label2,
474 label3:result.label3,
475 numbering1:result.numbering1,
476 numbering2:result.numbering2,
477 numbering3:result.numbering3,
478 numberingmethod:result.numberingmethod,
479 setto1:result.setto1,
480 setto2:result.setto2,
481 setto3:result.setto3,
482 whenmorethan1:result.whenmorethan1,
483 whenmorethan2:result.whenmorethan2,
484 whenmorethan3:result.whenmorethan3,
486 select = document.getElementById("frequency");
487 for(i = 0; i < select.length; i++){
488 if(select[i].value === "mana"){
492 var optionfreq = document.createElement("option");
493 optionfreq.text = result.sfdescription + " (mana)";
494 optionfreq.selected = true;
495 optionfreq.value="mana";
496 select.add(optionfreq);
499 description:result.sfdescription,
500 displayorder:result.displayorder,
501 issuesperunit:result.issuesperunit,
503 unitsperissue:result.unitsperissue,
506 $("#mana_id").val(manaid);
507 $("#mana_search_result").modal("hide");
512 $("tr").removeClass("selected");
513 $(".mana-use i").attr("class","fa fa-download");
515 .fail( function( result ){
519 function mana_comment_close(){
520 $("#selected_id").val("");
521 $("#mana-resource-id").val("");
522 $("#mana-comment").val("");
523 $("#mana_results").show();
524 $("#new_mana_comment").hide();
527 function showPredictionPatternTest( data ){
528 $("#displayexample").html(data).show();
529 $("#page_2 > div").attr("class","col-xs-6");
532 function hidePredcitionPatternTest(){
533 $("#displayexample").hide();
534 $("#page_2 > div").attr("class","col-md-10 col-md-offset-1 col-lg-8 col-lg-offset-2");
537 $(document).ready(function() {
538 if ( mana_enabled == 1 ) {
541 $("#displayexample").hide();
543 // When Mana search results modal is hidden, hide comment form and any status messages
544 $("#mana_search_result").on("hide.bs.modal", function(){
545 $("#mana_results").show();
546 $("#new_mana_comment").hide();
547 $(".mana_comment_status").hide();
550 $("#aqbooksellerid").on('keypress', function(e) {
551 if (e.keyCode == 13) {
556 $("#biblionumber").on('keypress', function(e) {
557 if (e.keyCode == 13) {
562 $("select#frequency").change(function(){
563 patternneedtobetested = 1;
564 $("input[name='enddate']").val('');
567 $("select#numberpattern").change(function(){
568 patternneedtobetested = 1;
571 $("#subtype").change(function(){
572 $("input[name='enddate']").val('');
574 $("#sublength").change(function(){
575 $("input[name='enddate']").val('');
577 $("#lastvaluetemp1").keyup(function(){
578 $("#lastvalue1").val($(this).val());
580 $("#lastvaluetemp2").keyup(function(){
581 $("#lastvalue2").val($(this).val());
583 $("#lastvaluetemp3").keyup(function(){
584 $("#lastvalue3").val($(this).val());
586 $("#lastvalue1").keyup(function(){
587 $("#lastvaluetemp1").val($(this).val());
589 $("#lastvalue2").keyup(function(){
590 $("#lastvaluetemp2").val($(this).val());
592 $("#lastvalue3").keyup(function(){
593 $("#lastvaluetemp3").val($(this).val());
596 $("#innerlooptemp1").keyup(function(){
597 $("#innerloop1").val($(this).val());
599 $("#innerlooptemp2").keyup(function(){
600 $("#innerloop2").val($(this).val());
602 $("#innerlooptemp3").keyup(function(){
603 $("#innerloop3").val($(this).val());
605 $("#innerloop1").keyup(function(){
606 $("#innerlooptemp1").val($(this).val());
608 $("#innerloop2").keyup(function(){
609 $("#innerlooptemp2").val($(this).val());
611 $("#innerloop3").keyup(function(){
612 $("#innerlooptemp3").val($(this).val());
615 if($("#frequency").val() != ""){
618 if($("#numberpattern").val() != ""){
622 if( tags.length > 0 ){
623 tags.forEach( function( item ) {
624 var node = $("[name='" + item + "']");
625 if ( $(node).is('input') || $(node).is('textarea') ) {
627 } else if ( $(node).is('select') ) {
628 $(node).find("option:first").attr('selected','selected');
633 $("#mana_search").hide();
636 $("#subscription_add_form").on("submit",function(){
637 return Check_page2();
639 $("#vendor_search").on("click",function(e){
643 $("#record_search").on("click",function(e){
647 $("#biblio_add_edit").on("click",function(e){
649 if( $(this).data("biblionumber") ){
650 addbiblioPopup( $(this).data("biblionumber") );
655 $("#subscription_add_next").on("click",function(){
656 if ( Check_page1() ){
657 if ( mana_enabled == 1 ) {
663 $("#subscription_add_previous").on("click",function(){
666 $(".toggle_advanced_pattern").on("click",function(e){
668 $("#advancedpredictionpattern").toggle();
669 $(".toggle_advanced_pattern").toggle();
671 $("#modifyadvancedpatternbutton").on("click",function(e){
673 modifyAdvancedPattern();
675 $("#restoreadvancedpatternbutton").on("click",function(e){
677 restoreAdvancedPattern();
679 $("#saveadvancedpatternbutton").on("click",function(e){
681 saveAdvancedPattern();
683 $("#testpatternbutton").on("click",function(e){
685 testPredictionPattern();
687 $('#save-subscription').on("click", function(e){
688 $('select:disabled').removeAttr('disabled');
691 $("body").on("click", ".mana-use", function(e) {
693 $(this).find("i").attr("class","fa fa-refresh fa-spin");
694 var subscription_id = $(this).data("subscription_id");
695 mana_use( subscription_id );
698 $("#displayexample").on("click", "#hidepredictionpattern", function(e){
700 hidePredcitionPatternTest();
703 $("#biblionumber").on("change", function(){
704 var biblionumber = $(this).val();
706 url: "/api/v1/biblios/" + biblionumber,
709 Accept: "application/json",
711 contentType: "application/json",
712 success: function (biblio) {
713 $("input[name='title']").val(biblio['title']);
714 $("#error_bib_not_exist").html("");
716 error: function (x) {
717 $("input[name='title']").val('');
718 $("#error_bib_not_exist").html("This bibliographic record does not exist");