1 /* global irregularity more_than_one_serial subscriptionid tags */
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(_("If you wish to claim late or missing issues you must link this subscription to a vendor. Click OK to ignore or Cancel to return and enter a vendor"));
51 if (input_box==false) {
55 if ($("#biblionumber").val().length == 0) {
56 alert(_("You must choose or create a biblio"));
63 function Check_page2(){
64 if( more_than_one_serial == "" ){
65 if($("#acqui_date").val().length == 0){
66 alert(_("You must choose a first publication date"));
70 if($("#sublength").val().length == 0 && $("input[name='enddate']").val().length == 0){
71 alert(_("You must choose a subscription length or an end date."));
74 if(advancedpatternlocked == 0){
75 alert(_("You have modified the advanced prediction pattern. Please save your work or cancel modifications."));
78 if(patternneedtobetested){
79 if( irregularity !== "" ){
80 alert(_("Warning! Present pattern has planned irregularities. Click on 'Test prediction pattern' to check if it's still valid"));
82 alert(_("Please click on 'Test prediction pattern' before saving subscription."));
90 function frequencyload(){
91 if ($("#frequency option:selected").val() === "mana"){
92 globalfreqdata=manafreqdata;
93 $("input[name='sfdescription']").val(manafreqdata.description);
94 $("input[name='unit']").val(manafreqdata.unit);
95 $("input[name='unitsperissue']").val(manafreqdata.unitsperissue);
96 $("input[name='issuesperunit']").val(manafreqdata.issuesperunit);
97 if ($( "#numberpattern option:selected" ).val() === "mana" ) {
98 $("input[name='mana_id']").val(manaid);
101 $.getJSON("subscription-frequency.pl",{"frequency_id":document.f.frequency.value,ajax:'true'},
103 globalfreqdata=freqdata;
104 if ( globalfreqdata.unit && globalfreqdata.unit.length == 0 ) {
105 var option = $("#subtype option[value='issues']");
106 $(option).attr('selected', 'selected');
107 $("#subtype option[value!='issues']").prop('disabled', true);
109 $("#subtype option").prop('disabled', false);
113 $("input[name='mana_id']").val("");
117 function numberpatternload(){
118 if($("#numberpattern option:selected" ).val() === "mana"){
119 globalnumpatterndata=mananumpatterndata;
120 $("input[name='sndescription']").val(mananumpatterndata.description);
121 if($("#frequency option:selected" ).val() === "mana"){
122 $("input[name='mana_id']").val(manaid);
124 if (globalnumpatterndata==undefined){
127 displaymoreoptions();
128 restoreAdvancedPattern();
130 $.getJSON("subscription-numberpattern.pl",{"numberpattern_id":document.f.numbering_pattern.value,ajax:'true'},
131 function(numpatterndata){
132 globalnumpatterndata=numpatterndata;
133 if (globalnumpatterndata==undefined){
136 displaymoreoptions();
137 restoreAdvancedPattern();
140 $("input[name='mana_id']").val("");
144 function displaymoreoptions() {
145 if(globalnumpatterndata == undefined){
146 $("#moreoptionst").hide();
150 var X = 0, Y = 0, Z = 0;
151 var numberingmethod = globalnumpatterndata.numberingmethod;
152 if(numberingmethod.match(/{X}/)) X = 1;
153 if(numberingmethod.match(/{Y}/)) Y = 1;
154 if(numberingmethod.match(/{Z}/)) Z = 1;
157 $("#moreoptionst").show();
159 $("#moreoptionst").hide();
163 if(globalnumpatterndata.label1) {
164 $("#headerX").html(globalnumpatterndata.label1);
166 $("#headerX").html("X");
168 $("#headerX").show();
169 $("#beginsX").show();
172 $("#headerX").hide();
173 $("#beginsX").hide();
175 $("#lastvaluetemp1").val('');
176 $("#innerlooptemp1").val('');
179 if(globalnumpatterndata.label2) {
180 $("#headerY").html(globalnumpatterndata.label2);
182 $("#headerY").html("Y");
184 $("#headerY").show();
185 $("#beginsY").show();
188 $("#headerY").hide();
189 $("#beginsY").hide();
191 $("#lastvaluetemp2").val('');
192 $("#innerlooptemp2").val('');
195 if(globalnumpatterndata.label3) {
196 $("#headerZ").html(globalnumpatterndata.label3);
198 $("#headerZ").html("Z");
200 $("#headerZ").show();
201 $("#beginsZ").show();
204 $("#headerZ").hide();
205 $("#beginsZ").hide();
207 $("#lastvaluetemp3").val('');
208 $("#innerlooptemp3").val('');
212 function modifyAdvancedPattern() {
213 $("#patternname").prop('readOnly', false).val('');
214 $("#numberingmethod").prop('readOnly', false);
216 $("#advancedpredictionpatternt input").each(function() {
217 $(this).prop('readOnly', false);
219 $("#advancedpredictionpatternt select").each(function() {
220 $(this).prop('disabled', false);
223 $("#restoreadvancedpatternbutton").show();
224 $("#saveadvancedpatternbutton").show();
225 $("#modifyadvancedpatternbutton").hide();
227 advancedpatternlocked = 0;
230 function restoreAdvancedPattern() {
231 $("#patternname").prop('readOnly', true).val(globalnumpatterndata.label);
232 $("#numberingmethod").prop('readOnly', true).val(globalnumpatterndata.numberingmethod);
234 $("#advancedpredictionpatternt input").each(function() {
235 $(this).prop('readOnly', true);
236 var id = $(this).attr('id');
237 if(id.match(/lastvalue/) || id.match(/innerloop/)) {
238 var tempid = id.replace(/(\d)/, "temp$1");
239 $(this).val($("#"+tempid).val());
241 $(this).val(globalnumpatterndata[id]);
244 $("#advancedpredictionpatternt select").each(function() {
245 $(this).prop('disabled', true);
246 var id = $(this).attr('id');
247 $(this).val(globalnumpatterndata[id]);
250 $("#restoreadvancedpatternbutton").hide();
251 $("#saveadvancedpatternbutton").hide();
252 $("#modifyadvancedpatternbutton").show();
254 advancedpatternlocked = 1;
257 function testPredictionPattern() {
258 var frequencyid = $("#frequency").val();
262 if(frequencyid == undefined || frequencyid == ""){
263 error_msg += _("- Frequency is not defined") + "\n";
266 acquidate = $("#acqui_date").val();
267 if(acquidate == undefined || acquidate == ""){
268 error_msg += _("- First publication date is not defined") + "\n";
271 if( more_than_one_serial !== "" ){
272 var nextacquidate = $("#nextacquidate").val();
273 if(nextacquidate == undefined || nextacquidate == ""){
274 error_msg += _("- Next issue publication date is not defined") + "\n";
280 alert(_("Cannot test prediction pattern for the following reason(s): %s").format(error_msg));
284 var custompattern = 0;
285 if(advancedpatternlocked == 0) {
290 'custompattern': custompattern,
291 'firstacquidate': acquidate
294 if( subscriptionid !== "" ){
295 ajaxData.subscriptionid = subscriptionid;
297 if( more_than_one_serial !== "" ){
298 ajaxData.nextacquidate = nextacquidate;
303 'to', 'subtype', 'sublength', 'frequency', 'numberingmethod',
304 'lastvalue1', 'lastvalue2', 'lastvalue3', 'add1', 'add2', 'add3',
305 'every1', 'every2', 'every3', 'innerloop1', 'innerloop2', 'innerloop3',
306 'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
307 'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale',
308 'sfdescription', 'unitsperissue', 'issuesperunit', 'unit'
310 for(i in ajaxParams) {
311 var param = ajaxParams[i];
312 var value = $("#"+param).val();
314 ajaxData[param] = value;
318 url:"/cgi-bin/koha/serials/showpredictionpattern.pl",
320 success: function(data) {
321 $("#displayexample").html(data).show();
322 patternneedtobetested = 0;
327 function saveAdvancedPattern() {
328 if ($("#patternname").val().length == 0) {
329 alert(_("Please enter a name for this pattern"));
333 // Check if patternname already exists, and modify pattern
334 // instead of creating it if so
336 $("#numberpattern option").each(function(){
337 if($(this).text() == $("#patternname").val()){
344 var msg = _("This pattern name already exists. Do you want to modify it?")
345 + "\n" + _("Warning: it will modify the pattern for all subscriptions that are using it.");
346 cnfrm = confirm(msg);
352 'patternname', 'numberingmethod', 'label1', 'label2', 'label3',
353 'add1', 'add2', 'add3', 'every1', 'every2', 'every3',
354 'setto1', 'setto2', 'setto3', 'numbering1', 'numbering2', 'numbering3',
355 'whenmorethan1', 'whenmorethan2', 'whenmorethan3', 'locale'
357 for(i in ajaxParams) {
358 var param = ajaxParams[i];
359 var value = $("#"+param).val();
361 ajaxData[param] = value;
365 "/cgi-bin/koha/serials/create-numberpattern.pl",
368 if (data.numberpatternid) {
370 $("#numberpattern").append("<option value=\""+data.numberpatternid+"\">"+$("#patternname").val()+"</option>");
372 $("#numberpattern").val(data.numberpatternid);
375 alert(_("Something went wrong. Unable to create a new numbering pattern."));
382 function show_page_1() {
385 $("#page_number").text("1/2");
388 function show_page_2() {
391 $("#page_number").text("2/2");
392 displaymoreoptions();
395 function mana_search() {
396 $("#mana_search").html("<p>" + _("Mana kb is being asked for your subscription..") + "</p>");
397 $("#mana_search").show();
401 url: "/cgi-bin/koha/svc/mana/search",
402 data: {id: $("#biblionumber").val(), resource: 'subscription', usecomments: 1},
405 .done( function( result ) {
406 $("#mana_search_result .modal-body").html(result);
407 $("#mana_search_result_label").text(_("Results from Mana Knowledge Base"));
408 $("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults, {
409 "sPaginationType": "four_button",
410 "order":[[4, "desc"], [5, "desc"]],
413 { "width": "35%", "targets": 1 }
416 { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
417 { "sType": "title-string", "aTargets" : [ "title-string" ] },
418 { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
421 if( $("#mana_results_datatable").length && $("td.dataTables_empty").length == 0){
422 $("#mana_search").html("<p>" + _("Subscription found on Mana Knowledge Base:") + "</p><p> <a style='cursor:pointer' data-toggle='modal' data-target='#mana_search_result'>" + _("Quick fill") + "</a></p>");
424 else if ( $("#mana_results_datatable").length ){
425 $("#mana_search").html("<p>" + _("No subscription found on Mana Knowledge Base :(") + "</p><p>" + _(" Please feel free to share you pattern with all others librarians once you are done") + "</p>");
428 $("#mana_search").html( result );
430 $("#mana_search").show();
434 function mana_use(mana_id){
435 $("tr").removeClass("selected");
436 $("#row"+mana_id).addClass("selected");
439 url: "/cgi-bin/koha/svc/mana/use",
440 data: {id: mana_id, resource: 'subscription'},
443 .done(function(result){
444 var select = document.getElementById('numberpattern');
445 for(i = 0; i < select.length; i++){
446 if(select[i].value === "mana"){
450 var optionnumpattern = document.createElement("option");
451 optionnumpattern.text = result.label + " (mana)";
452 optionnumpattern.selected = true;
453 optionnumpattern.value="mana";
454 select.add(optionnumpattern);
456 mananumpatterndata = {
461 description:result.sndescription,
462 displayorder:result.displayorder,
463 every1:result.every1,
464 every2:result.every2,
465 every3:result.every3,
467 label1:result.label1,
468 label2:result.label2,
469 label3:result.label3,
470 numbering1:result.numbering1,
471 numbering2:result.numbering2,
472 numbering3:result.numbering3,
473 numberingmethod:result.numberingmethod,
474 setto1:result.setto1,
475 setto2:result.setto2,
476 setto3:result.setto3,
477 whenmorethan1:result.whenmorethan1,
478 whenmorethan2:result.whenmorethan2,
479 whenmorethan3:result.whenmorethan3,
481 select = document.getElementById("frequency");
482 for(i = 0; i < select.length; i++){
483 if(select[i].value === "mana"){
487 var optionfreq = document.createElement("option");
488 optionfreq.text = result.sfdescription + " (mana)";
489 optionfreq.selected = true;
490 optionfreq.value="mana";
491 select.add(optionfreq);
494 description:result.sfdescription,
495 displayorder:result.displayorder,
496 issuesperunit:result.issuesperunit,
498 unitsperissue:result.unitsperissue,
501 $("input[name='mana_id']").val(manaid);
502 $("#mana_search_result").modal("hide");
505 }).fail( function( result ){
509 $(document).ready(function() {
511 $("#displayexample").hide();
512 $("#mana_search_result").modal("hide");
513 $("#aqbooksellerid").on('keypress', function(e) {
514 if (e.keyCode == 13) {
519 $("#biblionumber").on('keypress', function(e) {
520 if (e.keyCode == 13) {
525 $("select#frequency").change(function(){
526 patternneedtobetested = 1;
527 $("input[name='enddate']").val('');
530 $("select#numberpattern").change(function(){
531 patternneedtobetested = 1;
534 $("#subtype").change(function(){
535 $("input[name='enddate']").val('');
537 $("#sublength").change(function(){
538 $("input[name='enddate']").val('');
540 $("#lastvaluetemp1").keyup(function(){
541 $("#lastvalue1").val($(this).val());
543 $("#lastvaluetemp2").keyup(function(){
544 $("#lastvalue2").val($(this).val());
546 $("#lastvaluetemp3").keyup(function(){
547 $("#lastvalue3").val($(this).val());
549 $("#lastvalue1").keyup(function(){
550 $("#lastvaluetemp1").val($(this).val());
552 $("#lastvalue2").keyup(function(){
553 $("#lastvaluetemp2").val($(this).val());
555 $("#lastvalue3").keyup(function(){
556 $("#lastvaluetemp3").val($(this).val());
559 $("#innerlooptemp1").keyup(function(){
560 $("#innerloop1").val($(this).val());
562 $("#innerlooptemp2").keyup(function(){
563 $("#innerloop2").val($(this).val());
565 $("#innerlooptemp3").keyup(function(){
566 $("#innerloop3").val($(this).val());
568 $("#innerloop1").keyup(function(){
569 $("#innerlooptemp1").val($(this).val());
571 $("#innerloop2").keyup(function(){
572 $("#innerlooptemp2").val($(this).val());
574 $("#innerloop3").keyup(function(){
575 $("#innerlooptemp3").val($(this).val());
578 if($("#frequency").val() != ""){
581 if($("#numberpattern").val() != ""){
585 if( tags.length > 0 ){
586 tags.forEach( function( item ) {
587 var node = $("[name='" + item + "']");
588 if ( $(node).is('input') || $(node).is('textarea') ) {
590 } else if ( $(node).is('select') ) {
591 $(node).find("option:first").attr('selected','selected');
596 $("#mana_search").hide();
599 $("#subscription_add_form").on("submit",function(){
600 return Check_page2();
602 $("#vendor_search").on("click",function(e){
606 $("#record_search").on("click",function(e){
610 $("#biblio_add_edit").on("click",function(e){
612 if( $(this).data("biblionumber") ){
613 addbiblioPopup( $(this).data("biblionumber") );
618 $("#subscription_add_next").on("click",function(){
619 if ( Check_page1() ){
620 if ( mana_enabled ) {
626 $("#subscription_add_previous").on("click",function(){
629 $(".toggle_advanced_pattern").on("click",function(e){
631 $("#advancedpredictionpattern").toggle();
632 $(".toggle_advanced_pattern").toggle();
634 $("#modifyadvancedpatternbutton").on("click",function(e){
636 modifyAdvancedPattern();
638 $("#restoreadvancedpatternbutton").on("click",function(e){
640 restoreAdvancedPattern();
642 $("#saveadvancedpatternbutton").on("click",function(e){
644 saveAdvancedPattern();
646 $("#testpatternbutton").on("click",function(e){
648 testPredictionPattern();
650 $('#save-subscription').on("click", function(e){
651 $('select:disabled').removeAttr('disabled');