engine2 1.0.4 → 1.0.9

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