engine2 1.0.5 → 1.0.6

Sign up to get free protection for your applications and to get access to all the features.
Files changed (86) hide show
  1. checksums.yaml +5 -5
  2. data/app/actions.coffee +93 -58
  3. data/app/app.css +12 -0
  4. data/app/engine2.coffee +42 -24
  5. data/conf/message.yaml +1 -0
  6. data/conf/message_pl.yaml +1 -0
  7. data/config.coffee +2 -2
  8. data/engine2.gemspec +1 -1
  9. data/lib/engine2/action.rb +130 -126
  10. data/lib/engine2/action/array.rb +4 -4
  11. data/lib/engine2/action/decode.rb +13 -9
  12. data/lib/engine2/action/infra.rb +3 -3
  13. data/lib/engine2/action/list.rb +17 -10
  14. data/lib/engine2/action_node.rb +1 -2
  15. data/lib/engine2/core.rb +35 -7
  16. data/lib/engine2/model.rb +64 -15
  17. data/lib/engine2/post_bootstrap.rb +1 -1
  18. data/lib/engine2/pre_bootstrap.rb +10 -0
  19. data/lib/engine2/scheme.rb +2 -2
  20. data/lib/engine2/templates.rb +8 -0
  21. data/lib/engine2/type_info.rb +37 -15
  22. data/lib/engine2/version.rb +1 -1
  23. data/package.json +8 -5
  24. data/views/fields/blob.slim +1 -1
  25. data/views/fields/bs_select.slim +2 -2
  26. data/views/fields/bsselect_picker.slim +4 -4
  27. data/views/fields/bsselect_picker_opt.slim +5 -5
  28. data/views/fields/checkbox.slim +4 -4
  29. data/views/fields/checkbox_buttons.slim +3 -3
  30. data/views/fields/checkbox_buttons_opt.slim +3 -3
  31. data/views/fields/currency.slim +2 -2
  32. data/views/fields/date.slim +4 -4
  33. data/views/fields/date_range.slim +9 -9
  34. data/views/fields/date_time.slim +9 -9
  35. data/views/fields/datetime.slim +8 -8
  36. data/views/fields/decimal.slim +1 -1
  37. data/views/fields/decimal_date.slim +3 -3
  38. data/views/fields/decimal_time.slim +3 -3
  39. data/views/fields/email.slim +3 -3
  40. data/views/fields/file_store.slim +4 -4
  41. data/views/fields/input_text.slim +4 -4
  42. data/views/fields/integer.slim +1 -1
  43. data/views/fields/list_bsmselect.slim +20 -0
  44. data/views/fields/list_bsselect.slim +5 -5
  45. data/views/fields/list_bsselect_opt.slim +6 -6
  46. data/views/fields/list_buttons.slim +1 -1
  47. data/views/fields/list_buttons_opt.slim +2 -2
  48. data/views/fields/list_select.slim +4 -4
  49. data/views/fields/list_select_opt.slim +5 -5
  50. data/views/fields/password.slim +4 -4
  51. data/views/fields/radio_checkbox.slim +3 -3
  52. data/views/fields/scaffold.slim +1 -1
  53. data/views/fields/scaffold_picker.slim +5 -5
  54. data/views/fields/select_picker.slim +3 -3
  55. data/views/fields/select_picker_opt.slim +4 -4
  56. data/views/fields/text_area.slim +3 -3
  57. data/views/fields/time.slim +5 -4
  58. data/views/fields/typeahead_picker.slim +5 -5
  59. data/views/scaffold/fields.slim +4 -4
  60. data/views/scaffold/form.slim +1 -1
  61. data/views/scaffold/form_collapse.slim +4 -3
  62. data/views/scaffold/form_tabs.slim +3 -2
  63. data/views/scaffold/search.slim +2 -2
  64. data/views/scaffold/search_collapse.slim +6 -5
  65. data/views/scaffold/search_tabs.slim +4 -3
  66. data/views/scaffold/view.slim +2 -2
  67. data/views/scaffold/view_collapse.slim +5 -4
  68. data/views/scaffold/view_tabs.slim +4 -3
  69. data/views/search_fields/bsmselect_picker.slim +4 -4
  70. data/views/search_fields/bsselect_picker.slim +4 -4
  71. data/views/search_fields/checkbox.slim +3 -3
  72. data/views/search_fields/checkbox2.slim +5 -5
  73. data/views/search_fields/checkbox_buttons.slim +3 -3
  74. data/views/search_fields/date_range.slim +8 -8
  75. data/views/search_fields/decimal_date_range.slim +5 -5
  76. data/views/search_fields/input_text.slim +2 -2
  77. data/views/search_fields/integer.slim +1 -1
  78. data/views/search_fields/integer_range.slim +2 -2
  79. data/views/search_fields/list_bsmselect.slim +4 -4
  80. data/views/search_fields/list_bsselect.slim +4 -4
  81. data/views/search_fields/list_buttons.slim +2 -2
  82. data/views/search_fields/list_select.slim +3 -3
  83. data/views/search_fields/scaffold_picker.slim +2 -2
  84. data/views/search_fields/select_picker.slim +3 -3
  85. data/views/search_fields/typeahead_picker.slim +4 -4
  86. metadata +6 -5
