2013-05-31 3 views
1

Как бы поместить внешний график javascript, как один из flot или jqplot, в окно extjs? Я знаю, что я могу использовать диаграммы, которые предоставляет extjs, но я хочу вместо этого поместить диаграмму флота или jqplot внутри окна.Ввод диаграмм javascript внутри окна extjs

+1

Вы должны иметь возможность получить ссылку через Ext на элемент dom, который может разместить вашу карту флота. Я не понимаю, почему это не сработает. Нет причин, по которым вы не можете включать как Ext, так и jquery в ваше приложение. Что конкретно вы пробовали, что не работает? –

+0

Я только начал использовать ext, поэтому я еще не привык к этому, изначально я просто попытался использовать функцию html в ext.window для кода флота, но это не сработало. – user2440909

+0

Возможно, создайте панель и предоставите ей опцию конфигурации, например, «html:»

«'. Затем в каком-то прослушивателе 'afterrender' для этой панели вы можете выполнить создание карты флота. –

ответ

5

Просто сделайте так, как сказал Крис (почему вы не опубликовали его как ответ, чувак?).

Вот полный пример:

Live on jsFiddle (не забудьте проверить вкладку «Внешний ресурс», Flot код из их основного примера).

Ext.onReady(function() { 
    Ext.widget('window', { 
     autoShow: true 
     ,shadow: false 
     ,title: "Flot in ExtJS" 
     ,resizable: true 
     ,margin: 10 
     ,width: 600 
     ,height: 350 

     ,html: '<div class="demo-container">' 
      + '<div id="placeholder" class="demo-placeholder"></div>' 
      + '</div>' 

     ,listeners: { 
      resize: function(panel) { 
       panel.body.down('.demo-container').setSize(panel.body.getSize()); 
      } 
      ,afterrender: function(panel) { 
       var el = this.body; 
       el.down('.demo-container').setSize(el.getSize()); 

       var d1 = []; 
       for (var i = 0; i < 14; i += 0.5) { 
        d1.push([i, Math.sin(i)]); 
       } 
       var d2 = [[0, 3], [4, 8], [8, 5], [9, 13]]; 
       var d3 = [[0, 12], [7, 12], null, [7, 2.5], [12, 2.5]]; 

       $.plot("#placeholder", [ d1, d2, d3 ]); 
      } 
     } 
    }); 
}); 
+0

Спасибо за помощь. Я бы пошел аналогичным синтаксисом для правильного ввода jqplot? Я попытался сделать это, но я не могу получить ничего для вывода, и я убедился, что у меня есть все правильные ресурсы. Вот jsfiddle: [link] (http://jsfiddle.net/eKr9m/1/) – user2440909

+0

Я взглянул на вашу скрипку. У вас две проблемы. Отсутствует CSS первого Ext. Во-вторых, jQuery должен быть загружен перед jqplot (см. Ошибку: «jQuery не определен»). Я только что изменил это в вашей скрипке (обновленная версия [здесь] (http://jsfiddle.net/rixo/eKr9m/2/)), и она работает. К сожалению, jqplot не изменяет размер автоматически, так как это делает флот, поэтому вам нужно будет найти нужный вариант, если вам это нужно. – rixo

+0

Похоже, что я должен был проверить свои ресурсы во второй раз, и я нашел код для изменения размера на веб-странице jqplot. Спасибо за вашу помощь! – user2440909

Смежные вопросы