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.
- checksums.yaml +5 -5
- data/.gitignore +4 -0
- data/.rubocop.yml +7 -0
- data/.rubocop_todo.yml +11 -589
- data/Gemfile +9 -9
- data/Gemfile.lock +1 -1
- data/Rakefile +1 -3
- data/app/components/marty/api_auth_view.rb +3 -3
- data/app/components/marty/api_config_view.rb +8 -8
- data/app/components/marty/api_log_view.rb +16 -20
- data/app/components/marty/auth_app.rb +6 -6
- data/app/components/marty/base_rule_view.rb +27 -19
- data/app/components/marty/config_view.rb +12 -9
- data/app/components/marty/data_grid_view.rb +26 -26
- data/app/components/marty/delorean_rule_view.rb +0 -1
- data/app/components/marty/event_view.rb +27 -27
- data/app/components/marty/extras/layout.rb +26 -26
- data/app/components/marty/extras/misc.rb +2 -2
- data/app/components/marty/grid.rb +13 -13
- data/app/components/marty/grid_append_only.rb +0 -1
- data/app/components/marty/import_type_view.rb +13 -13
- data/app/components/marty/import_view.rb +17 -16
- data/app/components/marty/log_view.rb +16 -14
- data/app/components/marty/main_auth_app.rb +59 -59
- data/app/components/marty/main_auth_app/client/main_auth_app.js +3 -3
- data/app/components/marty/mcfly_grid_panel.rb +10 -10
- data/app/components/marty/new_posting_form.rb +11 -11
- data/app/components/marty/new_posting_window.rb +0 -1
- data/app/components/marty/posting_grid.rb +12 -13
- data/app/components/marty/promise_view.rb +6 -6
- data/app/components/marty/report_form.rb +50 -53
- data/app/components/marty/report_select.rb +27 -27
- data/app/components/marty/reporting.rb +4 -4
- data/app/components/marty/script_form.rb +40 -42
- data/app/components/marty/script_grid.rb +24 -24
- data/app/components/marty/script_tester.rb +40 -42
- data/app/components/marty/scripting.rb +25 -27
- data/app/components/marty/simple_app.rb +24 -9
- data/app/components/marty/tag_grid.rb +12 -13
- data/app/components/marty/user_view.rb +35 -35
- data/app/controllers/marty/application_controller.rb +3 -4
- data/app/controllers/marty/components_controller.rb +1 -1
- data/app/controllers/marty/delayed_job_controller.rb +1 -0
- data/app/controllers/marty/diagnostic/controller.rb +4 -6
- data/app/controllers/marty/job_controller.rb +6 -6
- data/app/controllers/marty/report_controller.rb +11 -11
- data/app/controllers/marty/rpc_controller.rb +15 -16
- data/app/helpers/marty/script_set.rb +4 -4
- data/app/models/marty/api_auth.rb +4 -5
- data/app/models/marty/api_config.rb +1 -1
- data/app/models/marty/base.rb +9 -8
- data/app/models/marty/base_rule.rb +18 -13
- data/app/models/marty/config.rb +4 -5
- data/app/models/marty/data_grid.rb +157 -181
- data/app/models/marty/delorean_rule.rb +63 -62
- data/app/models/marty/enum.rb +1 -1
- data/app/models/marty/event.rb +56 -59
- data/app/models/marty/helper.rb +38 -6
- data/app/models/marty/import_type.rb +6 -6
- data/app/models/marty/log.rb +3 -2
- data/app/models/marty/name_validator.rb +3 -2
- data/app/models/marty/pg_enum.rb +3 -4
- data/app/models/marty/posting.rb +20 -24
- data/app/models/marty/promise.rb +28 -30
- data/app/models/marty/script.rb +30 -28
- data/app/models/marty/tag.rb +8 -8
- data/app/models/marty/token.rb +2 -2
- data/app/models/marty/user.rb +24 -23
- data/app/models/marty/vw_promise.rb +10 -11
- data/config/routes.rb +2 -2
- data/delorean/blame_report.dl +268 -0
- data/{spec/dummy/delorean/fields.dl → delorean/marty_fields.dl} +8 -0
- data/delorean/table_report.dl +34 -0
- data/docker-compose.dummy.yml +2 -3
- data/lib/marty/aws/base.rb +8 -8
- data/lib/marty/aws/request.rb +4 -4
- data/lib/marty/cache_adapters/mcfly_ruby_cache.rb +1 -0
- data/lib/marty/content_handler.rb +25 -25
- data/lib/marty/data_change.rb +49 -71
- data/lib/marty/data_conversion.rb +20 -28
- data/lib/marty/data_exporter.rb +25 -28
- data/lib/marty/data_importer.rb +25 -27
- data/lib/marty/engine.rb +1 -2
- data/lib/marty/json_schema.rb +22 -24
- data/lib/marty/logger.rb +6 -9
- data/lib/marty/mcfly_model.rb +20 -24
- data/lib/marty/migrations.rb +37 -35
- data/lib/marty/monkey.rb +33 -33
- data/lib/marty/permissions.rb +18 -18
- data/lib/marty/promise_job.rb +17 -17
- data/lib/marty/promise_proxy.rb +6 -6
- data/lib/marty/relation.rb +6 -7
- data/lib/marty/rpc_call.rb +13 -12
- data/lib/marty/rule_script_set.rb +32 -28
- data/lib/marty/schema_helper.rb +37 -51
- data/lib/marty/util.rb +25 -24
- data/lib/marty/version.rb +1 -1
- data/lib/marty/xl.rb +121 -115
- data/make-dummy.mk +3 -0
- data/marty.gemspec +21 -21
- data/other/marty/api/base.rb +34 -35
- data/other/marty/diagnostic/aws/ec2_instance.rb +8 -8
- data/other/marty/diagnostic/base.rb +13 -14
- data/other/marty/diagnostic/collection.rb +2 -1
- data/other/marty/diagnostic/connections.rb +8 -6
- data/other/marty/diagnostic/database.rb +1 -0
- data/other/marty/diagnostic/delayed_job_version.rb +7 -9
- data/other/marty/diagnostic/delayed_job_worker_total_count.rb +1 -1
- data/other/marty/diagnostic/delayed_job_workers.rb +1 -1
- data/other/marty/diagnostic/environment_variables.rb +17 -15
- data/other/marty/diagnostic/fatal.rb +1 -1
- data/other/marty/diagnostic/node.rb +5 -9
- data/other/marty/diagnostic/nodes.rb +7 -5
- data/other/marty/diagnostic/packer.rb +7 -7
- data/other/marty/diagnostic/reporter.rb +24 -27
- data/other/marty/diagnostic/version.rb +3 -5
- data/script/rails +2 -1
- data/spec/controllers/application_controller_spec.rb +6 -6
- data/spec/controllers/delayed_job_controller_spec.rb +4 -4
- data/spec/controllers/diagnostic/controller_spec.rb +59 -60
- data/spec/controllers/job_controller_spec.rb +68 -69
- data/spec/controllers/rpc_controller_spec.rb +353 -359
- data/spec/controllers/rpc_import_spec.rb +15 -16
- data/spec/dummy/delorean/blame_report.dl +110 -15
- data/spec/dummy/delorean/data_report.dl +4 -4
- data/spec/dummy/delorean/marty_fields.dl +63 -0
- data/spec/dummy/delorean/table_report.dl +34 -0
- data/spec/features/auth_app_spec.rb +1 -2
- data/spec/features/data_import_spec.rb +2 -3
- data/spec/features/enum_spec.rb +42 -46
- data/spec/features/jobs_dashboard_spec.rb +14 -8
- data/spec/features/log_view_spec.rb +40 -43
- data/spec/features/reporting_spec.rb +15 -15
- data/spec/features/rule_spec.rb +195 -190
- data/spec/features/scripting_spec.rb +17 -20
- data/spec/features/scripting_test_spec.rb +32 -33
- data/spec/features/user_view_spec.rb +15 -17
- data/spec/job_helper.rb +11 -11
- data/spec/lib/data_blame_spec.rb +82 -0
- data/spec/lib/data_exporter_spec.rb +31 -32
- data/spec/lib/data_importer_spec.rb +382 -395
- data/spec/lib/delorean_query_spec.rb +117 -119
- data/spec/lib/json_schema_spec.rb +382 -392
- data/spec/lib/logger_spec.rb +23 -24
- data/spec/lib/mcfly_model_spec.rb +112 -109
- data/spec/lib/migrations_spec.rb +10 -10
- data/spec/lib/struct_compare_spec.rb +6 -6
- data/spec/lib/table_report_spec.rb +90 -0
- data/spec/lib/xl_spec.rb +63 -65
- data/spec/lib/xl_styles_spec.rb +16 -19
- data/spec/models/api_auth_spec.rb +30 -30
- data/spec/models/config_spec.rb +32 -32
- data/spec/models/data_grid_spec.rb +642 -655
- data/spec/models/event_spec.rb +96 -88
- data/spec/models/import_type_spec.rb +20 -20
- data/spec/models/posting_spec.rb +35 -35
- data/spec/models/promise_spec.rb +5 -5
- data/spec/models/rule_spec.rb +280 -269
- data/spec/models/script_spec.rb +27 -18
- data/spec/models/user_spec.rb +9 -9
- data/spec/other/diagnostic/base_spec.rb +20 -19
- data/spec/other/diagnostic/collection_spec.rb +6 -5
- data/spec/other/diagnostic/delayed_job_version_spec.rb +1 -1
- data/spec/other/diagnostic/delayed_job_workers_spec.rb +8 -8
- data/spec/other/diagnostic/reporter_spec.rb +31 -33
- data/spec/spec_helper.rb +5 -5
- data/spec/support/chromedriver.rb +3 -5
- data/spec/support/components/netzke_combobox.rb +1 -1
- data/spec/support/components/netzke_grid.rb +17 -17
- data/spec/support/custom_matchers.rb +2 -2
- data/spec/support/download_helper.rb +1 -1
- data/spec/support/helper.rb +1 -2
- data/spec/support/netzke.rb +31 -31
- data/spec/support/performance_helper.rb +8 -8
- data/spec/support/post_run_logger.rb +1 -2
- data/spec/support/setup.rb +1 -4
- data/spec/support/shared_connection.rb +2 -2
- data/spec/support/structure_compare.rb +21 -22
- data/spec/support/suite.rb +1 -2
- data/spec/support/users.rb +5 -6
- metadata +32 -26
|
@@ -10,7 +10,7 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
10
10
|
# handles so they can be used by various other components
|
|
11
11
|
# FIXME: add the ability to pull specific functions
|
|
12
12
|
# from other component javascripts or add a base to pull from
|
|
13
|
-
def self.show_grid_js(options={})
|
|
13
|
+
def self.show_grid_js(options = {})
|
|
14
14
|
dg = options[:data_grid] || 'data_grid'
|
|
15
15
|
title_str = options[:title_str] || 'Data Grid'
|
|
16
16
|
|
|
@@ -71,18 +71,18 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
71
71
|
super
|
|
72
72
|
|
|
73
73
|
c.title = I18n.t('data_grid')
|
|
74
|
-
c.model =
|
|
74
|
+
c.model = 'Marty::DataGrid'
|
|
75
75
|
c.attributes =
|
|
76
76
|
[
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
77
|
+
:name,
|
|
78
|
+
:vcols,
|
|
79
|
+
:hcols,
|
|
80
|
+
:lenient,
|
|
81
|
+
:data_type,
|
|
82
|
+
:created_dt,
|
|
83
83
|
]
|
|
84
84
|
|
|
85
|
-
c.store_config.merge!(
|
|
85
|
+
c.store_config.merge!(sorters: [{ property: :name, direction: 'ASC' }])
|
|
86
86
|
c.editing = :in_form
|
|
87
87
|
c.paging = :pagination
|
|
88
88
|
c.multi_select = false
|
|
@@ -91,14 +91,14 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
91
91
|
endpoint :add_window__add_form__submit do |params|
|
|
92
92
|
data = ActiveSupport::JSON.decode(params[:data])
|
|
93
93
|
|
|
94
|
-
return client.netzke_notify(
|
|
94
|
+
return client.netzke_notify('Permission Denied') if
|
|
95
95
|
!config[:permissions][:create]
|
|
96
96
|
|
|
97
97
|
begin
|
|
98
|
-
DataGrid.create_from_import(data[
|
|
98
|
+
DataGrid.create_from_import(data['name'], data['export'])
|
|
99
99
|
client.success = true
|
|
100
100
|
client.netzke_on_submit_success
|
|
101
|
-
rescue => exc
|
|
101
|
+
rescue StandardError => exc
|
|
102
102
|
client.netzke_notify(exc.to_s)
|
|
103
103
|
end
|
|
104
104
|
end
|
|
@@ -106,20 +106,20 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
106
106
|
endpoint :edit_window__edit_form__submit do |params|
|
|
107
107
|
data = ActiveSupport::JSON.decode(params[:data])
|
|
108
108
|
|
|
109
|
-
dg = DataGrid.find_by_id(data[
|
|
109
|
+
dg = DataGrid.find_by_id(data['id'])
|
|
110
110
|
|
|
111
111
|
begin
|
|
112
|
-
dg.update_from_import(data[
|
|
112
|
+
dg.update_from_import(data['name'], data['export'])
|
|
113
113
|
client.success = true
|
|
114
114
|
client.netzke_on_submit_success
|
|
115
|
-
rescue => exc
|
|
115
|
+
rescue StandardError => exc
|
|
116
116
|
client.netzke_notify(exc.to_s)
|
|
117
117
|
end
|
|
118
118
|
end
|
|
119
119
|
|
|
120
120
|
action :show_grid do |a|
|
|
121
|
-
a.text =
|
|
122
|
-
a.icon_cls =
|
|
121
|
+
a.text = 'Show Grid'
|
|
122
|
+
a.icon_cls = 'fa fa-th-large glyph'
|
|
123
123
|
a.handler = :netzke_show_grid
|
|
124
124
|
end
|
|
125
125
|
|
|
@@ -128,7 +128,7 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
128
128
|
|
|
129
129
|
dg = DataGrid.find_by_id(record_id)
|
|
130
130
|
|
|
131
|
-
return client.netzke_notify(
|
|
131
|
+
return client.netzke_notify('No data grid.') unless dg
|
|
132
132
|
|
|
133
133
|
meta_rows_raw, h_key_rows, data_rows = dg.export_array
|
|
134
134
|
meta_rows = meta_rows_raw.map do |row|
|
|
@@ -153,8 +153,8 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
153
153
|
|
|
154
154
|
def default_form_items
|
|
155
155
|
[
|
|
156
|
-
|
|
157
|
-
|
|
156
|
+
:name,
|
|
157
|
+
textarea_field(:export, height: 300, hide_label: true),
|
|
158
158
|
]
|
|
159
159
|
end
|
|
160
160
|
|
|
@@ -173,18 +173,18 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
173
173
|
end
|
|
174
174
|
|
|
175
175
|
attribute :hcols do |c|
|
|
176
|
-
c.label =
|
|
176
|
+
c.label = 'Horizontal Attrs'
|
|
177
177
|
c.width = 200
|
|
178
178
|
c.getter = lambda { |r|
|
|
179
|
-
r.dir_infos(
|
|
179
|
+
r.dir_infos('h').map { |inf| inf['attr'] }.join(', ')
|
|
180
180
|
}
|
|
181
181
|
end
|
|
182
182
|
|
|
183
183
|
attribute :vcols do |c|
|
|
184
|
-
c.label =
|
|
184
|
+
c.label = 'Vertical Attrs'
|
|
185
185
|
c.width = 200
|
|
186
186
|
c.getter = lambda { |r|
|
|
187
|
-
r.dir_infos(
|
|
187
|
+
r.dir_infos('v').map { |inf| inf['attr'] }.join(', ')
|
|
188
188
|
}
|
|
189
189
|
end
|
|
190
190
|
|
|
@@ -193,13 +193,13 @@ module Marty; class DataGridView < McflyGridPanel
|
|
|
193
193
|
end
|
|
194
194
|
|
|
195
195
|
attribute :data_type do |c|
|
|
196
|
-
c.label =
|
|
196
|
+
c.label = 'Data Type'
|
|
197
197
|
c.width = 200
|
|
198
198
|
end
|
|
199
199
|
|
|
200
200
|
attribute :created_dt do |c|
|
|
201
201
|
c.label = I18n.t('updated_at')
|
|
202
|
-
c.format =
|
|
202
|
+
c.format = 'Y-m-d H:i'
|
|
203
203
|
c.read_only = true
|
|
204
204
|
end
|
|
205
205
|
end; end
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
class Marty::EventView < Marty::Grid
|
|
2
2
|
has_marty_permissions \
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
3
|
+
read: :any,
|
|
4
|
+
update: [:admin],
|
|
5
|
+
delete: [:admin]
|
|
6
6
|
|
|
7
7
|
def configure(c)
|
|
8
8
|
super
|
|
9
9
|
|
|
10
|
-
c.title ||= I18n.t('events', default:
|
|
11
|
-
c.model =
|
|
10
|
+
c.title ||= I18n.t('events', default: 'Events')
|
|
11
|
+
c.model = 'Marty::Event'
|
|
12
12
|
c.paging = :buffered
|
|
13
13
|
c.editing = :in_form
|
|
14
14
|
c.attributes = [
|
|
@@ -27,9 +27,9 @@ class Marty::EventView < Marty::Grid
|
|
|
27
27
|
:comment,
|
|
28
28
|
]
|
|
29
29
|
|
|
30
|
-
c.store_config.merge!(
|
|
30
|
+
c.store_config.merge!(sorters: [{ property: :id,
|
|
31
31
|
direction: 'DESC',
|
|
32
|
-
}]
|
|
32
|
+
}])
|
|
33
33
|
Marty::Event.cleanup
|
|
34
34
|
end
|
|
35
35
|
|
|
@@ -38,56 +38,56 @@ class Marty::EventView < Marty::Grid
|
|
|
38
38
|
end
|
|
39
39
|
|
|
40
40
|
attribute :klass do |c|
|
|
41
|
-
c.text
|
|
41
|
+
c.text = I18n.t('event_grid.klass')
|
|
42
42
|
c.width = 100
|
|
43
43
|
c.read_only = true
|
|
44
44
|
end
|
|
45
45
|
|
|
46
46
|
attribute :subject_id do |c|
|
|
47
|
-
c.text
|
|
47
|
+
c.text = I18n.t('event_grid.subject_id')
|
|
48
48
|
c.width = 50
|
|
49
49
|
c.read_only = true
|
|
50
50
|
end
|
|
51
51
|
|
|
52
52
|
attribute :enum_event_operation do |c|
|
|
53
|
-
c.text
|
|
53
|
+
c.text = I18n.t('event_grid.enum_event_operation')
|
|
54
54
|
c.width = 100
|
|
55
55
|
c.read_only = true
|
|
56
56
|
end
|
|
57
57
|
|
|
58
58
|
attribute :start_dt_dt do |c|
|
|
59
|
-
c.text
|
|
60
|
-
c.format
|
|
59
|
+
c.text = I18n.t('event_grid.start_dt')
|
|
60
|
+
c.format = 'Y-m-d H:i:s'
|
|
61
61
|
end
|
|
62
62
|
|
|
63
63
|
attribute :end_dt_dt do |c|
|
|
64
|
-
c.text
|
|
65
|
-
c.format
|
|
64
|
+
c.text = I18n.t('event_grid.end_dt')
|
|
65
|
+
c.format = 'Y-m-d H:i:s'
|
|
66
66
|
end
|
|
67
67
|
|
|
68
68
|
attribute :error do |c|
|
|
69
69
|
error_map = {
|
|
70
|
-
nil =>
|
|
71
|
-
true =>
|
|
72
|
-
false =>
|
|
70
|
+
nil => '',
|
|
71
|
+
true => 'Error',
|
|
72
|
+
false => 'Success',
|
|
73
73
|
}
|
|
74
74
|
map_error = error_map.each_with_object({}) { |(k, v), h| h[v] = k }
|
|
75
75
|
editor_config = {
|
|
76
76
|
trigger_action: :all,
|
|
77
77
|
xtype: :combo,
|
|
78
|
-
store: [
|
|
78
|
+
store: ['Success', 'Error', ''],
|
|
79
79
|
}
|
|
80
80
|
c.column_config = { editor: editor_config }
|
|
81
81
|
c.field_config = editor_config
|
|
82
|
-
c.text = I18n.t(
|
|
82
|
+
c.text = I18n.t('event_grid.error')
|
|
83
83
|
c.type = :string
|
|
84
84
|
c.width = 150
|
|
85
|
-
c.getter = lambda {|r| error_map[r.error]}
|
|
86
|
-
c.setter = lambda {|r, v| r.error = map_error[v]}
|
|
85
|
+
c.getter = lambda { |r| error_map[r.error] }
|
|
86
|
+
c.setter = lambda { |r, v| r.error = map_error[v] }
|
|
87
87
|
end
|
|
88
88
|
|
|
89
89
|
attribute :comment do |c|
|
|
90
|
-
c.text
|
|
90
|
+
c.text = I18n.t('event_grid.comment')
|
|
91
91
|
c.width = 400
|
|
92
92
|
end
|
|
93
93
|
|
|
@@ -95,35 +95,35 @@ class Marty::EventView < Marty::Grid
|
|
|
95
95
|
lambda { |r|
|
|
96
96
|
return nil unless r.promise_id
|
|
97
97
|
return nil unless p = Marty::Promise.where(id: r.promise_id).first
|
|
98
|
+
|
|
98
99
|
p.send(field)
|
|
99
100
|
}
|
|
100
101
|
end
|
|
101
102
|
attribute :promise_job_id do |c|
|
|
102
|
-
c.text
|
|
103
|
+
c.text = I18n.t('event_grid.promise_job_id')
|
|
103
104
|
c.getter = promise_getter(:job_id)
|
|
104
105
|
c.read_only = true
|
|
105
106
|
end
|
|
106
107
|
|
|
107
108
|
attribute :promise_start_dt do |c|
|
|
108
|
-
c.text
|
|
109
|
+
c.text = I18n.t('event_grid.promise_start_dt')
|
|
109
110
|
c.width = 150
|
|
110
111
|
c.getter = promise_getter(:start_dt)
|
|
111
112
|
c.read_only = true
|
|
112
113
|
end
|
|
113
114
|
|
|
114
115
|
attribute :promise_end_dt do |c|
|
|
115
|
-
c.text
|
|
116
|
+
c.text = I18n.t('event_grid.promise_end_dt')
|
|
116
117
|
c.width = 150
|
|
117
118
|
c.getter = promise_getter(:end_dt)
|
|
118
119
|
c.read_only = true
|
|
119
120
|
end
|
|
120
121
|
|
|
121
122
|
attribute :promise_status do |c|
|
|
122
|
-
c.text
|
|
123
|
+
c.text = I18n.t('event_grid.promise_status')
|
|
123
124
|
c.getter = promise_getter(:status)
|
|
124
125
|
c.read_only = true
|
|
125
126
|
end
|
|
126
|
-
|
|
127
127
|
end
|
|
128
128
|
|
|
129
129
|
EventView = Marty::EventView
|
|
@@ -23,7 +23,7 @@ module Layout
|
|
|
23
23
|
)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def dispfield(params={})
|
|
26
|
+
def dispfield(params = {})
|
|
27
27
|
{
|
|
28
28
|
attr_type: :displayfield,
|
|
29
29
|
hide_label: !params[:field_label],
|
|
@@ -31,18 +31,18 @@ module Layout
|
|
|
31
31
|
}.merge(params)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
|
-
def vspacer(params={})
|
|
35
|
-
vbox({flex: 1, border: false}.merge(params))
|
|
34
|
+
def vspacer(params = {})
|
|
35
|
+
vbox({ flex: 1, border: false }.merge(params))
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
def hspacer(params={})
|
|
39
|
-
hbox({flex: 1, border: false}.merge(params))
|
|
38
|
+
def hspacer(params = {})
|
|
39
|
+
hbox({ flex: 1, border: false }.merge(params))
|
|
40
40
|
end
|
|
41
41
|
|
|
42
|
-
def textarea_field(name, options={})
|
|
42
|
+
def textarea_field(name, options = {})
|
|
43
43
|
{
|
|
44
44
|
name: name,
|
|
45
|
-
width:
|
|
45
|
+
width: '100%',
|
|
46
46
|
height: 150,
|
|
47
47
|
xtype: :textareafield,
|
|
48
48
|
auto_scroll: true,
|
|
@@ -54,10 +54,10 @@ module Layout
|
|
|
54
54
|
} + options
|
|
55
55
|
end
|
|
56
56
|
|
|
57
|
-
def jsonb_field(name, options={})
|
|
57
|
+
def jsonb_field(name, options = {})
|
|
58
58
|
{
|
|
59
59
|
name: name,
|
|
60
|
-
width:
|
|
60
|
+
width: '100%',
|
|
61
61
|
height: 150,
|
|
62
62
|
xtype: :textareafield,
|
|
63
63
|
auto_scroll: true,
|
|
@@ -73,7 +73,7 @@ module Layout
|
|
|
73
73
|
######################################################################
|
|
74
74
|
# PG ENUM field handling
|
|
75
75
|
|
|
76
|
-
def enum_column(c, class_or_array, col=nil)
|
|
76
|
+
def enum_column(c, class_or_array, col = nil)
|
|
77
77
|
col ||= c.name.demodulize.tableize.singularize
|
|
78
78
|
vals = class_or_array.is_a?(Array) ? class_or_array : class_or_array::VALUES
|
|
79
79
|
editor_config = {
|
|
@@ -111,11 +111,11 @@ module Layout
|
|
|
111
111
|
end
|
|
112
112
|
|
|
113
113
|
def enum_setter(name)
|
|
114
|
-
lambda {|r, v| r.send("#{name}=", v.blank? || v == '---' ? nil : v)}
|
|
114
|
+
lambda { |r, v| r.send("#{name}=", v.blank? || v == '---' ? nil : v) }
|
|
115
115
|
end
|
|
116
116
|
|
|
117
117
|
def get_sorter(col)
|
|
118
|
-
lambda {|rel, dir| rel.order("#{col}::text #{dir.to_s}")}
|
|
118
|
+
lambda { |rel, dir| rel.order("#{col}::text #{dir.to_s}") }
|
|
119
119
|
end
|
|
120
120
|
|
|
121
121
|
######################################################################
|
|
@@ -123,31 +123,31 @@ module Layout
|
|
|
123
123
|
# Netzke 8.x.
|
|
124
124
|
|
|
125
125
|
BOOL_MAP = {
|
|
126
|
-
nil =>
|
|
127
|
-
true =>
|
|
128
|
-
false =>
|
|
126
|
+
nil => '---',
|
|
127
|
+
true => 'True',
|
|
128
|
+
false => 'False',
|
|
129
129
|
}
|
|
130
130
|
|
|
131
131
|
MAP_BOOL = {
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
132
|
+
'---' => nil,
|
|
133
|
+
'' => nil,
|
|
134
|
+
'True' => true,
|
|
135
|
+
'False' => false,
|
|
136
136
|
}
|
|
137
137
|
|
|
138
138
|
def bool_getter(name)
|
|
139
|
-
lambda {|r| BOOL_MAP[r.send(name)]}
|
|
139
|
+
lambda { |r| BOOL_MAP[r.send(name)] }
|
|
140
140
|
end
|
|
141
141
|
|
|
142
142
|
def bool_setter(name)
|
|
143
|
-
lambda {|r, v| r.send("#{name}=", MAP_BOOL[v])}
|
|
143
|
+
lambda { |r, v| r.send("#{name}=", MAP_BOOL[v]) }
|
|
144
144
|
end
|
|
145
145
|
|
|
146
146
|
def nullable_bool_column(name)
|
|
147
147
|
editor_config = {
|
|
148
148
|
trigger_action: :all,
|
|
149
149
|
xtype: :combo,
|
|
150
|
-
store: [
|
|
150
|
+
store: ['True', 'False', '---'],
|
|
151
151
|
}
|
|
152
152
|
{
|
|
153
153
|
column_config: { editor: editor_config },
|
|
@@ -161,7 +161,7 @@ module Layout
|
|
|
161
161
|
######################################################################
|
|
162
162
|
# make sure to validate range vals on the model (e.g. see rule.rb)
|
|
163
163
|
|
|
164
|
-
def range_getter(name, json_field=nil)
|
|
164
|
+
def range_getter(name, json_field = nil)
|
|
165
165
|
if json_field
|
|
166
166
|
lambda { |r| Marty::Util.pg_range_to_human(r.send(json_field)[name]) }
|
|
167
167
|
else
|
|
@@ -169,13 +169,13 @@ module Layout
|
|
|
169
169
|
end
|
|
170
170
|
end
|
|
171
171
|
|
|
172
|
-
def range_setter(name, json_field=nil)
|
|
172
|
+
def range_setter(name, json_field = nil)
|
|
173
173
|
if json_field
|
|
174
174
|
lambda do |r, v|
|
|
175
175
|
cookedv = v && v.present? && (Marty::Util.human_to_pg_range(v) rescue v)
|
|
176
|
-
h
|
|
176
|
+
h = r.send(json_field)
|
|
177
177
|
if cookedv
|
|
178
|
-
r.send("#{json_field}=", h + {name=>cookedv})
|
|
178
|
+
r.send("#{json_field}=", h + { name => cookedv })
|
|
179
179
|
else
|
|
180
180
|
h.delete(name)
|
|
181
181
|
r.send("#{json_field}=", h)
|
|
@@ -3,7 +3,7 @@ module Marty::Extras::Misc
|
|
|
3
3
|
editor_config: {
|
|
4
4
|
trigger_action: :all,
|
|
5
5
|
xtype: :combo,
|
|
6
|
-
store: (1..12).map {|x| [x,
|
|
6
|
+
store: (1..12).map { |x| [x, '%02d' % x] },
|
|
7
7
|
# FIXME: for some reason, with Netzke 0.8.2, the label show
|
|
8
8
|
# up in the grid editor. This hack seems to fix the
|
|
9
9
|
# problem. However, the label in the add-in-form now looks
|
|
@@ -17,7 +17,7 @@ module Marty::Extras::Misc
|
|
|
17
17
|
}
|
|
18
18
|
def self.numberfield_cfg(decimal_places)
|
|
19
19
|
{
|
|
20
|
-
format:
|
|
20
|
+
format: '0.' + '0' * decimal_places,
|
|
21
21
|
xtype: 'numbercolumn',
|
|
22
22
|
editor_config: { hide_trigger: true,
|
|
23
23
|
decimal_precision: decimal_places },
|
|
@@ -6,7 +6,7 @@ class Marty::Grid < ::Netzke::Grid::Base
|
|
|
6
6
|
# parent grid is the grid in which child/linked_components is defined
|
|
7
7
|
# child components are components dependent on the selected parent row
|
|
8
8
|
# linked components will update whenever the parent is updated
|
|
9
|
-
def initialize args, kwargs=nil
|
|
9
|
+
def initialize args, kwargs = nil
|
|
10
10
|
super(args, kwargs)
|
|
11
11
|
client_config[:child_components] = child_components || []
|
|
12
12
|
client_config[:linked_components] = linked_components || []
|
|
@@ -33,8 +33,8 @@ class Marty::Grid < ::Netzke::Grid::Base
|
|
|
33
33
|
}
|
|
34
34
|
|
|
35
35
|
c.editing = :both
|
|
36
|
-
c.store_config = {page_size: 30}
|
|
37
|
-
c.view_config = {preserve_scroll_on_reload: true}
|
|
36
|
+
c.store_config = { page_size: 30 }
|
|
37
|
+
c.view_config = { preserve_scroll_on_reload: true }
|
|
38
38
|
|
|
39
39
|
# disable buffered renderer plugin to avoid white space on reload
|
|
40
40
|
c.buffered_renderer = false
|
|
@@ -45,8 +45,8 @@ class Marty::Grid < ::Netzke::Grid::Base
|
|
|
45
45
|
end
|
|
46
46
|
|
|
47
47
|
action :clear_filters do |a|
|
|
48
|
-
a.text =
|
|
49
|
-
a.tooltip =
|
|
48
|
+
a.text = 'X'
|
|
49
|
+
a.tooltip = 'Clear filters'
|
|
50
50
|
a.handler = :clear_filters
|
|
51
51
|
end
|
|
52
52
|
|
|
@@ -57,8 +57,8 @@ class Marty::Grid < ::Netzke::Grid::Base
|
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
action :clear_filters do |a|
|
|
60
|
-
a.text =
|
|
61
|
-
a.tooltip =
|
|
60
|
+
a.text = 'X'
|
|
61
|
+
a.tooltip = 'Clear filters'
|
|
62
62
|
a.handler = :clear_filters
|
|
63
63
|
end
|
|
64
64
|
|
|
@@ -67,37 +67,37 @@ class Marty::Grid < ::Netzke::Grid::Base
|
|
|
67
67
|
action :add do |a|
|
|
68
68
|
super(a)
|
|
69
69
|
a.icon = nil
|
|
70
|
-
a.icon_cls =
|
|
70
|
+
a.icon_cls = 'fa fa-plus glyph'
|
|
71
71
|
end
|
|
72
72
|
|
|
73
73
|
action :add_in_form do |a|
|
|
74
74
|
super(a)
|
|
75
75
|
a.icon = nil
|
|
76
|
-
a.icon_cls =
|
|
76
|
+
a.icon_cls = 'fa fa-plus-square glyph'
|
|
77
77
|
end
|
|
78
78
|
|
|
79
79
|
action :edit do |a|
|
|
80
80
|
super(a)
|
|
81
81
|
a.icon = nil
|
|
82
|
-
a.icon_cls =
|
|
82
|
+
a.icon_cls = 'fa fa-edit glyph'
|
|
83
83
|
end
|
|
84
84
|
|
|
85
85
|
action :edit_in_form do |a|
|
|
86
86
|
super(a)
|
|
87
87
|
a.icon = nil
|
|
88
|
-
a.icon_cls =
|
|
88
|
+
a.icon_cls = 'fa fa-pen-square glyph'
|
|
89
89
|
end
|
|
90
90
|
|
|
91
91
|
action :delete do |a|
|
|
92
92
|
super(a)
|
|
93
93
|
a.icon = nil
|
|
94
|
-
a.icon_cls =
|
|
94
|
+
a.icon_cls = 'fa fa-trash glyph'
|
|
95
95
|
end
|
|
96
96
|
|
|
97
97
|
action :apply do |a|
|
|
98
98
|
super(a)
|
|
99
99
|
a.icon = nil
|
|
100
|
-
a.icon_cls =
|
|
100
|
+
a.icon_cls = 'fa fa-check glyph'
|
|
101
101
|
end
|
|
102
102
|
|
|
103
103
|
def child_components
|