engine2 1.0.4 → 1.0.9

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 (131) hide show
  1. checksums.yaml +5 -5
  2. data/Gemfile +0 -0
  3. data/Rakefile +4 -4
  4. data/app/{engine2actions.coffee → actions.coffee} +341 -215
  5. data/app/app.coffee +0 -0
  6. data/app/app.css +17 -0
  7. data/app/engine2.coffee +158 -208
  8. data/app/modal.coffee +138 -0
  9. data/bower.json +4 -2
  10. data/conf/message.yaml +5 -0
  11. data/conf/message_pl.yaml +7 -2
  12. data/config.coffee +24 -12
  13. data/engine2.gemspec +8 -8
  14. data/lib/engine2.rb +12 -10
  15. data/lib/engine2/action.rb +1338 -133
  16. data/lib/engine2/action/array.rb +189 -0
  17. data/lib/engine2/{meta/decode_meta.rb → action/decode.rb} +52 -21
  18. data/lib/engine2/action/delete.rb +64 -0
  19. data/lib/engine2/action/form.rb +16 -0
  20. data/lib/engine2/{meta/infra_meta.rb → action/infra.rb} +123 -89
  21. data/lib/engine2/action/link.rb +117 -0
  22. data/lib/engine2/action/list.rb +333 -0
  23. data/lib/engine2/action/save.rb +28 -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 +175 -87
  27. data/lib/engine2/handler.rb +14 -13
  28. data/lib/engine2/model.rb +85 -43
  29. data/lib/engine2/models/Files.rb +4 -1
  30. data/lib/engine2/models/UserInfo.rb +6 -3
  31. data/lib/engine2/post_bootstrap.rb +4 -3
  32. data/lib/engine2/pre_bootstrap.rb +10 -6
  33. data/lib/engine2/scheme.rb +107 -65
  34. data/lib/engine2/templates.rb +41 -6
  35. data/lib/engine2/type_info.rb +51 -23
  36. data/lib/engine2/version.rb +2 -1
  37. data/package.json +22 -16
  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 +1 -1
  42. data/views/fields/bs_select.slim +2 -2
  43. data/views/fields/bsselect_picker.slim +4 -4
  44. data/views/fields/bsselect_picker_opt.slim +5 -5
  45. data/views/fields/checkbox.slim +4 -4
  46. data/views/fields/checkbox_button.slim +6 -0
  47. data/views/fields/checkbox_buttons.slim +3 -3
  48. data/views/fields/checkbox_buttons_opt.slim +3 -3
  49. data/views/fields/currency.slim +2 -2
  50. data/views/fields/date.slim +4 -4
  51. data/views/fields/date_range.slim +9 -9
  52. data/views/fields/date_time.slim +9 -9
  53. data/views/fields/datetime.slim +8 -8
  54. data/views/fields/decimal.slim +1 -1
  55. data/views/fields/decimal_date.slim +3 -3
  56. data/views/fields/decimal_time.slim +3 -3
  57. data/views/fields/email.slim +3 -3
  58. data/views/fields/file_store.slim +11 -11
  59. data/views/fields/input_text.slim +4 -4
  60. data/views/fields/integer.slim +1 -1
  61. data/views/fields/list_bsmselect.slim +20 -0
  62. data/views/fields/list_bsselect.slim +5 -5
  63. data/views/fields/list_bsselect_opt.slim +6 -6
  64. data/views/fields/list_buttons.slim +1 -1
  65. data/views/fields/list_buttons_opt.slim +2 -2
  66. data/views/fields/list_mbuttons.slim +9 -0
  67. data/views/fields/list_mbuttons_opt.slim +11 -0
  68. data/views/fields/list_mselect.slim +12 -0
  69. data/views/fields/list_select.slim +4 -4
  70. data/views/fields/list_select_opt.slim +5 -5
  71. data/views/fields/password.slim +4 -4
  72. data/views/fields/radio_checkbox.slim +3 -3
  73. data/views/fields/scaffold.slim +2 -2
  74. data/views/fields/scaffold_picker.slim +5 -5
  75. data/views/fields/select_picker.slim +3 -3
  76. data/views/fields/select_picker_opt.slim +4 -4
  77. data/views/fields/text_area.slim +4 -3
  78. data/views/fields/time.slim +5 -4
  79. data/views/fields/typeahead_picker.slim +12 -9
  80. data/views/index.slim +3 -3
  81. data/views/infra/index.slim +0 -0
  82. data/views/infra/inspect.slim +41 -10
  83. data/views/modals/close_m.slim +0 -0
  84. data/views/modals/confirm_m.slim +0 -0
  85. data/views/modals/empty_m.slim +0 -0
  86. data/views/modals/menu_m.slim +1 -1
  87. data/views/modals/yes_no_m.slim +0 -0
  88. data/views/panels/menu_m.slim +1 -1
  89. data/views/scaffold/confirm.slim +0 -0
  90. data/views/scaffold/fields.slim +6 -4
  91. data/views/scaffold/form.slim +1 -1
  92. data/views/scaffold/form_collapse.slim +4 -3
  93. data/views/scaffold/form_tabs.slim +3 -2
  94. data/views/scaffold/list.slim +0 -0
  95. data/views/scaffold/message.slim +0 -0
  96. data/views/scaffold/search.slim +4 -4
  97. data/views/scaffold/search_collapse.slim +8 -7
  98. data/views/scaffold/search_tabs.slim +6 -5
  99. data/views/scaffold/view.slim +2 -2
  100. data/views/scaffold/view_collapse.slim +5 -4
  101. data/views/scaffold/view_tabs.slim +4 -3
  102. data/views/search_fields/bsmselect_picker.slim +4 -4
  103. data/views/search_fields/bsselect_picker.slim +4 -4
  104. data/views/search_fields/checkbox.slim +3 -3
  105. data/views/search_fields/checkbox2.slim +5 -5
  106. data/views/search_fields/checkbox_buttons.slim +3 -3
  107. data/views/search_fields/date.slim +20 -0
  108. data/views/search_fields/date_range.slim +8 -8
  109. data/views/search_fields/decimal_date_range.slim +5 -5
  110. data/views/search_fields/input_text.slim +2 -2
  111. data/views/search_fields/integer.slim +1 -1
  112. data/views/search_fields/integer_range.slim +2 -2
  113. data/views/search_fields/list_bsmselect.slim +4 -4
  114. data/views/search_fields/list_bsselect.slim +4 -4
  115. data/views/search_fields/list_buttons.slim +2 -2
  116. data/views/search_fields/list_mbuttons.slim +12 -0
  117. data/views/search_fields/list_select.slim +3 -3
  118. data/views/search_fields/scaffold_picker.slim +2 -2
  119. data/views/search_fields/select_picker.slim +3 -3
  120. data/views/search_fields/typeahead_picker.slim +8 -7
  121. metadata +53 -48
  122. data/lib/engine2/meta.rb +0 -1216
  123. data/lib/engine2/meta/array_meta.rb +0 -82
  124. data/lib/engine2/meta/delete_meta.rb +0 -60
  125. data/lib/engine2/meta/form_meta.rb +0 -15
  126. data/lib/engine2/meta/link_meta.rb +0 -134
  127. data/lib/engine2/meta/list_meta.rb +0 -281
  128. data/lib/engine2/meta/save_meta.rb +0 -50
  129. data/lib/engine2/meta/view_meta.rb +0 -7
  130. data/public/__sinatra__/404.png +0 -0
  131. data/public/__sinatra__/500.png +0 -0
