netzke-basepack 0.12.9 → 1.0.0.0.pre

Sign up to get free protection for your applications and to get access to all the features.
Files changed (90) hide show
  1. data/CHANGELOG.md +75 -44
  2. data/Gemfile +4 -2
  3. data/LICENSE +2 -6
  4. data/README.md +22 -24
  5. data/javascripts/basepack.js +0 -8
  6. data/javascripts/{columns.js → grid/columns.js} +59 -71
  7. data/javascripts/grid/event_handlers.js +218 -0
  8. data/javascripts/netzkeremotecombo.js +5 -13
  9. data/javascripts/tristate.js +62 -0
  10. data/javascripts/xdatetime.js +8 -37
  11. data/lib/netzke-basepack.rb +3 -2
  12. data/lib/netzke/basepack.rb +1 -1
  13. data/lib/netzke/basepack/action_column.rb +6 -23
  14. data/lib/netzke/basepack/active_record.rb +0 -6
  15. data/lib/netzke/basepack/attr_config.rb +20 -11
  16. data/lib/netzke/basepack/attribute_config.rb +10 -0
  17. data/lib/netzke/basepack/attributes.rb +196 -0
  18. data/lib/netzke/basepack/column_config.rb +47 -39
  19. data/lib/netzke/basepack/columns.rb +127 -97
  20. data/lib/netzke/basepack/data_accessor.rb +7 -48
  21. data/lib/netzke/basepack/data_adapters/abstract_adapter.rb +15 -17
  22. data/lib/netzke/basepack/data_adapters/active_record_adapter.rb +111 -90
  23. data/lib/netzke/basepack/dynamic_tab_panel.rb +3 -5
  24. data/lib/netzke/basepack/dynamic_tab_panel/{javascripts → client}/dynamic_tab_panel.js +6 -5
  25. data/lib/netzke/basepack/field_config.rb +30 -19
  26. data/lib/netzke/basepack/fields.rb +22 -12
  27. data/lib/netzke/basepack/grid_live_search.rb +1 -4
  28. data/lib/netzke/basepack/grid_live_search/{javascripts → client}/grid_live_search.js +9 -7
  29. data/lib/netzke/basepack/item_persistence.rb +3 -3
  30. data/lib/netzke/basepack/item_persistence/events_plugin.rb +8 -10
  31. data/lib/netzke/basepack/paging_form.rb +7 -11
  32. data/lib/netzke/basepack/paging_form/{javascripts → client}/paging_form.js +4 -4
  33. data/lib/netzke/basepack/query_builder.rb +12 -10
  34. data/lib/netzke/basepack/query_builder/{javascripts → client}/query_builder.js +14 -12
  35. data/lib/netzke/basepack/record_form_window.rb +8 -8
  36. data/lib/netzke/basepack/search_panel.rb +4 -6
  37. data/lib/netzke/basepack/search_panel/{javascripts → client}/condition_field.js +13 -16
  38. data/lib/netzke/basepack/search_panel/{javascripts → client}/search_panel.js +7 -7
  39. data/lib/netzke/basepack/search_window.rb +6 -6
  40. data/lib/netzke/basepack/simple_app/{javascripts → client}/statusbar_ext.js +0 -0
  41. data/lib/netzke/basepack/version.rb +1 -1
  42. data/lib/netzke/form/base.rb +166 -0
  43. data/lib/netzke/{basepack/form/javascripts/form.js → form/base/client/base.js} +77 -38
  44. data/lib/netzke/form/base/client/readonly_mode.css +4 -0
  45. data/lib/netzke/{basepack/form/javascripts → form/base/client}/readonly_mode.js +5 -5
  46. data/lib/netzke/form/endpoints.rb +33 -0
  47. data/lib/netzke/form/services.rb +74 -0
  48. data/lib/netzke/grid/actions.rb +52 -0
  49. data/lib/netzke/grid/base.rb +289 -0
  50. data/lib/netzke/{basepack/grid/javascripts → grid/base/client}/advanced_search.js +5 -1
  51. data/lib/netzke/{basepack/grid/javascripts/grid.js → grid/base/client/base.js} +61 -53
  52. data/lib/netzke/{basepack/grid/javascripts → grid/base/client}/extensions.js +19 -13
  53. data/lib/netzke/{basepack/grid/javascripts → grid/base/client}/remember_selection.js +0 -1
  54. data/lib/netzke/grid/client.rb +8 -0
  55. data/lib/netzke/grid/components.rb +55 -0
  56. data/lib/netzke/grid/configuration.rb +72 -0
  57. data/lib/netzke/grid/endpoints.rb +99 -0
  58. data/lib/netzke/grid/permissions.rb +18 -0
  59. data/lib/netzke/grid/services.rb +141 -0
  60. data/lib/netzke/tree/base.rb +173 -0
  61. data/lib/netzke/{basepack/tree/javascripts/tree.js → tree/base/client/base.js} +55 -26
  62. data/lib/netzke/{basepack/tree/javascripts → tree/base/client}/extensions.js +7 -7
  63. data/lib/netzke/tree/endpoints.rb +34 -0
  64. data/lib/netzke/{basepack/viewport.rb → viewport/base.rb} +3 -3
  65. data/lib/netzke/{basepack/window.rb → window/base.rb} +7 -8
  66. data/lib/netzke/window/base/client/base.js +26 -0
  67. data/locales/de.yml +49 -33
  68. data/locales/en.yml +32 -39
  69. data/locales/es.yml +39 -25
  70. data/locales/nl.yml +39 -25
  71. data/locales/ru.yml +38 -25
  72. data/locales/uk.yml +40 -26
  73. data/stylesheets/basepack.css +10 -0
  74. metadata +48 -45
  75. data/javascripts/mixins/grid_event_handlers.js +0 -139
  76. data/lib/netzke/basepack/accordion.rb +0 -45
  77. data/lib/netzke/basepack/active_record/relation_extensions.rb +0 -27
  78. data/lib/netzke/basepack/form.rb +0 -131
  79. data/lib/netzke/basepack/form/endpoints.rb +0 -35
  80. data/lib/netzke/basepack/form/services.rb +0 -74
  81. data/lib/netzke/basepack/form/stylesheets/readonly_mode.css +0 -14
  82. data/lib/netzke/basepack/grid.rb +0 -570
  83. data/lib/netzke/basepack/grid/endpoints.rb +0 -111
  84. data/lib/netzke/basepack/grid/javascripts/edit_in_form.js +0 -51
  85. data/lib/netzke/basepack/grid/services.rb +0 -148
  86. data/lib/netzke/basepack/tab_panel.rb +0 -22
  87. data/lib/netzke/basepack/tab_panel/javascripts/tab_panel.js +0 -11
  88. data/lib/netzke/basepack/tree.rb +0 -269
  89. data/lib/netzke/basepack/window/javascripts/window.js +0 -26
  90. data/lib/netzke/basepack/wrap_lazy_loaded.rb +0 -29
