extjsml 0.0.2

Sign up to get free protection for your applications and to get access to all the features.
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