hatio-core 0.0.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 (93) hide show
  1. checksums.yaml +7 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.rdoc +28 -0
  4. data/Rakefile +6 -0
  5. data/lib/generators/hatio/bundle/USAGE +68 -0
  6. data/lib/generators/hatio/bundle/bundle_generator.rb +100 -0
  7. data/lib/generators/hatio/bundle/templates/04_seed_entities.rb +9 -0
  8. data/lib/generators/hatio/bundle/templates/05_seed_common_codes.rb +8 -0
  9. data/lib/generators/hatio/bundle/templates/06_seed_menus.rb +6 -0
  10. data/lib/generators/hatio/bundle/templates/Controller.js +24 -0
  11. data/lib/generators/hatio/bundle/templates/Gemfile +4 -0
  12. data/lib/generators/hatio/bundle/templates/LICENSE.txt +22 -0
  13. data/lib/generators/hatio/bundle/templates/README.md +29 -0
  14. data/lib/generators/hatio/bundle/templates/Rakefile +1 -0
  15. data/lib/generators/hatio/bundle/templates/engine.rb +7 -0
  16. data/lib/generators/hatio/bundle/templates/gemspec +19 -0
  17. data/lib/generators/hatio/bundle/templates/index.js +14 -0
  18. data/lib/generators/hatio/bundle/templates/init.rb +1 -0
  19. data/lib/generators/hatio/bundle/templates/lib_bundle.rb +12 -0
  20. data/lib/generators/hatio/bundle/templates/locale.js +13 -0
  21. data/lib/generators/hatio/bundle/templates/locales.yml +27 -0
  22. data/lib/generators/hatio/bundle/templates/pluggable_spot.rb +3 -0
  23. data/lib/generators/hatio/bundle/templates/routes.rb +3 -0
  24. data/lib/generators/hatio/bundle/templates/seeds.rb +4 -0
  25. data/lib/generators/hatio/bundle/templates/task.rake +4 -0
  26. data/lib/generators/hatio/bundle/templates/test.rb +8 -0
  27. data/lib/generators/hatio/bundle/templates/test_helper.rb +3 -0
  28. data/lib/generators/hatio/bundle/templates/version.rb +3 -0
  29. data/lib/generators/hatio/resource_api/resource_api_generator.rb +92 -0
  30. data/lib/generators/hatio/resource_api/templates/controller.rb +7 -0
  31. data/lib/generators/hatio/resource_api/templates/create.json.jbuilder +1 -0
  32. data/lib/generators/hatio/resource_api/templates/destroy.json.jbuilder +1 -0
  33. data/lib/generators/hatio/resource_api/templates/index.json.jbuilder +1 -0
  34. data/lib/generators/hatio/resource_api/templates/migration.rb +1 -0
  35. data/lib/generators/hatio/resource_api/templates/model.rb +3 -0
  36. data/lib/generators/hatio/resource_api/templates/show.json.jbuilder +3 -0
  37. data/lib/generators/hatio/resource_api/templates/update.json.jbuilder +2 -0
  38. data/lib/generators/hatio/resource_model/resource_model_generator.rb +52 -0
  39. data/lib/generators/hatio/resource_model/templates/migration.rb +1 -0
  40. data/lib/generators/hatio/resource_model/templates/model.rb +3 -0
  41. data/lib/generators/hatio/resource_view/USAGE +16 -0
  42. data/lib/generators/hatio/resource_view/resource_view_generator.rb +154 -0
  43. data/lib/generators/hatio/resource_view/templates/Model.js +19 -0
  44. data/lib/generators/hatio/resource_view/templates/Store.js +34 -0
  45. data/lib/generators/hatio/resource_view/templates/detail/Controller.js +81 -0
  46. data/lib/generators/hatio/resource_view/templates/detail/DetailForm.js +17 -0
  47. data/lib/generators/hatio/resource_view/templates/detail/DetailMain.js +26 -0
  48. data/lib/generators/hatio/resource_view/templates/detail/DetailPopup.js +25 -0
  49. data/lib/generators/hatio/resource_view/templates/detail/PopupController.js +90 -0
  50. data/lib/generators/hatio/resource_view/templates/detail/ViewController.js +78 -0
  51. data/lib/generators/hatio/resource_view/templates/item/Controller.js +81 -0
  52. data/lib/generators/hatio/resource_view/templates/item/ItemForm.js +19 -0
  53. data/lib/generators/hatio/resource_view/templates/item/ItemMain.js +18 -0
  54. data/lib/generators/hatio/resource_view/templates/item/ItemPopup.js +25 -0
  55. data/lib/generators/hatio/resource_view/templates/item/PopupController.js +90 -0
  56. data/lib/generators/hatio/resource_view/templates/item/ViewController.js +47 -0
  57. data/lib/generators/hatio/resource_view/templates/list/Controller.js +36 -0
  58. data/lib/generators/hatio/resource_view/templates/list/ListGrid.js +10 -0
  59. data/lib/generators/hatio/resource_view/templates/list/ListMain.js +20 -0
  60. data/lib/generators/hatio/resource_view/templates/list/ListSearch.js +9 -0
  61. data/lib/generators/hatio/resource_view/templates/report/Controller.js +53 -0
  62. data/lib/generators/hatio/resource_view/templates/report/ReportList.js +27 -0
  63. data/lib/generators/hatio/resource_view/templates/report/ReportMain.js +18 -0
  64. data/lib/generators/hatio/resource_view/templates/report/ReportSearch.js +9 -0
  65. data/lib/generators/hatio/util/api_util.rb +97 -0
  66. data/lib/generators/hatio/util/migration_util.rb +178 -0
  67. data/lib/generators/hatio/util/model_util.rb +77 -0
  68. data/lib/generators/hatio/util/report_view_util.rb +32 -0
  69. data/lib/generators/hatio/util/resource_view_util.rb +383 -0
  70. data/lib/generators/hatio/util/view_util.rb +214 -0
  71. data/lib/hatio-core.rb +33 -0
  72. data/lib/hatio-core/action_controller/search_helper.rb +332 -0
  73. data/lib/hatio-core/active_record/extension_logic.rb +36 -0
  74. data/lib/hatio-core/active_record/rem_tracker.rb +35 -0
  75. data/lib/hatio-core/active_record/stringified_id.rb +75 -0
  76. data/lib/hatio-core/active_record/stripper.rb +37 -0
  77. data/lib/hatio-core/active_record/userstamp.rb +48 -0
  78. data/lib/hatio-core/birt/birt_report.rb +42 -0
  79. data/lib/hatio-core/bundle/hatio_bundle.rb +37 -0
  80. data/lib/hatio-core/engine.rb +5 -0
  81. data/lib/hatio-core/exception/exceptions.rb +33 -0
  82. data/lib/hatio-core/patch/actionpack_hatio_patch.rb +28 -0
  83. data/lib/hatio-core/patch/date.rb +11 -0
  84. data/lib/hatio-core/patch/string_key.rb +56 -0
  85. data/lib/hatio-core/pluggable/pluggable_spot.rb +22 -0
  86. data/lib/hatio-core/util/hatio_util.rb +106 -0
  87. data/lib/hatio-core/version.rb +3 -0
  88. data/lib/tasks/hatiocore_tasks.rake +75 -0
  89. data/lib/utils/detect_invalid_js_format.rb +0 -0
  90. data/lib/utils/detect_mismatch_tags.rb +57 -0
  91. data/lib/utils/update_license.rb +5 -0
  92. data/lib/utils/upload_locale.rb +67 -0
  93. metadata +148 -0