@@ -3,19 +3,17 @@ module Netzke
3
3
  # A tab panel that can load components dynamically by their class name. Components can be loaded in the current or new tab.
4
4
  # For example:
5
5
  #
6
- # this.netzkeLoadComponentByClass('BookGrid', {newTab: true, clientConfig: {read_only: true}});
6
+ # this.netzkeLoadComponentByClass('BookGrid', {newTab: true, serverConfig: {read_only: true}});
7
7
  #
8
8
  class DynamicTabPanel < Netzke::Base
9
- js_configure do |c|
9
+ client_class do |c|
10
10
  c.extend = "Ext.tab.Panel"
11
- c.mixin
12
11
  end
13
12
 
14
13
  # Override this method if you need more control on what components can/cannot be loaded, or in order to access
15
14
  # `client_config`
16
15
  component :child do |c|
17
- # c.client_config <== is accessible here
18
- c.klass = (c.client_config[:klass] || "Netzke::Core::Panel").constantize
16
+ c.class_name = c.client_config[:class_name] || "Netzke::Core::Panel"
19
17
  end
20
18
  end
21
19
  end
@@ -1,9 +1,11 @@
1
1
  {
2
+ tabCounter: 0,
3
+
2
4
  netzkeTabComponentDelivered: function(c, config) {
3
5
  var tab,
4
6
  i,
5
7
  activeTab = this.getActiveTab(),
6
- cmp = Ext.ComponentManager.create(Ext.apply(c, {closable: true}));
8
+ cmp = Ext.create(Ext.apply(c, {closable: true}));
7
9
 
8
10
  if (config.newTab || activeTab == null) {
9
11
  tab = this.add(cmp);
@@ -20,10 +22,9 @@
20
22
  netzkeLoadComponentByClass: function(klass, options) {
21
23
  this.netzkeLoadComponent('child', Ext.apply(options, {
22
24
  configOnly: true,
23
- clone: true,
24
- clientConfig: Ext.apply(options.clientConfig || {}, {klass: klass}),
25
- callback: this.netzkeTabComponentDelivered,
26
- scope: this,
25
+ itemId: "tab_" + this.tabCounter++,
26
+ serverConfig: Ext.apply(options.serverConfig || {}, { class_name: klass }),
27
+ callback: this.netzkeTabComponentDelivered
27
28
  }));
28
29
  }
29
30
  }
@@ -1,48 +1,60 @@
1
1
  module Netzke
2
2
  module Basepack
3
- # Takes care of automatic field configuration in {Basepack::Form}
3
+ # Takes care of automatic field configuration in {Form::Base}
4
4
  class FieldConfig < AttrConfig
5
- def set_defaults!
5
+ def merge_attribute(attr)
6
+ self.merge!(attr)
7
+
8
+ self.field_label = self.delete(:label) if self.has_key?(:label)
9
+
10
+ self.merge!(delete(:field_config)) if self.has_key?(:field_config)
11
+
12
+ self.merge!(editor_config) if self.has_key?(:editor_config)
13
+
14
+ self.delete(:column_config) if self.has_key?(:column_config)
15
+ end
16
+
17
+ def set_defaults
6
18
  super
7
19
 
8
- self.attr_type ||= @data_adapter.attr_type(name)
20
+ self.type ||= @model_adapter.attr_type(name)
9
21
 
10
- set_xtype! if xtype.nil?
22
+ set_xtype if xtype.nil?
11
23
 
12
- self.field_label ||= @data_adapter.human_attribute_name(name).gsub(/\s+/, " ")
24
+ self.field_label ||= default_label
13
25
 
14
26
  self.hidden = true if hidden.nil? && primary?
15
27
  self.hide_label = hidden if hide_label.nil?
16
28
 
17
- case attr_type
29
+ case type
18
30
  when :boolean
19
- configure_checkbox!
31
+ configure_checkbox
20
32
  when :date
21
- configure_date_field!
33
+ configure_date_field
22
34
  end
23
35
  end
24
36
 
25
37
  private
26
38
 
27
- def set_xtype!
39
+ def set_xtype
28
40
  if association?
29
- set_xtype_for_association!
41
+ set_xtype_for_association
30
42
  else
31
- self.xtype = xtype_for_attr_type(attr_type)
43
+ self.xtype = xtype_for_type(type)
32
44
  end
33
45
  end
34
46
 
35
- def set_xtype_for_association!
47
+ def set_xtype_for_association
36
48
  assoc_name, method = name.split('__').map(&:to_sym)
37
- assoc_method_type = @data_adapter.get_assoc_property_type(assoc_name, method)
49
+ assoc_method_type = @model_adapter.get_assoc_property_type(assoc_name, method)
38
50
  if nested_attribute
39
- self.xtype = xtype_for_attr_type(assoc_method_type)
51
+ self.xtype = xtype_for_type(assoc_method_type)
40
52
  else
41
- self.xtype = assoc_method_type == :boolean ? xtype_for_attr_type(assoc_method_type) : :netzkeremotecombo
53
+ self.xtype = assoc_method_type == :boolean ? xtype_for_type(assoc_method_type) : :netzkeremotecombo
42
54
  end
43
55
  end
44
56
 
45
- def xtype_for_attr_type(type)
57
+ def xtype_for_type(type)
46
58
  { integer: :numberfield,
47
59
  boolean: :checkboxfield,
48
60
  date: :datefield,
@@ -53,15 +65,14 @@ module Netzke
53
65
  }[type] || :textfield
54
66
  end
55
67
 
56
- def configure_checkbox!
68
+ def configure_checkbox
57
69
  self.checked = value
58
70
  self.unchecked_value = false
59
71
  self.input_value = true
60
72
  end
61
73
 
62
- def configure_date_field!
74
+ def configure_date_field
63
75
  self.submit_format = "Y-m-d"
64
- # DEBT: why is self.format not working?? ('too few arguments')
65
76
  self[:format] ||= I18n.t("date", scope: 'netzke.formats', default: "Y-m-d")
66
77
  end
67
78
  end
@@ -6,25 +6,27 @@ module Netzke
6
6
 
7
7
  # Items with normalized fields (i.e. containing all the necessary attributes needed by Ext.form.Form to render a field)
8
8
  def items
9
- prepend_primary_key(config.items) || data_adapter.model_attributes
9
+ prepend_primary_key(config.items) || model_adapter.model_attributes
10
10
  end
11
11
 
12
12
  # Hash of fully configured fields, that are referenced in the items. E.g.:
13
- # { :role__name => {:xtype => 'netzkeremotecombo', :disabled => true, :value => "admin"},
14
- # :created_at => {:xtype => 'datetime', :disabled => true, :value => "2010-10-10 10:10"}
13
+ # {
14
+ # role__name: {xtype: 'netzkeremotecombo', disabled: true, value: "admin"},
15
+ # created_at: {xtype: 'datetime', disabled: true, value: "2010-10-10 10:10"}
15
16
  # }
16
17
  def fields
17
18
  @_fields ||= fields_from_items.tap do |flds|
18
19
  # add primary key field if not present
19
- primary_key = data_adapter.primary_key
20
+ primary_key = model_adapter.primary_key
20
21
  flds[primary_key.to_sym] ||= {name: primary_key}
21
22
  end
22
23
  end
23
24
 
24
25
  # Hash of normalized field configs extracted from :items, e.g.:
25
26
  #
26
- # { :role__name => {:xtype => "netzkeremotecombo"},
27
- # :password => {:xtype => "passwordfield"}
27
+ # {
28
+ # role__name: {xtype: "netzkeremotecombo"},
29
+ # password: {xtype: "passwordfield"}
28
30
  # }
29
31
  def fields_from_items
30
32
  @fields_from_items || (normalize_config || true) && @fields_from_items
@@ -39,14 +41,22 @@ module Netzke
39
41
  end
40
42
 
41
43
  def extend_field(field)
42
- Netzke::Basepack::FieldConfig.new(field, data_adapter).tap do |c|
43
-
44
+ Netzke::Basepack::FieldConfig.new(field, model_adapter).tap do |c|
44
45
  # not binding to a model attribute
45
- return c if c.no_binding
46
+ return c if c.bind == false
47
+
48
+ # merge in attribute
49
+ c.merge_attribute(attribute_overrides[c.name.to_sym] || {})
50
+
51
+ return nil if c.excluded
46
52
 
47
53
  @fields_from_items[c.name.to_sym] = c
48
54
 
49
- c.set_defaults!
55
+ c.set_defaults
56
+
57
+ if c.type == :boolean && multiedit?
58
+ c.xtype = 'netzketristate' if c.type == :boolean
59
+ end
50
60
  end
51
61
  end
52
62
 
@@ -54,13 +64,13 @@ module Netzke
54
64
 
55
65
  def prepend_primary_key(items)
56
66
  items && items.tap do |items|
57
- items.insert(0, data_adapter.primary_key.to_sym) if !includes_primary_key?(items)
67
+ items.insert(0, model_adapter.primary_key.to_sym) if !includes_primary_key?(items)
58
68
  end
59
69
  end
60
70
 
61
71
  def includes_primary_key?(items)
62
72
  !!items.detect do |item|
63
- (item.is_a?(Hash) ? item[:name] : item.to_s) == data_adapter.primary_key
73
+ (item.is_a?(Hash) ? item[:name] : item.to_s) == model_adapter.primary_key
64
74
  end
65
75
  end
66
76
 
@@ -4,7 +4,7 @@ module Netzke
4
4
  # attribute, and assign the search operator. The grid will be updated on changing those fields, to reflect the
5
5
  # query.
6
6
  #
7
- # See Grid::LiveSearch in spec/rails_app for a usage example.
7
+ # See `Grid::LiveSearch` in spec/rails_app for a usage example.
8
8
  #
9
9
  # == Configuration:
10
10
  #
@@ -23,9 +23,6 @@ module Netzke
23
23
  # Trying to search on a *virtual* column that is *not shown* in the grid will break. A fix would require refactoring
24
24
  # of +Grid::Columns+.
25
25
  class GridLiveSearch < Netzke::Plugin
26
- js_configure do |c|
27
- c.mixin
28
- end
29
26
  end
30
27
  end
31
28
  end
@@ -1,15 +1,17 @@
1
1
  {
2
- init: function(){
3
- this.callParent(arguments);
4
-
5
- this.searchControls = this.cmp.query('field[attr]');
2
+ init: function(cmp){
3
+ this.searchControls = cmp.query('field[attr]');
6
4
 
7
5
  Ext.each(this.searchControls, function(control){
6
+ var delay = 0;
7
+
8
+ if (control.xtype == 'textfield' || control.xtype == 'numberfield') delay = this.delay || 500;
9
+
8
10
  control.on('change', Ext.Function.createBuffered(function(self){
9
11
  var query = this.buildQuery();
10
- this.cmp.getStore().getProxy().extraParams.query = [query];
11
- this.cmp.getStore().reload();
12
- }, this.delay || 500, this));
12
+ cmp.getStore().getProxy().extraParams.query = [query];
13
+ cmp.netzkeReloadStore();
14
+ }, delay, this));
13
15
  }, this);
14
16
  },
15
17
 
@@ -11,16 +11,16 @@ module Netzke
11
11
  end
12
12
 
13
13
  # Added endpoints
14
- endpoint :region_resized do |params, this|
14
+ endpoint :region_resized do |params|
15
15
  state[:"#{params[:item]}_width"] = params[:width].to_i if params[:width]
16
16
  state[:"#{params[:item]}_height"] = params[:height].to_i if params[:height]
17
17
  end
18
18
 
19
- endpoint :region_collapsed do |params, this|
19
+ endpoint :region_collapsed do |params|
20
20
  state[:"#{params[:item]}_collapsed"] = true
21
21
  end
22
22
 
23
- endpoint :region_expanded do |params, this|
23
+ endpoint :region_expanded do |params|
24
24
  state[:"#{params[:item]}_collapsed"] = false
25
25
  end
26
26
  end
@@ -2,12 +2,10 @@ module Netzke
2
2
  module Basepack
3
3
  module ItemPersistence
4
4
  class EventsPlugin < Netzke::Plugin
5
- js_configure do |c|
5
+ client_class do |c|
6
6
  c.init = <<-JS
7
- function(){
8
- this.callParent(arguments);
9
-
10
- this.cmp.on('afterlayout', function(){
7
+ function(cmp){
8
+ cmp.on('afterlayout', function(){
11
9
 
12
10
  // scope of the parent panel
13
11
  this.items.each(function(item, index, length){
@@ -18,26 +16,26 @@ module Netzke
18
16
 
19
17
  if ((panel.region == 'west' || panel.region == 'east') && panel.oldSize.width != w) {
20
18
  params.width = w;
21
- this.regionResized(params);
19
+ this.server.regionResized(params);
22
20
  } else if (panel.region == 'north' || panel.region == 'south' && panel.oldSize.height != h){
23
21
  params.height = h;
24
- this.regionResized(params);
22
+ this.server.regionResized(params);
25
23
  }
26
24
 
27
25
  panel.oldSize = panel.getSize();
28
26
  }, this);
29
27
 
30
28
  item.on('collapse', function(panel){
31
- this.regionCollapsed({item: panel.itemId});
29
+ this.server.regionCollapsed({item: panel.itemId});
32
30
  }, this);
33
31
 
34
32
  item.on('expand', function(panel){
35
- this.regionExpanded({item: panel.itemId});
33
+ this.server.regionExpanded({item: panel.itemId});
36
34
  }, this);
37
35
 
38
36
  }, this);
39
37
 
40
- }, this.cmp, {single: true});
38
+ }, cmp, {single: true});
41
39
  }
