MediaWiki:Gadget-FormCheck.js: Difference between revisions

From Tsadra Foundation Advanced Contemplative Scholarships
((by SublimeText.Mediawiker))
((by SublimeText.Mediawiker))
Line 68: Line 68:
             }
             }
         } else {
         } else {
             console.log('Fields still missing. Setting STATUS to "Saved".');
             console.log('Fields still missing. Keeping STATUS on "Saved".');
             var fieldsMissing = ''
             var fieldsMissing = ''
             mustFields.each( function(index, val) {
             mustFields.each( function(index, val) {

Revision as of 06:55, 29 June 2024

$( function() {


    // NAVIGATION FUNCTIONS

    $('.section-nav-toggles').click( function(event) {
        setTimeout( function() {
            var activeTable = $('.mw-collapsible:not(.mw-collapsed)')
            var atOffset = $(activeTable).offset().top
            var navBarHeight = $('#mw-navigation').outerHeight()
            $([document.documentElement, document.body]).animate({
                scrollTop: atOffset - ( navBarHeight * 2 ) - 7
            }, 0);
        }, "1");
        $(this).next().next('.section-nav-toggles').toggle();
        $(this).prev().prev('.section-nav-toggles').toggle();
        var nextText = 'Next section <i class="fa-duotone fa-diagram-next pl-1"></i>'
        var prevText = 'Previous section <i class="fa-duotone fa-diagram-previous pl-1"></i>'
        if ( $(this).html() == nextText ) {
           $(this).html(prevText);
        } else {
           $(this).html(nextText);
        }
    });



    // FORM CHECK FUNCTIONS

    var allInputs = $('#TfacsSubmission input, #TfacsSubmission select, #TfacsSubmission textarea');
    if( $('select[name="retreattype[]"]').val() === 'Three-year retreat') {
        var mustFields = $('.MustField, .ThreeMustField');
    } else if( $('select[name="retreattype[]"]').val() === 'Solitary hermitage') {
        var mustFields = $('.MustField, .SolMustField');
    }
    var retreatType = $('select[name="retreattype[]"]').val();
    var status = $('input[name="status"]').val();


    if( ( status === 'Saved' ) || ( status === 'Complete' ) ) {
        $(checkForm());
        $('#TfacsSubmission input, #TfacsSubmission select, #TfacsSubmission textarea').keyup(checkForm);
    } else {
        allInputs.not('#DummyField, #TfacsSubmitApplication').prop('disabled', true);
        $('.form-status').addClass('alert-dark').html('Current status: <b>SUBMITTED</b>. <br> Your application has been submitted. The contemplative scholarship administrator will contact you shortly.' );
    }

    $('#TfacsSubmission input, #TfacsSubmission select, #TfacsSubmission textarea').keyup(checkTables);

    function checkForm() {
        allInputs.prop('disabled', false);
        if (mustFields) {
            checkFields(mustFields);
        } else {
            console.log("Retreat type not set.");
            $('.form-status').addClass('alert-primary').html('Current status: <b>SAVED</b>. Retreat type not set.' );
        }
    }

    function checkFields(mustFields) {
        if( mustFields.filter(function() { return this.value === ''; }).length === 0 ) {
            if( status === 'Complete' ) {
                $('.form-status').addClass('alert-danger').html("Current status: <b>COMPLETE</b>. It looks like you've completed your application. Please review carefully all the fields in the form and verify that your information is correct. You can then click 'Submit your final application' at the bottom.");
            } else if( status === 'Saved' ){
                $('.form-status').removeClass('alert-primary').addClass('alert-success').html('Current status: <b>SAVED</b>. All filled! Status will change to complete upon next save.');
                console.log('All filled. Setting STATUS to "Complete".');
                $('input[name="status"]').val("Complete");
            }
        } else {
            console.log('Fields still missing. Keeping STATUS on "Saved".');
            var fieldsMissing = ''
            mustFields.each( function(index, val) {
                if( !$(this).val() ){
                    var name = $(this).attr("name");
                    console.log( index + ': ' + name );
                    fieldsMissing = fieldsMissing + '<div>' + index + ': ' + name + '</div>'
                }
            });
            $('input[name="status"]').val("Saved");
            $('.form-status').removeClass('alert-success').addClass('alert-primary').html('Current status: <b>SAVED</b>. Some fields are still missing.' );
        }

        checkTables();
    }

    function checkTables() {
        if( retreatType === 'Three-year retreat') {
            $('table').each(function(index, elem) {
                // console.log( 'CheckMRK for ' + $(this).attr('id') )
                if( $(this).find('.MustField, .ThreeMustField').filter(function() { return this.value === ''; }).length === 0 ) {
                    $(this).children('caption').children('.checkMrk').show();
                } else {
                    $(this).children('caption').children('.checkMrk').hide();
                }
            });
        } else if( retreatType === 'Solitary hermitage') {
            $('table').each(function(index, elem) {
                // console.log( 'CheckMRK for ' + $(this).attr('id') )
                if( $(this).find('.MustField, .SolMustField').filter(function() { return this.value === ''; }).length === 0 ) {
                    $(this).children('caption').children('.checkMrk').show();
                } else {
                    $(this).children('caption').children('.checkMrk').hide();
                }
            });
        }
    }

})