marty 2.5.2 → 2.5.4

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 (181) hide show
  1. checksums.yaml +5 -5
  2. data/.gitignore +4 -0
  3. data/.rubocop.yml +7 -0
  4. data/.rubocop_todo.yml +11 -589
  5. data/Gemfile +9 -9
  6. data/Gemfile.lock +1 -1
  7. data/Rakefile +1 -3
  8. data/app/components/marty/api_auth_view.rb +3 -3
  9. data/app/components/marty/api_config_view.rb +8 -8
  10. data/app/components/marty/api_log_view.rb +16 -20
  11. data/app/components/marty/auth_app.rb +6 -6
  12. data/app/components/marty/base_rule_view.rb +27 -19
  13. data/app/components/marty/config_view.rb +12 -9
  14. data/app/components/marty/data_grid_view.rb +26 -26
  15. data/app/components/marty/delorean_rule_view.rb +0 -1
  16. data/app/components/marty/event_view.rb +27 -27
  17. data/app/components/marty/extras/layout.rb +26 -26
  18. data/app/components/marty/extras/misc.rb +2 -2
  19. data/app/components/marty/grid.rb +13 -13
  20. data/app/components/marty/grid_append_only.rb +0 -1
  21. data/app/components/marty/import_type_view.rb +13 -13
  22. data/app/components/marty/import_view.rb +17 -16
  23. data/app/components/marty/log_view.rb +16 -14
  24. data/app/components/marty/main_auth_app.rb +59 -59
  25. data/app/components/marty/main_auth_app/client/main_auth_app.js +3 -3
  26. data/app/components/marty/mcfly_grid_panel.rb +10 -10
  27. data/app/components/marty/new_posting_form.rb +11 -11
  28. data/app/components/marty/new_posting_window.rb +0 -1
  29. data/app/components/marty/posting_grid.rb +12 -13
  30. data/app/components/marty/promise_view.rb +6 -6
  31. data/app/components/marty/report_form.rb +50 -53
  32. data/app/components/marty/report_select.rb +27 -27
  33. data/app/components/marty/reporting.rb +4 -4
  34. data/app/components/marty/script_form.rb +40 -42
  35. data/app/components/marty/script_grid.rb +24 -24
  36. data/app/components/marty/script_tester.rb +40 -42
  37. data/app/components/marty/scripting.rb +25 -27
  38. data/app/components/marty/simple_app.rb +24 -9
  39. data/app/components/marty/tag_grid.rb +12 -13
  40. data/app/components/marty/user_view.rb +35 -35
  41. data/app/controllers/marty/application_controller.rb +3 -4
  42. data/app/controllers/marty/components_controller.rb +1 -1
  43. data/app/controllers/marty/delayed_job_controller.rb +1 -0
  44. data/app/controllers/marty/diagnostic/controller.rb +4 -6
  45. data/app/controllers/marty/job_controller.rb +6 -6
  46. data/app/controllers/marty/report_controller.rb +11 -11
  47. data/app/controllers/marty/rpc_controller.rb +15 -16
  48. data/app/helpers/marty/script_set.rb +4 -4
  49. data/app/models/marty/api_auth.rb +4 -5
  50. data/app/models/marty/api_config.rb +1 -1
  51. data/app/models/marty/base.rb +9 -8
  52. data/app/models/marty/base_rule.rb +18 -13
  53. data/app/models/marty/config.rb +4 -5
  54. data/app/models/marty/data_grid.rb +157 -181
  55. data/app/models/marty/delorean_rule.rb +63 -62
  56. data/app/models/marty/enum.rb +1 -1
  57. data/app/models/marty/event.rb +56 -59
  58. data/app/models/marty/helper.rb +38 -6
  59. data/app/models/marty/import_type.rb +6 -6
  60. data/app/models/marty/log.rb +3 -2
  61. data/app/models/marty/name_validator.rb +3 -2
  62. data/app/models/marty/pg_enum.rb +3 -4
  63. data/app/models/marty/posting.rb +20 -24
  64. data/app/models/marty/promise.rb +28 -30
  65. data/app/models/marty/script.rb +30 -28
  66. data/app/models/marty/tag.rb +8 -8
  67. data/app/models/marty/token.rb +2 -2
  68. data/app/models/marty/user.rb +24 -23
  69. data/app/models/marty/vw_promise.rb +10 -11
  70. data/config/routes.rb +2 -2
  71. data/delorean/blame_report.dl +268 -0
  72. data/{spec/dummy/delorean/fields.dl → delorean/marty_fields.dl} +8 -0
  73. data/delorean/table_report.dl +34 -0
  74. data/docker-compose.dummy.yml +2 -3
  75. data/lib/marty/aws/base.rb +8 -8
  76. data/lib/marty/aws/request.rb +4 -4
  77. data/lib/marty/cache_adapters/mcfly_ruby_cache.rb +1 -0
  78. data/lib/marty/content_handler.rb +25 -25
  79. data/lib/marty/data_change.rb +49 -71
  80. data/lib/marty/data_conversion.rb +20 -28
  81. data/lib/marty/data_exporter.rb +25 -28
  82. data/lib/marty/data_importer.rb +25 -27
  83. data/lib/marty/engine.rb +1 -2
  84. data/lib/marty/json_schema.rb +22 -24
  85. data/lib/marty/logger.rb +6 -9
  86. data/lib/marty/mcfly_model.rb +20 -24
  87. data/lib/marty/migrations.rb +37 -35
  88. data/lib/marty/monkey.rb +33 -33
  89. data/lib/marty/permissions.rb +18 -18
  90. data/lib/marty/promise_job.rb +17 -17
  91. data/lib/marty/promise_proxy.rb +6 -6
  92. data/lib/marty/relation.rb +6 -7
  93. data/lib/marty/rpc_call.rb +13 -12
  94. data/lib/marty/rule_script_set.rb +32 -28
  95. data/lib/marty/schema_helper.rb +37 -51
  96. data/lib/marty/util.rb +25 -24
  97. data/lib/marty/version.rb +1 -1
  98. data/lib/marty/xl.rb +121 -115
  99. data/make-dummy.mk +3 -0
  100. data/marty.gemspec +21 -21
  101. data/other/marty/api/base.rb +34 -35
  102. data/other/marty/diagnostic/aws/ec2_instance.rb +8 -8
  103. data/other/marty/diagnostic/base.rb +13 -14
  104. data/other/marty/diagnostic/collection.rb +2 -1
  105. data/other/marty/diagnostic/connections.rb +8 -6
  106. data/other/marty/diagnostic/database.rb +1 -0
  107. data/other/marty/diagnostic/delayed_job_version.rb +7 -9
  108. data/other/marty/diagnostic/delayed_job_worker_total_count.rb +1 -1
  109. data/other/marty/diagnostic/delayed_job_workers.rb +1 -1
  110. data/other/marty/diagnostic/environment_variables.rb +17 -15
  111. data/other/marty/diagnostic/fatal.rb +1 -1
  112. data/other/marty/diagnostic/node.rb +5 -9
  113. data/other/marty/diagnostic/nodes.rb +7 -5
  114. data/other/marty/diagnostic/packer.rb +7 -7
  115. data/other/marty/diagnostic/reporter.rb +24 -27
  116. data/other/marty/diagnostic/version.rb +3 -5
  117. data/script/rails +2 -1
  118. data/spec/controllers/application_controller_spec.rb +6 -6
  119. data/spec/controllers/delayed_job_controller_spec.rb +4 -4
  120. data/spec/controllers/diagnostic/controller_spec.rb +59 -60
  121. data/spec/controllers/job_controller_spec.rb +68 -69
  122. data/spec/controllers/rpc_controller_spec.rb +353 -359
  123. data/spec/controllers/rpc_import_spec.rb +15 -16
  124. data/spec/dummy/delorean/blame_report.dl +110 -15
  125. data/spec/dummy/delorean/data_report.dl +4 -4
  126. data/spec/dummy/delorean/marty_fields.dl +63 -0
  127. data/spec/dummy/delorean/table_report.dl +34 -0
  128. data/spec/features/auth_app_spec.rb +1 -2
  129. data/spec/features/data_import_spec.rb +2 -3
  130. data/spec/features/enum_spec.rb +42 -46
  131. data/spec/features/jobs_dashboard_spec.rb +14 -8
  132. data/spec/features/log_view_spec.rb +40 -43
  133. data/spec/features/reporting_spec.rb +15 -15
  134. data/spec/features/rule_spec.rb +195 -190
  135. data/spec/features/scripting_spec.rb +17 -20
  136. data/spec/features/scripting_test_spec.rb +32 -33
  137. data/spec/features/user_view_spec.rb +15 -17
  138. data/spec/job_helper.rb +11 -11
  139. data/spec/lib/data_blame_spec.rb +82 -0
  140. data/spec/lib/data_exporter_spec.rb +31 -32
  141. data/spec/lib/data_importer_spec.rb +382 -395
  142. data/spec/lib/delorean_query_spec.rb +117 -119
  143. data/spec/lib/json_schema_spec.rb +382 -392
  144. data/spec/lib/logger_spec.rb +23 -24
  145. data/spec/lib/mcfly_model_spec.rb +112 -109
  146. data/spec/lib/migrations_spec.rb +10 -10
  147. data/spec/lib/struct_compare_spec.rb +6 -6
  148. data/spec/lib/table_report_spec.rb +90 -0
  149. data/spec/lib/xl_spec.rb +63 -65
  150. data/spec/lib/xl_styles_spec.rb +16 -19
  151. data/spec/models/api_auth_spec.rb +30 -30
  152. data/spec/models/config_spec.rb +32 -32
  153. data/spec/models/data_grid_spec.rb +642 -655
  154. data/spec/models/event_spec.rb +96 -88
  155. data/spec/models/import_type_spec.rb +20 -20
  156. data/spec/models/posting_spec.rb +35 -35
  157. data/spec/models/promise_spec.rb +5 -5
  158. data/spec/models/rule_spec.rb +280 -269
  159. data/spec/models/script_spec.rb +27 -18
  160. data/spec/models/user_spec.rb +9 -9
  161. data/spec/other/diagnostic/base_spec.rb +20 -19
  162. data/spec/other/diagnostic/collection_spec.rb +6 -5
  163. data/spec/other/diagnostic/delayed_job_version_spec.rb +1 -1
  164. data/spec/other/diagnostic/delayed_job_workers_spec.rb +8 -8
  165. data/spec/other/diagnostic/reporter_spec.rb +31 -33
  166. data/spec/spec_helper.rb +5 -5
  167. data/spec/support/chromedriver.rb +3 -5
  168. data/spec/support/components/netzke_combobox.rb +1 -1
  169. data/spec/support/components/netzke_grid.rb +17 -17
  170. data/spec/support/custom_matchers.rb +2 -2
  171. data/spec/support/download_helper.rb +1 -1
  172. data/spec/support/helper.rb +1 -2
  173. data/spec/support/netzke.rb +31 -31
  174. data/spec/support/performance_helper.rb +8 -8
  175. data/spec/support/post_run_logger.rb +1 -2
  176. data/spec/support/setup.rb +1 -4
  177. data/spec/support/shared_connection.rb +2 -2
  178. data/spec/support/structure_compare.rb +21 -22
  179. data/spec/support/suite.rb +1 -2
  180. data/spec/support/users.rb +5 -6
  181. metadata +32 -26
