Skip to content

Issues with Progress Bar on v3

Solved Customisation
48 4 20.0k 1
  • its happening sometime not everytime

    wrote on last edited by phenomlab
    #7

    @cagatay said in Reading Meter Progress bar:

    its happening sometime not everytime

    Actually, I think I might know what this is. Does it appear after you’ve been scrolling through recent posts for example, then click on a PM to view that ? The output of NaN (Not a Number) usually means that what you are seeing is actually an artefact that should have been removed.

  • wrote on last edited by
    #8

    got the point thanks

  • got the point thanks

    wrote on last edited by
    #9

    @cagatay Sorry - that’s not what I meant - can you confirm if that is the case? If it is, it’s a simple fix, but needs some new code on your site.

  • wrote on last edited by
    #10

    yes it happened as you explanied Mark.
    But not just it on phone the scrool not working and the page is freezing.

  • yes it happened as you explanied Mark.
    But not just it on phone the scrool not working and the page is freezing.

    wrote on last edited by
    #11

    @cagatay That’s very strange. Perhaps you should remove it then for the time being. Something clearly isn’t right there.

  • wrote on last edited by
    #12

    @cagatay @DownPW looking for suggestions here. I’m able to replicate this issue (now that I better understand it), and to me, the best solution is for the progress bar to not fire on certain pages - clearly, chat is one of them, but there are others also I expect, and it’s this that I’d appreciate your feedback on.

  • wrote on last edited by
    #13

    @cagatay @DownPW ok, I think I have a solution that is also easily expanded upon. After looking into this in more detail, the calls between standard posts, categories, etc are handled differently when calling chats.

    Based on this, you should use the below modified progress bar js code (replace what you have)

    // Navigation / Scrollbar
    $(window).on('action:ajaxify.end', function(data) {
        var matched = false;
        $(document).ready(function() {
            var bar = $('.reading-meter');
            // Main progressbar function
            window.onscroll = function() {
                pageScroller();
            };
    
            function pageScroller() {
                var winScroll = document.body.scrollTop || document.documentElement.scrollTop;
                var height = document.documentElement.scrollHeight - document.documentElement.clientHeight;
                var scrolled = (winScroll / height) * 100;
                document.getElementById("progress-bar").style.width = parseFloat(scrolled).toFixed(0) + "%";
                $('#percentage').val(parseFloat(scrolled).toFixed(0) + "%");
                
            $(window).scroll(function() {
            var bar = $('.reading-meter');
            var thisURL = window.location.href;
            var checkURL = new Array("topic", "notifications", "user");
            var isFound = false;
            for (var i = 0, len = checkURL.length; i < len; i++) {
                if (thisURL.indexOf(checkURL[i]) > -1) {
                    isFound = true;
                    break;
                }
            }
            if (isFound) {
                //console.log("Page '" + checkURL[i] + "' is in URL - hide progress bar");
                bar.removeClass('show');
            } else {
                // Exception here is that we don't want the scroll bar to show when the composer is active
                if ($(window).scrollTop() > 0 && (!$('[component="composer"]').is(":visible"))) {
                    bar.addClass('show');
                } else {
                   bar.removeClass('show');
                }
                var x = $('[component="bottombar"]').css("bottom");
                var bpos = x.slice(0, -2);
                //console.log("Bottom bar position is " + bpos);
                $(document).ready(function() {
                    if ($(window).width() < 767) {
                        if (bpos == '0') {
                            $('.toAbove').attr('style', 'bottom: 50px !important');
                        } else {
                            $('.toAbove').attr('style', 'bottom: 0px !important');
                        }
                    }
                });
            }
            });
        }
        });
        $(document).on("click", "#pageUp", function(e) {
            e.preventDefault();
            $('html, body').animate({
                scrollTop: 0
            }, '300');
        });
        $(document).on("click", "#pageDown", function(e) {
            e.preventDefault();
            $("html, body").animate({
                scrollTop: $(document).height()
            }, '300');
        });
    });
    

    Directly underneath, you should also add

    /*
    Set pages where the progress bar should not be shown - see examples
    in below array, and ensure you follow the same syntax for any you need to 
    add
    */
    
    $(window).on('action:ajaxify.end', function(data) {
        $(document).ready(function() {
            var bar = $('.reading-meter');
            var thisURL = window.location.href;
            var checkURL = new Array("topic", "notifications", "user");
            var isFound = false;
            for (var i = 0, len = checkURL.length; i < len; i++) {
                if (thisURL.indexOf(checkURL[i]) > -1) {
                    isFound = true;
                    break;
                }
            }
            if (isFound) {
                //console.log("Page '" + checkURL[i] + "' is in URL - hide progress bar");
                bar.removeClass('show');
            }
        });
    });
    

    You’ll notice that both of these functions make use of arrays - here, it’s possible to state the page where you do not want the progress bar to trigger. For example

            var checkURL = new Array("topic", "notifications", "user");
    

    See how each URL component to check is in quotes (and comma separated) - you can add your own here, so for example, if you wanted to include an “about” page, you’d have

            var checkURL = new Array("topic", "notifications", "user", "about");
    

    This needs to be present in both functions to work properly.

    This code will prevent the progress bar firing on user, notifications, and topic but (as you can see) is easily extended to cover multiple locations.

    Try it out and let me know how you get on. It’s active here currently.

  • phenomlab phenomlab has marked this topic as solved on
  • phenomlab phenomlab referenced this topic on
  • wrote on last edited by
    #14

    i copied, works normally.

  • i copied, works normally.

    wrote on last edited by
    #15

    @cagatay works as intended ?

  • wrote on last edited by
    #16

    it not works on topics but on the main page and chat yes working.

  • it not works on topics but on the main page and chat yes working.

    wrote on last edited by
    #17

    @cagatay perfect. That’s the exact behavior intended.

  • wrote on last edited by
    #18
    This post is deleted!
  • wrote on last edited by
    #19

    Your code works perfectly for chat on desktop bit not on mobile.
    I’m alone ?

  • Your code works perfectly for chat on desktop bit not on mobile.
    I’m alone ?

    wrote on last edited by
    #20

    @DownPW I think you might be, yes. Seems to work fine for me - @cagatay ?

  • @DownPW I think you might be, yes. Seems to work fine for me - @cagatay ?

    wrote on last edited by
    #21

    @phenomlab i did not check by phone, let me check it

  • @phenomlab i did not check by phone, let me check it

    wrote on last edited by
    #22

    @cagatay Thanks. Let me know please - you have (almost) identical CSS to me, so I am not expecting any issues.

  • wrote on last edited by
    #23

    Status of my web site by android phone;

    • Main page - bar not working
    • topic - bar working
    • chat - bar not working
  • Status of my web site by android phone;

    • Main page - bar not working
    • topic - bar working
    • chat - bar not working
    wrote on last edited by
    #24

    @cagatay The reason this fails for you is because you have to auto-hide the bottom bar

    b103c8c9-eb9f-45ee-9c7d-335a73e83fed-image.png

    I’ve made this change and it’s now working for the most part - but it should also float with the bottom bar depending on it’s position. Not sure why that’s not working but looking now.

  • wrote on last edited by
    #25

    all working now.

  • all working now.

    wrote on last edited by
    #26

    @cagatay Thanks. Also fixed the floating progress bar on mobile. It’s tied into the footer code which you are not using so it wasn’t included in your build (but is now)


