Hola,

Estoy intentando incluir un gráfico Sankey de Google Chart en Cognos 
Analytics. Como requisito para poder integrarlos, necesito crear un módulo 
que sea compatible con requireJS, pero cuando lo incluyo tengo problemas 
con dependencias de D3. ¿Pódeis echarme un cable?



define(["https://www.gstatic.com/charts/loader.js";], function() {
    "use strict";


    function Control() {};
    Control.prototype.initialize = function(oControlHost, fnDoneInitializing
) {
        console.log('entra en initialize');
        this.m_oControlHost = oControlHost;
        fnDoneInitializing();
        console.log('sale de initialize');
    };
    Control.prototype.destroy = function(oControlHost) {
        this.m_oControlHost = null;
    };
    Control.prototype.getConfigurationValue = function(sName, sDefaultValue) 
{
        var o = this.m_oControlHost.configuration;
        return (o && (o[sName] !== undefined)) ? o[sName] : sDefaultValue;
    };
    Control.prototype.drawChart = function() {
        console.log('entra en drawChart');
        var data = new google.visualization.DataTable();
        data.addColumn('string', 'From');
        data.addColumn('string', 'To');
        data.addColumn('number', 'Weight');
        data.addRows([
            ['Brazil', 'Portugal', 5],
            ['Brazil', 'France', 1],
            ['Brazil', 'Spain', 1],
            ['Brazil', 'England', 1],
            ['Canada', 'Portugal', 1],
            ['Canada', 'France', 5],
            ['Canada', 'England', 1],
            ['Mexico', 'Portugal', 1],
            ['Mexico', 'France', 1],
            ['Mexico', 'Spain', 5],
            ['Mexico', 'England', 1],
            ['USA', 'Portugal', 1],
            ['USA', 'France', 1],
            ['USA', 'Spain', 1],
            ['USA', 'England', 5],
            ['Portugal', 'Angola', 2],
            ['Portugal', 'Senegal', 1],
            ['Portugal', 'Morocco', 1],
            ['Portugal', 'South Africa', 3],
            ['France', 'Angola', 1],
            ['France', 'Senegal', 3],
            ['France', 'Mali', 3],
            ['France', 'Morocco', 3],
            ['France', 'South Africa', 1],
            ['Spain', 'Senegal', 1],
            ['Spain', 'Morocco', 3],
            ['Spain', 'South Africa', 1],
            ['England', 'Angola', 1],
            ['England', 'Senegal', 1],
            ['England', 'Morocco', 2],
            ['England', 'South Africa', 7],
            ['South Africa', 'China', 5],
            ['South Africa', 'India', 1],
            ['South Africa', 'Japan', 3],
            ['Angola', 'China', 5],
            ['Angola', 'India', 1],
            ['Angola', 'Japan', 3],
            ['Senegal', 'China', 5],
            ['Senegal', 'India', 1],
            ['Senegal', 'Japan', 3],
            ['Mali', 'China', 5],
            ['Mali', 'India', 1],
            ['Mali', 'Japan', 3],
            ['Morocco', 'China', 5],
            ['Morocco', 'India', 1],
            ['Morocco', 'Japan', 3]
        ]); // Set chart options 
        var options = {
            width: 600
        };
        var chart = new google.visualization.Sankey(document.getElementById(
'sankey_multiple'));
        chart.draw(data, options);
        console.log('sale de drawChart');
    };
    Control.prototype.draw = function(oControlHost) {
        console.log('entra en draw');
        var elContainer = oControlHost.container;
        elContainer.innerHTML = '<div id="sankey_multiple" style="width: 
900px; height: 300px;"></div>';
        google.charts.load('visualization', '1.1', {
            'packages': ['sankey']
        });
        google.charts.setOnLoadCallback(this.drawChart.bind(this));
        console.log('sale de draw');
    };
    Control.prototype.setData = function(oControlHost, oDataStore) {
        console.log('entra en setData');
        this.m_oDataStore = oDataStore;
        console.log('sale de setData');
    };
    return Control;
});


Cognos ejecuta en este orden los procedimientos:

initialize
setData: Aquí se leerán los datos con la API de Cognos que después se 
pasarán al sankey en vez de meterlos hardcodeados en el método drawchart. 
Draw: Pinta un contenedor y el gráfico, aquí es donde falla al llamar a la 
función drawchart.

Si pudieseis ponerme un ejemplo de como funcionaría el Sankey con RequireJS 
creo que podría continuar.

Muchas gracias,
Un saludo,


-- 
You received this message because you are subscribed to the Google Groups 
"Google Visualization API" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/google-visualization-api.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/google-visualization-api/7cc9aa69-0366-4cd7-a896-f38e3b13eb4b%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to