view piecrust/admin/assets/js/foodtruck.js @ 929:cebeedfa034f

serve: Don't start the admin panel SSE until the window is ready.
author Ludovic Chabant <ludovic@chabant.com>
date Wed, 04 Oct 2017 09:08:31 -0700
parents 628d639bb30b
children
line wrap: on
line source


$(document).ready(function() {
    $("time.timeago").timeago();

    $('.ft-nav-toggle').click(function() {
        $('.ft-nav-container').toggleClass('ft-nav-enabled');
        $('.ft-nav').toggleClass('ft-nav-enabled');
    });

    $('.ft-nav-collapsed + ul').hide();

    $('#ft-commit-modal').on('shown.bs.modal', function () {
        $('#ft-commit-msg').focus();
    });

    var publogEl = $('#ft-publog');
    publogEl.mouseenter(function() {
        publogEl.attr('data-autohide', 'false');
    });
    publogEl.on('hide', function() {
        var containerEl = $('#ft-publog-container', publogEl);
        containerEl.empty();
    });

    var closePublogBtn = $('button', publogEl);
    closePublogBtn.on('click', function() {
        publogEl.fadeOut(200);
    });

    if (!!window.EventSource) {
        // TODO: this only works when the Foodtruck blueprint is added under `/pc-admin`.
        var source = new EventSource('/pc-admin/publish-log');
        source.onerror = function(e) {
            console.log("Error with SSE, closing.", e);
            source.close();
        };
        source.addEventListener('message', onPublishEvent);
    }
});

var onPublishEvent = function(e) {

    var publogEl = $('#ft-publog');
    var containerEl = $('#ft-publog-container', publogEl);

    var msgEl = $('<div>' + e.data + '</div>');
    var removeMsgEl = function() {
        msgEl.remove();
        if (containerEl.children().length == 0) {
            // Last message, hide the log window.
            publogEl.fadeOut(200);
        }
    };
    var timeoutId = window.setTimeout(function() {
        if (publogEl.attr('data-autohide') == 'true') {
            msgEl.fadeOut(400, removeMsgEl);
        }
    }, 4000);

    if (containerEl.children().length == 0) {
        // First message, show the log window, reset the mouseover marker.
        publogEl.attr('data-autohide', 'true');
        publogEl.fadeIn(200);
    }
    containerEl.append(msgEl);
};