dash_creator 0.1.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.md +170 -0
  4. data/Rakefile +36 -0
  5. data/app/assets/config/dash_creator_manifest.js +2 -0
  6. data/app/assets/javascripts/dash_creator/application.js +24 -0
  7. data/app/assets/javascripts/dash_creator/chart.js +2 -0
  8. data/app/assets/javascripts/dash_creator/dashboard.js +2 -0
  9. data/app/assets/javascripts/dash_creator/dashboard_object.js +2 -0
  10. data/app/assets/javascripts/dash_creator/filter.js +2 -0
  11. data/app/assets/javascripts/dash_creator/libs/Chart.js +12269 -0
  12. data/app/assets/javascripts/dash_creator/libs/bootstrap.js +3535 -0
  13. data/app/assets/javascripts/dash_creator/libs/chartCreator.js +1582 -0
  14. data/app/assets/javascripts/dash_creator/libs/dashboardCreator.js +531 -0
  15. data/app/assets/javascripts/dash_creator/libs/daterangepicker.js +1626 -0
  16. data/app/assets/javascripts/dash_creator/libs/filterCreator.js +733 -0
  17. data/app/assets/javascripts/dash_creator/libs/jquery-ui.js +18706 -0
  18. data/app/assets/javascripts/dash_creator/libs/jquery.minicolors.js +1108 -0
  19. data/app/assets/javascripts/dash_creator/libs/moment.js +4301 -0
  20. data/app/assets/javascripts/dash_creator/libs/tether.js +1811 -0
  21. data/app/assets/javascripts/dash_creator/user.js +2 -0
  22. data/app/assets/stylesheets/dash_creator/application.css +16 -0
  23. data/app/assets/stylesheets/dash_creator/chart.css +4 -0
  24. data/app/assets/stylesheets/dash_creator/dashboard.css +4 -0
  25. data/app/assets/stylesheets/dash_creator/dashboard_object.css +4 -0
  26. data/app/assets/stylesheets/dash_creator/filter.css +4 -0
  27. data/app/assets/stylesheets/dash_creator/fonts/FontAwesome.otf +0 -0
  28. data/app/assets/stylesheets/dash_creator/fonts/fontawesome-webfont.eot +0 -0
  29. data/app/assets/stylesheets/dash_creator/fonts/fontawesome-webfont.svg +2671 -0
  30. data/app/assets/stylesheets/dash_creator/fonts/fontawesome-webfont.ttf +0 -0
  31. data/app/assets/stylesheets/dash_creator/fonts/fontawesome-webfont.woff +0 -0
  32. data/app/assets/stylesheets/dash_creator/fonts/fontawesome-webfont.woff2 +0 -0
  33. data/app/assets/stylesheets/dash_creator/libs/font-awesome.css +2199 -0
  34. data/app/assets/stylesheets/dash_creator/libs/jquery.minicolors.css +319 -0
  35. data/app/assets/stylesheets/dash_creator/libs/jquery.minicolors.png +0 -0
  36. data/app/assets/stylesheets/dash_creator/libs/style.css +13714 -0
  37. data/app/assets/stylesheets/dash_creator/user.css +4 -0
  38. data/app/controllers/dash_creator/application_controller.rb +3 -0
  39. data/app/controllers/dash_creator/chart_controller.rb +81 -0
  40. data/app/controllers/dash_creator/dashboard_controller.rb +37 -0
  41. data/app/controllers/dash_creator/dashboard_object_controller.rb +34 -0
  42. data/app/controllers/dash_creator/filter_controller.rb +60 -0
  43. data/app/controllers/dash_creator/user_controller.rb +82 -0
  44. data/app/helpers/dash_creator/application_helper.rb +4 -0
  45. data/app/helpers/dash_creator/chart_helper.rb +829 -0
  46. data/app/helpers/dash_creator/dashboard_helper.rb +4 -0
  47. data/app/helpers/dash_creator/dashboard_object_helper.rb +4 -0
  48. data/app/helpers/dash_creator/filter_helper.rb +237 -0
  49. data/app/helpers/dash_creator/user_helper.rb +4 -0
  50. data/app/jobs/dash_creator/application_job.rb +4 -0
  51. data/app/mailers/dash_creator/application_mailer.rb +6 -0
  52. data/app/models/dash_creator/application_record.rb +5 -0
  53. data/app/models/dash_creator/chart.rb +21 -0
  54. data/app/models/dash_creator/dashboard.rb +13 -0
  55. data/app/models/dash_creator/dashboard_object.rb +7 -0
  56. data/app/models/dash_creator/filter.rb +22 -0
  57. data/app/views/dash_creator/chart/_chart_creator.html.erb +230 -0
  58. data/app/views/dash_creator/chart/_modals.html.erb +74 -0
  59. data/app/views/dash_creator/chart/_plot_chart.html.erb +45 -0
  60. data/app/views/dash_creator/chart/create_chart.js.erb +53 -0
  61. data/app/views/dash_creator/dashboard/_dashboard_creator.html.erb +182 -0
  62. data/app/views/dash_creator/dashboard/_modals.html.erb +74 -0
  63. data/app/views/dash_creator/dashboard_object/_chart.html.erb +9 -0
  64. data/app/views/dash_creator/dashboard_object/_stat.html.erb +24 -0
  65. data/app/views/dash_creator/dashboard_object/_table.html.erb +16 -0
  66. data/app/views/dash_creator/filter/_filtering_card.html.erb +132 -0
  67. data/app/views/dash_creator/filter/_modals.html.erb +51 -0
  68. data/app/views/dash_creator/filter/_result_tables.html.erb +55 -0
  69. data/app/views/dash_creator/filter/apply_filtering.js.erb +46 -0
  70. data/app/views/dash_creator/filter/create_stat.js.erb +20 -0
  71. data/app/views/dash_creator/layouts/application.html.erb +64 -0
  72. data/app/views/dash_creator/layouts/menu/_left_menu.html.erb +12 -0
  73. data/app/views/dash_creator/user/_section_card.html.erb +17 -0
  74. data/app/views/dash_creator/user/creator.html.erb +11 -0
  75. data/app/views/dash_creator/user/dashboard.html.erb +10 -0
  76. data/config/initializers/dash_creator.rb +0 -0
  77. data/config/routes.rb +30 -0
  78. data/lib/dash_creator.rb +87 -0
  79. data/lib/dash_creator/acts_as_dash_creator.rb +16 -0
  80. data/lib/dash_creator/acts_as_dashboard_object.rb +19 -0
  81. data/lib/dash_creator/engine.rb +11 -0
  82. data/lib/dash_creator/version.rb +3 -0
  83. data/lib/generators/dash_creator/install/install_generator.rb +70 -0
  84. data/lib/generators/dash_creator/install/templates/_chart.html.erb +9 -0
  85. data/lib/generators/dash_creator/install/templates/_section_card.html.erb +17 -0
  86. data/lib/generators/dash_creator/install/templates/_stat.html.erb +24 -0
  87. data/lib/generators/dash_creator/install/templates/_table.html.erb +16 -0
  88. data/lib/generators/dash_creator/install/templates/add_indexes_to_dash_creator_tables.rb +15 -0
  89. data/lib/generators/dash_creator/install/templates/create_dash_creator_charts.rb +25 -0
  90. data/lib/generators/dash_creator/install/templates/create_dash_creator_dashboard_objects.rb +36 -0
  91. data/lib/generators/dash_creator/install/templates/create_dash_creator_dashboards.rb +28 -0
  92. data/lib/generators/dash_creator/install/templates/create_dash_creator_filters.rb +22 -0
  93. data/lib/generators/dash_creator/install/templates/dashboard.html.erb +10 -0
  94. data/lib/generators/dash_creator/install/templates/initializer.rb +48 -0
  95. data/lib/tasks/dash_creator_tasks.rake +4 -0
  96. metadata +196 -0