@@ -1,2 +1,2 @@
1
- .col-lg-10.col-md-10.col-sm-10
2
- e2-action action="info.assoc"
1
+ .col-lg-12.col-md-12.col-sm-10
2
+ e2-action action="field.assoc"
@@ -1,16 +1,16 @@
1
- e2-action action="[info.assoc, 'decode']"
1
+ e2-action action="[field.assoc, 'decode']"
2
2
  .col-lg-6.col-md-6.col-sm-8
3
3
  .input-group.input-group-sm
4
4
  a.btn.btn-default [
5
- ng-disabled="info.disabled"
5
+ ng-disabled="field.disabled"
6
6
  class="form-control"
7
- ng-click="!info.disabled && action.open()"
7
+ ng-click="!field.disabled && action.open()"
8
8
  ]
9
9
  span ng-bind-html="action.decode"
10
10
 
11
11
  .input-group-btn
12
- a.btn.btn-default ng-disabled="info.disabled" ng-click="!info.disabled && action.open()": span.glyphicon.glyphicon-list
13
- a.btn.btn-default ng-disabled="info.disabled || action.decode == null" ng-click="!info.disabled && action.reset()": span.glyphicon.glyphicon-remove
12
+ a.btn.btn-default ng-disabled="field.disabled" ng-click="!field.disabled && action.open()": span.glyphicon.glyphicon-list
13
+ a.btn.btn-default ng-disabled="field.disabled || action.decode == null" ng-click="!field.disabled && action.reset()": span.glyphicon.glyphicon-remove
14
14
 