@@ -1,12 +1,12 @@
1
1
  /.col-lg-8.col-md-10.col-sm-12
2
- div e2-input-cols="{{::info.render.length}}"
2
+ div e2-input-cols="{{::field.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  input [
5
5
  type="text"
6
6
  ng-model="action.record[f]"
7
- maxlength="{{info.render.length}}"
7
+ maxlength="{{field.render.length}}"
8
8
  class="form-control"
9
- ng-disabled="info.disabled"
9
+ ng-disabled="field.disabled"
10
10
  e2-field=""
11
11
  ]
12
12
  span.input-group-addon @
@@ -27,18 +27,18 @@ e2-action action="[f + '_file_store!']"
27
27
  .progress.progress-striped
28
28
  .progress-bar.progress-bar-success ng-style="{'width': action.progress + '%'}"
29
29
 
30
- div ng-if="info.render.multiple"
30
+ div ng-if="field.render.multiple"
31
31
  input [
32
32
  type="file"
33
- ng-disabled="info.disabled"
33
+ ng-disabled="field.disabled"
34
34
  ngf-select="action.select($files)"
35
35
  ngf-multiple="true"
36
36
  ]
37
37
 
38
- div ng-if="!info.render.multiple"
38
+ div ng-if="!field.render.multiple"
39
39
  input [
40
40
  type="file"
41
- ng-disabled="info.disabled"
41
+ ng-disabled="field.disabled"
42
42
  ngf-select="action.select($files)"
43
43
  ngf-multiple="false"
44
44
  ]
@@ -1,13 +1,13 @@
1
1
  /.col-lg-8.col-md-9.col-sm-12
2
- div e2-input-cols="{{::info.render.length}}"
2
+ div e2-input-cols="{{::field.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  input [
5
5
  type="text"
6
6
  ng-model="action.record[f]"
7
- maxlength="{{::info.render.length}}"
8
- ng-disabled="info.disabled"
7
+ maxlength="{{::field.render.length}}"
8
+ ng-disabled="field.disabled"
9
9
  class="form-control input-sm"
10
- ng-class="::info.render.class"
10
+ ng-class="::field.render.class"
11
11
  e2-field=""
12
12
  ]
13
13
  span.input-group-addon: span.glyphicon.glyphicon-pencil
@@ -3,7 +3,7 @@
3
3
  input [
4
4
  type="text"
5
5
  ng-model="action.record[f]"
6
- ng-disabled="info.disabled"
6
+ ng-disabled="field.disabled"
7
7
  class="form-control"
8
8
  e2-field=""
9
9
  e2-integer=""
@@ -0,0 +1,20 @@
1
+ /.col-lg-7.col-md-8.col-sm-12
2
+ div e2-input-cols="{{::field.render.length}}"
3
+ button.btn.btn-default.btn-sm [
4
+ type="button"
5
+ ng-model="action.record[f]"
6
+ bs-options="v[0] as v[1] for v in field.render.values"
7
+ data-html="true"
8
+ ng-disabled="field.disabled"
9
+ ng-class="field.render.class"
10
+ class="form-control input-sm"
11
+
12
+ data-animation="{{::field.render.animation}}"
13
+ data-placeholder="..."
14
+ data-multiple="1"
15
+ data-max-length="{{::field.render.max_length}}"
16
+ data-max-length-html="{{::field.render.max_length_html}}"
17
+ bs-select=""
18
+
19
+ e2-field=""
20
+ ]
@@ -1,15 +1,15 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::info.render.length}}"
2
+ div e2-input-cols="{{::field.render.length}}"
3
3
  button.btn.btn-default.btn-sm [
4
4
  type="button"
5
5
  ng-model="action.record[f]"
6
- bs-options="v[0] as v[1] for v in info.render.list"
6
+ bs-options="v[0] as v[1] for v in field.render.values"
7
7
  data-html="true"
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 input-sm"
11
11
 
12
- data-animation="{{::info.render.animation}}"
12
+ data-animation="{{::field.render.animation}}"
13
13
  data-placeholder="..."
14
14
  bs-select=""
15
15
 
@@ -1,20 +1,20 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::info.render.length}}"
2
+ div e2-input-cols="{{::field.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  button.btn.btn-default [
5
5
  type="button"
