netzke-basepack 0.5.5.1 → 0.5.6

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 (41) hide show
  1. data/CHANGELOG.rdoc +16 -1
  2. data/README.rdoc +31 -56
  3. data/Rakefile +2 -2
  4. data/TODO.rdoc +3 -0
  5. data/javascripts/basepack.js +70 -30
  6. data/lib/app/models/netzke_auto_column.rb +1 -53
  7. data/lib/app/models/netzke_auto_field.rb +4 -0
  8. data/lib/app/models/netzke_auto_table.rb +61 -0
  9. data/lib/netzke-basepack.rb +13 -7
  10. data/lib/netzke/active_record/basepack.rb +28 -0
  11. data/lib/netzke/active_record/data_accessor.rb +2 -0
  12. data/lib/netzke/basic_app.rb +3 -4
  13. data/lib/netzke/{basic_app_extras → basic_app}/statusbar_ext.js +0 -0
  14. data/lib/netzke/data_accessor.rb +2 -0
  15. data/lib/netzke/ext.rb +1 -1
  16. data/lib/netzke/fields_configurator.rb +22 -6
  17. data/lib/netzke/form_panel.rb +20 -11
  18. data/lib/netzke/form_panel/form_panel_api.rb +78 -0
  19. data/lib/netzke/form_panel/form_panel_js.rb +143 -0
  20. data/lib/netzke/{form_panel_extras → form_panel}/javascripts/netzkefileupload.js +0 -0
  21. data/lib/netzke/{form_panel_extras → form_panel}/javascripts/xcheckbox.js +0 -0
  22. data/lib/netzke/grid_panel.rb +33 -24
  23. data/lib/netzke/grid_panel/grid_panel_api.rb +358 -0
  24. data/lib/netzke/grid_panel/grid_panel_js.rb +747 -0
  25. data/lib/netzke/{grid_panel_extras → grid_panel}/javascripts/filters.js +0 -0
  26. data/lib/netzke/{grid_panel_extras → grid_panel}/javascripts/rows-dd.js +0 -0
  27. data/lib/netzke/grid_panel/record_form_window.rb +44 -0
  28. data/lib/netzke/panel.rb +1 -3
  29. data/lib/netzke/property_editor.rb +2 -0
  30. data/lib/netzke/{property_editor_extras → property_editor}/helper_model.rb +2 -2
  31. data/lib/netzke/search_panel.rb +3 -3
  32. data/lib/netzke/window.rb +9 -3
  33. data/test/unit/grid_panel_test.rb +0 -2
  34. data/test/unit/helper_model_test.rb +2 -2
  35. metadata +16 -15
  36. data/lib/netzke/field_model.rb +0 -131
  37. data/lib/netzke/form_panel_api.rb +0 -78
  38. data/lib/netzke/form_panel_js.rb +0 -141
  39. data/lib/netzke/grid_panel_api.rb +0 -356
  40. data/lib/netzke/grid_panel_extras/record_form_window.rb +0 -46
  41. data/lib/netzke/grid_panel_js.rb +0 -725
@@ -0,0 +1,44 @@
1
+ module Netzke
2
+ class GridPanel < Base
3
+ class RecordFormWindow < Window
4
+ def initial_config
5
+ super.deep_merge({
6
+ :ext_config => {
7
+ :modal => true,
8
+ :width => "60%",
9
+ :height => "90%",
10
+ :fbar => [:ok, :cancel]
11
+ }
12
+ })
13
+ end
14
+
15
+ def self.js_extend_properties
16
+ {
17
+ :button_align => "right",
18
+
19
+ :init_component => <<-END_OF_JAVASCRIPT.l,
20
+ function(){
21
+ #{js_full_class_name}.superclass.initComponent.call(this);
22
+ this.getWidget().on("submitsuccess", function(){this.closeRes = "ok"; this.close();}, this);
23
+ }
24
+ END_OF_JAVASCRIPT
25
+
26
+ :on_ok => <<-END_OF_JAVASCRIPT.l,
27
+ function(){
28
+ this.getWidget().onApply();
29
+ // this.closeRes = "ok",
30
+ // this.close();
31
+ }
32
+ END_OF_JAVASCRIPT
33
+
34
+ :on_cancel => <<-END_OF_JAVASCRIPT.l,
35
+ function(){
36
+ this.close();
37
+ }
38
+ END_OF_JAVASCRIPT
39
+
40
+ }
41
+ end
42
+ end
43
+ end
44
+ end
data/lib/netzke/panel.rb CHANGED
@@ -1,5 +1,4 @@
1
- module Netzke
2
- class Panel < Base
1
+ class Netzke::Panel < Netzke::Base
3
2
  def self.js_extend_properties
