загрузить SWF в диалоговом окне JQuery UI - PullRequest
0 голосов
/ 04 марта 2011

Я использую fusionmaps из пакета fusionCharts. Я обыскал всю их документацию и базу знаний, чтобы понять, как это сделать, но мне не повезло, поэтому я обращаюсь к вам, ребята.

У меня есть карта (SWF-файл), которая берет данные из документа XML для создания своих данных. В этом xml для конкретной сущности я могу сделать вызов javascript. В файле, в котором включен swf, у меня есть JS и библиотека jquery. В конечном итоге я пытаюсь получить другой SWF-файл для всплывающего окна в диалоговом окне пользовательского интерфейса. Я не уверен, как это сделать, если это возможно. Я получаю диалоговое окно для всплывающего окна, но оно пустое. SWF-файл, который я хочу разместить там, загружается поверх моего другого SWF-файла. Есть предложения?

Вот мой код.

<script type="text/javascript"><!--
$(document).ready(function() { 
    $("#dialogContainer").dialog({
        bgiframe: true,
        height: 500,
        width: 600,
        modal: true,
        autoOpen: false,
        buttons: { "Close": function() { $(this).dialog("close"); }},
        show: 'fold',
        hide: 'fold'
    });
}); //Close ready function  


function loadDialog(continent) {
    //var url = 'showDetails.cfm?region=' + continent;
    //$("#dialogContainer").html('Loading. Please wait...');
    $.ajax({
        type: "post",
        url: 'showDetails.cfm',
        cache: false,
        //dataType: 'html',
        data: 'region=' + continent,
        beforeSend: function() {$('#dialogContainer').html('Loading. Please wait...').dialog('open');},
        success: function(msg) {$('#dialogContainer').html(msg);},
        error: function(msg) {$('#dialogContainer').html(msg);} 
    });
}

Мой вызов fusionmap

<script type="text/javascript">
var map = new FusionMaps("Maps/FCMap_World8.swf", "Map1Id", "500", "300", "0", "0");
map.setDataURL("WorldData2.xml");
map.render("mapdiv");     
</script>

Я знаю, что это длинный вопрос по этому вопросу, но я просто надеюсь. Спасибо за внимание и любые ваши предложения.

Chris

Ответы [ 2 ]

0 голосов
/ 03 июня 2011

Если вы используете FusionCharts ранее до версии 3.2, вам нужно установить wmode диаграммы на непрозрачный или прозрачный.

Вот пример, который может помочь:

http://www.igcomm.com/show/maps/drill/jQuery

Здесь были использованы 3.1 FusionMaps и 3.1.1 FusionCharts. скриншот выглядит следующим образом:

FusionCharts in jQuery dialog opening as drilldown after map entity is clicked

Код выглядит следующим образом:

<html>
  <head>
    <!-- Load FusionMaps 3.1 JavaScript wrapper -->
    <script language="JavaScript" src="FusionMaps.js"></script>
    <!-- Load FusionCharts 3.1.1 JavaScript wrapper -->
    <script language="JavaScript" src="FusionCharts.js"></script>
    <!-- Load jQuery UI resources to load jQuery dialog -->
    <link href="jquery.ui/jquery-ui.css" rel="stylesheet" type="text/css" />
    <script src="jquery.ui/jquery.min.js" type="text/javascript"></script>
    <script src="jquery.ui/jquery-ui.min.js" type="text/javascript"></script>
  </head>
  <body>
    <!-- Declare map and chart container DIVs -->
    <div id="mapdiv" align="center">FusionMaps will load here!</div>
    <div id="chartContainer" style="width:300px;height:300px;">FusionCharts will load here!</div>

    <script type="text/javascript"><!--

       // Declare jQuery dialog on the chart container
       var dialog;
       $(document).ready(function() {
            dialog = $('#chartContainer').dialog({
                autoOpen: false,
                width: 340,
                height: 370,
            });
        });

       // Define and render map of World
       // In the XML data of the map each entity is linked to a JavaScript function showChart 
       // where respective entity id is passed
       var map = new FusionMaps("FCMap_World.swf", "Map1Id", "700", "450", "0", "0");
       // set map to opaque mode
       map.setTransparent(false);
       // If you wish you can set map to transparent mode uncommenting the line below
       //map.setTransparent(true);
       map.setDataURL("mapdata.xml");          
       map.render("mapdiv");


      // This function is called when a Map entity is clicked
      // It takes id as parameter where respective entity id is passed         
      function showChart(id)
      {

        // Stores the full name of each entity with resepct to the id
        var mapNames = {"NA" : "Noth America" , "SA" : "South America" , "AS" : "Asia" , "EU" : "Europe", "AF" : "Africa", "AU" : "Australia"};

        // Render chart
        var chart = new FusionMaps("Pie2D.swf", "chartId", "300", "300", "0", "0");

        // Set chart to opaque mode
        chart.setTransparent(false);
        // f you wish you can set chart to transparent mode uncommenting the line below
        //chart.setTransparent(true);

        // In this simple same detailed data for each map is stored in different files
        // The files are named as per the id
        chart.setDataURL(id+"Chart.xml");          
        chart.render("chartContainer");

        // Sets the dialog's title with the full name of the clicked entity
        dialog.dialog( "option", "title", 'Chart of ' + mapNames[id] );
        // Show the jQuery dialog which contains the chart
        dialog.dialog('open');
      }
    // -->   
    </script>
  </body>
</html>

Также возможна загрузка исходного кода: http://www.igcomm.com/show/maps/drill/jQuery/download.zip.

0 голосов
/ 21 марта 2011

Я могу переслать вам ресурсы и примеры кодов, необходимые для визуализации FusionCharts в модальном окне (диалоге) jQuery.

Была предложена совершенно другая реализация той же функции (с использованием LinkedCharts) в FusionCharts.at Примеры кода PowerCharts * Документация 1004 *.

Шаги, необходимые для визуализации FusionCharts в диалоге jQuery

Шаг 1. Создание диалогового контейнера HTML

В любом месте на вашей странице,создайте бланк

и присвойте ему уникальный идентификатор.
<div id="chart-container"></div>

Шаг 2. Создание объекта jQuery Dialog и FusionCharts

При загрузке страницы (готов документ jQuery) преобразовать ранее созданное разделение в диалоговое окно jQuery.

<script type="text/javascript"><!--

// Globally accessible variable for later use
var jqDialog; 

// Create dialog box on document ready.
$(document).ready(function() {
    jqDialog = $('#chart-container').dialog({
        autoOpen: false,
        width: 550,
        height: 320,
        title : 'FusionCharts in jQuery Dialog'
    });
});

var myChart = new FusionCharts({
    swfUrl: 'Charts/Column2D.swf',
    width: '100%', height: '100%',
    renderAt: 'chart-container'
});

// --></script>

Шаг 3. Создание функции для загрузки FusionCharts

Теперь мы создаем функцию JavaScript, которая загружает FusionCharts и открывает диалоговое окно.

<script type="text/javascript"><!--

function loadChartInDialog () {
    jqDialog.dialog('open'); // open dialog
    myChart.setXMLUrl('Data.xml'); // set data of chart
    myChart.render(); // render the chart.
}
//--></script>

Сейчас,при необходимости пользователь может вызвать эту функцию loadChartInDialog, чтобы открыть диалоговое окно и загрузить диаграмму.

...