@@ -79,7 +79,7 @@
79
79
  prompt: true,
80
80
  fn: function (btn, value) {
81
81
  if (btn == "ok" && value == "STOP") {
82
- me.showLoadmask('Stopping delayed job...');
82
+ me.showLoadMask('Stopping delayed job...');
83
83
  me.server.bgStop({});
84
84
  }
85
85
  }
@@ -96,7 +96,7 @@
96
96
  prompt: true,
97
97
  fn: function (btn, value) {
98
98
  if (btn == "ok" && value == "RESTART") {
99
- me.showLoadmask('Restarting delayed job...');
99
+ me.showLoadMask('Restarting delayed job...');
100
100
  me.server.bgRestart({});
101
101
  }
102
102
  }
@@ -104,7 +104,7 @@
104
104
  },
105
105
 
106
106
  netzkeOnBgStatus: function () {
107
- this.showLoadmask('Checking delayed job status...');
107
+ this.showLoadMask('Checking delayed job status...');
108
108
  this.server.bgStatus({});
109
109
  },
110
110
 
@@ -4,14 +4,14 @@ class Marty::McflyGridPanel < Marty::Grid
4
4
 
5
5
  warped = Marty::Util.warped?
6
6
 
7
- c.editing = !warped && c.editing || :none
7
+ c.editing = !warped && c.editing || :none
8
8
 
