engine2 1.0.3 → 1.0.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (133) hide show
  1. checksums.yaml +4 -4
  2. data/Rakefile +3 -117
  3. data/{views → app}/app.coffee +0 -0
  4. data/{public/css → app}/app.css +203 -196
  5. data/{views → app}/engine2.coffee +111 -60
  6. data/{views → app}/engine2actions.coffee +47 -28
  7. data/bower.json +13 -0
  8. data/conf/message.yaml +2 -1
  9. data/conf/message_pl.yaml +2 -1
  10. data/config.coffee +62 -0
  11. data/engine2.gemspec +2 -5
  12. data/lib/engine2.rb +1 -1
  13. data/lib/engine2/action.rb +9 -24
  14. data/lib/engine2/core.rb +9 -8
  15. data/lib/engine2/handler.rb +1 -5
  16. data/lib/engine2/meta.rb +61 -24
  17. data/lib/engine2/meta/array_meta.rb +82 -0
  18. data/lib/engine2/meta/decode_meta.rb +1 -1
  19. data/lib/engine2/meta/infra_meta.rb +21 -26
  20. data/lib/engine2/meta/list_meta.rb +2 -3
  21. data/lib/engine2/model.rb +5 -5
  22. data/lib/engine2/pre_bootstrap.rb +9 -1
  23. data/lib/engine2/scheme.rb +4 -0
  24. data/lib/engine2/type_info.rb +8 -1
  25. data/lib/engine2/version.rb +1 -1
  26. data/package.json +38 -0
  27. data/public/img/ajax-loader.gif +0 -0
  28. data/views/fields/blob.slim +4 -5
  29. data/views/fields/bs_select.slim +2 -2
  30. data/views/fields/bsselect_picker.slim +1 -2
  31. data/views/fields/bsselect_picker_opt.slim +1 -2
  32. data/views/fields/checkbox.slim +1 -1
  33. data/views/fields/checkbox_buttons.slim +1 -1
  34. data/views/fields/checkbox_buttons_opt.slim +1 -1
  35. data/views/fields/currency.slim +2 -2
  36. data/views/fields/date.slim +0 -1
  37. data/views/fields/date_range.slim +0 -1
  38. data/views/fields/date_time.slim +0 -1
  39. data/views/fields/datetime.slim +0 -2
  40. data/views/fields/decimal.slim +0 -1
  41. data/views/fields/decimal_date.slim +0 -1
  42. data/views/fields/decimal_time.slim +0 -1
  43. data/views/fields/email.slim +1 -2
  44. data/views/fields/file_store.slim +1 -1
  45. data/views/fields/input_text.slim +1 -2
  46. data/views/fields/integer.slim +1 -1
  47. data/views/fields/list_bsselect.slim +1 -2
  48. data/views/fields/list_bsselect_opt.slim +2 -3
  49. data/views/fields/list_buttons.slim +1 -1
  50. data/views/fields/list_buttons_opt.slim +1 -1
  51. data/views/fields/list_select.slim +1 -2
  52. data/views/fields/list_select_opt.slim +2 -3
  53. data/views/fields/password.slim +1 -2
  54. data/views/fields/radio_checkbox.slim +1 -1
  55. data/views/fields/scaffold.slim +1 -1
  56. data/views/fields/scaffold_picker.slim +1 -2
  57. data/views/fields/select_picker.slim +1 -2
  58. data/views/fields/select_picker_opt.slim +1 -2
  59. data/views/fields/text_area.slim +0 -1
  60. data/views/fields/time.slim +0 -1
  61. data/views/fields/typeahead_picker.slim +1 -2
  62. data/views/index.slim +4 -8
  63. data/views/scaffold/fields.slim +4 -4
  64. data/views/scaffold/form.slim +1 -7
  65. data/views/scaffold/form_collapse.slim +19 -0
  66. data/views/scaffold/form_tabs.slim +9 -0
  67. data/views/scaffold/list.slim +1 -12
  68. data/views/scaffold/search.slim +2 -9
  69. data/views/scaffold/search_collapse.slim +26 -0
  70. data/views/scaffold/search_tabs.slim +15 -0
  71. data/views/scaffold/view.slim +5 -15
  72. data/views/scaffold/view_collapse.slim +22 -0
  73. data/views/scaffold/view_tabs.slim +11 -0
  74. data/views/search_fields/bsmselect_picker.slim +1 -2
  75. data/views/search_fields/bsselect_picker.slim +1 -2
  76. data/views/search_fields/checkbox.slim +3 -3
  77. data/views/search_fields/checkbox2.slim +5 -5
  78. data/views/search_fields/checkbox_buttons.slim +2 -2
  79. data/views/search_fields/date_range.slim +0 -2
  80. data/views/search_fields/decimal_date_range.slim +5 -5
  81. data/views/search_fields/input_text.slim +2 -2
  82. data/views/search_fields/integer.slim +1 -1
  83. data/views/search_fields/integer_range.slim +2 -2
  84. data/views/search_fields/list_bsmselect.slim +1 -1
  85. data/views/search_fields/list_bsselect.slim +0 -1
  86. data/views/search_fields/list_buttons.slim +2 -2
  87. data/views/search_fields/list_select.slim +1 -2
  88. data/views/search_fields/scaffold_picker.slim +1 -2
  89. data/views/search_fields/select_picker.slim +1 -2
  90. data/views/search_fields/typeahead_picker.slim +1 -2
  91. metadata +29 -103
  92. data/public/assets/javascripts.js +0 -13
  93. data/public/assets/styles.css +0 -4
  94. data/public/css/angular-motion.css +0 -1022
  95. data/public/css/angular-ui-tree.min.css +0 -1
  96. data/public/css/bootstrap-additions.css +0 -1560
  97. data/public/css/bootstrap.min.css +0 -11
  98. data/public/css/font-awesome.min.css +0 -4
  99. data/public/fonts/FontAwesome.otf +0 -0
  100. data/public/fonts/fontawesome-webfont.eot +0 -0
  101. data/public/fonts/fontawesome-webfont.svg +0 -655
  102. data/public/fonts/fontawesome-webfont.ttf +0 -0
  103. data/public/fonts/fontawesome-webfont.woff +0 -0
  104. data/public/fonts/fontawesome-webfont.woff2 +0 -0
  105. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  106. data/public/fonts/glyphicons-halflings-regular.svg +0 -288
  107. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  108. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  109. data/public/fonts/glyphicons-halflings-regular.woff2 +0 -0
  110. data/public/images/file.png +0 -0
  111. data/public/images/folder-closed.png +0 -0
  112. data/public/images/folder.png +0 -0
  113. data/public/images/node-closed-2.png +0 -0
  114. data/public/images/node-closed-light.png +0 -0
  115. data/public/images/node-closed.png +0 -0
  116. data/public/images/node-opened-2.png +0 -0
  117. data/public/images/node-opened-light.png +0 -0
  118. data/public/images/node-opened.png +0 -0
  119. data/public/img/ajax-loader-light.gif +0 -0
  120. data/public/js/angular-animate.js +0 -4147
  121. data/public/js/angular-cookies.js +0 -322
  122. data/public/js/angular-local-storage.js +0 -455
  123. data/public/js/angular-route.js +0 -1025
  124. data/public/js/angular-sanitize.js +0 -717
  125. data/public/js/angular-strap.js +0 -4339
  126. data/public/js/angular-strap.tpl.js +0 -43
  127. data/public/js/angular-ui-tree.js +0 -1569
  128. data/public/js/angular.js +0 -30868
  129. data/public/js/i18n/angular-locale_pl.js +0 -115
  130. data/public/js/lodash.custom.min.js +0 -99
  131. data/public/js/ng-file-upload-shim.min.js +0 -2
  132. data/public/js/ng-file-upload.min.js +0 -3
  133. data/views/engine2templates.coffee +0 -0