4
3
  {
5
4
  :update_body_html => <<-END_OF_JAVASCRIPT.l,
@@ -9,5 +8,4 @@ module Netzke
9
8
  END_OF_JAVASCRIPT
10
9
  }
11
10
  end
12
- end
13
11
  end
@@ -1,3 +1,5 @@
1
+ require "netzke/property_editor/helper_model"
2
+
1
3
  module Netzke
2
4
  class PropertyEditor < FormPanel
3
5
 
@@ -1,12 +1,12 @@
1
1
  module Netzke
2
- module PropertyEditorExtras
2
+ class PropertyEditor < FormPanel
3
3
  class HelperModel
4
4
  def self.widget=(w)
5
5
  @@widget = w
6
6
  end
7
7
 
8
8
  def self.widget
9
- @@widget ||= raise RuntimeError, "No widget specified for PropertyEditorExtras::HelperModel"
9
+ @@widget ||= raise RuntimeError, "No widget specified for PropertyEditor::HelperModel"
10
10
  end
11
11
 
12
12
  def self.reflect_on_all_associations
@@ -4,8 +4,8 @@ module Netzke
4
4
  # FormPanel-based widget that allows create configurable searchlogic-compatible searches.
5
5
  # Pretty much work in progress.
6
6
  class SearchPanel < FormPanel
7
- # Something like [:equals, :greater_than_or_equal_to, :does_not_equal, :less_than, :less_than_or_equal_to, :greater_than, :ends_with, :like, :begins_with, :empty, :null]
8
- CONDITIONS = [:COMPARISON_CONDITIONS, :WILDCARD_CONDITIONS, :BOOLEAN_CONDITIONS].inject([]){|r, c| r + Searchlogic::NamedScopes::Conditions.const_get(c).keys}
7
+
8
+ CONDITIONS = [:COMPARISON_CONDITIONS, :WILDCARD_CONDITIONS, :BOOLEAN_CONDITIONS].inject([]){|r, c| r + Searchlogic::NamedScopes::Conditions.const_get(c).keys} # Something like [:equals, :greater_than_or_equal_to, :does_not_equal, :less_than, :less_than_or_equal_to, :greater_than, :ends_with, :like, :begins_with, :empty, :null]
9
9
 
10
10
  def default_config
11
11
  super.merge({
@@ -21,7 +21,7 @@ module Netzke
21
21
  norm_column.merge!({
22
22
  :condition => "equals"
23
23
  })
24
- norm_column.merge!(:hidden => true) if norm_column[:name].to_s.index("__")
24
+ norm_column.merge!(:hidden => true) if norm_column[:name].to_s.index("__") || norm_column[:xtype] == :xcheckbox
25
25
 
26
26
  norm_column
27
27
  end
data/lib/netzke/window.rb CHANGED
@@ -18,13 +18,16 @@ module Netzke
18
18
 
19
19
  # Set the passed item as the only aggregatee
20
20
  def initial_aggregatees
21
- {:item => config[:item]}
21
+ res = {}
22
+ res.merge!(:item => config[:item]) if config[:item]
23
+ res
22
24
  end
23
25
 
24
26
  # Extends the JavaScript class
25
27
  def self.js_extend_properties
26
28
  {
27
29
  :layout => "fit",
30
+
28
31
  :init_component => <<-END_OF_JAVASCRIPT.l,
29
32
  function(){
30
33
  // Width and height may be specified as percentage of available space, e.g. "60%".
@@ -41,9 +44,12 @@ module Netzke
41
44
  // Set the move and resize events after window is shown, so that they don't fire at initial rendering
42
45
  this.on("show", function(){
43
46
  this.on("move", this.onMove, this);
44
- this.on("resize", this.onSelfResize, this, {buffer: 50}); // Work around firing "resize" event twice (currently a bug in ExtJS)
47
+ this.on("resize", this.onSelfResize, this); // Work around firing "resize" event twice (currently a bug in ExtJS)
45
48
  }, this);
46
- this.instantiateChild(this.itemConfig);
49
+
50
+ if (this.itemConfig){
51
+ this.instantiateChild(this.itemConfig);
52
+ }
47
53
  }
48
54
  END_OF_JAVASCRIPT
49
55
 
@@ -1,8 +1,6 @@
1
1
  require 'test_helper'
2
2
  require 'netzke-core'
3
3
 
4
- module Netzke::GridPanelExtras; end
5
-
6
4
  require 'netzke/plugins/configuration_tool'
7
5
  require 'netzke/accordion_panel'
8
6
 
@@ -12,8 +12,8 @@ class HelperModelTest < ActiveSupport::TestCase
12
12
  },
13
13
  })
14
14
  form = Netzke::FormPanel.new(:data_class_name => "Book")
