Changeset 31429


Ignore:
Timestamp:
2017-02-17T21:57:33+13:00 (6 years ago)
Author:
Georgiy Litvinov
Message:

Added base function expandAndExecute for focusSection and focusAnchor

File:
1 edited

Legend:

Unmodified
Added
Removed
  • main/trunk/greenstone3/web/interfaces/default/js/document_scripts.js

    r31416 r31429  
    272272function focusSection(sectionID, level, tocDisabled)
    273273{
     274    expandAndExecute(sectionID, level, tocDisabled, function()
     275            {
     276                var topVal = $(document.getElementById("doc" + sectionID)).offset().top - 50;
     277                $('html, body').stop().animate({scrollTop: topVal}, 1000);
     278            });
     279}
     280function focusAnchor(sectionID, level, tocDisabled, anchor)
     281{
     282    expandAndExecute(sectionID, level, tocDisabled, function()
     283        {
     284            var target = document.getElementById(anchor);
     285            if (!target){
     286                target = document.getElementsByName(anchor)[0];
     287            }
     288            var topVal = $(target).offset().top - 50;
     289            $('html, body').stop().animate({scrollTop: topVal}, 1000);
     290            window.location.hash = anchor;
     291        });
     292}
     293function expandAndExecute(sectionID, level, tocDisabled, executeAfter)
     294{
    274295    if(!level)
    275296    {
     
    279300    if(level >= parts.length)
    280301    {
    281         var topVal = $(document.getElementById("doc" + sectionID)).offset().top - 50;
    282         $('html, body').stop().animate({scrollTop: topVal}, 1000);
     302        executeAfter();
    283303        return;
    284304    }
     
    301321            if(success)
    302322            {
    303                 focusSection(sectionID, level + 1, tocDisabled);
     323                expandAndExecute(sectionID, level + 1, tocDisabled, executeAfter);
    304324            }
    305325        }, tocDisabled);
     
    307327    else
    308328    {
    309         focusSection(sectionID, level + 1, tocDisabled);
    310     }
    311 }
    312 function focusAnchor(sectionID, level, tocDisabled, anchor)
    313 {
    314     if(!level)
    315     {
    316         level = 0;
    317     }
    318     var parts = sectionID.split(".");
    319     if(level >= parts.length)
    320     {
    321         var target = document.getElementById(anchor);
    322         if (!target){
    323             target = document.getElementsByName(anchor)[0];
    324         }
    325         var topVal = $(target).offset().top - 50;
    326         $('html, body').stop().animate({scrollTop: topVal}, 1000);
    327         window.location.hash = anchor;
    328         return;
    329     }
    330    
    331     var idToExpand = "";
    332     for(var i = 0; i < level + 1; i++)
    333     {
    334         if(i > 0)
    335         {
    336             idToExpand += ".";
    337         }
    338    
    339         idToExpand += parts[i];
    340     }
    341    
    342     if(!isSectionExpanded(idToExpand))
    343     {
    344         toggleSection(idToExpand, function(success)
    345         {
    346             if(success)
    347             {
    348                 focusAnchor(sectionID, level + 1, tocDisabled, anchor);
    349             }
    350         }, tocDisabled);
    351     }
    352     else
    353     {
    354         focusAnchor(sectionID, level + 1, tocDisabled, anchor);
     329        expandAndExecute(sectionID, level + 1, tocDisabled, executeAfter);
    355330    }
    356331}
Note: See TracChangeset for help on using the changeset viewer.