extjsml 0.0.2

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 (59) hide show
  1. checksums.yaml +7 -0
  2. data/bin/extjsmlc +70 -0
  3. data/lib/extclasses/actioncolumn.rb +11 -0
  4. data/lib/extclasses/booleancolumn.rb +34 -0
  5. data/lib/extclasses/button.rb +11 -0
  6. data/lib/extclasses/checkbox.rb +30 -0
  7. data/lib/extclasses/checkboxgroup.rb +14 -0
  8. data/lib/extclasses/checkcolumn.rb +16 -0
  9. data/lib/extclasses/combo.rb +56 -0
  10. data/lib/extclasses/compositefield.rb +11 -0
  11. data/lib/extclasses/container.rb +12 -0
  12. data/lib/extclasses/datecolumn.rb +21 -0
  13. data/lib/extclasses/datefield.rb +16 -0
  14. data/lib/extclasses/editorgrid.rb +97 -0
  15. data/lib/extclasses/fieldcontainer.rb +23 -0
  16. data/lib/extclasses/fieldset.rb +61 -0
  17. data/lib/extclasses/filefield.rb +18 -0
  18. data/lib/extclasses/form.rb +33 -0
  19. data/lib/extclasses/grid.rb +141 -0
  20. data/lib/extclasses/gridcolumn.rb +19 -0
  21. data/lib/extclasses/hidden.rb +7 -0
  22. data/lib/extclasses/htmleditor.rb +15 -0
  23. data/lib/extclasses/label.rb +10 -0
  24. data/lib/extclasses/numbercolumn.rb +30 -0
  25. data/lib/extclasses/numberfield.rb +19 -0
  26. data/lib/extclasses/paging.rb +12 -0
  27. data/lib/extclasses/panel.rb +29 -0
  28. data/lib/extclasses/passwordfield.rb +27 -0
  29. data/lib/extclasses/pivotgrid.rb +91 -0
  30. data/lib/extclasses/radio.rb +25 -0
  31. data/lib/extclasses/radiogroup.rb +14 -0
  32. data/lib/extclasses/runningcolumn.rb +9 -0
  33. data/lib/extclasses/tabpanel.rb +17 -0
  34. data/lib/extclasses/tbfill.rb +5 -0
  35. data/lib/extclasses/tbseparator.rb +5 -0
  36. data/lib/extclasses/templatecolumn.rb +11 -0
  37. data/lib/extclasses/textarea.rb +12 -0
  38. data/lib/extclasses/textfield.rb +27 -0
  39. data/lib/extclasses/timefield.rb +16 -0
  40. data/lib/extclasses/toolbar.rb +7 -0
  41. data/lib/extclasses/viewport.rb +8 -0
  42. data/lib/extclasses/window.rb +34 -0
  43. data/lib/extjsml/basenode.rb +347 -0
  44. data/lib/extjsml/ext_util.rb +232 -0
  45. data/lib/extjsml/generator.rb +578 -0
  46. data/lib/extjsml/parser.rb +35 -0
  47. data/lib/extmodules/form_field.rb +32 -0
  48. data/lib/extmodules/magic.rb +196 -0
  49. data/lib/extplugins/currency.rb +25 -0
  50. data/lib/extplugins/currencycolumn.rb +18 -0
  51. data/lib/extplugins/numeric.rb +32 -0
  52. data/lib/extplugins/pricefield.rb +36 -0
  53. data/lib/extuxs/uxaccount.rb +8 -0
  54. data/lib/extuxs/uxbroker.rb +7 -0
  55. data/lib/extuxs/uxchq.rb +8 -0
  56. data/lib/extuxs/uxreceiverinfo.rb +8 -0
  57. data/lib/extuxs/uxsettlement.rb +8 -0
  58. data/lib/test/test_parser.rb +97 -0
  59. metadata +115 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 3b82f07f5506bdc027fac874eb16541450f4add0