15
15
  input [
16
16
  type="hidden"
@@ -1,11 +1,11 @@
1
- e2-action action="[info.assoc, 'list']"
1
+ e2-action action="[field.assoc, 'list']"
2
2
  .col-lg-7.col-md-8.col-sm-12
3
3
  select.btn.btn-default.btn-sm [
4
4
  ng-model="action.selected"
5
5
  ng-options="v.id as v.value for v in action.values"
6
6
  ng-change="action.change()"
7
- ng-disabled="info.disabled"
8
- ng-class="info.render.class"
7
+ ng-disabled="field.disabled"
8
+ ng-class="field.render.class"
9
9
  class="form-control input-sm"
10
10
  e2-field=""
11
11
  ]
@@ -1,15 +1,15 @@
1
- e2-action action="[info.assoc, 'list']"
1
+ e2-action action="[field.assoc, 'list']"
2
2
  .col-lg-7.col-md-12.col-sm-12
3
3
  .input-group.input-group-sm
4
4
  select.btn.btn-default.btn-sm [
5
5
  ng-model="action.selected"
6
6
  ng-options="v.id as v.value for v in action.values"
7
7
  ng-change="action.change()"
8
- ng-disabled="info.disabled"
9
- ng-class="info.render.class"
8
+ ng-disabled="field.disabled"
9
+ ng-class="field.render.class"
10
10
  class="form-control"
11
11
  e2-field=""
12
12
  ]
13
13
  .input-group-btn
14
- a.btn.btn-default ng-disabled="info.disabled || !action.selected" ng-click="action.reset()"
14
+ a.btn.btn-default ng-disabled="field.disabled || !action.selected" ng-click="action.reset()"
15
15
  span.glyphicon.glyphicon-remove
@@ -1,9 +1,10 @@
1
1
  .col-lg-11
2
2
  textarea [
3
+ spellcheck="false"
3
4
  ng-model="action.record[f]"
4
- cols="{{info.render.cols}}"
5
- rows="{{info.render.rows}}"
6
- ng-disabled="info.disabled"
5
+ cols="{{field.render.cols}}"
6
+ rows="{{field.render.rows}}"
7
+ ng-disabled="field.disabled"
7
8
  class="form-control"
8
9
  e2-field=""
9
10
  ]
@@ -4,15 +4,16 @@
4
4
  type="text"
5
5
  class="form-control"
6
6
  ng-model="value"
7
- ng-disabled="info.disabled"
7
+ ng-disabled="field.disabled"
8
8
 
9
- data-time-format="{{::info.render.format}}"
10
- data-animation="{{::info.render.animation}}"
9
+ data-time-format="{{::field.render.format}}"
10
+ data-animation="{{::field.render.animation}}"
11
11
  bs-timepicker=""
12
12
  e2-datepicker=""
13
- e2-model-format="{{::info.render.model_format}}"
13
+ e2-model-format="{{::field.render.model_format}}"
14
14
  data-autoclose="1"
15
15
  data-arrow-behavior="picker"
16
+ data-time-type="{{::field.render.type}}"
16
17
 
17
18
  e2-force-view-value=""
18
19
  e2-field=""
@@ -1,24 +1,27 @@
1
- e2-action action="[info.assoc, 'typeahead']"
2
- .col-lg-7.col-md-8.col-sm-12
1
+ e2-action action="[field.assoc, 'typeahead']"
2
+ /.col-lg-7.col-md-8.col-sm-12
3
+ div e2-input-cols="{{::field.render.length}}"
3
4
  .input-group.input-group-sm
4
5
  input.btn.btn-default [
6
+ style="text-align:left"
5
7
  type="text"
6
8
  ng-model="action.decode"
7
- bs-options="v.value for v in action.load($viewValue)"
8
- ng-keypress="action.key_pressed = true"
9
+ bs-options="v.value for v in action.load(action.decode)"
9
10
 
10
- ng-disabled="info.disabled"
11
- ng-class="info.render.class"
11
+ ng-disabled="field.disabled"
12
+ ng-class="field.render.class"
12
13
  class="form-control"
13
14
 
14
- data-animation="{{::info.render.animation}}"
15
+ data-animation="{{::field.render.animation}}"
15
16
  placeholder="..."
16
17
  data-html="true"
17
- data-limit="10"
18
+ data-limit="{{::field.render.limit}}"
19
+ data-min-length="{{::field.render.min_length}}"
20
+ data-trigger="focus"
18
21
  bs-typeahead=""
19
22
  e2-field=""
20
23
  ]
21
24
  span.input-group-addon: span.glyphicon.glyphicon-font
22
25
  .input-group-btn
23
- a.btn.btn-default ng-disabled="info.disabled || action.decode == null" ng-click="!info.disabled && action.reset()"
26
+ a.btn.btn-default ng-disabled="field.disabled || !action.decode" ng-click="!field.disabled && action.reset()"
24
27
  span.glyphicon.glyphicon-off
@@ -5,11 +5,11 @@ html
5
5
  meta http-equiv="x-ua-compatible" content="IE=edge"
6
6
 
7
7
  link rel="stylesheet" href="engine2vendor.css"
8
- link rel="stylesheet" href="engine2app.css"
8
+ link rel="stylesheet" href="engine2.css"
9
9
  script type="text/javascript" src="engine2vendor.js"
10
10
  script type="text/javascript" src="engine2.js"
11
11
 
12
- body ng-app="app"
12
+ body ng-app="app" ng-strict-di=""
13
13
  e2-action ng-controller="AppController"
14
14
  .nav.navbar.navbar-default
15
15
  .container
@@ -36,5 +36,5 @@ html
36
36
  .navbar-text
37
37
 
38
38
  .container
39
- ng-view
39
+ ui-view
40
40
 
File without changes
@@ -1,4 +1,4 @@
1
- e2-action action="'inspect'"
1
+ e2-action action="'inspect_' + action.globals().application"
2
2
  div bs-tabs=""
3
3
  br
4
4
  div title="API" bs-pane=""
@@ -8,7 +8,7 @@ e2-action action="'inspect'"
8
8
  .panel-body
9
9
  script type="text/ng-template" id="nodes_renderer.html"
10
10
  div data-nodrag="" ng-init="stack = stack.concat([$index])"
11
- span.glyphicon.glyphicon-cog ng-if="node.terminal"
11
+ span.glyphicon ng-class="{'glyphicon-cog': node.access, 'glyphicon-exclamation-sign': !node.access}" ng-if="node.terminal"
12
12
  a ng-click="action.open(stack, node, collapsed, true); toggle(this)" ng-if="!node.terminal"
13
13
  span.glyphicon ng-class="{'glyphicon-play-circle': collapsed && node.access, 'glyphicon-download': !collapsed, 'glyphicon-exclamation-sign': collapsed && !node.access}"
14
14
  span< ng-bind="node.name + ' ' + node.number" ng-click="action.open(stack, node, collapsed, false)" style="cursor: pointer; {{action.number == node.number && 'font-weight: bold;'}}"
@@ -24,13 +24,13 @@ e2-action action="'inspect'"
24
24
  div bs-tabs="" bs-active-pane="actionTab" ng-init="actionTab = 0"
25
25
  div title="Action" bs-pane=""
26
26
  br
27
- pre ng-bind="action.action_json | json"
27
+ pre ng-bind="action.action_json | yaml"
28
28
  div title="Meta" bs-pane=""
29
29
  br
30
- pre ng-bind="action.meta_json | json"
30
+ pre ng-bind="action.meta_json | yaml"
31
31
  div title="State" bs-pane=""
32
32
  br
33
- pre ng-bind="action.action_state | json"
33
+ pre ng-bind="action.action_state | yaml"
34
34
 
35
35
  div title="Model" bs-pane=""
36
36
  .row
@@ -58,13 +58,13 @@ e2-action action="'inspect'"
58
58
  div bs-tabs="" bs-active-pane="modelTab" ng-init="modelTab = 0"
59
59
  div title="Model" bs-pane=""
60
60
  br
61
- pre ng-bind="action.model.info | json"
61
+ pre ng-bind="action.model.info | yaml"
62
62
  div title="Schema" bs-pane=""
63
63
  br
64
- pre ng-bind="action.model.schema | json"
64
+ pre ng-bind="action.model.schema | yaml"
65
65
  div title="Type info" bs-pane=""
66
66
  br
67
- pre ng-bind="action.model.type_info | json"
67
+ pre ng-bind="action.model.type_info | yaml"
68
68
  div title="Associations" bs-pane="" ng-if="action.model && action.has_assoc(action.model)"
69
69
  br
70
70
  .row
@@ -78,8 +78,39 @@ e2-action action="'inspect'"
78
78
  br
79
79
  .row
80
80
  .col-lg-12
81
- pre ng-bind="action.activeAssoc | json"
81
+ pre ng-bind="action.activeAssoc | yaml"
82
82
  div title="Globals" bs-pane=""
83
83
  .panel.panel-default
84
84
  .panel-body
85
- pre ng-bind="action.globals() | json"
85
+ pre ng-bind="action.globals() | yaml"
86
+
87
+ div title="Environment" bs-pane=""
88
+ .panel.panel-default
89
+ .panel-body
90
+ pre ng-bind="action.environment | yaml"
91
+
92
+ div title="Local storage" bs-pane=""
93
+ .panel.panel-default
94
+ .panel-body
95
+ pre ng-bind="action.local_storage | yaml"
96
+ pre ng-bind="action.local_storage.keys() | yaml"
97
+ a.btn.btn-default ng-click="action.local_storage.clearAll()"
98
+ | Clear
99
+
100
+ div title="Diagnostics" bs-pane=""
101
+ .panel.panel-default
102
+ .panel-body
103
+ .btn-group
104
+ a.btn.btn-default ng-click="action.globals().notification('Name', 'Body', undefined, 2000)"
105
+ | Push
106
+ a.btn.btn-default ng-click="action.globals().toastr().success('Name', 'Body')"
107
+ | Toastr
108
+ hr
109
+ a.btn.btn-default> ng-click="action.web_socket().send({number: action.number})"
110
+ | Websocket
111
+ | {{action.number}}
112
+ br
113
+ | Event
114
+ pre ng-bind="action.event | yaml"
115
+ | Socket
116
+ pre ng-bind="action.web_socket() | json"
File without changes
File without changes
File without changes
@@ -1,7 +1,7 @@
1
1
  .modal ng-class="action.meta.panel.class"
2
2
  .modal-dialog
3
3
  .modal-content
4
- .modal-header
4
+ .modal-header ng-if="::action.meta.panel.header"
5
5
  button.close type="button" ng-click="$hide()" &times;
6
6
  h4.modal-title ng-bind-html="action.meta.panel.title"
7
7
 
File without changes
@@ -1,5 +1,5 @@
1
1
  .panel.panel-default
2
- .panel-heading
2
+ .panel-heading ng-if="::action.meta.panel.header"
3
3
  h4.modal-title ng-bind-html="action.meta.panel.title"
4
4
  .panel-body
5
5
  | modal-content-to-replace
File without changes
@@ -1,10 +1,12 @@
1
1
  div
2
- .form-group ng-class="action.errors[f] && 'has-error'" ng-repeat="f in form_field_list track by $index" ng-if="!action.meta.info[f].hidden" ng-init="info = action.meta.info[f]"
3
- label.control-label ng-class="info.render.label_width || 'col-sm-3 col-md-3 col-lg-3'" for="{{f}}" ng-bind="::info.loc"
2
+ .form-group ng-class="action.errors[f] && 'has-error'" ng-repeat="f in form_field_list track by $index" ng-if="!action.meta.fields[f].hidden" ng-init="field = action.meta.fields[f]"
3
+ label.control-label ng-class="field.render.label_width || 'col-sm-3 col-md-3 col-lg-3'" for="{{f}}" ng-bind="::field.loc"
4
4
  .col-sm-9.col-md-9.col-lg-9
5
5
  .row
6
- e2-include template="info.render.template"
6
+ e2-include template="field.render.template"
7
7
  .row
8
+ .col-sm-12 ng-if="::field.description"
9
+ small.text-muted ng-bind="::field.description"
8
10
  .col-sm-12
9
11
  small.text-danger ng-repeat="e in action.errors[f] track by $index" ng-bind="e"
10
- div ng-if="info.hr": hr
12
+ div ng-if="::field.hr": hr
@@ -1,5 +1,5 @@
1
1
  form.form-horizontal role="form"
2
- span ng-init="form_field_list = action.meta.fields" ng-if="true"
2
+ span ng-init="form_field_list = action.meta.field_list" ng-if="true"
3
3
  e2-include template="action.meta.panel.field_template"
4
4
 
5
5
  span ng-if="action.alert": .alert.alert-danger[] {{action.alert}}
@@ -8,11 +8,12 @@ form.form-horizontal role="form"
8
8
  ng-init="action.activeTab = [0]"
9
9
  ng-model="action.activeTab"
10
10
  ]
