engine2 1.0.4 → 1.0.5

Sign up to get free protection for your applications and to get access to all the features.
Files changed (122) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile +0 -0
  3. data/Rakefile +1 -1
  4. data/app/{engine2actions.coffee → actions.coffee} +192 -142
  5. data/app/app.coffee +0 -0
  6. data/app/app.css +4 -0
  7. data/app/engine2.coffee +87 -175
  8. data/app/modal.coffee +133 -0
  9. data/bower.json +2 -1
  10. data/conf/message.yaml +0 -0
  11. data/conf/message_pl.yaml +0 -0
  12. data/config.coffee +11 -2
  13. data/engine2.gemspec +2 -2
  14. data/lib/engine2.rb +12 -10
  15. data/lib/engine2/action.rb +1290 -134
  16. data/lib/engine2/{meta/array_meta.rb → action/array.rb} +4 -3
  17. data/lib/engine2/{meta/decode_meta.rb → action/decode.rb} +16 -15
  18. data/lib/engine2/action/delete.rb +65 -0
  19. data/lib/engine2/action/form.rb +16 -0
  20. data/lib/engine2/{meta/infra_meta.rb → action/infra.rb} +118 -85
  21. data/lib/engine2/action/link.rb +117 -0
  22. data/lib/engine2/{meta/list_meta.rb → action/list.rb} +61 -62
  23. data/lib/engine2/action/save.rb +30 -0
  24. data/lib/engine2/action/view.rb +8 -0
  25. data/lib/engine2/action_node.rb +221 -0
  26. data/lib/engine2/core.rb +120 -77
  27. data/lib/engine2/handler.rb +9 -10
  28. data/lib/engine2/model.rb +4 -20
  29. data/lib/engine2/models/Files.rb +2 -1
  30. data/lib/engine2/models/UserInfo.rb +6 -3
  31. data/lib/engine2/post_bootstrap.rb +3 -2
  32. data/lib/engine2/pre_bootstrap.rb +1 -0
  33. data/lib/engine2/scheme.rb +98 -47
  34. data/lib/engine2/templates.rb +1 -0
  35. data/lib/engine2/type_info.rb +6 -4
  36. data/lib/engine2/version.rb +2 -1
  37. data/package.json +12 -10
  38. data/public/favicon.ico +0 -0
  39. data/public/img/ajax-loader-dark.gif +0 -0
  40. data/public/img/ajax-loader.gif +0 -0
  41. data/views/fields/blob.slim +0 -0
  42. data/views/fields/bs_select.slim +0 -0
  43. data/views/fields/bsselect_picker.slim +0 -0
  44. data/views/fields/bsselect_picker_opt.slim +0 -0
  45. data/views/fields/checkbox.slim +0 -0
  46. data/views/fields/checkbox_buttons.slim +0 -0
  47. data/views/fields/checkbox_buttons_opt.slim +0 -0
  48. data/views/fields/currency.slim +0 -0
  49. data/views/fields/date.slim +0 -0
  50. data/views/fields/date_range.slim +0 -0
  51. data/views/fields/date_time.slim +0 -0
  52. data/views/fields/datetime.slim +0 -0
  53. data/views/fields/decimal.slim +0 -0
  54. data/views/fields/decimal_date.slim +0 -0
  55. data/views/fields/decimal_time.slim +0 -0
  56. data/views/fields/email.slim +0 -0
  57. data/views/fields/file_store.slim +7 -7
  58. data/views/fields/input_text.slim +0 -0
  59. data/views/fields/integer.slim +0 -0
  60. data/views/fields/list_bsselect.slim +0 -0
  61. data/views/fields/list_bsselect_opt.slim +0 -0
  62. data/views/fields/list_buttons.slim +0 -0
  63. data/views/fields/list_buttons_opt.slim +0 -0
  64. data/views/fields/list_select.slim +0 -0
  65. data/views/fields/list_select_opt.slim +0 -0
  66. data/views/fields/password.slim +0 -0
  67. data/views/fields/radio_checkbox.slim +0 -0
  68. data/views/fields/scaffold.slim +0 -0
  69. data/views/fields/scaffold_picker.slim +0 -0
  70. data/views/fields/select_picker.slim +0 -0
  71. data/views/fields/select_picker_opt.slim +0 -0
  72. data/views/fields/text_area.slim +1 -0
  73. data/views/fields/time.slim +0 -0
  74. data/views/fields/typeahead_picker.slim +0 -0
  75. data/views/index.slim +3 -3
  76. data/views/infra/index.slim +0 -0
  77. data/views/infra/inspect.slim +20 -0
  78. data/views/modals/close_m.slim +0 -0
  79. data/views/modals/confirm_m.slim +0 -0
  80. data/views/modals/empty_m.slim +0 -0
  81. data/views/modals/menu_m.slim +1 -1
  82. data/views/modals/yes_no_m.slim +0 -0
  83. data/views/panels/menu_m.slim +1 -1
  84. data/views/scaffold/confirm.slim +0 -0
  85. data/views/scaffold/fields.slim +0 -0
  86. data/views/scaffold/form.slim +0 -0
  87. data/views/scaffold/form_collapse.slim +0 -0
  88. data/views/scaffold/form_tabs.slim +0 -0
  89. data/views/scaffold/list.slim +0 -0
  90. data/views/scaffold/message.slim +0 -0
  91. data/views/scaffold/search.slim +0 -0
  92. data/views/scaffold/search_collapse.slim +0 -0
  93. data/views/scaffold/search_tabs.slim +0 -0
  94. data/views/scaffold/view.slim +0 -0
  95. data/views/scaffold/view_collapse.slim +0 -0
  96. data/views/scaffold/view_tabs.slim +0 -0
  97. data/views/search_fields/bsmselect_picker.slim +0 -0
  98. data/views/search_fields/bsselect_picker.slim +0 -0
  99. data/views/search_fields/checkbox.slim +0 -0
  100. data/views/search_fields/checkbox2.slim +0 -0
  101. data/views/search_fields/checkbox_buttons.slim +0 -0
  102. data/views/search_fields/date_range.slim +0 -0
  103. data/views/search_fields/decimal_date_range.slim +0 -0
  104. data/views/search_fields/input_text.slim +0 -0
  105. data/views/search_fields/integer.slim +0 -0
  106. data/views/search_fields/integer_range.slim +0 -0
  107. data/views/search_fields/list_bsmselect.slim +0 -0
  108. data/views/search_fields/list_bsselect.slim +0 -0
  109. data/views/search_fields/list_buttons.slim +0 -0
  110. data/views/search_fields/list_select.slim +0 -0
  111. data/views/search_fields/scaffold_picker.slim +0 -0
  112. data/views/search_fields/select_picker.slim +0 -0
  113. data/views/search_fields/typeahead_picker.slim +0 -0
  114. metadata +41 -42
  115. data/lib/engine2/meta.rb +0 -1216
  116. data/lib/engine2/meta/delete_meta.rb +0 -60
  117. data/lib/engine2/meta/form_meta.rb +0 -15
  118. data/lib/engine2/meta/link_meta.rb +0 -134
  119. data/lib/engine2/meta/save_meta.rb +0 -50
  120. data/lib/engine2/meta/view_meta.rb +0 -7
  121. data/public/__sinatra__/404.png +0 -0
  122. data/public/__sinatra__/500.png +0 -0
