|
Lines 541-546
function PopupMARCFieldDoc(field) {
Link Here
|
| 541 |
} |
541 |
} |
| 542 |
} |
542 |
} |
| 543 |
|
543 |
|
|
|
544 |
function get_missing_fields(fields) { |
| 545 |
let missingFields = []; |
| 546 |
for(var i=0,len=fields.length; i<len; i++){ |
| 547 |
isempty = true; |
| 548 |
arr = fields[i]; |
| 549 |
divid = "tag_" + arr[0] + "_" + arr[1]; |
| 550 |
varegexp = new RegExp("^tag_" + arr[0] + "_code_"); |
| 551 |
|
| 552 |
if(parseInt(arr[0]) >= 10){ |
| 553 |
elem = document.getElementById(divid); |
| 554 |
eleminputs = elem.getElementsByTagName('input'); |
| 555 |
|
| 556 |
for(var j=0,len2=eleminputs.length; j<len2; j++){ |
| 557 |
|
| 558 |
if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){ |
| 559 |
inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]); |
| 560 |
|
| 561 |
for( var k=0; k<len2; k++){ |
| 562 |
if( eleminputs[k].id.match(inputregexp) ){ |
| 563 |
if( eleminputs[k].value ){ |
| 564 |
isempty = false |
| 565 |
} |
| 566 |
} |
| 567 |
} |
| 568 |
|
| 569 |
elemselect = elem.getElementsByTagName('select'); |
| 570 |
for( var k=0; k<elemselect.length; k++){ |
| 571 |
if(elemselect[k].id.match(inputregexp) && elemselect[k].value){ |
| 572 |
isempty = false |
| 573 |
} |
| 574 |
} |
| 575 |
} |
| 576 |
} |
| 577 |
|
| 578 |
elemtextareas = elem.getElementsByTagName('textarea'); |
| 579 |
for(var j=0,len2=elemtextareas.length; j<len2; j++){ |
| 580 |
// this bit assumes that the only textareas in this context would be for subfields |
| 581 |
if (elemtextareas[j].value) { |
| 582 |
isempty = false; |
| 583 |
} |
| 584 |
} |
| 585 |
|
| 586 |
} else { |
| 587 |
isempty = false; |
| 588 |
} |
| 589 |
|
| 590 |
if(isempty){ |
| 591 |
missingFields.push(arr); |
| 592 |
} |
| 593 |
} |
| 594 |
return missingFields; |
| 595 |
} |
| 544 |
/** |
596 |
/** |
| 545 |
* check if mandatory/important subfields are written |
597 |
* check if mandatory/important subfields are written |
| 546 |
* @param mandatory true to check for mandatories, false for importants |
598 |
* @param mandatory true to check for mandatories, false for importants |
|
Lines 555-560
function PopupMARCFieldDoc(field) {
Link Here
|
| 555 |
var StrAlert = "<div id='form-errors' class='dialog alert list'>"; |
607 |
var StrAlert = "<div id='form-errors' class='dialog alert list'>"; |
| 556 |
var notFilledClass = "subfield_not_filled"; |
608 |
var notFilledClass = "subfield_not_filled"; |
| 557 |
|
609 |
|
|
|
610 |
let allFields = {}; |
| 558 |
if (mandatory) { |
611 |
if (mandatory) { |
| 559 |
[% FOREACH BIG_LOO IN BIG_LOOP %] |
612 |
[% FOREACH BIG_LOO IN BIG_LOOP %] |
| 560 |
[% FOREACH innerloo IN BIG_LOO.innerloop %] |
613 |
[% FOREACH innerloo IN BIG_LOO.innerloop %] |
|
Lines 567-572
function PopupMARCFieldDoc(field) {
Link Here
|
| 567 |
label.push("[% subfield_loo.marc_lib | $raw %]"); |
620 |
label.push("[% subfield_loo.marc_lib | $raw %]"); |
| 568 |
[% END %] |
621 |
[% END %] |
| 569 |
[% END %] |
622 |
[% END %] |
|
|
623 |
allFields["[% innerloo.tag %]"] = new Array("[% innerloo.tag | html %]","[% innerloo.index | html %][% innerloo.random | html %]","[% innerloo.index | html %]", "[% BIG_LOO.number | html %]"); |
| 570 |
[% END %] |
624 |
[% END %] |
| 571 |
[% END %] |
625 |
[% END %] |
| 572 |
StrAlert += "<h4>" + _("The following mandatory subfields aren't filled:") + "</h4>"; |
626 |
StrAlert += "<h4>" + _("The following mandatory subfields aren't filled:") + "</h4>"; |
|
Lines 587-593
function PopupMARCFieldDoc(field) {
Link Here
|
| 587 |
StrAlert += "<h4>" + _("The following important subfields aren’t filled:") + "</h4>"; |
641 |
StrAlert += "<h4>" + _("The following important subfields aren’t filled:") + "</h4>"; |
| 588 |
notFilledClass = "important_subfield_not_filled"; |
642 |
notFilledClass = "important_subfield_not_filled"; |
| 589 |
} |
643 |
} |
| 590 |
StrAlert += "<ul>"; |
|
|
| 591 |
for(var i=0,len=subfields.length; i<len ; i++){ |
644 |
for(var i=0,len=subfields.length; i<len ; i++){ |
| 592 |
var tag=subfields[i].substr(4,3); |
645 |
var tag=subfields[i].substr(4,3); |
| 593 |
var subfield=subfields[i].substr(17,1); |
646 |
var subfield=subfields[i].substr(17,1); |
|
Lines 614-704
function PopupMARCFieldDoc(field) {
Link Here
|
| 614 |
tabflag[tag+subfield+tagnumber][3] = subfields[i]; |
667 |
tabflag[tag+subfield+tagnumber][3] = subfields[i]; |
| 615 |
} |
668 |
} |
| 616 |
|
669 |
|
| 617 |
for (var tagsubfieldid in tabflag){ |
|
|
| 618 |
if (tabflag[tagsubfieldid][0]==0){ |
| 619 |
var tag=tagsubfieldid.substr(0,3); |
| 620 |
var subfield=tagsubfieldid.substr(3,1); |
| 621 |
StrAlert += "<li>"+_("Tag %s subfield %s %s in tab %s").format(tag, subfield, formatFieldName( tabflag[tagsubfieldid][1] ), tabflag[tagsubfieldid][2]) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + tabflag[tagsubfieldid][2] + '" data-field="' + tabflag[tagsubfieldid][3] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
| 622 |
flag = true; |
| 623 |
} |
| 624 |
} |
| 625 |
StrAlert += "</ul>"; |
| 626 |
/* Check for mandatories/importants field(not subfields) */ |
670 |
/* Check for mandatories/importants field(not subfields) */ |
| 627 |
/* Loop over array of fields identified as mandatory or |
671 |
/* Loop over array of fields identified as mandatory or |
| 628 |
important to see if at least one subfield is filled */ |
672 |
important to see if at least one subfield is filled */ |
| 629 |
mandatoryFields = new Object(); |
673 |
missingMandatoryFields = new Object(); |
| 630 |
|
|
|
| 631 |
for(var i=0,len=fields.length; i<len; i++){ |
| 632 |
isempty = true; |
| 633 |
arr = fields[i]; |
| 634 |
divid = "tag_" + arr[0] + "_" + arr[1]; |
| 635 |
varegexp = new RegExp("^tag_" + arr[0] + "_code_"); |
| 636 |
|
674 |
|
| 637 |
if(parseInt(arr[0]) >= 10){ |
675 |
let notEmptyFields = []; |
| 638 |
elem = document.getElementById(divid); |
676 |
let missingFields = get_missing_fields(fields); |
| 639 |
eleminputs = elem.getElementsByTagName('input'); |
677 |
if ( missingFields.length > 0 ) { |
| 640 |
|
678 |
flag = true; |
| 641 |
for(var j=0,len2=eleminputs.length; j<len2; j++){ |
679 |
missingFields.forEach(f => { |
| 642 |
|
|
|
| 643 |
if(eleminputs[j].name.match(varegexp) && eleminputs[j].value){ |
| 644 |
inputregexp = new RegExp("^tag_" + arr[0] + "_subfield_" + eleminputs[j].value + "_" + arr[2]); |
| 645 |
|
| 646 |
for( var k=0; k<len2; k++){ |
| 647 |
if( eleminputs[k].id.match(inputregexp) ){ |
| 648 |
if( eleminputs[k].value ){ |
| 649 |
isempty = false |
| 650 |
} |
| 651 |
} |
| 652 |
} |
| 653 |
|
| 654 |
elemselect = elem.getElementsByTagName('select'); |
| 655 |
for( var k=0; k<elemselect.length; k++){ |
| 656 |
if(elemselect[k].id.match(inputregexp) && elemselect[k].value){ |
| 657 |
isempty = false |
| 658 |
} |
| 659 |
} |
| 660 |
} |
| 661 |
} |
| 662 |
|
| 663 |
elemtextareas = elem.getElementsByTagName('textarea'); |
| 664 |
for(var j=0,len2=elemtextareas.length; j<len2; j++){ |
| 665 |
// this bit assumes that the only textareas in this context would be for subfields |
| 666 |
if (elemtextareas[j].value) { |
| 667 |
isempty = false; |
| 668 |
} |
| 669 |
} |
| 670 |
|
| 671 |
} else { |
| 672 |
isempty = false; |
| 673 |
} |
| 674 |
|
| 675 |
if(isempty){ |
| 676 |
flag = true; |
| 677 |
if (mandatory) { |
680 |
if (mandatory) { |
| 678 |
mandatoryFields[ arr[0] ] = { |
681 |
missingMandatoryFields[ f[0] ] = { |
| 679 |
importance: "mandatory", |
682 |
importance: "mandatory", |
| 680 |
elemid: "div_indicator_" + divid, |
683 |
elemid: "div_indicator_" + divid, |
| 681 |
tab: arr[3] |
684 |
tab: f[3] |
| 682 |
} |
685 |
} |
| 683 |
} else { |
686 |
} else { |
| 684 |
mandatoryFields[ arr[0] ] = { |
687 |
missingMandatoryFields[ f[0] ] = { |
| 685 |
importance: "important", |
688 |
importance: "important", |
| 686 |
elemid: "div_indicator_" + divid, |
689 |
elemid: "div_indicator_" + divid, |
| 687 |
tab: arr[3] |
690 |
tab: f[3] |
| 688 |
} |
691 |
} |
| 689 |
} |
692 |
} |
| 690 |
} |
693 |
}); |
|
|
694 |
} |
| 691 |
|
695 |
|
|
|
696 |
StrAlert += "<ul>"; |
| 697 |
for (var tagsubfieldid in tabflag){ |
| 698 |
if (tabflag[tagsubfieldid][0]==0){ |
| 699 |
var tag=tagsubfieldid.substr(0,3); |
| 700 |
var subfield=tagsubfieldid.substr(3,1); |
| 701 |
let alert = "<li>"+_("Tag %s subfield %s %s in tab %s").format(tag, subfield, formatFieldName( tabflag[tagsubfieldid][1] ), tabflag[tagsubfieldid][2]) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + tabflag[tagsubfieldid][2] + '" data-field="' + tabflag[tagsubfieldid][3] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
| 702 |
if ( fields.map(f => f[0]).includes(tag) ) { |
| 703 |
StrAlert += alert; |
| 704 |
flag = true; |
| 705 |
} else { |
| 706 |
let allSubfieldsMissing = get_missing_fields([allFields[tag]]).length > 0 ? false : true; |
| 707 |
if ( allSubfieldsMissing ) { |
| 708 |
StrAlert += alert; |
| 709 |
flag = true; |
| 710 |
} |
| 711 |
} |
| 712 |
} |
| 692 |
} |
713 |
} |
|
|
714 |
StrAlert += "</ul>"; |
| 693 |
|
715 |
|
| 694 |
if( Object.entries(mandatoryFields).length > 0 ){ |
716 |
if( Object.entries(missingMandatoryFields).length > 0 ){ |
| 695 |
StrAlert += "<h4>" + _("The following fields aren't filled:") + "</h4>"; |
717 |
StrAlert += "<h4>" + _("The following fields aren't filled:") + "</h4>"; |
| 696 |
StrAlert += "<ul>"; |
718 |
StrAlert += "<ul>"; |
| 697 |
for( var prop in mandatoryFields ){ |
719 |
for( var prop in missingMandatoryFields ){ |
| 698 |
if( mandatoryFields[prop]["importance"] == "mandatory" ){ |
720 |
if( missingMandatoryFields[prop]["importance"] == "mandatory" ){ |
| 699 |
StrAlert += "<li>" + _("Field %s is mandatory, at least one of its subfields must be filled.").format( prop ) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + mandatoryFields[prop]["tab"] + '" data-field="' + mandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
721 |
StrAlert += "<li>" + _("Field %s is mandatory, at least one of its subfields must be filled.").format( prop ) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + missingMandatoryFields[prop]["tab"] + '" data-field="' + missingMandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
| 700 |
} else { |
722 |
} else { |
| 701 |
StrAlert += "<li>" + _("Field %s is important, at least one of its subfields must be filled.").format(prop) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + mandatoryFields[prop]["tab"] + '" data-field="' + mandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
723 |
StrAlert += "<li>" + _("Field %s is important, at least one of its subfields must be filled.").format(prop) + ' <a class="linkfield btn btn-link" href="#" data-tab="' + missingMandatoryFields[prop]["tab"] + '" data-field="' + missingMandatoryFields[prop]["elemid"] + '"><i class="fa fa-arrow-right" aria-hidden="true"></i> ' + _("Go to field") + '</a></li>'; |
| 702 |
} |
724 |
} |
| 703 |
} |
725 |
} |
| 704 |
StrAlert += "</ul>"; |
726 |
StrAlert += "</ul>"; |
| 705 |
- |
|
|