2017-01-31 4 views
1

Я использую AmCharts/AmStockCharts для отображения линейной диаграммы данных, охватывающей весь год. Обычно он увеличивается, чтобы отображать один месяц, так как это полезный масштаб.Отображен набор AmCharts Месяц

По умолчанию это последний месяц, когда у него есть данные, и я бы хотел, чтобы он отображал текущий месяц.

В настоящее время это конфиг Картографическая:

AmCharts.makeChart("overview_chart", { 
     type: "stock", 
     "theme": "light", 
     "categoryAxesSettings": { 
      minPeriod: "1hh", 
      groupToPeriods: ["1hh"] 
     }, 

     dataSets: [ 
      { 
       fieldMappings: fieldMappings, 
       dataProvider: chartData, 
       title: "Overview", 
       categoryField: "date" 
      } 
     ], 

     panels: [ 
      { 
       title: "Results", 
       showCategoryAxis: true, 
       percentHeight: 70, 
       valueAxes: [ 
        { 
         id: "v1", 
         stackType: "regular" 
        } 
       ], 

       categoryAxis: { 
        dashLength: 5 
       }, 

       stockGraphs: stockGraphs, 

       stockLegend: { 
       align: "left", 
       position: "absolute", 
       divId: "optimizationLegend" 
       } 
      } 
     ], 

     chartScrollbarSettings: { 

      graph: "Total", // shows nice profile 
      graphType: "line", 
      usePeriod: "1hh" 
     }, 

     chartCursorSettings: { 
      valueBalloonsEnabled: true, 
      valueLineBalloonEnabled: true, 
      valueLineEnabled: true, 
      categoryBalloonText: '[[category]]', 
      categoryBalloonDateFormats: [ 
       { 
        period: "YYYY", 
        format: "DD.MM.YYYY HH:NN" 
       }, { 
        period: "MM", 
        format: "DD.MM.YYYY HH:NN" 
       }, { 
        period: "WW", 
        format: "DD.MM.YYYY HH:NN" 
       }, { 
        period: "DD", 
        format: "DD.MM.YYYY HH:NN" 
       }, { 
        period: "hh", 
        format: "DD.MM.YYYY HH:NN" 
       }, { 
        period: "mm", 
        format: "DD.MM.YYYY HH:NN" 
       }, { 
        period: "ss", 
        format: "DD.MM.YYYY HH:NN" 
       }, { 
        period: "fff", 
        format: "DD.MM.YYYY HH:NN" 
       } 
      ] 
     }, 

     periodSelector: { 
      position: "bottom", 
      periods: [ 
       { 
        period: "MM", 
        selected: true, 
        count: 1, 
        label: "1 month" 
       }, { 
        period: "YYYY", 
        count: 1, 
        label: "1 year" 
       }, { 
        period: "YTD", 
        label: "YTD" 
       }, { 
        period: "MAX", 
        label: "MAX" 
       } 
      ] 
     }, 
     "export": { 
      "enabled": true 
     } 
    }); 

Как бы мне это сделать?

+0

Не могли бы вы поделиться с нами скрипкой, чтобы проверить вашу проблему? –

+0

Я полагаю, но в настоящее время у меня нет ничего, даже частичного решения. Я создаю обычный AmStockChart, загружая некоторые данные и используя makeChart(). Так что я не уверен, что может показаться скрипкой? – MarkZ

+0

Скрипка показывает, какие настройки вы используете. «Обычный AmStockChart» не говорит о том, что вы включили, потому что график акций не обязательно по умолчанию влияет на это поведение в зависимости от свойств, которые вы используете. Например, настройка barebones с установленными свойствами панели и набора данных покажет весь набор данных, а не только последний месяц. Я могу угадать догадку о том, что вы * могли бы включить из поведения, которое вы описываете, и можете поднять ответ, но скрипка, безусловно, предотвратит много комментариев и комментариев. – xorspark

ответ

2

Похоже, у вас есть periodSelector включен с одной из кнопок selected набора свойств истинных (скорее всего, кнопок 1 month из примеров AmCharts). Эти кнопки всегда начинаются с конца ваших данных по умолчанию, хотя поведение может быть изменено, если вы создаете собственное событие changed в periodSelector, но это немного не соответствует теме.

Вы можете установить масштаб по умолчанию, создав собственное событие rendered, которое масштабирует до нужных дат, вызывая метод zoom диаграммы. Обратите внимание, что вам нужно удалить selected свойство от вашего periodSelector для этого работы:

var chart = AmCharts.makeChart("chartdiv", { 
    // ... 
    "listeners": [{ 
    "event": "rendered", 
    "method": function(e) { 
     var startDate = new Date(); 
     var endDate = new Date(); 

     startDate.setDate(1); 
     endDate.setMonth(endDate.getMonth() + 1, 1); 
     e.chart.zoom(startDate, endDate); 
    } 
    }] 
}); 

Вот demo.

Редактировать init событие также будет работать, так и может быть предпочтительнее в зависимости от сценария. validateData()/validateNow() вызывает триггерное событие rendered, поэтому, если вы динамически добавляете данные в диаграмму после первоначального вызова makeChart, тогда также загорается код масштабирования по умолчанию. Если вы не хотите, чтобы это произошло, вместо этого используйте init.

+0

К сожалению, это не имеет никакого эффекта, хотя я вижу, что он вызван. Тип события, когда он вызван, также «load», а не «rendered» ... – MarkZ

+0

Вы уверены, что удалили свойство 'selected' в своей кнопке periodSelector, как я уже сказал? Это важная часть этой работы. Я создал код (http://codepen.io/team/amcharts/pen/65753a3fb4c8167ff8a6a98d7fbca99f?editors=0010) с вашим кодом, и он работает для меня после того, как я прокомментировал строку 'selected'. – xorspark

+0

Действительно, я этого не делал, спасибо! – MarkZ

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