6
6
  ng-model="action.record[f]"
7
- bs-options="v[0] as v[1] for v in info.render.list"
7
+ bs-options="v[0] as v[1] for v in field.render.values"
8
8
  data-html="true"
9
- ng-disabled="info.disabled"
10
- ng-class="info.render.class"
9
+ ng-disabled="field.disabled"
10
+ ng-class="field.render.class"
11
11
  class="form-control input-sm"
12
12
  e2-field=""
13
13
 
14
- data-animation="{{::info.render.animation}}"
14
+ data-animation="{{::field.render.animation}}"
15
15
  data-placeholder="..."
16
16
  bs-select=""
17
17
  ]
18
18
  .input-group-btn
19
- a.btn.btn-default ng-disabled="info.disabled || action.record[f] == null" ng-click="action.record[f] = null"
19
+ a.btn.btn-default ng-disabled="field.disabled || action.record[f] == null" ng-click="action.record[f] = null"
20
20
  span.glyphicon.glyphicon-remove
@@ -1,3 +1,3 @@
1
1
  .col-lg-12
2
2
  .btn-group.btn-group-sm ng-model="action.record[f]" e2-field=""
3
- a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in info.render.list" ng-bind-html="v[1]" ng-disabled="info.disabled"
3
+ a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in field.render.values" ng-bind-html="v[1]" ng-disabled="field.disabled"
@@ -1,5 +1,5 @@
1
1
  .col-lg-12
2
2
  .btn-group.btn-group-sm ng-model="action.record[f]" e2-field=""
3
- a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in info.render.list" ng-bind-html="v[1]" ng-disabled="info.disabled"
4
- a.btn.btn-default ng-disabled="action.record[f] == null || info.disabled" ng-click="action.record[f] = null"
3
+ a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in field.render.values" ng-bind-html="v[1]" ng-disabled="field.disabled"
4
+ a.btn.btn-default ng-disabled="action.record[f] == null || field.disabled" ng-click="action.record[f] = null"
5
5
  span.glyphicon.glyphicon-remove
@@ -1,10 +1,10 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::info.render.length}}"
2
+ div e2-input-cols="{{::field.render.length}}"
3
3
  select.btn.btn-default.btn-sm [
4
4
  ng-model="action.record[f]"
5
- ng-options="v[0] as v[1] for v in info.render.list"
6
- ng-disabled="info.disabled"
7
- ng-class="info.render.class"
5
+ ng-options="v[0] as v[1] for v in field.render.values"
6
+ ng-disabled="field.disabled"
7
+ ng-class="field.render.class"
8
8
  class="form-control input-sm"
9
9
  e2-field=""
10
10
  ]
@@ -1,14 +1,14 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::info.render.length}}"
2
+ div e2-input-cols="{{::field.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  select.btn.btn-default.btn-sm [
5
5
  ng-model="action.record[f]"
6
- ng-options="v[0] as v[1] for v in info.render.list"
7
- ng-disabled="info.disabled"
8
- ng-class="info.render.class"
6
+ ng-options="v[0] as v[1] for v in field.render.values"
7
+ ng-disabled="field.disabled"
8
+ ng-class="field.render.class"
9
9
  class="form-control input-sm"
10
10
  e2-field=""
11
11
  ]
12
12
  .input-group-btn
13
- a.btn.btn-default ng-disabled="info.disabled || action.record[f] == null" ng-click="action.record[f] = null"
13
+ a.btn.btn-default ng-disabled="field.disabled || action.record[f] == null" ng-click="action.record[f] = null"
14
14
  span.glyphicon.glyphicon-remove
