Как динамически корректировать то, что показано на графике Chartkick - PullRequest
0 голосов
/ 11 апреля 2019

Я создаю приложение в Ruby on Rails.В приложении у меня есть несколько вещей, которые я отслеживаю по количеству кликов, используя события Ahoy.Это количество кликов затем отображается на странице администратора в диаграмме с помощью Chartkick.Идея состоит в том, что если что-то имеет небольшие щелчки, его следует удалить и заменить чем-то другим.Теперь проблема в том, что если я удаляю информацию, то она все еще отслеживается в Chartkick.

Например, обычно в Chartkick создаются графики, например

<%= pie_chart Yogurt.group(:flavor).count %>

Где Yogurt - это имятаблицы: flavour - это имя столбца.Однако при использовании Ahoy :: Events отслеживается много информации, такой как идентификатор, класс, текст и т. Д. В столбце свойств

Если я попытаюсь создать такой график, как этот

<%= pie_chart Ahoy::Events.group(:properties).count %>

Тогда информация, отображаемая на графике, будет включать все различные нажатия кнопок, их идентификаторы и т. Д., И она просто не будет читаться.Это также означает, что невозможно разделить различные щелчки, которые необходимо отслеживать.

Еще один способ сделать это - создать в контроллере переменную, в которую будет входить число раз, которое оно появляется вбаза данных

@variable = Ahoy::Events.where("properties->>'text' = ?", "Name of title that you are tracking the clicks for").count

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

  = pie_chart [["Name of title that you are tracking the clicks for", @variable], ["anothername", @variable2]]

. Это сработает, однако в контроллере это выглядит ужасно, когда один график содержит около 15 переменных.Кроме того, когда один из заголовков будет удален для чего-то другого, на диаграмме все равно будет отображаться старый заголовок.

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

@features = Ahoy::Events.where("properties->>'class' = ?", "btn btn-link feature")

@ функции, затем можно зациклить, и текст, отображаемый

@features.each_with_index do |name, index|
      puts @name[index].properties["text"]
 end

Это возвращает что-то вродеэто (где заголовки были заменены функцией n)

feature 1

feature 2

feature 1

feature 4

feature 5

Теперь это хорошо, так как включает в себя текст, который я хочу отобразить, и количество раз, когда они происходят

Однако я не могу создать график чарткиковкак это

= pie_chart @features

, поскольку @features имеет неправильный формат

Мне нужно создать переменную в этом формате

{"feature 1"=>n, "feature 2"=>n}

, где n - это числораз они появляются в цикле

...