9
9
  [:update, :delete, :create].each do |perm|
10
10
  c.permissions[perm] = false if warped
11
11
  end
12
12
 
13
13
  # default sort all Mcfly grids with id
14
- c.store_config.merge!({sorters: [{property: :id, direction: 'ASC'}]})
14
+ c.store_config.merge!(sorters: [{ property: :id, direction: 'ASC' }])
15
15
  end
16
16
 
17
17
  def get_records(params)
@@ -19,9 +19,9 @@ class Marty::McflyGridPanel < Marty::Grid
19
19
  tb = model.table_name
20
20
 
21
21
  model.where("#{tb}.obsoleted_dt >= ? AND #{tb}.created_dt < ?",
22
- ts, ts).scoping do
22
+ ts, ts).scoping do
23
23
  super
24
- end
24
+ end
25
25
  end
26
26
 
27
27
  ######################################################################
@@ -34,7 +34,7 @@ class Marty::McflyGridPanel < Marty::Grid
34
34
  assoc_name, assoc_method = c[:name].split('__')
35
35
  begin
36
36
  aklass = model.reflect_on_association(assoc_name.to_sym).klass
37
- rescue
37
+ rescue StandardError
38
38
  raise "trouble finding #{assoc_name} assoc class on #{model}"
39
39
  end
