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() {
398 url: "/cgi-bin/koha/svc/mana/search",
399 data: {biblionumber : $("#biblionumber").val()},
402 .done( function( result ) {
403 $("#mana_search_result .modal-body").html(result);
404 $("#mana_search_result_label").text("Results from Mana");
405 $("#mana_results_datatable").dataTable($.extend(true, {}, dataTablesDefaults, {
406 "sPaginationType": "four_button",
408 { 'bSortable': false, "bSearchable": false, 'aTargets': [ 'NoSort' ] },
409 { "sType": "title-string", "aTargets" : [ "title-string" ] },
410 { 'sType': "anti-the", 'aTargets' : [ 'anti-the'] }
413 if($("td.dataTables_empty").length == 0){
414 $("#mana_search").show();
416 }).fail(function(result){
420 function mana_use(mana_id){
421 $("tr").removeClass("selected");
422 $("#row"+mana_id).addClass("selected");
425 url: "/cgi-bin/koha/svc/mana/use",
426 data: {id : mana_id},
429 .done(function(result){
430 var select = document.getElementById('numberpattern');
431 for(i = 0; i < select.length; i++){
432 if(select[i].value === "mana"){
436 var optionnumpattern = document.createElement("option");
437 optionnumpattern.text = result.label + " (mana)";
438 optionnumpattern.selected = true;
439 optionnumpattern.value="mana";
440 select.add(optionnumpattern);
442 mananumpatterndata = {
447 description:result.sndescription,
448 displayorder:result.displayorder,
449 every1:result.every1,
450 every2:result.every2,
451 every3:result.every3,
453 label1:result.label1,
454 label2:result.label2,
455 label3:result.label3,
456 numbering1:result.numbering1,
457 numbering2:result.numbering2,
458 numbering3:result.numbering3,
459 numberingmethod:result.numberingmethod,
460 setto1:result.setto1,
461 setto2:result.setto2,
462 setto3:result.setto3,
463 whenmorethan1:result.whenmorethan1,
464 whenmorethan2:result.whenmorethan2,
465 whenmorethan3:result.whenmorethan3,
467 select = document.getElementById("frequency");
468 for(i = 0; i < select.length; i++){
469 if(select[i].value === "mana"){
473 var optionfreq = document.createElement("option");
474 optionfreq.text = result.sfdescription + " (mana)";
475 optionfreq.selected = true;
476 optionfreq.value="mana";
477 select.add(optionfreq);
480 description:result.sfdescription,
481 displayorder:result.displayorder,
482 issuesperunit:result.issuesperunit,
484 unitsperissue:result.unitsperissue,
487 $("input[name='mana_id']").val(manaid);
488 $("#mana_search_result").modal("hide");
491 }).fail( function( result ){
495 function removeDisabledAttr() {
496 $('select:disabled').removeAttr('disabled');
499 $(document).ready(function() {
500 $("#displayexample").hide();
501 $("#mana_search_result").modal("hide");
502 $("#aqbooksellerid").on('keypress', function(e) {
503 if (e.keyCode == 13) {
508 $("#biblionumber").on('keypress', function(e) {
509 if (e.keyCode == 13) {
514 $("select#frequency").change(function(){
515 patternneedtobetested = 1;
516 $("input[name='enddate']").val('');
519 $("select#numberpattern").change(function(){
520 patternneedtobetested = 1;
523 $("#subtype").change(function(){
524 $("input[name='enddate']").val('');
526 $("#sublength").change(function(){
527 $("input[name='enddate']").val('');
529 $("#lastvaluetemp1").keyup(function(){
530 $("#lastvalue1").val($(this).val());
532 $("#lastvaluetemp2").keyup(function(){
533 $("#lastvalue2").val($(this).val());
535 $("#lastvaluetemp3").keyup(function(){
536 $("#lastvalue3").val($(this).val());
538 $("#lastvalue1").keyup(function(){
539 $("#lastvaluetemp1").val($(this).val());
541 $("#lastvalue2").keyup(function(){
542 $("#lastvaluetemp2").val($(this).val());
544 $("#lastvalue3").keyup(function(){
545 $("#lastvaluetemp3").val($(this).val());
548 $("#innerlooptemp1").keyup(function(){
549 $("#innerloop1").val($(this).val());
551 $("#innerlooptemp2").keyup(function(){
552 $("#innerloop2").val($(this).val());
554 $("#innerlooptemp3").keyup(function(){
555 $("#innerloop3").val($(this).val());
557 $("#innerloop1").keyup(function(){
558 $("#innerlooptemp1").val($(this).val());
560 $("#innerloop2").keyup(function(){
561 $("#innerlooptemp2").val($(this).val());
563 $("#innerloop3").keyup(function(){
564 $("#innerlooptemp3").val($(this).val());
567 if($("#frequency").val() != ""){
570 if($("#numberpattern").val() != ""){
574 if( tags.length > 0 ){
575 tags.forEach( function( item ) {
576 var node = $("[name='" + item + "']");
577 if ( $(node).is('input') || $(node).is('textarea') ) {
579 } else if ( $(node).is('select') ) {
580 $(node).find("option:first").attr('selected','selected');
585 $("#mana_search").hide();
588 $("#subscription_add_form").on("submit",function(){
589 return Check_page2();
591 $("#vendor_search").on("click",function(e){
595 $("#record_search").on("click",function(e){
599 $("#biblio_add_edit").on("click",function(e){
601 if( $(this).data("biblionumber") ){
602 addbiblioPopup( $(this).data("biblionumber") );
607 $("#subscription_add_next").on("click",function(){
608 if ( Check_page1() ){
609 [% IF Koha.Preference('Mana') %]
615 $("#subscription_add_previous").on("click",function(){
618 $(".toggle_advanced_pattern").on("click",function(e){
620 $("#advancedpredictionpattern").toggle();
621 $(".toggle_advanced_pattern").toggle();
623 $("#modifyadvancedpatternbutton").on("click",function(e){
625 modifyAdvancedPattern();
627 $("#restoreadvancedpatternbutton").on("click",function(e){
629 restoreAdvancedPattern();
631 $("#saveadvancedpatternbutton").on("click",function(e){
633 saveAdvancedPattern();
635 $("#testpatternbutton").on("click",function(e){
637 testPredictionPattern();