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 |
- |
|
|