40
40
  c[:scope] = Mcfly.has_mcfly?(aklass) ?
@@ -49,14 +49,13 @@ class Marty::McflyGridPanel < Marty::Grid
49
49
 
50
50
  action :dup_in_form do |a|
51
51
  a.hidden = !config[:permissions][:create]
52
- a.icon_cls = "fa fa-copy glyph"
52
+ a.icon_cls = 'fa fa-copy glyph'
53
53
  a.disabled = true
54
54
  end
55
55
 
56
56
  # edit-in-form submit with dup support
57
57
  endpoint :edit_window__edit_form__submit do |params|
58
-
59
- if params["dup"]
58
+ if params['dup']
60
59
  # FIXME: copied from basepack grid endpoint
61
60
  # :add_window__add_form__netzke_submit
62
61
 
@@ -80,11 +79,12 @@ class Marty::McflyGridPanel < Marty::Grid
80
79
  end
81
80
  end
82
81
 
83
- private
82
+ private
83
+
84
84
  def self.mcfly_scope(sort_column)
85
85
  lambda { |r|
86
86
  ts = Mcfly.normalize_infinity(Marty::Util.get_posting_time)
87
- r.where("obsoleted_dt >= ? AND created_dt < ?", ts, ts).
87
+ r.where('obsoleted_dt >= ? AND created_dt < ?', ts, ts).
88
88
  order(sort_column.to_sym)
89
89
  }
90
90
  end
@@ -9,8 +9,8 @@ class Marty::NewPostingForm < Marty::Form
9
9
  end
10
10
 
11
11
  action :apply do |a|
12
- a.text = I18n.t("create_posting")
13
- a.tooltip = I18n.t("create_posting")
12
+ a.text = I18n.t('create_posting')
13
+ a.tooltip = I18n.t('create_posting')
14
14
  a.icon_cls = 'fa fa-clock glyph'
15
15
  end
16
16
 
@@ -25,16 +25,16 @@ class Marty::NewPostingForm < Marty::Form
25
25
  def configure(c)
26
26
  super
27
27
 
28
- c.model = "Marty::Posting"
28
+ c.model = 'Marty::Posting'
29
29
  c.items = [
30
- {
31
- name: :posting_type__name,
32
- scope: lambda { |r|
33
- r.where(name: Marty::NewPostingForm.can_perform_actions)
34
- },
35
- },
36
- :comment,
37
- ]
30
+ {
31
+ name: :posting_type__name,
32
+ scope: lambda { |r|
33
+ r.where(name: Marty::NewPostingForm.can_perform_actions)
34
+ },
35
+ },
36
+ :comment,
37
+ ]
38
38
  end
39
39
  end
40
40
 
@@ -14,7 +14,6 @@ class Marty::NewPostingWindow < Netzke::Window::Base
14
14
  component :new_posting_form do |c|
15
15
  c.header = false
16
16
  end
17
-
18
17
  end
19
18
 
20
19
  NewPostingWindow = Marty::NewPostingWindow
@@ -6,11 +6,11 @@ class Marty::PostingGrid < Marty::Grid
6
6
  super
7
7
 
8
8
  c.header = false