42
40
  JS
43
41
  end
@@ -3,7 +3,7 @@ module Netzke
3
3
  # A Form with paging toolbar. Allows browsing and editing records one-by-one.
4
4
  #
5
5
  # == Configuration
6
- # Besides +Netzke::Basepack::Form+ config options, accepts:
6
+ # Besides +Netzke::Form::Base+ config options, accepts:
7
7
  # * +scope+ - specifies how the data should be filtered.
8
8
  # When it's a symbol, it's used as a scope name.
9
9
  # When it's a string, it's a SQL statement (passed directly to +ActiveRecord::Relation#where+).
@@ -19,25 +19,21 @@ module Netzke
19
19
  # == ToDo
20
20
  # * Update the number of records after form submit
21
21
  class PagingForm < Form
22
- js_configure do |c|
23
- c.mixin
24
- end
25
-
26
22
  # override
27
23
  def record
28
- @record ||= data_adapter.first
24
+ @record ||= model_adapter.first
29
25
  end
30
26
 
31
- def js_configure(c)
27
+ def configure_client(c)
32
28
  super
33
29
  # Pass total records amount and the first record to the JS constructor
34
30
  c.total_records = total_records
35
31
  end
36
32
 
37
- endpoint :get_data do |params, this|
38
- @record = data_adapter.get_records(params).first
33
+ endpoint :get_data do |params|
34
+ @record = model_adapter.get_records(params).first
39
35
  record_hash = @record && js_record_data