11
- div.panel.panel-default ng-repeat="t in ::action.meta.tabs track by $index"
11
+ div ng-init="tabs = action.meta.tabs"
12
+ div.panel.panel-default ng-repeat="t in ::action.meta.tab_list track by $index" ng-if="!tabs[t].hidden"
12
13
  div.panel-heading role="tab"
13
14
  h4.panel-title
14
- a bs-collapse-toggle="" ng-click="" ng-bind="::t.loc"
15
- div.panel-collapse role="tabpanel" bs-collapse-target="" ng-init="form_field_list = t.fields"
15
+ a bs-collapse-toggle="" ng-click="" ng-bind="::tabs[t].loc"
16
+ div.panel-collapse role="tabpanel" bs-collapse-target="" ng-init="form_field_list = tabs[t].field_list"
16
17
  div.panel-body
17
18
  e2-include template="action.meta.panel.field_template"
18
19
 
@@ -1,8 +1,9 @@
1
1
  form.form-horizontal role="form"
2
2
  span ng-if="true"
3
3
  div bs-tabs="" bs-active-pane="action.activeTab" ng-init="action.activeTab = 0"
4
- div ng-repeat="t in ::action.meta.tabs track by $index" title="{{::t.loc}}" bs-pane=""
5
- div ng-if="!t.lazy || $index == action.activeTab" ng-init="form_field_list = t.fields"
4
+ div ng-init="tabs = action.meta.tabs"
5
+ div ng-repeat="t in ::action.meta.tab_list track by $index" title="{{::tabs[t].loc}}" bs-pane="" disabled="{{tabs[t].disabled}}" ng-if="!tabs[t].hidden"
6
+ div ng-if="!tabs[t].lazy || $index == action.activeTab" ng-init="form_field_list = tabs[t].field_list"
6
7
  br