15
- Netzke::PropertyEditorExtras::HelperModel.widget = form
16
- helper_model = Netzke::PropertyEditorExtras::HelperModel.new
15
+ Netzke::PropertyEditor::HelperModel.widget = form
16
+ helper_model = Netzke::PropertyEditor::HelperModel.new
17
17
 
18
18
  assert(true, helper_model.ext_config__config_tool)
19
19
 
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: netzke-basepack
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.5.5.1
4
+ version: 0.5.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sergei Kozlov
@@ -9,7 +9,7 @@ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
11
 
12
- date: 2009-11-09 00:00:00 -06:00
12
+ date: 2010-01-21 00:00:00 -03:00
13
13
  default_executable:
14
14
  dependencies:
15
15
  - !ruby/object:Gem::Dependency
@@ -20,7 +20,7 @@ dependencies:
20
20
  requirements:
21
21
  - - ">="
22
22
  - !ruby/object:Gem::Version
23
- version: 0.4.5.2
23
+ version: 0.5.0
24
24
  version:
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: searchlogic
@@ -64,34 +64,35 @@ files:
64
64
  - install.rb
65
65
  - javascripts/basepack.js
66
66
  - lib/app/models/netzke_auto_column.rb
67
+ - lib/app/models/netzke_auto_field.rb
68
+ - lib/app/models/netzke_auto_table.rb
67
69
  - lib/netzke-basepack.rb
68
70
  - lib/netzke/accordion_panel.rb
69
71
  - lib/netzke/active_record/basepack.rb
70
72
  - lib/netzke/active_record/data_accessor.rb
71
73
  - lib/netzke/basic_app.rb
72
- - lib/netzke/basic_app_extras/statusbar_ext.js
74
+ - lib/netzke/basic_app/statusbar_ext.js
73
75
  - lib/netzke/border_layout_panel.rb
74
76
  - lib/netzke/configuration_panel.rb
75
77
  - lib/netzke/data_accessor.rb
76
78
  - lib/netzke/ext.rb
77
- - lib/netzke/field_model.rb
78
79
  - lib/netzke/fields_configurator.rb
79
80
  - lib/netzke/form_panel.rb
80
- - lib/netzke/form_panel_api.rb
81
- - lib/netzke/form_panel_extras/javascripts/netzkefileupload.js
82
- - lib/netzke/form_panel_extras/javascripts/xcheckbox.js
83
- - lib/netzke/form_panel_js.rb
81
+ - lib/netzke/form_panel/form_panel_api.rb
82
+ - lib/netzke/form_panel/form_panel_js.rb
83
+ - lib/netzke/form_panel/javascripts/netzkefileupload.js
84
+ - lib/netzke/form_panel/javascripts/xcheckbox.js
84
85
  - lib/netzke/grid_panel.rb
85
- - lib/netzke/grid_panel_api.rb
86
- - lib/netzke/grid_panel_extras/javascripts/filters.js
87
- - lib/netzke/grid_panel_extras/javascripts/rows-dd.js
88
- - lib/netzke/grid_panel_extras/record_form_window.rb
89
- - lib/netzke/grid_panel_js.rb
86
+ - lib/netzke/grid_panel/grid_panel_api.rb
87
+ - lib/netzke/grid_panel/grid_panel_js.rb
88
+ - lib/netzke/grid_panel/javascripts/filters.js
89
+ - lib/netzke/grid_panel/javascripts/rows-dd.js
90
+ - lib/netzke/grid_panel/record_form_window.rb
90
91
  - lib/netzke/masquerade_selector.rb
91
92
  - lib/netzke/panel.rb
92
93
  - lib/netzke/plugins/configuration_tool.rb
93
94
  - lib/netzke/property_editor.rb
94
- - lib/netzke/property_editor_extras/helper_model.rb
95
+ - lib/netzke/property_editor/helper_model.rb
95
96
  - lib/netzke/search_panel.rb
96
97
  - lib/netzke/tab_panel.rb
97
98
  - lib/netzke/table_editor.rb