@@ -1,13 +1,13 @@
1
1
  /.col-lg-8.col-md-9.col-sm-12
2
- div e2-input-cols="{{::info.render.length}}"
2
+ div e2-input-cols="{{::field.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  input [
5
5
  type="password"
6
6
  ng-model="action.record[f]"
7
- maxlength="{{::info.render.length}}"
8
- ng-disabled="info.disabled"
7
+ maxlength="{{::field.render.length}}"
8
+ ng-disabled="field.disabled"
9
9
  class="form-control input-sm"
10
- ng-class="::info.render.class"
10
+ ng-class="::field.render.class"
11
11
  e2-field=""
12
12
  ]
13
13
  span.input-group-addon: span.glyphicon.glyphicon-asterisk
@@ -1,10 +1,10 @@
1
1
  .col-lg-3
2
2
  .btn-group.btn-group-sm [
3
- ng-init="action.record[f] = action.record[f] || info.render.false_value"
3
+ ng-init="action.record[f] = action.record[f] || field.render.false_value"
4
4
  ng-model="action.record[f]"
5
5
  bs-buttons-radio=""
6
6
  e2-field=""
7
7
  ]
8
8
 
9
- button.btn.btn-default type="button" value="{{::info.render.true_value}}": span.glyphicon.glyphicon-ok
10
- button.btn.btn-default type="button" value="{{::info.render.false_value}}": span.glyphicon.glyphicon-remove
9
+ button.btn.btn-default type="button" value="{{::field.render.true_value}}": span.glyphicon.glyphicon-ok
10
+ button.btn.btn-default type="button" value="{{::field.render.false_value}}": span.glyphicon.glyphicon-remove
@@ -1,2 +1,2 @@
1
1
  .col-lg-10.col-md-10.col-sm-10
2
- e2-action action="info.assoc"
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
@@ -2,9 +2,9 @@
2
2
  textarea [
3
3
  spellcheck="false"
4
4
  ng-model="action.record[f]"
5
- cols="{{info.render.cols}}"
6
- rows="{{info.render.rows}}"
7
- ng-disabled="info.disabled"
5
+ cols="{{field.render.cols}}"
6
+ rows="{{field.render.rows}}"
7
+ ng-disabled="field.disabled"
8
8
  class="form-control"
9
9
  e2-field=""
10
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,4 +1,4 @@
1
- e2-action action="[info.assoc, 'typeahead']"
1
+ e2-action action="[field.assoc, 'typeahead']"
2
2
  .col-lg-7.col-md-8.col-sm-12
3
3
  .input-group.input-group-sm
4
4
  input.btn.btn-default [
@@ -7,11 +7,11 @@ e2-action action="[info.assoc, 'typeahead']"
7
7
  bs-options="v.value for v in action.load($viewValue)"
8
8
  ng-keypress="action.key_pressed = true"
9
9
 
10
- ng-disabled="info.disabled"
11
- ng-class="info.render.class"
10
+ ng-disabled="field.disabled"
11
+ ng-class="field.render.class"
12
12
  class="form-control"
13
13
 
14
- data-animation="{{::info.render.animation}}"
14
+ data-animation="{{::field.render.animation}}"
15
15
  placeholder="..."
16
16
  data-html="true"
17
17
  data-limit="10"
@@ -20,5 +20,5 @@ e2-action action="[info.assoc, 'typeahead']"
20
20
  ]
21
21
  span.input-group-addon: span.glyphicon.glyphicon-font
22
22
  .input-group-btn
23
- a.btn.btn-default ng-disabled="info.disabled || action.decode == null" ng-click="!info.disabled && action.reset()"
23
+ a.btn.btn-default ng-disabled="field.disabled || action.decode == null" ng-click="!field.disabled && action.reset()"
24
24
  span.glyphicon.glyphicon-off
@@ -1,10 +1,10 @@
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
8
  .col-sm-12
9
9
  small.text-danger ng-repeat="e in action.errors[f] track by $index" ng-bind="e"
10
- div ng-if="info.hr": hr
10
+ 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
 
@@ -1,8 +1,8 @@
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
8
  button.btn.btn-default ng-click="action.load_new()"
@@ -9,14 +9,15 @@
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
23
  button.btn.btn-default ng-click="action.load_new()"
@@ -2,10 +2,11 @@
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
12
  button.btn.btn-default ng-click="action.load_new()"