7
8
  e2-include template="action.meta.panel.field_template"
8
9
 
File without changes
File without changes
@@ -1,12 +1,12 @@
1
1
  .panel.panel-default
2
2
  .panel-body
3
3
  form
4
- span ng-repeat="f in action.meta.search_fields track by $index" ng-if="!action.meta.info[f].hidden_search" ng-init="info = action.meta.info[f]"
5
- e2-include template="info.render.template"
4
+ span ng-repeat="f in action.meta.search_field_list track by $index" ng-if="!action.meta.fields[f].hidden_search" ng-init="field = action.meta.fields[f]"
5
+ e2-include template="field.render.template"
6
6
 
7
7
  .btn-group.btn-group-sm.pull-right
8
- button.btn.btn-default ng-click="action.load_new()"
8
+ button.btn.btn-default ng-click="action.load_new()" ng-hide="::action.meta.disable_search_button"
9
9
  span ng-bind="::action.meta.loc.search"
10
10
  span.glyphicon.glyphicon-zoom-in<
11
- button.btn.btn-default ng-click="action.search_reset()"
11
+ button.btn.btn-default ng-click="action.search_reset()" title="Reset"
12
12
  span.glyphicon.glyphicon-asterisk
@@ -9,18 +9,19 @@
9
9
  ng-init="action.ui_state.search_tab = (action.ui_state.search_tab + 0) <= 0 ? [0] : action.ui_state.search_tab"
