marty 2.0.6 → 2.0.7

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cb20c0c17b789a6d536df2d8cda264d970017f7a
4
- data.tar.gz: 14a7749520e7873293f76f983d40216d75ba086b
3
+ metadata.gz: eb8e6c31b7c3d069f58ef86fa901ac18df05c7a0
4
+ data.tar.gz: 9208a3fcbab2e2e42a01c9a4c84ce59c05391aab
5
5
  SHA512:
6
- metadata.gz: 02b863d6700821ca598cea99cc08278b49d1d2682db2b136cb8433b19c00838b0db8cf481cfb732480597ed7d87776592cbfeed8023a6d2c7835bf6c7009e177
7
- data.tar.gz: cd2f4c0508a096a6d817885e35f2fa66896428053280bde96b340400dfc58380929cb33cb26c36ad571814f589fa9e718dfb84a65d9dd493d0cb4a2787b4a5ea
6
+ metadata.gz: 72de58e1116dd97de068be07a05a91f8c7e08cf9ae80be8edb2e2043b0ebb8b8f88de09a93b957e16bc8377ec1b207cdb6e37c21074cf904cf9548b90b8c844e
7
+ data.tar.gz: 202dd1ea697678aa730e02801b76fb4ffe68a93a75f343b77402317e6dc238ed7d7e14dfd3019c8813b36729bae05c793f1fd63d4ce017be503bb36fda36e65e
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- marty (2.0.5)
4
+ marty (2.0.7)
5
5
  axlsx (= 3.0.0pre)
6
6
  coderay
7
7
  delorean_lang (~> 0.3.37)
@@ -135,6 +135,12 @@ class Marty::BaseRuleView < Marty::McflyGridPanel
135
135
  c.height = 740
136
136
  end
137
137
 
138
+ component :view_window do |c|
139
+ super(c)
140
+ c.width = 1500
141
+ c.height = 740
142
+ end
143
+
138
144
  attribute :name do |c|
139
145
  c.width = 150
140
146
  end
@@ -6,6 +6,9 @@ class Marty::Grid < ::Netzke::Grid::Base
6
6
 
7
7
  def configure_form_window(c)
8
8
  super
9
+
10
+ c.klass = Marty::RecordFormWindow
11
+
9
12
  # Fix Add in form/Edit in form modal popup width
10
13
  # Netzke 0.10.1 defaults width to 80% of screen which is too wide
11
14
  # for a form where the fields are stacked top to bottom
@@ -22,6 +25,28 @@ class Marty::Grid < ::Netzke::Grid::Base
22
25
  }
23
26
  JS
24
27
 
28
+ c.do_view_in_form = l(<<-JS)
29
+ function(record){
30
+ this.netzkeLoadComponent("view_window", {
31
+ serverConfig: {record_id: record.id},
32
+ callback: function(w){
33
+ w.show();
34
+ w.on('close', function(){
35
+ if (w.closeRes === "ok") {
36
+ this.netzkeReloadStore();
37
+ }
38
+ }, this);
39
+ }});
40
+ }
41
+ JS
42
+ end
43
+
44
+ component :view_window do |c|
45
+ configure_form_window(c)
46
+ c.excluded = !allowed_to?(:read)
47
+ c.items = [:view_form]
48
+ c.title = I18n.t('netzke.grid.base.view_record',
49
+ model: model.model_name.human)
25
50
  end
26
51
 
27
52
  def class_can?(op)
@@ -0,0 +1,12 @@
1
+ class Marty::RecordFormWindow < Netzke::Basepack::RecordFormWindow
2
+ def configure(c)
3
+ super c
4
+ c.fbar = [] if c.item_id == 'view_window'
5
+ end
6
+
7
+ component :view_form do |c|
8
+ preconfigure_form(c)
9
+ c.record_id = config.client_config[:record_id]
10
+ c.mode = :lockable
11
+ end
12
+ end
@@ -87,8 +87,11 @@ class Marty::DataGrid < Marty::Base
87
87
  gen_mcfly_lookup :lookup, [:name], cache: true
88
88
  gen_mcfly_lookup :get_all, [], mode: nil
89
89
 
90
- def self.lookup_h(pt, name, fields = nil)
91
- fields ||= %w(id group_id created_dt metadata data_type)
90
+ # FIXME: if the caller requests data as part of fields, there could
91
+ # be memory concerns with caching since some data_grids have massive data
92
+ cached_delorean_fn :lookup_h, sig: [2, 3] do
93
+ |pt, name, fields = nil|
94
+ fields ||= %w(id group_id created_dt metadata data_type name)
92
95
  dga = mcfly_pt(pt).where(name: name).pluck(*fields).first
