Использование Google ChartRangeFilter с Keen IO

Я надеюсь найти способ, используя библиотеку визуализации Keen, интегрировать ChartRangeFilter Google Chart (https://developers.google.com/chart/interactive/docs/gallery/controls#chartrangefilter). Раздел в документации Keen (https://github.com/keen/keen-js/blob/master/docs/visualization.md#line-chart), связанный с линейными диаграммами, похоже, не предоставляет никаких оболочек или элементов управления диаграмм.

Короче говоря, есть ли способ отрисовать линейный график с ChartRangeFilter, используя Keen из коробки? Или мне придется запрашивать необработанные данные и самому строить графики?


person kyzarky    schedule 16.09.2016    source источник
comment
вам нужно будет подключить их вручную - когда ChartRangeFilter изменится, используйте метод getDataTable для получения данных и перерисовки линейной диаграммы Keen - но почему бы просто не использовать линейную диаграмму Google в панели инструментов Google?   -  person WhiteHat    schedule 19.09.2016


Ответы (1)


Глядя на пример кода и инструкции Google Chart из https://developers.google.com/chart/interactive/docs/gallery/controls#using-controls--and-dashboards вам нужно будет объединить код из Google в часть диаграммы после того, как ваш результат будет рассчитано по Кину.

Сначала вы подготовите свои данные (в вашем случае, используя результат данных, возвращенный из Keen IO), затем создадите панель инструментов и, наконец, отрисуете/отрисуете компоненты (включая chartRangeFilter). Рисование фильтра диапазонов для диаграммы — это модификация существующей визуализации, которую можно построить с помощью Keen IO.

// Load the Google Visualization API and the controls package.
google.charts.load('current', {packages:['corechart', 'table', 'gauge', 'controls']});

// Set a callback to run when the Google Visualization API is loaded.
google.charts.setOnLoadCallback(init);

function init(){
  client
  //Run your Keen Query/Analysis Call 
  .query('count', {
      event_collection: 'add_to_carts',
      timeframe: {
        start: '2016-09-01',
        end: '2016-09-12'
      },
      interval: 'hourly',
      timezone: 'US/Pacific'
      //group_by: 'product_name'
  })
  .then(function(res){
  	var chart = new Dataviz()
    	.data(res)

    drawDashboard(chart.data());
  })
  .catch(function(err){
    console.log('err');
  });
}

// Callback that creates and populates a data table,
// instantiates a dashboard, a range slider and a pie chart,
// passes in the data and draws it.
function drawDashboard(keenDataTable) {

  // Create our data table.
  var data = google.visualization.arrayToDataTable(keenDataTable);

  // Create a dashboard.
  var dashboardEl = document.getElementById('dashboard_div');
  var dashboard = new google.visualization.Dashboard(dashboardEl);

  // Create a range slider, passing some options
  var chartRangeSlider = new google.visualization.ControlWrapper({
    'controlType': 'ChartRangeFilter',
    'containerId': 'control_div',
    'options': {
	    'filterColumnIndex': 1,
      'ui': {
          'chartType': 'LineChart',
          'chartOptions': {
            'chartArea': {'height': '20%', 'width': '90%'},
            'hAxis': {'baselineColor': 'none'}
          }
      }
  	}
  });

  // Create a pie chart, passing some options
  var lineChart = new google.visualization.ChartWrapper({
    'chartType': 'LineChart',
    'containerId': 'chart_div',
    'options': {
         // Use the same chart area width as the control for axis alignment.
        'chartArea': {'height': '80%', 'width': '90%'},
        'hAxis': {'slantedText': false},
        'vAxis': {'viewWindow': {'min': 0, 'max': 50}},
        'legend': {'position': 'none'}
    }
  });

  // Establish dependencies, declaring that 'filter' drives 'lineChart',
  // so that the chart will only display entries that are let through
  // given the chosen slider range.
  dashboard.bind(chartRangeSlider, lineChart);

  // Draw the dashboard.
  dashboard.draw(data);

Вот ссылка на скрипт JavaScript, который запускает этот код и показывает результат анализа Keen, отображаемый вместе с компонентом дальномера Google: http://jsfiddle.net/kuqod2ya/4/

В этом примере кода используются новейшие библиотеки Keen-analysis.js и Keep-dataviz.js. Для доступа к Google Chart дополнительные параметры включают loader.js.

person jandwiches    schedule 12.01.2017