4
+ data.tar.gz: edc2296c760b7a279afb938d96095b196b011b77
5
+ SHA512:
6
+ metadata.gz: d27fe6e45284898f507d7d9f19937d9bf524c6b52fd7df6d1a015ca470791179fb242a987f81db8e5dfe856c4c0662bf176c26d11cabc4b8d0b051e2092fe333
7
+ data.tar.gz: 99d606556da0c2d0ea51a69fd28afe1a5acebe86e0e843123a64067e86bac18ba7dd088166397df415f288d62bb51b23e0db0c67d34909866cac5a58f3c4547f
data/bin/extjsmlc ADDED
@@ -0,0 +1,70 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'extjsml/generator'
4
+
5
+ def options_error
6
+ puts "extjsmlc: no input file ..."
7
+ end
8
+
9
+ commands = ARGV
10
+ f = ARGV[0]
11
+ with_requirejs = commands.any?{ |a| a == "-with-requirejs" }
12
+ gen_config = {}
13
+ jsclass = commands.grep(/\-\-class/)
14
+
15
+ if jsclass.count == 1
16
+ jsclass = jsclass.first.match(/\-\-class=(.*)/)[1]
17
+ else
18
+ jsclass = nil
19
+ end
20
+
21
+ noid = commands.grep(/\-\-noid/).count > 0
22
+
23
+ if noid
24
+ gen_config.merge! :noid => true
25
+ end
26
+
27
+ if with_requirejs
28
+ gen_config.merge! :with_requirejs => true
29
+ end
30
+
31
+ if f.nil?
32
+ options_error
33
+ exit(1)
34
+ end
35
+
36
+ if f == "."
37
+ # "gen all yaml in dir"
38
+ files = Dir.open(".").grep(/yaml$/)
39
+ else
40
+ files = [f]
41
+ end
42
+
43
+ # loop generate by given files
44
+ files.each do |file|
45
+ dirname = File.dirname(File.absolute_path(file))
46
+ gen_config.merge!( :filedir => dirname )
47
+
48
+ js_class = file.split("/").last[0..-6] # strip .yaml
49
+ yaml_str = File.open(file,'rb')
50
+
51
+ js_class = jsclass unless jsclass.nil?
52
+ js_class = js_class.capitalize
53
+
54
+ contents = compile_jext(yaml_str, js_class, gen_config)
55
+
56
+ # create js ui file
57
+ File.open("#{dirname}/#{js_class}.ui.js","w") do |f|
58
+ f.write(contents[:ui_class_content])
59
+ end
60
+ puts "#{js_class}.ui.js created"
61
+
62
+ # gen js event script
63
+ unless File.exist?("#{dirname}/#{js_class}.js")
64
+ File.open("#{js_class}.js","w") do |f|
65
+ f.write(contents[:event_class_content])
66
+ end
67
+ puts "#{js_class}.js created"
68
+ end
69
+
70
+ end
@@ -0,0 +1,11 @@
1
+ class ExtActioncolumn < ExtNode
2
+ include Magic::Column
3
+ @@ALIAS_CONFIG = {
4
+ :text => :header
5
+ }
6
+ def initialize(config, parent)
7
+ @default_config = {}
8
+
9
+ super "actioncolumn", config, parent
10
+ end
11
+ end
@@ -0,0 +1,34 @@
1
+ class ExtBooleancolumn < ExtNode
2
+ include Magic::Column
3
+ @@ALIAS_CONFIG = {
4
+ :text => :header,
5
+ :name => :dataIndex
6
+ }
7
+
8
+ def initialize(config, parent)
9
+ @default_config = {
10
+ trueText: "yes",
11
+ falseText: "no",
12
+ align: "center",
13
+ width: 45
14
+ }
15
+
16
+ if parent.xtype == "editorgrid"
17
+ super "checkcolumn", config, parent
18
+ else
19
+ super "booleancolumn", config, parent
20
+ end
21
+ end
22
+
23
+ def to_extjs(at_deep = 0)
24
+ if parent.xtype == "editorgrid"
25
+ self.xtype = "checkcolumn"
26
+ else
27
+ self.xtype = "booleancolumn"
28
+ end
29
+ # if self.child_of? "editorgrid"
30
+ # @config.merge! :editor => { :xtype => "checkbox", :boxLabel => "Check" }
31
+ # end
32
+ super at_deep
33
+ end
34
+ end
@@ -0,0 +1,11 @@
1
+ class ExtButton < ExtNode
2
+ include Magic::Text
3
+ include Magic::IconClass
4
+ def initialize(config, parent)
5
+ @default_config = {
6
+ text: "Ext Button",
7
+ }
8
+ super("button", config, parent)
9
+ end
10
+ end
11
+
@@ -0,0 +1,30 @@
1
+ class ExtCheckbox < ExtNode
2
+ include FormField
3
+
4
+ @@ALIAS_CONFIG = {
5
+ :text => :boxLabel,
6
+ :ltext => :fieldLabel,
7
+ :rtext => :boxLabel,
8
+ :default => :checked
9
+ }
10
+
11
+ def initialize(config, parent)
12
+ @default_config = {
13
+ :fieldLabel => "<b></b>",
14
+ :labelAlign => "right",
15
+ :boxLabelAlign => "after",
16
+ :hideLabel => false,
17
+ :cls => "checkbox"
18
+ }
19
+
20
+ super "checkboxfield", config, parent
21
+ end
22
+
23
+ def to_extjs(at_dept = 0)
24
+ if self.find_parent("checkboxgroup")
25
+ @config.merge! :hideLabel => true
26
+ end
27
+
28
+ super at_dept
29
+ end
30
+ end
@@ -0,0 +1,14 @@
1
+ class ExtCheckboxgroup < ExtNode
2
+ include FormField
3
+ @@ALIAS_CONFIG = {
4
+ :text => :fieldLabel
5
+ }
6
+
7
+ def initialize(config, parent)
8
+ @default_config = {
9
+ labelAlign: "right"
10
+ }
11
+
12
+ super "checkboxgroup", config, parent
13
+ end
14
+ end
@@ -0,0 +1,16 @@
1
+ class ExtCheckcolumn < ExtNode
2
+ include Magic::Column
3
+
4
+ @@ALIAS_CONFIG = {
5
+ :text => :header,
6
+ :name => :dataIndex
7
+ }
8
+
9
+ def initialize(config, parent)
10
+ @default_config = {
11
+ :align => "right",
12
+ :sortable => true
13
+ }
14
+ super "checkcolumn", config, parent
15
+ end
16
+ end
@@ -0,0 +1,56 @@
1
+ class ExtCombo < ExtNode
2
+ include FormField
3
+ include Magic::Store
4
+ include Magic::EmptyText
5
+
6
+ # TODO
7
+ @@XTYPE = "combo"
8
+
9
+ @@ALIAS_CONFIG = {
10
+ :text => :fieldLabel,
11
+ :display => :displayField,
12
+ :value => :valueField,
13
+ :min => :minChars,
14
+ :default => :value
15
+ }
16
+
17
+ # TODO
18
+ @@DEFAULT_CONFIG = {
19
+
20
+ }
21
+
22
+ def initialize(config, parent)
23
+ # TODO dummy store
24
+ @default_config = {
25
+ listConfig: {},
26
+ labelAlign: "right",
27
+ store: [],
28
+ minChars: 2,
29
+ valueField: "key",
30
+ displayField: "pair",
31
+ cls: "combo",
32
+ lazyInit: false,
33
+ mode: "local",
34
+ # editable: false,
35
+ triggerAction: "all",
36
+ loadingText: "Loading ..."
37
+ }
38
+
39
+ # listConfig flatten
40
+ [ :listWidth, :listMinWidth,
41
+ :listMaxWidth, :listResizable,
42
+ :listShadow, :listMaxHeight,
43
+ :listCls, :listEmpty,
44
+ :listLoadingText ].each do |k|
45
+
46
+ if config[k]
47
+ list_config_key = k.to_s.gsub(/list/, '')
48
+ list_config_key = list_config_key[0].downcase + list_config_key[1..-1]
49
+ @default_config[:listConfig][list_config_key] = config[k]
50
+ config.delete k
51
+ end
52
+ end
53
+
54
+ super "combo", config, parent
55
+ end
56
+ end
@@ -0,0 +1,11 @@
1
+ # deprecate
2
+ class ExtCompositefield < ExtNode
3
+ include FormField
4
+ @@ALIAS_CONFIG = {
5
+ :text => :fieldLabel
6
+ }
7
+ def initialize(config, parent)
8
+ @default_config = { }
9
+ super "compositefield", config, parent
10
+ end
11
+ end
@@ -0,0 +1,12 @@
1
+ class ExtContainer < ExtNode
2
+ def initialize(config, parent)
3
+ @default_config = {
4
+ layout: 'auto',
5
+ # labelWidth: 100,
6
+ # autoHeight: true,
7
+ autoWidth: true
8
+ }
9
+
10
+ super("container", config, parent)
11
+ end
12
+ end
@@ -0,0 +1,21 @@
1
+ class ExtDatecolumn < ExtNode
2
+ include Magic::Column
3
+ @@ALIAS_CONFIG = {
4
+ :text => :header,
5
+ :name => :dataIndex
6
+ }
7
+ def initialize(config, parent)
8
+ @default_config = {
9
+ format: "d/m/Y"
10
+ }
11
+
12
+ super "datecolumn", config, parent
13
+ end
14
+
15
+ def to_extjs(at_deep = 0)
16
+ if self.child_of? "editorgrid"
17
+ @config.merge! :editor => { :xtype => "datefield", format: "d/m/Y" }
18
+ end
19
+ super at_deep
20
+ end
21
+ end
@@ -0,0 +1,16 @@
1
+ class ExtDatefield < ExtNode
2
+ include FormField
3
+
4
+ @@ALIAS_CONFIG = {
5
+ :text => :fieldLabel
6
+ }
7
+
8
+ def initialize(config, parent)
9
+ @default_config = {
10
+ labelAlign: "right",
11
+ format: "d/m/Y",
12
+ cls: "date"
13
+ }
14
+ super "datefield", config, parent
15
+ end
16
+ end
@@ -0,0 +1,97 @@
1
+ class ExtEditorgrid < ExtNode
2
+ include Magic::Store
3
+ include Magic::Title
4
+
5
+ @@ALIAS_CONFIG = {
6
+ :text => :title
7
+ }
8
+
9
+ def initialize(config, parent)
10
+ @default_config = {
11
+ title: 'My Grid',
12
+ frame: true,
13
+ width: "auto",
14
+ height: 200,
15
+ clicksToEdit: 2,
16
+ # enableHdMenu: false,
17
+ enableColumnMove: false,
18
+ columnLines: true,
19
+ # TODO dummy store
20
+ store: [],
21
+ # style: "{ height: 100%; }",
22
+ viewConfig: {
23
+ forceFit: true
24
+ },
25
+ columns: [
26
+ {
27
+ xtype: 'gridcolumn',
28
+ dataIndex: 'string',
29
+ header: 'String',
30
+ sortable: true,
31
+ width: 100,
32
+ editor: {
33
+ xtype: 'textfield'
34
+ }
35
+ },
36
+ {
37
+ xtype: 'numbercolumn',
38
+ align: 'right',
39
+ dataIndex: 'number',
40
+ header: 'Number',
41
+ sortable: true,
42
+ width: 100,
43
+ editor: {
44
+ xtype: 'numberfield'
45
+ }
46
+ },
47
+ {
48
+ xtype: 'datecolumn',
49
+ dataIndex: 'date',
50
+ header: 'Date',
51
+ sortable: true,
52
+ width: 100,
53
+ editor: {
54
+ xtype: 'datefield'
55
+ }
56
+ },
57
+ {
58
+ xtype: 'booleancolumn',
59
+ dataIndex: 'bool',
60
+ header: 'Boolean',
61
+ sortable: true,
62
+ width: 100,
63
+ editor: {
64
+ xtype: 'checkbox',
65
+ boxLabel: 'BoxLabel'
66
+ }
67
+ }
68
+ ]
69
+ }
70
+
71
+ super("editorgrid", config, parent)
72
+ end
73
+
74
+ def to_extjs(at_deep = 0)
75
+ # grid use child to another purpose, paging and toolbar columns
76
+
77
+ # columns
78
+ cols = []
79
+ self.childs.each do |c|
80
+ cols << c.to_extjs(at_deep) unless c.xtype.match(/column$/).nil?
81
+ end
82
+ @config.merge! :columns => cols unless cols.nil?
83
+
84
+ toolbar = self.find("toolbar")
85
+ @config.merge! :tbar => toolbar.to_extjs(at_deep + 1) if toolbar
86
+
87
+ paging = self.find("paging")
88
+ if paging
89
+ paging.override_config :store => @config[:store]
90
+ @config.merge! :bbar => paging.to_extjs(at_deep + 1)
91
+ end
92
+
93
+ # grid not allow to have items
94
+ self.childs = []
95
+ super(at_deep)
96
+ end
97
+ end
@@ -0,0 +1,23 @@
1
+ class ExtFieldcontainer < ExtNode
2
+ include FormField
3
+
4
+ def initialize(config, parent)
5
+ @default_config = {
6
+ layout: 'hbox',
7
+ defaultType: 'textfield',
8
+ labelAlign: 'right'
9
+ }
10
+
11
+ super("fieldcontainer", config, parent)
12
+ end
13
+
14
+ def to_extjs(at_deep = 0)
15
+
16
+ # remove all childs' label
17
+ @childs.each do |c|
18
+ c.remove_config :fieldLabel
19
+ end
20
+
21
+ super at_deep
22
+ end
23
+ end