93
96
  dga && Hash[fields.zip(dga)]
94
97
  end
@@ -124,14 +124,6 @@ class Marty::DeloreanRule < Marty::BaseRule
124
124
  kl = ruleh["classname"].constantize
125
125
  kl.compute(ruleh, metadata_opts, pt, params, grid_names_p)
126
126
  end
127
- delorean_fn :reporting_metadata, sig: 2 do
128
- |ruleh, metadata_opts|
129
- rmdkeys = metadata_opts.select{|_, v| v["reporting_metadata"]}.keys
130
- rmdkeys.each_with_object({}) do |k, h|
131
- fr = ruleh['fixed_results']
132
- h[k] = fr[k] if fr.include?(k)
133
- end
134
- end
135
127
  delorean_fn :route_compute_rs, sig: 3 do
136
128
  |ruleh, pt, features|
137
129
  kl = ruleh["classname"].constantize
@@ -16,7 +16,21 @@ class Marty::Promise < Marty::Base
16
16
  # default timeout (seconds) to wait for jobs to start
17
17
  DEFAULT_JOB_TIMEOUT = Rails.configuration.marty.job_timeout || 10
18
18
 
19
- lazy_load :result
19
+ SELECT_COLS = columns.map(&:name)-["result"]
20
+ default_scope {
21
+ select(*SELECT_COLS)
22
+ }
23
+ def result
24
+ unless has_attribute?(:result)
25
+ changes_before_reload = self.changes.clone
26
+ self.reload
27
+ changes_before_reload.each{
28
+ |attribute_name, values|
29
+ self.send("#{attribute_name}=", values[1])
30
+ }
31
+ end
32
+ read_attribute :result
33
+ end
20
34
 
21
35
  serialize :result, MarshalResult.new
22
36
 
@@ -166,3 +166,8 @@ en:
166
166
  data_grid__name: Data Grid
167
167
  breakeven_data_grid__name: Breakeven Data Grid
168
168
  data_grid_view: Data Grids
169
+
170
+ netzke:
171
+ grid:
172
+ base:
173
+ view_record: "%{model} (Locked)"
data/lib/marty.rb CHANGED
@@ -13,7 +13,6 @@ require 'marty/railtie'
13
13
  require 'marty/mcfly_model'
14
14
  require 'marty/monkey'
15
15
  require 'marty/promise_job'
16
- require 'marty/lazy_column_loader'
17
16
  require 'marty/json_schema'
18
17
 
19
18
  # This does not get loaded in via bundler unless it is included in the
@@ -0,0 +1,14 @@
1
+ Ext.define('Netzke.Grid.EventHandlers', {
2
+ override: 'Netzke.Grid.EventHandlers',
3
+ netzkeHandleItemdblclick: function(view, record){
4
+ if (this.editsInline) return; // inline editing is handled elsewhere
5
+
6
+ var has_perm = (this.permissions || {});
7
+ if (has_perm.read !== false && !has_perm.update) {
8
+ this.doViewInForm(record);
9
+ }
10
+ else if (has_perm.update !== false) {
11
+ this.doEditInForm(record);
12
+ }
13
+ },
14
+ });
data/lib/marty/monkey.rb CHANGED
@@ -119,7 +119,7 @@ module Netzke::Basepack::DataAdapters
119
119
  relation = relation.includes(assoc.to_sym).references(assoc.to_sym) if method
120
120
  end
121
121
 
122
- @model.const_defined?(:LAZY_LOADED) ? relation.count(columns.first.name) :
122
+ @model.const_defined?(:SELECT_COLS) ? relation.count(columns.first.name) :
123
123
  relation.count
124
124
  end
125
125
 
@@ -130,7 +130,7 @@ module Netzke::Basepack::DataAdapters
130
130
  return nil if conditions.empty?
131
131
 
132
132
  predicates = conditions.map do |q|
133
- q = HashWithIndifferentAccess.new(q)
133
+ q = HashWithIndifferentAccess.new(Netzke::Support.permit_hash_params(q))
134
134
 
135
135
  attr = q[:attr]
136
136
  method, assoc = method_and_assoc(attr)
@@ -310,3 +310,29 @@ class OpenStruct
310
310
  # super
311
311
  #end
312
312
  end