10
10
  ng-model="action.ui_state.search_tab"
11
11
  ]
12
- div.panel.panel-default ng-repeat="t in ::action.meta.tabs track by $index"
12
+ div ng-init="tabs = action.meta.tabs"
13
+ div.panel.panel-default ng-repeat="t in ::action.meta.tab_list track by $index"
13
14
  div.panel-heading role="tab"
14
15
  h4.panel-title
15
- a bs-collapse-toggle="" ng-click="" ng-bind="::t.loc"
16
- div.panel-collapse role="tabpanel" bs-collapse-target="" ng-init="form_field_list = t.fields"
16
+ a bs-collapse-toggle="" ng-click="" ng-bind="::tabs[t].loc"
17
+ div.panel-collapse role="tabpanel" bs-collapse-target="" ng-init="form_field_list = tabs[t].field_list"
17
18
  div.panel-body
18
- span ng-repeat="f in t.fields track by $index" ng-if="!action.meta.info[f].hidden_search" ng-init="info = action.meta.info[f]"
19
- e2-include template="info.render.template"
19
+ span ng-repeat="f in form_field_list track by $index" ng-if="!action.meta.fields[f].hidden_search" ng-init="field = action.meta.fields[f]"
20
+ e2-include template="field.render.template"
20
21
 