File without changes
data/config/routes.rb ADDED
@@ -0,0 +1,30 @@
1
+ DashCreator::Engine.routes.draw do
2
+ root to: 'user#creator'
3
+
4
+ get '/creator', to: 'user#creator', as: :creator
5
+ get '/dashboard/:dashboard_id', to: 'user#dashboard', as: :dashboard
6
+
7
+ post '/get_filter', to: 'filter#get_filter', as: :get_filter
8
+ post '/save_filter', to: 'filter#save_filter', as: :save_filter
9
+ post '/delete_filters', to: 'filter#delete_filters', as: :delete_filters
10
+
11
+ post '/filtering_result', to: 'filter#filtering_result', as: :filtering_result
12
+ get '/download_csv', to: 'filter#download_csv', as: :download_csv
13
+
14
+ post '/create_stat', to: 'filter#create_stat', as: :create_stat
15
+
16
+ post '/create_chart', to: 'chart#create_chart', as: :create_chart
17
+ post '/save_chart', to: 'chart#save_chart', as: :save_chart
18
+ post '/edit_chart', to: 'chart#edit_chart', as: :edit_chart
19
+ post '/get_chart', to: 'chart#get_chart', as: :get_chart
20
+ post '/delete_charts', to: 'chart#delete_charts', as: :delete_charts
21
+
22
+ post '/pluck_labels', to: 'chart#pluck_labels', as: :pluck_labels
23
+
24
+ post '/save_dashboard', to: 'dashboard#save_dashboard', as: :save_dashboard
25
+ post '/edit_dashboard', to: 'dashboard#edit_dashboard', as: :edit_dashboard
26
+ post '/get_dashboard', to: 'dashboard#get_dashboard', as: :get_dashboard
27
+ post '/delete_dashboards', to: 'dashboard#delete_dashboards', as: :delete_dashboards
28
+
29
+ post '/get_model_objects', to: 'dashboard_object#get_model_objects', as: :get_model_objects
30
+ end
@@ -0,0 +1,87 @@
1
+ require "dash_creator/engine"
2
+ require "dash_creator/acts_as_dash_creator"
3
+ require "dash_creator/acts_as_dashboard_object"
4
+
5
+ module DashCreator
6
+
7
+ class Configuration
8
+ mattr_accessor :use_pgcrypto
9
+ mattr_accessor :redis_store_variable
10
+
11
+ mattr_accessor :user_class
12
+ mattr_accessor :except_models
13
+ mattr_accessor :except_attributes
14
+ mattr_accessor :attributes_aliases
15
+ mattr_accessor :columns_aliases
16
+ mattr_accessor :displayed_model_names
17
+ mattr_accessor :displayed_attribute_names
18
+
19
+ mattr_accessor :layout_path
20
+
21
+ self.use_pgcrypto = true
22
+ self.redis_store_variable = nil
23
+
24
+ self.user_class = 'User'
25
+ self.except_models = []
26
+ self.except_attributes = []
27
+ self.attributes_aliases = {}
28
+ self.columns_aliases = {}
29
+ self.displayed_model_names = {}
30
+ self.displayed_attribute_names = {}
31
+
32
+ self.layout_path = 'dash_creator/layouts/application'
33
+ end
34
+ class << self
35
+ attr_writer :configuration
36
+ end
37
+
38
+ module_function
39
+ def configuration
40
+ @configuration ||= Configuration.new
41
+ end
42
+
43
+ def configure
44
+ yield(configuration)
45
+ end
46
+
47
+
48
+ def self.use_pgcrypto
49
+ self.configuration.use_pgcrypto
50
+ end
51
+
52
+ def self.redis_store_variable
53
+ self.configuration.redis_store_variable
54
+ end
55
+
56
+ def self.user_class
57
+ self.configuration.user_class.safe_constantize
58
+ end
59
+
60
+ def self.except_models
61
+ self.configuration.except_models.map{ |m| m.gsub('::', '') }
62
+ end
63
+
64
+ def self.except_attributes
65
+ self.configuration.except_attributes
66
+ end
67
+
68
+ def self.attributes_aliases
69
+ self.configuration.attributes_aliases.stringify_keys
70
+ end
71
+
72
+ def self.columns_aliases
73
+ self.configuration.columns_aliases.stringify_keys
74
+ end
75
+
76
+ def self.displayed_model_names
77
+ self.configuration.displayed_model_names.stringify_keys
78
+ end
79
+
80
+ def self.displayed_attribute_names
81
+ self.configuration.displayed_attribute_names.deep_stringify_keys
82
+ end
83
+
84
+ def self.layout_path
85
+ self.configuration.layout_path
86
+ end
87
+ end
@@ -0,0 +1,16 @@
1
+ module DashCreator
2
+ module ActsAsDashCreator
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def acts_as_dash_creator
10
+ has_many :dash_creator_filters, dependent: :destroy
11
+ has_many :dash_creator_charts, dependent: :destroy
12
+ has_many :dash_creator_dashboards, dependent: :destroy
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,19 @@
1
+ module DashCreator
2
+ module ActsAsDashboardObject
3
+
4
+ def self.included(base)
5
+ base.extend ClassMethods
6
+ end
7
+
8
+ module ClassMethods
9
+ def acts_as_dashboard_object(name, options = {})
10
+ DashCreator::DashboardObject.find_or_create_by(
11
+ name: name,
12
+ code: name.underscore,
13
+ related_model: self.class.name,
14
+ options: options
15
+ )
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,11 @@
1
+ module DashCreator
2
+ class Engine < ::Rails::Engine
3
+ isolate_namespace DashCreator
4
+
5
+ initializer 'dash_creator.action_controller' do |app|
6
+ ActiveSupport.on_load :action_controller do
7
+ helper DashCreator::FilterHelper
8
+ end
9
+ end
10
+ end
11
+ end
@@ -0,0 +1,3 @@
1
+ module DashCreator
2
+ VERSION = '0.1.2'
3
+ end
@@ -0,0 +1,70 @@
1
+ require 'rails/generators'
2
+ require 'rails/generators/migration'
3
+
4
+ module DashCreator
5
+ module Generators
6
+ class InstallGenerator < ::Rails::Generators::Base
7
+ include Rails::Generators::Migration
8
+ source_root File.expand_path('../templates', __FILE__)
9
+ desc 'add the migrations'
10
+
11
+ def self.next_migration_number(path)
12
+ unless @prev_migration_nr
13
+ @prev_migration_nr = Time.now.utc.strftime("%Y%m%d%H%M%S").to_i
14
+ else
15
+ @prev_migration_nr += 1
16
+ end
17
+ @prev_migration_nr.to_s
18
+ end
19
+
20
+ def copy_migrations
21
+ migration_template 'create_dash_creator_filters.rb', 'db/migrate/create_dash_creator_filters.rb'
22
+ migration_template 'create_dash_creator_charts.rb', 'db/migrate/create_dash_creator_charts.rb'
23
+ migration_template 'create_dash_creator_dashboards.rb', 'db/migrate/create_dash_creator_dashboards.rb'
24
+ migration_template 'create_dash_creator_dashboard_objects.rb', 'db/migrate/create_dash_creator_dashboard_objects.rb'
25
+ migration_template 'add_indexes_to_dash_creator_tables.rb', 'db/migrate/add_indexes_to_dash_creator_tables.rb'
26
+ end
27
+
28
+ def copy_initializer_file
29
+ template 'initializer.rb', 'config/initializers/dash_creator.rb'
30
+ end
31
+
32
+ def add_default_user_for_dash_creator
33
+ line = 'class ApplicationController < ActionController::Base'
34
+ gsub_file 'app/controllers/application_controller.rb', /(#{Regexp.escape(line)})/mi do |match|
35
+ "#{match}\n def user_for_dash_creator\n current_user\n end\n"
36
+ end
37
+ end
38
+
39
+ def add_default_acts_as_dash_creator
40
+ line = 'class User < ApplicationRecord'
41
+ gsub_file 'app/models/user.rb', /(#{Regexp.escape(line)})/mi do |match|
42
+ "include DashCreator::ActsAsDashCreator\n\n#{match}\n acts_as_dash_creator\n"
43
+ end
44
+
45
+ line = 'class User < ActiveRecord::Base'
46
+ gsub_file 'app/models/user.rb', /(#{Regexp.escape(line)})/mi do |match|
47
+ "include DashCreator::ActsAsDashCreator\n\n#{match}\n acts_as_dash_creator\n"
48
+ end
49
+ end
50
+
51
+ def add_dash_creator_routes
52
+ line = 'Rails.application.routes.draw do'
53
+ gsub_file 'config/routes.rb', /(#{Regexp.escape(line)})/mi do |match|
54
+ "#{match}\n mount DashCreator::Engine, at: '/dash_creator'\n"
55
+ end
56
+ end
57
+
58
+ def add_template_dashboard_views
59
+ path = File.dirname(__FILE__) + '/templates/'
60
+ user_views_path = 'app/views/user/'
61
+ dashboard_objects_path = 'app/views/dash_creator/dashboard_object/'
62
+ create_file user_views_path + 'dashboard.html.erb', File.read(path + 'dashboard.html.erb')
63
+ create_file user_views_path + '_section_card.html.erb', File.read(path + '_section_card.html.erb')
64
+ create_file dashboard_objects_path + '_chart.html.erb', File.read(path + '_chart.html.erb')
65
+ create_file dashboard_objects_path + '_stat.html.erb', File.read(path + '_stat.html.erb')
66
+ create_file dashboard_objects_path + '_table.html.erb', File.read(path + '_table.html.erb')
67
+ end
68
+ end
69
+ end
70
+ end
@@ -0,0 +1,9 @@
1
+ <div class="col-md-<%= chart['size'] %> offset-md-<%= chart['offset'] %>" style="margin-bottom: 50px;">
2
+ <div class="chart-wrapper" data-id="<%= chart['id'] %>" style="height: 400px;">
3
+ <iframe class="chartjs-hidden-iframe" tabindex="-1" style="display: flex; overflow: hidden; border: 0; margin: 0; top: 0; left: 0; bottom: 0; right: 0; height: 100%; width: 100%; position: absolute; pointer-events: none; z-index: -1;"></iframe>
4
+ </div>
5
+ <script>
6
+ var params = {chart_id: '<%= chart['id'] %>'};
7
+ $.post("<%= get_chart_path %>", params);
8
+ </script>
9
+ </div>
@@ -0,0 +1,17 @@
1
+ <div class="col-md-<%= section['size'] %> offset-md-<%= section['offset'] %>">
2
+ <div class="card">
3
+ <div class="card-header">
4
+ <%= section['name'] %>
5
+ </div>
6
+ <div class="card-block">
7
+ <div class="row">
8
+ <% unless section['objects'].nil? %>
9
+ <% section['objects'].each do |index, object| %>
10
+ <%= render 'dash_creator/dashboard_object/' + object['type'], {"#{object['type']}": object} %>
11
+ <% end %>
12
+ <% end %>
13
+ </div>
14
+ </div>
15
+ </div>
16
+ <!--/.card-->
17
+ </div>
@@ -0,0 +1,24 @@
1
+ <% filter = DashCreator::Filter.find(stat['id']) %>
2
+
3
+ <div class="col-md-<%= stat['size'] %> offset-md-<%= stat['offset'] %>" style="margin-bottom: 50px;">
4
+ <div class="stat-wrapper text-center" data-id="<%= stat['id'] %>" style="padding: 20px; background-color: #a6d5ec; border-radius: 5px;">
5
+
6
+ <h3><%= filter.name %></h3><br>
7
+
8
+ <div class="pull-right">
9
+ <span id="last-updated"></span>
10
+ <button id="stat-refresh-btn">Refresh</button>
11
+ </div>
12
+
13
+ <% filter.options.keys.each do |k| %>
14
+ <span class="filter-count" data-key="<%= k %>"></span><br>
15
+ <% end %>
16
+
17
+ <script>
18
+ var params = {
19
+ filter_id: '<%= stat['id'] %>'
20
+ };
21
+ $.post('<%= create_stat_path %>', params);
22
+ </script>
23
+ </div>
24
+ </div>
@@ -0,0 +1,16 @@
1
+ <% filter = DashCreator::Filter.find(table['id']) %>
2
+
3
+ <div class="col-md-<%= table['size'] %> offset-md-<%= table['offset'] %>" style="margin-bottom: 50px;">
4
+ <div class="table-wrapper" data-id="<%= table['id'] %>" style="padding: 20px;">
5
+
6
+ <h3><%= filter.name + ' - Table' %></h3><br>
7
+
8
+ <script>
9
+ var params = {
10
+ filters: <%= raw filter.options.to_json %>,
11
+ id: '<%= table['id'] %>'
12
+ };
13
+ $.post('<%= filtering_result_path %>', params);
14
+ </script>
15
+ </div>
16
+ </div>
@@ -0,0 +1,15 @@
1
+ class AddIndexesToDashCreatorTables < ActiveRecord::Migration[5.1]
2
+ def change
3
+ add_index :dash_creator_filters, :user_id
4
+ add_index :dash_creator_charts, :user_id
5
+ add_index :dash_creator_dashboards, :user_id
6
+
7
+ add_index :dash_creator_filters, :created_at
8
+ add_index :dash_creator_charts, :created_at
9
+ add_index :dash_creator_dashboards, :created_at
10
+
11
+ add_index :dash_creator_filters, :updated_at
12
+ add_index :dash_creator_charts, :updated_at
13
+ add_index :dash_creator_dashboards, :updated_at
14
+ end
15
+ end
@@ -0,0 +1,25 @@
1
+ class CreateDashCreatorCharts < ActiveRecord::Migration[5.1]
2
+ def change
3
+ if extension_enabled?('pgcrypto') && DashCreator.use_pgcrypto
4
+ create_table :dash_creator_charts, id: :uuid, default: 'gen_random_uuid()' do |t|
5
+ t.string :name
6
+ t.jsonb :data
7
+ t.uuid :user_id
8
+
9
+ t.timestamps
10
+ end
11
+ else
12
+ create_table :dash_creator_charts do |t|
13
+ t.string :name
14
+ t.jsonb :data
15
+ t.id :user_id
16
+
17
+ t.timestamps
18
+ end
19
+ end
20
+ end
21
+
22
+ def self.down
23
+ drop_table :dash_creator_charts
24
+ end
25
+ end
@@ -0,0 +1,36 @@
1
+ class CreateDashCreatorDashboardObjects < ActiveRecord::Migration[5.1]
2
+ def change
3
+ if extension_enabled?('pgcrypto') && DashCreator.use_pgcrypto
4
+ create_table :dash_creator_dashboard_objects, id: :uuid, default: 'gen_random_uuid()' do |t|
5
+ t.string :name
6
+ t.string :code
7
+ t.string :related_model
8
+
9
+ t.jsonb :options, default: {}
10
+
11
+ t.timestamps
12
+ end
13
+
14
+ else
15
+ create_table :dash_creator_dashboard_objects do |t|
16
+ t.string :name
17
+ t.string :code
18
+ t.string :related_model
19
+
20
+ t.jsonb :options, default: {}
21
+
22
+ t.timestamps
23
+ end
24
+ end
25
+
26
+ add_index :dash_creator_dashboard_objects, :code, unique: true
27
+
28
+ DashCreator::DashboardObject.create(name: 'Chart', code: 'chart', related_model: 'DashCreator::Chart', options: {})
29
+ DashCreator::DashboardObject.create(name: 'Stat', code: 'stat', related_model: 'DashCreator::Filter', options: {})
30
+ DashCreator::DashboardObject.create(name: 'Table', code: 'table', related_model: 'DashCreator::Filter', options: {})
31
+ end
32
+
33
+ def self.down
34
+ drop_table :dash_creator_dashboard_objects
35
+ end
36
+ end
@@ -0,0 +1,28 @@
1
+ class CreateDashCreatorDashboards < ActiveRecord::Migration[5.1]
2
+ def change
3
+ if extension_enabled?('pgcrypto') && DashCreator.use_pgcrypto
4
+ create_table :dash_creator_dashboards, id: :uuid, default: 'gen_random_uuid()' do |t|
5
+ t.uuid :user_id
6
+
7
+ t.jsonb :options
8
+ t.string :name
9
+
10
+ t.timestamps
11
+ end
12
+
13
+ else
14
+ create_table :dash_creator_dashboards do |t|
15
+ t.id :user_id
16
+
17
+ t.jsonb :options
18
+ t.string :name
19
+
20
+ t.timestamps
21
+ end
22
+ end
23
+ end
24
+
25
+ def self.down
26
+ drop_table :dash_creator_dashboards
27
+ end
28
+ end
@@ -0,0 +1,22 @@
1
+ class CreateDashCreatorFilters < ActiveRecord::Migration[5.1]
2
+ def change
3
+ if extension_enabled?('pgcrypto') && DashCreator.use_pgcrypto
4
+ create_table :dash_creator_filters, id: :uuid, default: 'gen_random_uuid()' do |t|
5
+ t.string :name
6
+ t.jsonb :options, default: {}
7
+ t.uuid :user_id
8
+
9
+ t.timestamps
10
+ end
11
+
12
+ else
13
+ create_table :dash_creator_filters do |t|
14
+ t.string :name
15
+ t.jsonb :options, default: {}
16
+ t.id :user_id
17
+
18
+ t.timestamps
19
+ end
20
+ end
21
+ end
22
+ end