40
- this.merge!(:records => record_hash && [record_hash] || [], :total => total_records(params))
36
+ client.merge!(:records => record_hash && [record_hash] || [], :total => total_records(params))
41
37
  end
42
38
 
43
39
  action :search do |a|
@@ -59,7 +55,7 @@ module Netzke
59
55
  protected
60
56
 
61
57
  def total_records(params = {})
62
- @total_records ||= data_adapter.count_records(params, [])
58
+ @total_records ||= model_adapter.count_records(params, [])
63
59
  end
64
60
  end
65
61
  end
@@ -1,5 +1,5 @@
1
1
  {
2
- onSearch: function(el) {
2
+ netzkeOnSearch: function(el) {
3
3
  if (this.searchWindow) {
4
4
  this.searchWindow.show();
5
5
  } else {
@@ -44,10 +44,10 @@
44
44
  // because we need to build the store for PagingToolbar that cannot be created after superclass.initComponent
45
45
  // Otherwise, the things would be simpler, because this.getForm().items would already have all the fields in one place for us
46
46
  this.fieldNames = [];
47
- this.extractFields(this.items);
47
+ this.netzkeExtractFields(this.items);
48
48
 
49
49
  var store = new Ext.data.DirectStore({
50
- directFn: Netzke.providers[this.id].getData,
50
+ directFn: this.netzkeDirect.getData,
51
51
  root: 'records',
52
52
  fields: this.fieldNames.concat('meta'),
53
53
  pageSize: 1
@@ -57,7 +57,7 @@
57
57
  if (r.length == 0) {
58
58
  this.getForm().reset();
59
59
  } else {
60
- this.setFormValues(r[0].data);
60
+ this.netzkeSetFormValues(r[0].data);
61
61
  }
62
62
  }, this);
63
63
 
@@ -3,20 +3,18 @@ module Netzke
3
3
  # Search query builder used in Grid's advanced search.
4
4
  # Based on Ext.tab.Panel. A new tab is created for each OR condition. Each tab contains an instance of SearchPanel which is used to build AND conditions.
5
5
  class QueryBuilder < Netzke::Base
6
- js_configure do |c|
6
+ client_class do |c|
7
7
  c.extend = "Ext.tab.Panel"
8
8
  c.active_tab = 0
9
9
  c.translate :overwrite_confirm, :overwrite_confirm_title, :delete_confirm, :delete_confirm_title
10
- c.mixin
11
10
  end
12
11
 
13
- component :search_panel do |c|
12
+ component :search_panel, eager_load: true do |c|
14
13
  c.klass = SearchPanel
15
14
  c.model = config[:model]
16
15
  c.fields = config[:fields]
17
16
  c.preset_query = config[:query]
18
17
  c.auto_scroll = config[:auto_scroll]
19
- c.eager_loading = true
20
18
  end
21
19
 
22
20
  action :clear_all do |a|
@@ -39,13 +37,17 @@ module Netzke
39
37
  a.icon = :accept
40
38
  end
41
39
 
42
- def js_configure(c)
40
+ def configure(c)
41
+ super
42
+ c.bbar = (c.bbar || []) + [:clear_all, :reset, "->", I18n.t('netzke.basepack.query_builder.presets'), :preset_selector, :save_preset, :delete_preset ]
43
+ end
44
+
45
+ def configure_client(c)
43
46
  super
44
47
  c.preset_store = state[:presets].blank? ? [[[], ""]] : state[:presets].map{ |s| [s["query"], s["name"]] }
45
- c.bbar = (config[:bbar] || []) + [:clear_all, :reset, "->", I18n.t('netzke.basepack.query_builder.presets'), :preset_selector, :save_preset, :delete_preset ]
46
48
  end
47
49
 
48
- endpoint :save_preset do |params, this|
50
+ endpoint :save_preset do |params|
49
51
  saved_searches = state[:presets] || []
50
52
  existing = saved_searches.detect{ |s| s["name"] == params[:name] }
51
53
  query = ActiveSupport::JSON.decode(params[:query])
@@ -55,14 +57,14 @@ module Netzke
55
57
  saved_searches << {"name" => params[:name], "query" => query}
56
58
  end
57
59
  state[:presets] = saved_searches
58
- this.netzke_feedback(I18n.t('netzke.basepack.query_builder.preset_saved'))
60
+ client.netzke_notify(I18n.t('netzke.basepack.query_builder.preset_saved'))
59
61
  end
60
62
 
61
- endpoint :delete_preset do |params, this|
63
+ endpoint :delete_preset do |params|
62
64
  saved_searches = state[:presets]
63
65
  saved_searches.delete_if{ |s| s["name"] == params[:name] }
64
66
  state[:presets] = saved_searches
65
- this.netzke_feedback(I18n.t('netzke.basepack.query_builder.preset_deleted'))
67
+ client.netzke_notify(I18n.t('netzke.basepack.query_builder.preset_deleted'))
66
68
  end
67
69
  end
68
70
  end