@@ -1,60 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Engine2
4
- class DeleteMetaBase < Meta
5
-
6
- def invoke_delete_db handler, ids
7
- begin
8
- model = assets[:model]
9
- model.db.transaction do
10
- ids.each do |id|
11
- keys = split_keys(id)
12
- restrict = model.association_reflections.select do |name, rel|
13
- case rel[:type]
14
- when :one_to_many
15
- !model.db[name].where(Hash[rel[:keys].zip(keys)]).empty?
16
- when :many_to_many
17
- !model.db[rel[:join_table]].where(Hash[rel[:left_keys].zip(keys)]).empty?
18
- when :many_to_one
19
- when :one_to_one
20
- else
21
- unsupported_association rel[:type]
22
- end
23
- end
24
- raise Sequel::DestroyFailed.new("Blokujące relacje: #{restrict.map{|name, rel| name}.join(', ')}" ) unless restrict.empty?
25
-
26
- rec = model.call(Hash[model.primary_keys.zip(keys)])
27
- rec.destroy(transaction: false)
28
- # model.where(model.primary_keys_hash(keys)).delete # model.dataset[model.primary_key => id].delete
29
- end
30
- end
31
- {}
32
- rescue Sequel::NoExistingObject
33
- handler.halt_not_found LOCS[:no_entry]
34
- rescue Sequel::DestroyFailed => failure
35
- handler.halt_forbidden failure.error.to_s
36
- end
37
- end
38
-
39
- end
40
-
41
- class DeleteMeta < DeleteMetaBase
42
- include MetaDeleteSupport
43
-
44
- def invoke handler
45
- handler.permit id = handler.params[:id]
46
- invoke_delete_db(handler, [id])
47
- end
48
- end
49
-
50
- class BulkDeleteMeta < DeleteMetaBase
51
- include MetaBulkDeleteSupport
52
-
53
- def invoke handler
54
- ids = handler.param_to_json(:ids)
55
- handler.permit ids.is_a?(Array)
56
- invoke_delete_db(handler, ids)
57
- end
58
- end
59
-
60
- end
@@ -1,15 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Engine2
4
- class FormMeta < Meta
5
- include MetaQuerySupport
6
- end
7
-
8
- class CreateMeta < FormMeta
9
- include MetaCreateSupport
10
- end
11
-
12
- class ModifyMeta < FormMeta
13
- include MetaModifySupport
14
- end
15
- end
@@ -1,134 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Engine2
4
- class StarToManyLinkMeta < Meta
5
- include MetaModelSupport
6
- http_method :post
7
- meta_type :star_to_many_link
8
-
9
- def invoke handler
10
- json = handler.post_to_json
11
- parent = json[:parent_id]
12
- ids = json[:ids]
13
- handler.permit parent && ids
14
- model = assets[:model]
15
- assoc = assets[:assoc]
16
- case assoc[:type]
17
- when :one_to_many
18
- model.db.transaction do
19
- self.class.one_to_many_link_db model, assoc, split_keys(parent), ids
20
- end
21
- {}
22
- when :many_to_many
23
- self.class.many_to_many_link_db model, assoc, split_keys(parent), ids
24
- {}
25
- else unsupported_association
26
- end
27
- end
28
-
29
- def self.one_to_many_link_db model, assoc, parent, ids
30
- pk = Hash[assoc[:keys].zip(parent)]
31
- ids.each do |id|
32
- model.where(model.primary_keys_hash(Sequel::split_keys(id))).update(pk)
33
- end
34
- end
35
-
36
- def self.many_to_many_link_db model, assoc, parent, ids
37
- p_pk = Hash[assoc[:left_keys].zip(parent)]
38
- values = ids.map do |id|
39
- p_pk.merge Hash[assoc[:right_keys].zip(Sequel::split_keys(id))]
40
- end
41
- model.db[assoc[:join_table]].multi_insert values
42
- end
43
- end
44
-
45
- class StarToManyUnlinkMetaBase < Meta
46
- include MetaModelSupport
47
- http_method :delete
48
-
49
- def one_to_many_unlink_db handler, ids
50
- model = assets[:model]
51
- assoc = assets[:assoc]
52
- keys = assoc[:keys]
53
- if keys.all?{|k|model.db_schema[k][:allow_null] == true}
54
- model.db.transaction do
55
- self.class.one_to_many_unlink_db model, assoc, ids
56
- end
57
- {}
58
- else
59
- handler.halt_method_not_allowed LOCS[:"non_nullable"]
60
- end
61
- end
62
-
63
- def self.one_to_many_unlink_db model, assoc, ids
64
- keys = assoc[:keys]
65
- ids.each do |id|
66
- model.where(model.primary_keys_hash(Sequel::split_keys(id))).update(Hash[keys.zip([nil])])
67
- end
68
- end
69
-
70
- def many_to_many_unlink_db parent, ids
71
- model = assets[:model]
72
- assoc = assets[:assoc]
73
-
74
- model.db.transaction do
75
- self.class.many_to_many_unlink_db model, assoc, Sequel::split_keys(parent), ids
76
- end
77
- {}
78
- end
79
-
80
- def self.many_to_many_unlink_db model, assoc, parent, ids
81
- p_pk = Hash[assoc[:left_keys].zip(parent)]
82
- ds = model.db[assoc[:join_table]]
83
- ids.each do |id|
84
- ds.where(p_pk, Hash[assoc[:right_keys].zip(Sequel::split_keys(id))]).delete
85
- end
86
- end
87
- end
88
-
89
- class StarToManyUnlinkMeta < StarToManyUnlinkMetaBase
90
- meta_type :star_to_many_unlink
91
-
92
- def pre_run
93
- super
94
- action.parent.parent.*.menu(:item_menu).option :confirm_unlink, icon: "minus", show: "action.selected_size() == 0", button_loc: false
95
- end
96
-
97
- def invoke handler
98
- handler.permit id = handler.params[:id]
99
- assoc = assets[:assoc]
100
- case assoc[:type]
101
- when :one_to_many
102
- one_to_many_unlink_db(handler, [id])
103
- when :many_to_many
104
- handler.permit parent = handler.params[:parent_id]
105
- many_to_many_unlink_db(parent, [id])
106
- else unsupported_association
107
- end
108
- end
109
- end
110
-
111
- class StarToManyBulkUnlinkMeta < StarToManyUnlinkMetaBase
112
- meta_type :star_to_many_bulk_unlink
113
-
114
- def pre_run
115
- super
116
- action.parent.parent.*.select_toggle_menu
117
- action.parent.parent.*.menu(:menu).option_after :default_order, :confirm_bulk_unlink, icon: "minus", show: "action.selected_size() > 0", button_loc: false
118
- end
119
-
120
- def invoke handler
121
- ids = handler.param_to_json(:ids)
122
- handler.permit ids.is_a?(Array)
123
- assoc = assets[:assoc]
124
- case assoc[:type]
125
- when :one_to_many
126
- one_to_many_unlink_db(handler, ids)
127
- when :many_to_many
128
- handler.permit parent = handler.params[:parent_id]
129
- many_to_many_unlink_db(parent, ids)
130
- else unsupported_association
131
- end
132
- end
133
- end
134
- end
@@ -1,50 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Engine2
4
-
5
- class SaveMeta < Meta
6
- include MetaApproveSupport
7
-
8
- def validate_and_approve handler, record, json
9
- record.skip_save_refresh = true
10
- record.raise_on_save_failure = false
11
- model = assets[:model]
12
- assoc = assets[:assoc]
13
- mtm_insert = record.new? && assoc && assoc[:type] == :many_to_many
14
-
15
- save = lambda do|c|
16
- if super(handler, record, json)
17
- result = record.save(transaction: false, validate: false)
18
- if result && mtm_insert
19
- handler.permit parent_id = json[:parent_id]
20
- model.db[assoc[:join_table]].insert(assoc[:left_keys] + assoc[:right_keys], split_keys(parent_id) + record.primary_key_values)
21
- end
22
- result
23
- end
24
- end
25
- (model.validation_in_transaction || mtm_insert) ? model.db.transaction(&save) : save.(nil)
26
- end
27
- end
28
-
29
- class InsertMeta < SaveMeta
30
- meta_type :approve
31
- def allocate_record handler, json
32
- record = super(handler, json)
33
- record.instance_variable_set(:"@new", true)
34
- model = assets[:model]
35
- model.primary_keys.each{|k|record.values.delete k} unless model.natural_key
36
- handler.permit !record.has_primary_key? unless model.natural_key
37
- record
38
- end
39
- end
40
-
41
- class UpdateMeta < SaveMeta
42
- meta_type :approve
43
- def allocate_record handler, json
44
- record = super(handler, json)
45
- model = assets[:model]
46
- handler.permit record.has_primary_key? unless model.natural_key
47
- record
48
- end
49
- end
50
- end
@@ -1,7 +0,0 @@
1
- # coding: utf-8
2
-
3
- module Engine2
4
- class ViewMeta < Meta
5
- include MetaViewSupport, MetaQuerySupport
6
- end
7
- end
Binary file
Binary file