9
- c.model = "Marty::Posting"
10
- c.attributes = [:name, :created_dt, :user__name, :comment]
11
- c.multi_select = false
12
- c.store_config.merge!({sorters: [{property: :created_dt, direction: 'DESC'}],
13
- page_size: 12})
9
+ c.model = 'Marty::Posting'
10
+ c.attributes = [:name, :created_dt, :user__name, :comment]
11
+ c.multi_select = false
12
+ c.store_config.merge!(sorters: [{ property: :created_dt, direction: 'DESC' }],
13
+ page_size: 12)
14
14
  end
15
15
 
16
16
  client_class do |c|
@@ -19,9 +19,9 @@ class Marty::PostingGrid < Marty::Grid
19
19
 
20
20
  # hijacking delete button
21
21
  action :delete do |a|
22
- a.text = "Select"
23
- a.tooltip = "Select"
24
- a.icon_cls = "fa fa-clock glyph"
22
+ a.text = 'Select'
23
+ a.tooltip = 'Select'
24
+ a.icon_cls = 'fa fa-clock glyph'
25
25
  a.disabled = true
26
26
  end
27
27
 
@@ -30,8 +30,8 @@ class Marty::PostingGrid < Marty::Grid
30
30
  end
31
31
 
32
32
  action :detail do |a|
33
- a.text = "Detail"
34
- a.icon_cls = "fa fa-th-large glyph"
33
+ a.text = 'Detail'
34
+ a.icon_cls = 'fa fa-th-large glyph'
35
35
  a.handler = :detail
36
36
  a.disabled = true
37
37
  end
@@ -61,8 +61,8 @@ class Marty::PostingGrid < Marty::Grid
61
61
  end
62
62
 
63
63
  attribute :created_dt do |c|
64
- c.text = "Date/Time"
65
- c.format = "Y-m-d H:i"
64
+ c.text = 'Date/Time'
65
+ c.format = 'Y-m-d H:i'
66
66
  c.hidden = true
67
67
  end
68
68
 
@@ -73,7 +73,6 @@ class Marty::PostingGrid < Marty::Grid
73
73
  attribute :comment do |c|
74
74
  c.width = 100
75
75
  end
76
-
77
76
  end
78
77
 
79
78
  PostingGrid = Marty::PostingGrid
@@ -17,10 +17,10 @@ class Marty::PromiseView < Netzke::Tree::Base
17
17
 
18
18
  def configure(config)
19
19
  super