@@ -2,7 +2,6 @@
2
2
  .col-lg-3.col-md-3.col-sm-5
3
3
  .input-group.input-group-sm
4
4
  input.btn.btn-default [
5
- ng-init="info = action.meta.info[f]"
6
5
  type="text"
7
6
  class="form-control"
8
7
  ng-model="value"
@@ -2,7 +2,6 @@
2
2
  .col-lg-3.col-md-3.col-sm-5
3
3
  .input-group.input-group-sm
4
4
  input.btn.btn-default [
5
- ng-init="info = action.meta.info[f]"
6
5
  type="text"
7
6
  class="form-control"
8
7
  ng-model="value.value"
@@ -23,7 +22,6 @@
23
22
  .col-lg-3.col-md-3.col-sm-5
24
23
  .input-group.input-group-sm
25
24
  input.btn.btn-default [
26
- ng-init="info = action.meta.info[f]"
27
25
  type="text"
28
26
  class="form-control"
29
27
  ng-model="value.value"
@@ -1,7 +1,6 @@
1
1
  .col-lg-4.col-md-5.col-sm-5
2
2
  .input-group.input-group-sm
3
3
  input [
4
- ng-init="info = action.meta.info[f]"
5
4
  type="text"
6
5
  ng-model="action.record[f]"
7
6
  ng-disabled="info.disabled"
@@ -1,7 +1,6 @@
1
1
  .col-lg-3.col-md-3.col-sm-5
2
2
  .input-group.input-group-sm
3
3
  input [
4
- ng-init="info = action.meta.info[f]"
5
4
  xe2-decimal-date-picker=""
6
5
  type="text"
7
6
  class="form-control"
@@ -1,7 +1,6 @@
1
1
  .col-lg-3.col-md-3.col-sm-5
2
2
  .input-group.input-group-sm
3
3
  input [
4
- ng-init="info = action.meta.info[f]"
5
4
  xe2-decimal-time-picker="" mode="record"
6
5
  type="text"
7
6
  class="form-control"
@@ -1,8 +1,7 @@
1
1
  /.col-lg-8.col-md-10.col-sm-12
2
- div e2-input-cols="{{action.meta.info[f].render.length}}"
2
+ div e2-input-cols="{{::info.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  input [
5
- ng-init="info = action.meta.info[f]"
6
5
  type="text"
7
6
  ng-model="action.record[f]"
8
7
  maxlength="{{info.render.length}}"
@@ -18,7 +18,7 @@ e2-action action="[f + '_file_store!']"
18
18
 
19
19
  td ng-bind="f.uploaded"
20
20
 
21
- div ng-init="info = action.meta.info[f]"
21
+ div
22
22
  input [
23
23
  type="hidden"
24
24
  ng-model="action.record[f]"
@@ -1,8 +1,7 @@
1
1
  /.col-lg-8.col-md-9.col-sm-12
2
- div e2-input-cols="{{::action.meta.info[f].render.length}}"
2
+ div e2-input-cols="{{::info.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  input [
5
- ng-init="info = action.meta.info[f]"
6
5
  type="text"
7
6
  ng-model="action.record[f]"
8
7
  maxlength="{{::info.render.length}}"
@@ -3,7 +3,7 @@
3
3
  input [
4
4
  type="text"
5
5
  ng-model="action.record[f]"
6
- ng-disabled="action.meta.info[f].disabled"
6
+ ng-disabled="info.disabled"
7
7
  class="form-control"
8
8
  e2-field=""
9
9
  e2-integer=""
@@ -1,8 +1,7 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::action.meta.info[f].render.length}}"
2
+ div e2-input-cols="{{::info.render.length}}"
3
3
  button.btn.btn-default.btn-sm [
4
4
  type="button"
5
- ng-init="info = action.meta.info[f]"
6
5
  ng-model="action.record[f]"
7
6
  bs-options="v[0] as v[1] for v in info.render.list"
8
7
  data-html="true"
@@ -1,9 +1,8 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::action.meta.info[f].render.length}}"
2
+ div e2-input-cols="{{::info.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  button.btn.btn-default [
5
5
  type="button"
6
- ng-init="info = action.meta.info[f]"
7
6
  ng-model="action.record[f]"
8
7
  bs-options="v[0] as v[1] for v in info.render.list"
9
8
  data-html="true"
@@ -17,5 +16,5 @@ div e2-input-cols="{{::action.meta.info[f].render.length}}"
17
16
  bs-select=""
18
17
  ]
19
18
  .input-group-btn
20
- a.btn.btn-default ng-disabled="action.meta.info[f].disabled || action.record[f] == null" ng-click="action.record[f] = null"
19
+ a.btn.btn-default ng-disabled="info.disabled || action.record[f] == null" ng-click="action.record[f] = null"
21
20
  span.glyphicon.glyphicon-remove
@@ -1,3 +1,3 @@
1
1
  .col-lg-12
2
- .btn-group.btn-group-sm ng-init="info = action.meta.info[f]" ng-model="action.record[f]" e2-field=""
2
+ .btn-group.btn-group-sm ng-model="action.record[f]" e2-field=""
3
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"
@@ -1,5 +1,5 @@
1
1
  .col-lg-12
2
- .btn-group.btn-group-sm ng-init="info = action.meta.info[f]" ng-model="action.record[f]" e2-field=""
2
+ .btn-group.btn-group-sm ng-model="action.record[f]" e2-field=""
3
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
4
  a.btn.btn-default ng-disabled="action.record[f] == null || info.disabled" ng-click="action.record[f] = null"
5
5
  span.glyphicon.glyphicon-remove
@@ -1,7 +1,6 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::action.meta.info[f].render.length}}"
2
+ div e2-input-cols="{{::info.render.length}}"
3
3
  select.btn.btn-default.btn-sm [
4
- ng-init="info = action.meta.info[f]"
5
4
  ng-model="action.record[f]"
6
5
  ng-options="v[0] as v[1] for v in info.render.list"
7
6
  ng-disabled="info.disabled"
@@ -1,8 +1,7 @@
1
1
  /.col-lg-7.col-md-8.col-sm-12
2
- div e2-input-cols="{{::action.meta.info[f].render.length}}"
2
+ div e2-input-cols="{{::info.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  select.btn.btn-default.btn-sm [
5
- ng-init="info = action.meta.info[f]"
6
5
  ng-model="action.record[f]"
7
6
  ng-options="v[0] as v[1] for v in info.render.list"
8
7
  ng-disabled="info.disabled"
@@ -11,5 +10,5 @@ div e2-input-cols="{{::action.meta.info[f].render.length}}"
11
10
  e2-field=""
12
11
  ]
13
12
  .input-group-btn
14
- a.btn.btn-default ng-disabled="action.meta.info[f].disabled || action.record[f] == null" ng-click="action.record[f] = null"
13
+ a.btn.btn-default ng-disabled="info.disabled || action.record[f] == null" ng-click="action.record[f] = null"
15
14
  span.glyphicon.glyphicon-remove
@@ -1,8 +1,7 @@
1
1
  /.col-lg-8.col-md-9.col-sm-12
2
- div e2-input-cols="{{::action.meta.info[f].render.length}}"
2
+ div e2-input-cols="{{::info.render.length}}"
3
3
  .input-group.input-group-sm
4
4
  input [
5
- ng-init="info = action.meta.info[f]"
6
5
  type="password"
7
6
  ng-model="action.record[f]"
8
7
  maxlength="{{::info.render.length}}"
@@ -1,6 +1,6 @@
1
1
  .col-lg-3
2
2
  .btn-group.btn-group-sm [
3
- ng-init="info = action.meta.info[f]; action.record[f] = action.record[f] || info.render.false_value"
3
+ ng-init="action.record[f] = action.record[f] || info.render.false_value"
4
4
  ng-model="action.record[f]"
5
5
  bs-buttons-radio=""
6
6
  e2-field=""
@@ -1,2 +1,2 @@
1
1
  .col-lg-10.col-md-10.col-sm-10
2
- e2-action action="action.meta.info[f].assoc"
2
+ e2-action action="info.assoc"
@@ -1,8 +1,7 @@
1
- e2-action action="[action.meta.info[f].assoc, 'decode']"
1
+ e2-action action="[info.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-init="info = action.meta.info[f]"
6
5
  ng-disabled="info.disabled"
7
6
  class="form-control"
8
7
  ng-click="!info.disabled && action.open()"
@@ -1,7 +1,6 @@
1
- e2-action action="[action.meta.info[f].assoc, 'list']"
1
+ e2-action action="[info.assoc, 'list']"
2
2
  .col-lg-7.col-md-8.col-sm-12
3
3
  select.btn.btn-default.btn-sm [
4
- ng-init="info = action.meta.info[f]"
5
4
  ng-model="action.selected"
6
5
  ng-options="v.id as v.value for v in action.values"
7
6
  ng-change="action.change()"
@@ -1,8 +1,7 @@
1
- e2-action action="[action.meta.info[f].assoc, 'list']"
1
+ e2-action action="[info.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
- ng-init="info = action.meta.info[f]"
6
5
  ng-model="action.selected"
7
6
  ng-options="v.id as v.value for v in action.values"
8
7
  ng-change="action.change()"
@@ -1,6 +1,5 @@
1
1
  .col-lg-11
2
2
  textarea [
3
- ng-init="info = action.meta.info[f]"
4
3
  ng-model="action.record[f]"
5
4
  cols="{{info.render.cols}}"
6
5
  rows="{{info.render.rows}}"
@@ -1,7 +1,6 @@
1
1
  .col-lg-3.col-md-3.col-sm-5
2
2
  .input-group.input-group-sm
3
3
  input.btn.btn-default [
4
- ng-init="info = action.meta.info[f]"
5
4
  type="text"
6
5
  class="form-control"
7
6
  ng-model="value"
@@ -1,9 +1,8 @@
1
- e2-action action="[action.meta.info[f].assoc, 'typeahead']"
1
+ e2-action action="[info.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 [
5
5
  type="text"
6
- ng-init="info = action.meta.info[f]"
7
6
  ng-model="action.decode"
8
7
  bs-options="v.value for v in action.load($viewValue)"
9
8
  ng-keypress="action.key_pressed = true"
@@ -3,15 +3,11 @@ html
3
3
  head
4
4
  title App
5
5
  meta http-equiv="x-ua-compatible" content="IE=edge"
6
- link rel="stylesheet" href="css/bootstrap.min.css"
7
- link rel="stylesheet" href="assets/styles.css"
8
- link rel="stylesheet" href="css/app.css"
9
6
 
10
- script type="text/javascript" src="assets/javascripts.js"
11
- script type="text/javascript" src="js/engine2.js"
12
- script type="text/javascript" src="js/engine2actions.js"
13
- script type="text/javascript" src="js/engine2templates.js"
14
- script type="text/javascript" src="js/app.js"
7
+ link rel="stylesheet" href="engine2vendor.css"
8
+ link rel="stylesheet" href="engine2app.css"
9
+ script type="text/javascript" src="engine2vendor.js"
10
+ script type="text/javascript" src="engine2.js"
15
11
 
16
12
  body ng-app="app"
17
13
  e2-action ng-controller="AppController"
@@ -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"
3
- label.control-label ng-class="action.meta.info[f].render.label_width || 'col-sm-3 col-md-3 col-lg-3'" for="{{f}}" ng-bind="::action.meta.info[f].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.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"
4
4
  .col-sm-9.col-md-9.col-lg-9
5
5
  .row
6
- e2-include template="action.meta.info[f].render.template"
6
+ e2-include template="info.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="action.meta.info[f].hr": hr
10
+ div ng-if="info.hr": hr
@@ -1,11 +1,5 @@
1
1
  form.form-horizontal role="form"
2
- span ng-if="::!action.meta.tabs" ng-init="form_field_list = action.meta.fields"
2
+ span ng-init="form_field_list = action.meta.fields" ng-if="true"
3
3
  e2-include template="action.meta.panel.field_template"
4
- span ng-if="::action.meta.tabs"
5
- div bs-tabs="" bs-active-pane="action.activeTab" ng-init="action.activeTab = 0"
6
- div ng-repeat="t in ::action.meta.tabs track by $index" title="{{::t.loc}}" bs-pane=""
7
- div ng-if="!t.lazy || $index == action.activeTab" ng-init="form_field_list = t.fields"
8
- br
9
- e2-include template="action.meta.panel.field_template"
10
4
 
11
5
  span ng-if="action.alert": .alert.alert-danger[] {{action.alert}}
@@ -0,0 +1,19 @@
1
+ form.form-horizontal role="form"
2
+ span ng-if="true"
3
+ div.panel-group[
4
+ bs-collapse=""
5
+ role="tablist"
6
+ data-allow-multiple="true"
7
+ aria-multiselectable="true"
8
+ ng-init="action.activeTab = [0]"
9
+ ng-model="action.activeTab"
10
+ ]
11
+ div.panel.panel-default ng-repeat="t in ::action.meta.tabs track by $index"
12
+ div.panel-heading role="tab"
13
+ 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"
16
+ div.panel-body
17
+ e2-include template="action.meta.panel.field_template"
18
+
19
+ span ng-if="action.alert": .alert.alert-danger[] {{action.alert}}
@@ -0,0 +1,9 @@
1
+ form.form-horizontal role="form"
2
+ span ng-if="true"
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"
6
+ br
7
+ e2-include template="action.meta.panel.field_template"
8
+
9
+ span ng-if="action.alert": .alert.alert-danger[] {{action.alert}}
@@ -2,18 +2,7 @@ div
2
2
  e2-include template="action.meta.panel.search_template" ng-if="action.ui_state.search_active"
3
3
  .panel.panel-default
4
4
  .panel-body
5
- table.table.table-striped.table-condensed.table-hover
6
- thead
7
- tr
8
- th
9
- div e2-button-set="action.meta.menus.menu"
10
- th ng-repeat="f in action.meta.fields"
11
- a> ng-if="action.meta.info[f].sort" ng-click="action.order(f)": strong ng-bind="::action.meta.info[f].loc"
12
- span ng-show="action.ui.order == f"
13
- span.glyphicon ng-class="action.ui.asc ? 'glyphicon-chevron-up' : 'glyphicon-chevron-down'"
14
- span ng-if="!action.meta.info[f].sort" ng-bind="::action.meta.info[f].loc"
15
- tbody e2-table-body=""
16
-
5
+ table.table.table-striped.table-condensed.table-hover e2-table-body=""
17
6
  span ng-if="action.ui.pagination_active"
18
7
  ul.pagination.pagination-md
19
8
  li ng-class="!action.prev_active() && 'disabled'"
@@ -1,15 +1,8 @@
1
1
  .panel.panel-default
2
2
  .panel-body
3
3
  form
4
- span ng-if="::!action.meta.tabs"
5
- span ng-repeat="f in action.meta.search_fields track by $index" ng-if="!action.meta.info[f].hidden_search"
6
- e2-include template="action.meta.info[f].render.template"
7
- span ng-if="::action.meta.tabs"
8
- 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"
9
- div ng-repeat="t in ::action.meta.tabs track by $index" title="{{::t.loc}}" bs-pane=""
10
- br
11
- span ng-repeat="f in t.fields track by $index" ng-if="!action.meta.info[f].hidden_search"
12
- e2-include template="action.meta.info[f].render.template"
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"
13
6
 
14
7
  .btn-group.btn-group-sm.pull-right
15
8
  button.btn.btn-default ng-click="action.load_new()"
@@ -0,0 +1,26 @@
1
+ .panel.panel-default
2
+ .panel-body
3
+ form
4
+ div.panel-group[
5
+ bs-collapse=""
6
+ role="tablist"
7
+ data-allow-multiple="true"
8
+ aria-multiselectable="true"
9
+ ng-init="action.ui_state.search_tab = (action.ui_state.search_tab + 0) <= 0 ? [0] : action.ui_state.search_tab"
10
+ ng-model="action.ui_state.search_tab"
11
+ ]
12
+ div.panel.panel-default ng-repeat="t in ::action.meta.tabs track by $index"
13
+ div.panel-heading role="tab"
14
+ 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"
17
+ 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"
20
+
21
+ .btn-group.btn-group-sm.pull-right
22
+ button.btn.btn-default ng-click="action.load_new()"
23
+ span ng-bind="::action.meta.loc.search"
24
+ span.glyphicon.glyphicon-zoom-in<
25
+ button.btn.btn-default ng-click="action.search_reset()"
26
+ span.glyphicon.glyphicon-asterisk
@@ -0,0 +1,15 @@
1
+ .panel.panel-default
2
+ .panel-body
3
+ form
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=""
6
+ 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"
9
+
10
+ .btn-group.btn-group-sm.pull-right
11
+ button.btn.btn-default ng-click="action.load_new()"
12
+ span ng-bind="::action.meta.loc.search"
13
+ span.glyphicon.glyphicon-zoom-in<
14
+ button.btn.btn-default ng-click="action.search_reset()"
15
+ span.glyphicon.glyphicon-asterisk
@@ -1,18 +1,8 @@
1
1
  div
2
- span ng-if="::!action.meta.tabs"
3
- table.table.table-striped.table-condensed.table-hover
4
- tr ng-repeat="f in action.meta.fields track by $index" ng-hide="::action.meta.info[f].hidden"
5
- td ng-bind="::action.meta.info[f].loc"
6
- td
7
- div ng-bind-html="action.view_cell(action.record, f)"
8
- span ng-if="::action.meta.tabs"
9
- div bs-tabs="" bs-active-pane="action.activeTab" ng-init="action.activeTab = 0"
10
- div ng-repeat="t in ::action.meta.tabs" title="{{::t.loc}}" bs-pane=""
11
- br
12
- table.table.table-striped.table-condensed.table-hover
13
- tr ng-repeat="f in t.fields" ng-hide="::action.meta.info[f].hidden"
14
- td ng-bind="::action.meta.info[f].loc"
15
- td
16
- div ng-bind-html="action.view_cell(action.record, f)"
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"
5
+ td
6
+ div ng-bind-html="action.view_cell(action.record, f)"
17
7
 
18
8
  span ng-if="::action.alert": .alert.alert-danger ng-bind="action.alert"
@@ -0,0 +1,22 @@
1
+ div
2
+ div.panel-group[
3
+ bs-collapse=""
4
+ role="tablist"
5
+ data-allow-multiple="true"
6
+ aria-multiselectable="true"
7
+ ng-init="action.activeTab = [0]"
8
+ ng-model="action.activeTab"
9
+ ]
10
+ div.panel.panel-default ng-repeat="t in ::action.meta.tabs track by $index"
11
+ div.panel-heading role="tab"
12
+ h4.panel-title
13
+ a bs-collapse-toggle="" ng-click="" ng-bind="::t.loc"
14
+ div.panel-collapse role="tabpanel" bs-collapse-target=""
15
+ div.panel-body
16
+ 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"
19
+ td
20
+ div ng-bind-html="action.view_cell(action.record, f)"
21
+
22
+ span ng-if="action.alert": .alert.alert-danger[] {{action.alert}}