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