2015-12-02 2 views
0

Я пытаюсь получить ярлыки, которые появятся на моей диаграмме столбцов.Highcharts, ROR, как получить ярлыки, работающие

JavaScript

<%= javascript_tag do %> 
    window.highchartDATA = '<%= @data %>'; 
<% end %> 

dashboard.html.erb

<script> 
$(function() { 


     $('#notes_chart').highcharts({ 
      chart: { 
       type: 'column', 
       backgroundColor: { 
       linearGradient: { x1: 0, y1: 0, x2: 1, y2: 1 }, 
       stops: [ 
       [0, '#2a2a2b'], 
       [1, '#3e3e40'] 
     ] 
     }, 

      }, 
      title: { 
       text: 'Total Notes By Class Module' 
      }, 
      subtitle: { 
       text: 'Source: Notes Table' 
      }, 
      xAxis: { 
       categories: [], 
       title: { 
        text: null 
       }, 
       labels: { 
        overflow: 'justify', 
        style: { 
        color: '#FFFFFF', 
        font: '11px Trebuchet MS, Verdana, sans-serif' 
        } 
       } 
      }, 
      yAxis: { 
       min: 0, 
       title: { 
        text: 'Total Number', 
        align: 'high' 
       }, 
       labels: { 
        overflow: 'justify', 
        style: { 
        color: '#FFFFFF', 
        font: '11px Trebuchet MS, Verdana, sans-serif' 
        } 
       } 
      }, 
      tooltip: { 
       valueSuffix: '' 
      }, 
      plotOptions: { 
       column: { 
        dataLabels: { 
         enabled: true 
        } 
       } 
      }, 

      credits: { 
       enabled: false 
      }, 
      series: [{ 
      name: 'Number of Notes By Class Module', 
      data: <%= @data %> 
      }] 
     }); 
    }); 
</script> 

Note.rb

def self.getData 
    data = [] 
    self.subject_types.each do |type| 
     data << self.type_count(type) 
    end 
    data 
    end 

    private 

    def self.subject_types 
    pluck(:subject_type).uniq 
    end 

    def self.type_count(type) 
    where(subject_type: type).count 
    end 
end 

Контроллер: notes_controller.rb

def dashboard 
    @data = Note.highchart_data 
    end 

График заполняется из следующей модели:

create_table "classmodules", force: :cascade do |t| 
    t.integer "student_id" 
    t.string "subject" 
    t.datetime "created_at", null: false 
    t.datetime "updated_at", null: false 
    end 

В настоящее время это работает. Однако я не могу заставить метки появляться на диаграмме столбцов. Как получить ярлыки автоматически? Все что есть 1, 2, 3, 4 и т. Д. Спасибо!

+0

Вы хотите метки данных появится или вы имеете в виду этикетки на оси х и у? –

+0

Спасибо. Я имею в виду метки на оси x. Все, что я получаю, это 0, 1, 2, 3 и т. Д. Могу ли я заставить их автоматически обновлять данные из модели/таблицы? – Co2

ответ

1

Вы можете:

Для данных, я полагаю, вы передаете в массив графов типа. Так как это 1-мерный массив, ось x рассматривается как местоположение в этом массиве.

Если вы хотите, чтобы метки объекта находились по оси x, вы должны передать в следующем формате данные [[subject, count] ...].

См: http://api.highcharts.com/highcharts#series.data

+0

Вы имеете в виду на виду? Благодарю. Что входит в категории [],? – Co2

+1

Да, я имел в виду в файле note.rb. Если вы передадите 2-мерный массив с меткой объекта, подсчитайте, то вам не нужно заполнять массив категорий по оси x. Если вы хотите сделать одномерный массив, тогда вы будете передавать свои метки как категории на оси x (такой же результат, пока у вас есть только 1 серия) –

+0

Спасибо. Пользователи заполняются пользователем. Это усложняет ситуацию. Я не хочу назначать метки в коде. Я бы просто хотел, чтобы метки отображались автоматически. – Co2

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