20
- config.title = I18n.t("jobs.promise_view")
21
- config.model = "Marty::VwPromise"
20
+ config.title = I18n.t('jobs.promise_view')
21
+ config.model = 'Marty::VwPromise'
22
22
  config.attributes = [
23
- {name: :title, xtype: :treecolumn},
23
+ { name: :title, xtype: :treecolumn },
24
24
  :user__login,
25
25
  :job_id,
26
26
  :start_dt,
@@ -48,20 +48,20 @@ class Marty::PromiseView < Netzke::Tree::Base
48
48
  action :clear do |a|
49
49
  a.text = a.tooltip = 'Clear'
50
50
  a.disabled = false
51
- a.icon_cls = "fa fa-minus glyph"
51
+ a.icon_cls = 'fa fa-minus glyph'
52
52
  a.hidden = !self.class.has_admin_perm?
53
53
  end
54
54
 
55
55
  action :download do |a|
56
56
  a.text = a.tooltip = 'Download'
57
57
  a.disabled = true
58
- a.icon_cls = "fa fa-download glyph"
58
+ a.icon_cls = 'fa fa-download glyph'
59
59
  end
60
60
 
61
61
  action :refresh do |a|
62
62
  a.text = a.tooltip = 'Refresh'
63
63
  a.disabled = false
64
- a.icon_cls = "fa fa-sync-alt glyph"
64
+ a.icon_cls = 'fa fa-sync-alt glyph'
65
65
  end
66
66
 
67
67
  endpoint :clear do |params|
@@ -1,22 +1,21 @@
1
1
  class Marty::ReportForm < Marty::Form
2
-
3
2
  # override apply for background generation
4
3
  action :apply do |a|
5
- a.text = a.tooltip = I18n.t("reporting.background")
4
+ a.text = a.tooltip = I18n.t('reporting.background')
6
5
  a.handler = :netzke_on_apply
7
- a.icon_cls = "fa fa-cloud glyph"
6
+ a.icon_cls = 'fa fa-cloud glyph'
8
7
  a.disabled = false
9
8
  end
10
9
 
11
10
  action :foreground do |a|
12
- a.text = a.tooltip = I18n.t("reporting.generate")
13
- a.icon_cls = "fa fa-download glyph"
11
+ a.text = a.tooltip = I18n.t('reporting.generate')
12
+ a.icon_cls = 'fa fa-download glyph'
14
13
  a.disabled = false
15
14
  end
16
15
 
17
16
  action :link do |a|
18
- a.text = a.tooltip = I18n.t("reporting.link")
19
- a.icon_cls = "fa fa-link glyph"
17
+ a.text = a.tooltip = I18n.t('reporting.link')
18
+ a.icon_cls = 'fa fa-link glyph'
20
19
  a.disabled = false
21
20
  end
22
21
 
@@ -31,25 +30,25 @@ class Marty::ReportForm < Marty::Form
31
30
  ######################################################################
32
31
 
33
32
  def self.get_report_engine(params)
34
- d_params = ActiveSupport::JSON.decode(params[:data] || "{}")
35
- d_params.each_pair do |k,v|
36
- d_params[k] = nil if v.blank? || v == "null"
33
+ d_params = ActiveSupport::JSON.decode(params[:data] || '{}')
34
+ d_params.each_pair do |k, v|
35
+ d_params[k] = nil if v.blank? || v == 'null'
37
36
  end
38
37
 
39
- tag_id = d_params.delete("selected_tag_id")
40
- script_name = d_params.delete("selected_script_name")
41
- node = d_params.delete("selected_node")
38
+ tag_id = d_params.delete('selected_tag_id')
39
+ script_name = d_params.delete('selected_script_name')
40
+ node = d_params.delete('selected_node')
42
41
 
43
42
  engine = Marty::ScriptSet.new(tag_id).get_engine(script_name)
44
43
 
45
- roles = engine.evaluate(node, "roles", {}) rescue nil
44
+ roles = engine.evaluate(node, 'roles', {}) rescue nil
46
45
 
47
- if roles && !roles.any?{ |r| Marty::User.has_role(r) }
46
+ if roles && !roles.any? { |r| Marty::User.has_role(r) }
48
47
  # insufficient permissions
49
48
  return []
50
49
  end
51
50
 
52
- d_params["p_title"] ||= engine.evaluate(node, "title", {}).to_s
51
+ d_params['p_title'] ||= engine.evaluate(node, 'title', {}).to_s
53
52
 
54
53
  [engine, d_params, node]
55
54
  end
@@ -57,17 +56,17 @@ class Marty::ReportForm < Marty::Form
57
56
  def self.run_eval(params)
58
57
  engine, d_params, node = get_report_engine(params)
59
58
 
60
- raise "Insufficient permissions" unless engine
61
- raise "no selected report node" unless String === node
59
+ raise 'Insufficient permissions' unless engine
60
+ raise 'no selected report node' unless String === node
62
61
 
63
62
  begin
64
- engine.evaluate(node, "result", d_params)
65
- rescue => exc
63
+ engine.evaluate(node, 'result', d_params)
64
+ rescue StandardError => exc
66
65
  Marty::Util.logger.error "run_eval failed: #{exc.backtrace}"
67
66
 
68
67
  res = Delorean::Engine.grok_runtime_exception(exc)
69
- res["backtrace"] =
70
- res["backtrace"].map {|m, line, fn| "#{m}:#{line} #{fn}"}.join('\n')
68
+ res['backtrace'] =
69
+ res['backtrace'].map { |m, line, fn| "#{m}:#{line} #{fn}" }.join('\n')
71
70
  res
72
71
  end
73
72
  end
@@ -77,16 +76,16 @@ class Marty::ReportForm < Marty::Form
77
76
 
78
77
  engine, d_params, node = self.class.get_report_engine(params)
79
78
 
80
- return client.netzke_notify "Insufficient permissions to run report!" unless
79
+ return client.netzke_notify 'Insufficient permissions to run report!' unless
81
80
  engine
82
81
 
83
82
  # start background promise to get report result
84
83
  engine.background_eval(node,
85
84
  d_params,
86
- ["result", "title", "format"],
87
- )
85
+ ['result', 'title', 'format'],
86
+ )
88
87
 
89
- client.netzke_notify "Report can be accessed from the Jobs Dashboard ..."
88
+ client.netzke_notify 'Report can be accessed from the Jobs Dashboard ...'
90
89
  end
91
90
 
92
91
  ######################################################################
@@ -94,9 +93,9 @@ class Marty::ReportForm < Marty::Form
94
93
  client_class do |c|