Did this solution help you?
Did you find the suggested solution useful? Support 💗 Sudonix with a coffee ☕
If your organisation needs deeper expertise around infrastructure, security, or technology leadership, learn more about Phenomlab Ltd. Many of the deeper technical guides behind Sudonix are published there.

Related Topics
  • Custom Page - nodebb

    Solved Customisation custom-pages nodebb
    13
    2
    5 Votes
    13 Posts
    3k Views
    DownPW
    I’m happy to see this
  • External Links - New Window

    Solved Customisation nodebb links settings
    8
    2 Votes
    8 Posts
    2k Views
    phenomlab
    @Sampo2910 search the forum here for ogproxy which is the client side version of that plugin I wrote. It’s in use here on this forum.
  • navbar

    Solved Customisation navbar harmony
    2
    2 Votes
    2 Posts
    1k Views
    phenomlab
    Marking as resolved, based on https://community.nodebb.org/topic/18625/navbar/2
  • Forum customisation

    Customisation nodebb forum customised
    11
    2
    6 Votes
    11 Posts
    3k Views
    JAC
    Thank you Mark, the changes look fantastic!!
  • CSS code customization for the link preview plugin

    Solved Customisation css nodebb
    6
    2
    3 Votes
    6 Posts
    3k Views
    phenomlab
    @kadir-ay-0 marking as resolved based on https://community.nodebb.org/topic/17109/manual-build-a-night-mode-for-harmony/5 Please do not raise requests in two places - here and the NodeBB forums. All this does is create unnecessary load for both parties.
  • What is this bar called?

    Solved Customisation nodebb
    92
    1
    36 Votes
    92 Posts
    41k Views
    DownPW
    This is good
  • Header Menu After Upgrading V3.1.1

    Solved Customisation header nodebb
    2
    1
    2 Votes
    2 Posts
    1k Views
    phenomlab
    @cagatay this relates to a change the css classes used for the brand header meaning it will now float to the left instead of right. If you’d like to retain the original behavior, you can add this css class [data-widget-area="brand-header"] { justify-content: end; display: flex; } Further information here https://community.nodebb.org/topic/17090/manual-build-a-custom-header-in-harmony/19?_=1684069325296
  • [NODEBB] Help for my custom CSS

    Solved Customisation nodebb css bugfix
    258
    49 Votes
    258 Posts
    168k Views
    cagatay
    mark hi, Refused to apply style from ‘https://efelsefe.com/assets/customfonts/FontAwesome-6-Pro/pro/css/v4-font-face.css’ because its MIME type (‘text/plain’) is not a supported stylesheet MIME type, and strict MIME checking is enabled. I keep getting this error.