@@ -0,0 +1,81 @@
1
+ /**
2
+ * <%= class_name %>Detail controller
3
+ */
4
+ Ext.define('<%= @bundle %>.controller.<%= singular_name %>.<%= class_name %>Detail', {
5
+
6
+ extend : 'Base.abstract.entity.DetailMainController',
7
+
8
+ requires : [
9
+ '<%= @bundle %>.model.<%= class_name %>',
10
+ '<%= @bundle %>.store.<%= class_name %>',
11
+ '<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'
12
+ ],
13
+
14
+ models : ['<%= @bundle %>.model.<%= class_name %>'],
15
+
16
+ stores : ['<%= @bundle %>.store.<%= class_name %>'],
17
+
18
+ views : ['<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'],
19
+
20
+ refs : [ { ref : '<%= class_name %>Detail', selector : '<%= @bundle.downcase %>_<%= singular_name %>_detail' } ],
21
+
22
+ init : function() {
23
+ this.callParent(arguments);
24
+
25
+ this.control({
26
+ '<%= @bundle.downcase %>_<%= singular_name %>_detail' : {
27
+ paramschange : this.onParamsChange,
28
+ after_detail_loaded : this.afterDetailLoaded
29
+ },
30
+ ' <%= @bundle.downcase %>_<%= singular_name %>_form' : {
31
+ click_back : this.onBackClick,
32
+ click_save : this.onFormSave,
33
+ click_delete : this.onFormDelete,
34
+ after_form_saved : this.afterFormSaved,
35
+ after_form_deleted : this.afterFormDeleted,
36
+ validitychange : this.onFormValidityChange
37
+ }
38
+ });
39
+ },
40
+
41
+ /****************************************************************
42
+ ** 여기는 customizing area **
43
+ ****************************************************************/
44
+ // Customized code here ...
45
+
46
+ /****************************************************************
47
+ ** Override 구현 **
48
+ ****************************************************************/
49
+ /**
50
+ * override
51
+ */
52
+ afterDetailLoaded : function(record, operation) {
53
+ var mainView = this.getMainView();
54
+ mainView.setRecord(record);
55
+ mainView.down(' #close').hide();
56
+ },
57
+
58
+ /**
59
+ * override
60
+ */
61
+ afterFormSaved : function(form, newRecord) {
62
+ this.getMainView().setRecord(newRecord);
63
+ },
64
+
65
+ /**
66
+ * override
67
+ */
68
+ afterFormDeleted : function(form, newRecord) {
69
+ form.reset();
70
+ },
71
+
72
+ /****************************************************************
73
+ ** abstract method, 필수 구현 **
74
+ ****************************************************************/
75
+ /**
76
+ * main view를 리턴
77
+ */
78
+ getMainView : function() {
79
+ return this.get<%= class_name %>Detail();
80
+ }
81
+ });
@@ -0,0 +1,17 @@
1
+ Ext.define('<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Form', {
2
+
3
+ extend : 'Ext.form.Panel',
4
+
5
+ xtype : '<%= @bundle.downcase %>_<%= singular_name %>_form',
6
+
7
+ autoScroll : true,
8
+
9
+ defaults : { xtype : 'textfield', anchor : '100%' },
10
+
11
+ <%= Hatio::Generators::ResourceViewUtil.generate_form(@domain, "#{singular_name}", @columns, options, "\t\t") %>,
12
+
13
+ dockedItems: [ {
14
+ xtype: 'controlbar',
15
+ items: ['->', 'back', 'save', 'delete', 'close']
16
+ } ]
17
+ });
@@ -0,0 +1,26 @@
1
+ Ext.define('<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail', {
2
+
3
+ extend : 'Base.abstract.entity.DetailMainView',
4
+
5
+ requires : [
6
+ '<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Form'
7
+ ],
8
+
9
+ xtype : '<%= @bundle.downcase %>_<%= singular_name %>_detail',
10
+
11
+ title : T('title.<%= singular_name %>'),
12
+
13
+ items : [ {
14
+ xtype : '<%= @bundle.downcase %>_<%= singular_name %>_form'
15
+ } ],
16
+
17
+ setRecord : function(record) {
18
+ this.record = record;
19
+ HF.setTitle(T('title.<%= singular_name %>') + ' ' + this.record.get('name'));
20
+ this.down('form').loadRecord(this.record);
21
+ },
22
+
23
+ getRecord : function() {
24
+ return this.record;
25
+ }
26
+ });
@@ -0,0 +1,25 @@
1
+ Ext.define('<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail', {
2
+
3
+ extend : 'Base.abstract.Popup',
4
+
5
+ requires : [
6
+ '<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Form'
7
+ ],
8
+
9
+ xtype : '<%= @bundle.downcase %>_<%= singular_name %>_detail',
10
+
11
+ title : T('title.<%= singular_name %>'),
12
+
13
+ items : [ {
14
+ xtype : '<%= @bundle.downcase %>_<%= singular_name %>_form'
15
+ } ],
16
+
17
+ setRecord : function(record) {
18
+ this.record = record;
19
+ this.down('form').loadRecord(this.record);
20
+ },
21
+
22
+ getRecord : function() {
23
+ return this.record;
24
+ }
25
+ });
@@ -0,0 +1,90 @@
1
+ /**
2
+ * <%= class_name %>Detail controller
3
+ */
4
+ Ext.define('<%= @bundle %>.controller.<%= singular_name %>.<%= class_name %>Detail', {
5
+
6
+ extend: 'Base.abstract.entity.DetailMainController',
7
+
8
+ requires : [
9
+ '<%= @bundle %>.model.<%= class_name %>',
10
+ '<%= @bundle %>.store.<%= class_name %>',
11
+ '<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'
12
+ ],
13
+
14
+ models : ['<%= @bundle %>.model.<%= class_name %>'],
15
+
16
+ stores: ['<%= @bundle %>.store.<%= class_name %>'],
17
+
18
+ views : ['<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'],
19
+
20
+ refs: [ { ref : '<%= class_name %>Detail', selector : '<%= @bundle.downcase %>_<%= singular_name %>_detail' } ],
21
+
22
+ init: function() {
23
+ this.callParent(arguments);
24
+
25
+ this.control({
26
+ '<%= @bundle.downcase %>_<%= singular_name %>_detail' : {
27
+ paramschange : this.onParamsChange,
28
+ after_detail_loaded : this.afterDetailLoaded
29
+ },
30
+ ' <%= @bundle.downcase %>_<%= singular_name %>_form' : {
31
+ click_close : this.onClickClose,
32
+ click_save : this.onFormSave,
33
+ click_delete : this.onFormDelete,
34
+ after_form_saved : this.afterFormSaved,
35
+ after_form_deleted : this.afterFormDeleted,
36
+ validitychange: this.onFormValidityChange
37
+ }
38
+ });
39
+ },
40
+
41
+ /****************************************************************
42
+ ** 여기는 customizing area **
43
+ ****************************************************************/
44
+ // Customized code here ...
45
+
46
+ /****************************************************************
47
+ ** Override 구현 **
48
+ ****************************************************************/
49
+ /**
50
+ * override
51
+ */
52
+ afterDetailLoaded : function(record, operation) {
53
+ var mainView = this.getMainView();
54
+ mainView.setRecord(record);
55
+ mainView.down(' #back').hide();
56
+ },
57
+
58
+ /**
59
+ * override
60
+ */
61
+ afterFormSaved : function(form, newRecord) {
62
+ this.getMainView().setRecord(newRecord);
63
+ HF.show('<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>', {}, {});
64
+ },
65
+
66
+ /**
67
+ * override
68
+ */
69
+ afterFormDeleted : function(form, newRecord) {
70
+ this.getMainView().close();
71
+ HF.show('<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>', {}, {});
72
+ },
73
+
74
+ /****************************************************************
75
+ ** abstract method, 필수 구현 **
76
+ ****************************************************************/
77
+ /**
78
+ * main view를 리턴
79
+ */
80
+ getMainView : function() {
81
+ return this.get<%= class_name %>Detail();
82
+ },
83
+
84
+ /**
85
+ * 팝업 close
86
+ */
87
+ onClickClose : function(view) {
88
+ view.up().close();
89
+ }
90
+ });
@@ -0,0 +1,78 @@
1
+ /**
2
+ * <%= class_name %>Detail controller
3
+ */
4
+ Ext.define('<%= @bundle %>.controller.<%= singular_name %>.<%= class_name %>Detail', {
5
+
6
+ extend : 'Base.abstract.entity.DetailMainController',
7
+
8
+ requires : [
9
+ '<%= @bundle %>.model.<%= class_name %>',
10
+ '<%= @bundle %>.store.<%= class_name %>',
11
+ '<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'
12
+ ],
13
+
14
+ models : ['<%= @bundle %>.model.<%= class_name %>'],
15
+
16
+ stores : ['<%= @bundle %>.store.<%= class_name %>'],
17
+
18
+ views : ['<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'],
19
+
20
+ refs : [ { ref : '<%= class_name %>Detail', selector : '<%= @bundle.downcase %>_<%= singular_name %>_detail' } ],
21
+
22
+ init : function() {
23
+ this.callParent(arguments);
24
+
25
+ this.control({
26
+ '<%= @bundle.downcase %>_<%= singular_name %>_detail' : {
27
+ paramschange : this.onParamsChange,
28
+ after_detail_loaded : this.afterDetailLoaded
29
+ },
30
+ ' <%= @bundle.downcase %>_<%= singular_name %>_form' : {
31
+ click_back : this.onBackClick,
32
+ click_save : this.onFormSave,
33
+ click_delete : this.onFormDelete,
34
+ after_form_saved : this.afterFormSaved,
35
+ after_form_deleted : this.afterFormDeleted
36
+ }
37
+ });
38
+ },
39
+
40
+ /****************************************************************
41
+ ** 여기는 customizing area **
42
+ ****************************************************************/
43
+ // Customized code here ...
44
+
45
+ /****************************************************************
46
+ ** Override 구현 **
47
+ ****************************************************************/
48
+ /**
49
+ * override
50
+ */
51
+ afterDetailLoaded : function(record, operation) {
52
+ this.getMainView().setRecord(record);
53
+ },
54
+
55
+ /**
56
+ * override
57
+ */
58
+ afterFormSaved : function(form, newRecord) {
59
+ this.getMainView().setRecord(newRecord);
60
+ },
61
+
62
+ /**
63
+ * override
64
+ */
65
+ afterFormDeleted : function(form, newRecord) {
66
+ HF.history.back();
67
+ },
68
+
69
+ /****************************************************************
70
+ ** abstract method, 필수 구현 **
71
+ ****************************************************************/
72
+ /**
73
+ * main view를 리턴
74
+ */
75
+ getMainView : function() {
76
+ return this.get<%= class_name %>Detail();
77
+ }
78
+ });
@@ -0,0 +1,81 @@
1
+ /**
2
+ * <%= class_name %>Item controller
3
+ */
4
+ Ext.define('<%= @bundle %>.controller.<%= singular_name %>.<%= class_name %>Detail', {
5
+
6
+ extend : 'Base.abstract.entity.DetailMainController',
7
+
8
+ requires : [
9
+ '<%= @bundle %>.model.<%= class_name %>',
10
+ '<%= @bundle %>.store.<%= class_name %>',
11
+ '<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'
12
+ ],
13
+
14
+ models : ['<%= @bundle %>.model.<%= class_name %>'],
15
+
16
+ stores : ['<%= @bundle %>.store.<%= class_name %>'],
17
+
18
+ views : ['<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Detail'],
19
+
20
+ refs: [ { ref : '<%= class_name %>Detail', selector : '<%= @bundle.downcase %>_<%= singular_name %>_detail' } ],
21
+
22
+ init: function() {
23
+ this.callParent(arguments);
24
+
25
+ this.control({
26
+ '<%= @bundle.downcase %>_<%= singular_name %>_detail' : {
27
+ paramschange : this.onParamsChange,
28
+ after_detail_loaded : this.afterDetailLoaded
29
+ },
30
+ ' <%= @bundle.downcase %>_<%= singular_name %>_form' : {
31
+ click_back : this.onBackClick,
32
+ click_save : this.onFormSave,
33
+ click_delete : this.onFormDelete,
34
+ after_form_saved : this.afterFormSaved,
35
+ after_form_deleted : this.afterFormDeleted,
36
+ validitychange : this.onFormValidityChange
37
+ }
38
+ });
39
+ },
40
+
41
+ /****************************************************************
42
+ ** 여기는 customizing area **
43
+ ****************************************************************/
44
+ // Customized code here ...
45
+
46
+ /****************************************************************
47
+ ** Override 구현 **
48
+ ****************************************************************/
49
+ /**
50
+ * override
51
+ */
52
+ afterDetailLoaded : function(record, operation) {
53
+ var mainView = this.getMainView();
54
+ mainView.setRecord(record);
55
+ mainView.down(' #close').hide();
56
+ },
57
+
58
+ /**
59
+ * override
60
+ */
61
+ afterFormSaved : function(form, newRecord) {
62
+ this.getMainView().setRecord(newRecord);
63
+ },
64
+
65
+ /**
66
+ * override
67
+ */
68
+ afterFormDeleted : function(form, newRecord) {
69
+ form.reset();
70
+ },
71
+
72
+ /****************************************************************
73
+ ** abstract method, 필수 구현 **
74
+ ****************************************************************/
75
+ /**
76
+ * main view를 리턴
77
+ */
78
+ getMainView : function() {
79
+ return this.get<%= class_name %>Detail();
80
+ }
81
+ });
@@ -0,0 +1,19 @@
1
+ Ext.define('<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Form', {
2
+
3
+ extend : 'Ext.form.Panel',
4
+
5
+ xtype : '<%= @bundle.downcase %>_<%= singular_name %>_form',
6
+
7
+ title : T('title.basic_info'),
8
+
9
+ autoScroll : true,
10
+
11
+ defaults : { xtype : 'textfield', anchor : '100%' },
12
+
13
+ <%= Hatio::Generators::ResourceViewUtil.generate_form(@domain, "#{singular_name}", @columns, options, "\t\t") %>,
14
+
15
+ dockedItems: [ {
16
+ xtype: 'controlbar',
17
+ items: ['->', 'list', 'save', 'delete']
18
+ } ]
19
+ });
@@ -0,0 +1,18 @@
1
+ Ext.define('<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Item', {
2
+
3
+ extend : 'Ext.tab.Panel',
4
+
5
+ requires : [ '<%= @bundle %>.view.<%= singular_name %>.<%= class_name %>Form'],
6
+
7
+ mixins : { spotlink : 'Frx.mixin.view.SpotLink' },
8
+
9
+ xtype : '<%= @bundle.downcase %>_<%= singular_name %>_item',
10
+
11
+ title : T('menu.<%= class_name %>'),
12
+
13
+ items : [
14
+ { xtype : '<%= @bundle.downcase %>_<%= singular_name %>_form' }<% if(options.use_attachment == 'y') %>,
15
+ { xtype : 'base_attachment_form' }<% end %><% if(options.use_ext_prop == 'y') %>,
16
+ { xtype : 'base_property_form' }<% end %>
17
+ ]
18
+ });