95
94
  # Find the mount path for the Marty engine. FIXME: this is likely
96
95
  # very brittle.
97
- @@mount_path = Rails.application.routes.routes.detect {
98
- |r| r.app.app == Marty::Engine
99
- }.format({})
96
+ @@mount_path = Rails.application.routes.routes.detect do |r|
97
+ r.app.app == Marty::Engine
98
+ end.format({})
100
99
 
101
100
  c.mount_path = l(<<-JS)
102
101
  function() {
@@ -113,11 +112,11 @@ class Marty::ReportForm < Marty::Form
113
112
  def eval_form_items(engine, items)
114
113
  case items
115
114
  when Array
116
- items.map {|x| eval_form_items(engine, x)}
115
+ items.map { |x| eval_form_items(engine, x) }
117
116
  when Hash
118
- items.each_with_object({}) { |(key, value), result|
117
+ items.each_with_object({}) do |(key, value), result|
119
118
  result[key] = eval_form_items(engine, value)
120
- }
119
+ end
121
120
  when String
122
121
  items.starts_with?(':') ? items[1..-1].to_sym : items
123
122
  when Class
@@ -138,7 +137,7 @@ class Marty::ReportForm < Marty::Form
138
137
  super
139
138
 
140
139
  unless root_sess[:selected_script_name] && root_sess[:selected_node]
141
- c.title = "No Report selected."
140
+ c.title = 'No Report selected.'
142
141
  return
143
142
  end
144
143
 
@@ -150,35 +149,34 @@ class Marty::ReportForm < Marty::Form
150
149
 
151
150
  items, title, format = engine.
152
151
  evaluate(root_sess[:selected_node],
153
- ["form", "title", "format"],
154
- {},
155
- )
152
+ ['form', 'title', 'format'],
153
+ {},
154
+ )
156
155
 
157
- raise "bad form items" unless items.is_a?(Array)
158
- raise "bad format" unless
156
+ raise 'bad form items' unless items.is_a?(Array)
157
+ raise 'bad format' unless
159
158
  Marty::ContentHandler::GEN_FORMATS.member?(format)
160
-
161
- rescue => exc
162
- c.title = "ERROR"
159
+ rescue StandardError => exc
160
+ c.title = 'ERROR'
163
161
  c.items =
164
162
  [
165
- {
166
- field_label: 'Exception',
167
- xtype: :displayfield,
168
- name: 'displayfield1',
169
- value: "<span style=\"color:red;\">#{exc}</span>"
170
- },
163
+ {
164
+ field_label: 'Exception',
165
+ xtype: :displayfield,
166
+ name: 'displayfield1',
167
+ value: "<span style=\"color:red;\">#{exc}</span>"
168
+ },
171
169
  ]
172
170
  return
173
171
  end
174
172
 
175
173
  # if there's a background_only flag, we disable the foreground submit
176
174
  background_only =
177
- engine.evaluate(root_sess[:selected_node], "background_only") rescue nil
175
+ engine.evaluate(root_sess[:selected_node], 'background_only') rescue nil
178
176
 
179
177
  items = Marty::Xl.symbolize_keys(eval_form_items(engine, items), ':')
180
178
 
181
- items = [{html: "<br><b>No input is needed for this report.</b>"}] if
179
+ items = [{ html: '<br><b>No input is needed for this report.</b>' }] if
182
180
  items.empty?
183
181
 
184
182
  # add hidden fields for selected tag/script/node
@@ -186,15 +184,14 @@ class Marty::ReportForm < Marty::Form
186
184
  :selected_script_name,
187
185
  :selected_node,
188
186
  # just for testing
189
- :selected_testing,
190
- ].map { |f|
187
+ :selected_testing,].map do |f|
191
188
  {
192
189
  name: f,
193
190
  xtype: :textfield,
194
191
  hidden: true,
195
192
  value: root_sess[f],
196
193
  }
197
- }
194
+ end
198
195
 
199
196
  c.items = items
200
197
  c.repformat = format
@@ -202,7 +199,7 @@ class Marty::ReportForm < Marty::Form
202
199
  c.reptitle = title
203
200
  c.authenticity_token = controller.send(:form_authenticity_token)
204
201
 
205
- [:foreground, :link].each{|a| actions[a].disabled = !!background_only}
202
+ [:foreground, :link].each { |a| actions[a].disabled = !!background_only }
206
203
  end
207
204
  end
208
205