@@ -1,131 +0,0 @@
1
- module Netzke
2
- class FieldModel < Hash
3
- include BasepackActiveRecord
4
-
5
- def self.new_from_hash(hsh)
6
- self.new.replace(hsh)
7
- end
8
-
9
- # def self.json=(str)
10
- # @@data = ActiveSupport::JSON.decode(str)
11
- # process_data
12
- # end
13
-
14
- def self.widget_name=(w)
15
- @@widget_name = w
16
- end
17
-
18
- def self.data_storage=(ds)
19
- @@storage = ds
20
- process_data
21
- end
22
-
23
- # def self.data=(data)
24
- # @@raw_data = data
25
- # process_data
26
- # end
27
-
28
- def self.column_names
29
- @@data.inject([]){|res, record| (res + record.keys).uniq}
30
- end
31
-
32
- def self.columns
33
- column_names
34
- end
35
-
36
- def self.all(params={})
37
- @@data
38
- end
39
-
40
- def self.first
41
- @@data[0]
42
- end
43
-
44
- def self.find(id)
45
- @@data[id-1]
46
- end
47
-
48
- def self.count(params = {})
49
- @@data.size
50
- end
51
-
52
- def self.columns_hash
53
- @@columns_hash
54
- end
55
-
56
- def self.reflect_on_all_associations
57
- []
58
- end
59
-
60
- # instance methods
61
- def id
62
- self[:id] || self["id"]
63
- end
64
-
65
- def errors
66
- []
67
- end
68
-
69
- def save
70
- true
71
- end
72
-
73
- private
74
- def self.process_data
75
- @@columns_hash = {}
76
-
77
- @@data = []
78
-
79
- # convert array of hashes into array of FieldModel instances
80
- @@storage.each do |hsh|
81
- @@data << new_from_hash(hsh)
82
- end
83
-
84
- @@data.each do |record|
85
- record.keys.each do |k|
86
-
87
- if @@columns_hash[k.to_s].nil?
88
-
89
- # calculate column type
90
- puts record[k].class.to_s
91
- column_type = case record[k].class.to_s
92
- when "TrueClass"
93
- :boolean
94
- when "FalseClass"
95
- :boolean
96
- when "String"
97
- :string
98
- when "Fixnum"
99
- :integer
100
- else
101
- :string
102
- end
103
-
104
- column = {:type => column_type}
105
-
106
- # workaround for the "type" method
107
- class << column
108
- def type
109
- self[:type]
110
- end
111
- end
112
-
113
- @@columns_hash[k.to_s] = column
114
- end
115
- end
116
- end
117
- end
118
-
119
- # # Testing
120
- # @@data = [
121
- # self.new_from_hash({"id" => 1, "name" => "col1", "column_type" => "text", "read_only" => true}),
122
- # self.new_from_hash({"id" => 2, "name" => "col2", "column_type" => "string", "read_only" => false})
123
- # ]
124
- #
125
- # process_data
126
- # end testing
127
-
128
- end
129
-
130
-
131
- end
@@ -1,78 +0,0 @@
1
- module Netzke
2
- module FormPanelApi
3
- # API handling form submission
4
- def netzke_submit(params)
5
- success = create_or_update_record(params)
6
-
7
- if success
8
- {:set_form_values => array_of_values, :set_result => "ok"}
9
- else
10
- # flash eventual errors
11
- @record.errors.each_full do |msg|
12
- flash :error => msg
13
- end
14
- {:feedback => @flash}
15
- end
16
- end
17
-
18
- # Creates/updates a record from hash
19
- def create_or_update_record(params)
20
- hsh = ActiveSupport::JSON.decode(params[:data])
21
- hsh.merge!(config[:strong_default_attrs]) if config[:strong_default_attrs]
22
- klass = config[:data_class_name].constantize
23
- @record ||= klass.find_by_id(hsh.delete("id")) # only pick up the record specified in the params if it was not provided in the configuration
24
- success = true
25
-
26
- @record = klass.new if @record.nil?
27
-
28
- hsh.each_pair do |k,v|
29
- begin
30
- @record.send("#{k}=",v)
31
- rescue StandardError => exc
32
- logger.debug "!!! FormPanelApi#create_or_update_record exception: #{exc.inspect}\n"
33
- flash :error => exc.message
34
- success = false
35
- break
36
- end
37
- end
38
-
39
- # did we have complete success?
40
- success && @record.save
41
- end
42
-
43
- # API handling form load
44
- # def load(params)
45
- # klass = config[:data_class_name].constantize
46
- # case params[:neighbour]
47
- # when "previous" then @record = klass.previous(params[:id])
48
- # when "next" then @record = klass.next(params[:id])
49
- # else @record = klass.find(params[:id])
50
- # end
51
- # {:data => [array_of_values]}
52
- # end
53
-
54
- def netzke_load(params)
55
- @record = data_class && data_class.find_by_id(params[:id])
56
- {:set_form_values => array_of_values}
57
- end
58
-
59
- # API that returns options for a combobox
60
- def get_combobox_options(params)
61
- column = params[:column]
62
- query = params[:query]
63
-
64
- {:data => config[:data_class_name].constantize.options_for(column, query).map{|s| [s]}}
65
- end
66
-
67
- def configuration_panel__fields__get_combobox_options(params)
68
- query = params[:query]
69
- {:data => (predefined_columns.map{ |c| c[:name].to_s }).grep(/^#{query}/).map{ |n| [n] }}.to_nifty_json
70
- end
71
-
72
- # Returns array of form values according to the configured columns
73
- def array_of_values
74
- @record && @record.to_array(columns, self)
75
- end
76
-
77
- end
78
- end