21
22
  .btn-group.btn-group-sm.pull-right
22
- button.btn.btn-default ng-click="action.load_new()"
23
+ button.btn.btn-default ng-click="action.load_new()" ng-hide="::action.meta.disable_search_button"
23
24
  span ng-bind="::action.meta.loc.search"
24
25
  span.glyphicon.glyphicon-zoom-in<
25
- button.btn.btn-default ng-click="action.search_reset()"
26
+ button.btn.btn-default ng-click="action.search_reset()" title="Reset"
26
27
  span.glyphicon.glyphicon-asterisk
@@ -2,14 +2,15 @@
2
2
  .panel-body
3
3
  form
4
4
  div bs-tabs="" ng-init="action.ui_state.search_tab = (action.ui_state.search_tab + 0) <= 0 ? 0 : action.ui_state.search_tab" bs-active-pane="action.ui_state.search_tab"
5
- div ng-repeat="t in ::action.meta.tabs track by $index" title="{{::t.loc}}" bs-pane=""
5
+ div ng-init="tabs = action.meta.tabs"
6
+ div ng-repeat="t in ::action.meta.tab_list track by $index" title="{{::tabs[t].loc}}" bs-pane=""
6
7
  br
7
- span ng-repeat="f in t.fields track by $index" ng-if="!action.meta.info[f].hidden_search" ng-init="info = action.meta.info[f]"
8
- e2-include template="info.render.template"
8
+ span ng-repeat="f in tabs[t].field_list track by $index" ng-if="!action.meta.fields[f].hidden_search" ng-init="field = action.meta.fields[f]"
9
+ e2-include template="field.render.template"
9
10
 