313
+
314
+ ######################################################################
315
+
316
+ module Netzke
317
+ module Core
318
+ module DynamicAssets
319
+ class << self
320
+ def ext_js(form_authenticity_token)
321
+ res = initial_dynamic_javascript(form_authenticity_token) << "\n"
322
+
323
+ include_core_js(res)
324
+
325
+ # load javascript overrides
326
+ overrides = ["#{File.dirname(__FILE__)}/javascript/overrides.js"]
327
+
328
+ (Netzke::Core.ext_javascripts + overrides).each do |path|
329
+ f = File.new(path)
330
+ res << f.read
331
+ end
332
+
333
+ minify_js(res)
334
+ end
335
+ end
336
+ end
337
+ end
338
+ end
data/lib/marty/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Marty
2
- VERSION = "2.0.6"
2
+ VERSION = "2.0.7"
3
3
  end
@@ -45,6 +45,12 @@ module Dummy
45
45
  # Enable escaping HTML in JSON.
46
46
  config.active_support.escape_html_entities_in_json = true
47
47
 
48
+ # eager load paths instead of autoload paths
49
+ config.eager_load_paths += ['lib', 'other'].map do
50
+ |dir|
51
+ File.expand_path("../../#{dir}", __FILE__)
52
+ end
53
+
48
54
  # Use SQL instead of Active Record's schema dumper when creating the database.
49
55
  # This is necessary if your schema can't be completely dumped by the schema dumper,
50
56
  # like if you have constraints or database-specific column types
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: marty
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.0.6
4
+ version: 2.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Arman Bostani
@@ -14,7 +14,7 @@ authors:
14
14
  autorequire:
15
15
  bindir: bin
16
16
  cert_chain: []
17
- date: 2018-04-18 00:00:00.000000000 Z
17
+ date: 2018-05-03 00:00:00.000000000 Z
18
18
  dependencies:
19
19
  - !ruby/object:Gem::Dependency
20
20
  name: pg
@@ -202,6 +202,7 @@ files:
202
202
  - app/components/marty/posting_window.rb
203
203
  - app/components/marty/promise_view.rb
204
204
  - app/components/marty/promise_view/client/promise_view.css
205
+ - app/components/marty/record_form_window.rb
205
206
  - app/components/marty/report_form.rb
206
207
  - app/components/marty/report_select.rb
207
208
  - app/components/marty/reporting.rb
@@ -470,8 +471,8 @@ files:
470
471
  - lib/marty/data_exporter.rb
471
472
  - lib/marty/data_importer.rb
472
473
  - lib/marty/engine.rb
474
+ - lib/marty/javascript/overrides.js
473
475
  - lib/marty/json_schema.rb
474
- - lib/marty/lazy_column_loader.rb
475
476
  - lib/marty/logger.rb
476
477
  - lib/marty/mcfly_model.rb
477
478
  - lib/marty/migrations.rb
@@ -1,57 +0,0 @@
1
- # ATTRIBUTION NOTE: This module has been mostly copied from the
2
- # lazy_columns gem. The original code can be found at:
3
- # https://github.com/jorgemanrubia/lazy_columns
4
-
5
- module Marty
6
- module LazyColumnLoader
7
- extend ActiveSupport::Concern
8
-
9
- module ClassMethods
10
- def lazy_load(*columns)
11
- return unless table_exists?
12
- columns = columns.collect(&:to_s)
13
- exclude_columns_from_default_scope columns
14
- define_lazy_accessors_for columns
15
-
16
- # allow introspection of lazy-loaded column list
17
- const_set(:LAZY_LOADED, columns)
18
- end
19
-
20
- private
21
- def exclude_columns_from_default_scope(columns)
22
- default_scope {
23
- select((column_names - columns).map {
24
- |column_name|
25
- "#{table_name}.#{column_name}"
26
- })
27
- }
28
- end
29
-
30
- def define_lazy_accessors_for(columns)
31
- columns.each { |column| define_lazy_accessor_for column }
32
- end
33
-
34
- def define_lazy_accessor_for(column)
35
- define_method column do
36
- unless has_attribute?(column)
37
- changes_before_reload = self.changes.clone
38
- self.reload
39
- changes_before_reload.each{
40
- |attribute_name, values|
41
- self.send("#{attribute_name}=", values[1])
42
- }
43
- end
44
- read_attribute column
45
- end
46
- end
47
- end
48
- end
49
- end
50
-
51
- if ActiveRecord::Base.respond_to?(:lazy_load)
52
- $stderr.puts "ERROR: Method `.lazy_load` already defined in " +
53
- "`ActiveRecord::Base`. This is incompatible with LazyColumnLoader " +
54
- "and the module will be disabled."
55
- else
56
- ActiveRecord::Base.send :include, Marty::LazyColumnLoader
57
- end