Home Reference Source Repository

js/Controllers/ControllerDownload.js

import $ from 'jquery';
import BaseController from 'js/Controllers/BaseController';
import Configuration from 'js/Configuration';
import RODAN_EVENTS from 'js/Shared/RODAN_EVENTS';
import Radio from 'backbone.radio';
import saveAs from 'filesaver';

/**
 * Download controller.
 */
export default class ControllerDownload extends BaseController
{
///////////////////////////////////////////////////////////////////////////////////////
// PUBLIC METHODS
///////////////////////////////////////////////////////////////////////////////////////
    /**
     * Initializes the instance.
     */
    initialize()
    {
    }

///////////////////////////////////////////////////////////////////////////////////////
// PRIVATE METHODS
///////////////////////////////////////////////////////////////////////////////////////
    /**
     * Event bindings.
     */
    _initializeRadio()
    {
        Radio.channel('rodan').reply(RODAN_EVENTS.REQUEST__DOWNLOAD_START, (options) => this._handleRequestDownloadStart(options));
    }

    /**
     * Handle download start.
     */
    _handleRequestDownloadStart(options)
    {
        var data = options.data;
        var filename = options.filename;
        var mimetype = options.mimetype;
        var blob = new Blob([data], {type: mimetype});
        saveAs(blob, filename);
    }
}