10
11
  .btn-group.btn-group-sm.pull-right
11
- button.btn.btn-default ng-click="action.load_new()"
12
+ button.btn.btn-default ng-click="action.load_new()" ng-hide="::action.meta.disable_search_button"
12
13
  span ng-bind="::action.meta.loc.search"
13
14
  span.glyphicon.glyphicon-zoom-in<
14
- button.btn.btn-default ng-click="action.search_reset()"
15
+ button.btn.btn-default ng-click="action.search_reset()" title="Reset"
15
16
  span.glyphicon.glyphicon-asterisk
@@ -1,7 +1,7 @@
1
1
  div
2
2
  table.table.table-striped.table-condensed.table-hover
3
- tr ng-repeat="f in action.meta.fields track by $index" ng-hide="::action.meta.info[f].hidden"
4
- td ng-bind="::action.meta.info[f].loc"
3
+ tr ng-repeat="f in action.meta.field_list track by $index" ng-hide="::action.meta.fields[f].hidden"
4
+ td ng-bind="::action.meta.fields[f].loc"
5
5
  td
6
6
  div ng-bind-html="action.view_cell(action.record, f)"
7
7
 
@@ -7,15 +7,16 @@ div
7
7
  ng-init="action.activeTab = [0]"
8
8
  ng-model="action.activeTab"
9
9
  ]
10
- div.panel.panel-default ng-repeat="t in ::action.meta.tabs track by $index"
10
+ div ng-init="tabs = action.meta.tabs"
11
+ div.panel.panel-default ng-repeat="t in ::action.meta.tab_list track by $index"
11
12
  div.panel-heading role="tab"
12
13
  h4.panel-title
13
- a bs-collapse-toggle="" ng-click="" ng-bind="::t.loc"
14
+ a bs-collapse-toggle="" ng-click="" ng-bind="::tabs[t].loc"
14
15
  div.panel-collapse role="tabpanel" bs-collapse-target=""
15
16
  div.panel-body
16
17
  table.table.table-striped.table-condensed.table-hover
17
- tr ng-repeat="f in t.fields" ng-hide="::action.meta.info[f].hidden"
18
- td ng-bind="::action.meta.info[f].loc"
18
+ tr ng-repeat="f in tabs[t].field_list" ng-hide="::action.meta.fields[f].hidden"
19
+ td ng-bind="::action.meta.fields[f].loc"
19
20
  td
20
21
  div ng-bind-html="action.view_cell(action.record, f)"
21
22
 
@@ -1,10 +1,11 @@
1
1
  div
2
2
  div bs-tabs="" bs-active-pane="action.activeTab" ng-init="action.activeTab = 0"
3
- div ng-repeat="t in ::action.meta.tabs" title="{{::t.loc}}" bs-pane=""
3
+ div ng-init="tabs = action.meta.tabs"
4
+ div ng-repeat="t in ::action.meta.tab_list" title="{{::tabs[t].loc}}" bs-pane=""
4
5
  br
5
6
  table.table.table-striped.table-condensed.table-hover
6
- tr ng-repeat="f in t.fields" ng-hide="::action.meta.info[f].hidden"
7
- td ng-bind="::action.meta.info[f].loc"
7
+ tr ng-repeat="f in tabs[t].field_list" ng-hide="::action.meta.fields[f].hidden"
8
+ td ng-bind="::action.meta.fields[f].loc"
8
9
  td
9
10
  div ng-bind-html="action.view_cell(action.record, f)"
10
11