RESAAS progress indicator

by John Allan

HTML

<script src="http://www.resaas.com/assets/common/js/vendor/pubsub/pubsub.js?v=1-8"></script>

JavaScript

(function () {
    
    var tracker;
    
    tracker = {};
    
    function handleProgress (event, data) {
        if (tracker[data.guid]) {
            console.log(data.guid, data.data.loaded, '/', data.data.total, '|', data.data.files[0].name );
        }
    }
    
    function unbind (event, data) {
        if (tracker[data.guid]) {
            console.log('remove', data.guid, 'from', tracker[data.guid].selector);
            console.log('delete', 'tracker[' + data.guid + ']');
        }
    }
    
    function bind (event, data) {
        tracker[data.guid] = data;
        console.log(data.guid, data.selector, data.action, data.template);
    }
    
    PubSub.subscribe('uiWantsToTrackFileUploadProgress', bind);
    PubSub.subscribe('uiWantsToHideFileUploadProgress', unbind);
    PubSub.subscribe('dataProgress', handleProgress);
}());

PubSub.publish('uiWantsToTrackFileUploadProgress', {
    guid: '000',
    selector: '.selector',
    action: 'append',
    template: 'progress: '
});

PubSub.publish('uiWantsToTrackFileUploadProgress', {
    guid: '111',
    selector: '.findit',
    action: 'prepend',
    template: 'progress: '
});

PubSub.publish('dataProgress', {
    'guid': '000',
    'data': {
        'total': 1000,
        'loaded': 700,
        'files': [{
            'name': 'image.jpg'
        }]
    }
});

PubSub.publish('dataProgress', {
    'guid': '111',
    'data': {
        'total': 1000,
        'loaded': 300,
        'files': [{
            'name': 'photo.jpg'
        }]
    }
});

PubSub.publish('dataProgress', {
    'guid': '000',
    'data': {
        'total': 1000,
        'loaded': 800,
        'files': [{
            'name': 'image.jpg'
        }]
    }
});

PubSub.publish('uiWantsToHideFileUploadProgress', {
    guid: '000'
});