engine2 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (145) hide show
  1. checksums.yaml +7 -0
  2. data/Gemfile +2 -0
  3. data/Rakefile +138 -0
  4. data/conf/message.yaml +93 -0
  5. data/conf/message_pl.yaml +93 -0
  6. data/engine2.gemspec +34 -0
  7. data/lib/engine2.rb +34 -0
  8. data/lib/engine2/action.rb +217 -0
  9. data/lib/engine2/core.rb +572 -0
  10. data/lib/engine2/handler.rb +134 -0
  11. data/lib/engine2/meta.rb +969 -0
  12. data/lib/engine2/meta/decode_meta.rb +110 -0
  13. data/lib/engine2/meta/delete_meta.rb +73 -0
  14. data/lib/engine2/meta/form_meta.rb +144 -0
  15. data/lib/engine2/meta/infra_meta.rb +292 -0
  16. data/lib/engine2/meta/link_meta.rb +133 -0
  17. data/lib/engine2/meta/list_meta.rb +284 -0
  18. data/lib/engine2/meta/save_meta.rb +63 -0
  19. data/lib/engine2/meta/view_meta.rb +22 -0
  20. data/lib/engine2/model.rb +390 -0
  21. data/lib/engine2/models/Files.rb +38 -0
  22. data/lib/engine2/models/UserInfo.rb +24 -0
  23. data/lib/engine2/post_bootstrap.rb +83 -0
  24. data/lib/engine2/pre_bootstrap.rb +27 -0
  25. data/lib/engine2/scheme.rb +202 -0
  26. data/lib/engine2/templates.rb +229 -0
  27. data/lib/engine2/type_info.rb +342 -0
  28. data/lib/engine2/version.rb +9 -0
  29. data/public/assets/javascripts.js +13 -0
  30. data/public/assets/styles.css +4 -0
  31. data/public/css/angular-motion.css +1022 -0
  32. data/public/css/angular-ui-tree.min.css +1 -0
  33. data/public/css/app.css +196 -0
  34. data/public/css/bootstrap-additions.css +1560 -0
  35. data/public/css/bootstrap.min.css +11 -0
  36. data/public/css/font-awesome.min.css +4 -0
  37. data/public/favicon.ico +0 -0
  38. data/public/fonts/FontAwesome.otf +0 -0
  39. data/public/fonts/fontawesome-webfont.eot +0 -0
  40. data/public/fonts/fontawesome-webfont.svg +655 -0
  41. data/public/fonts/fontawesome-webfont.ttf +0 -0
  42. data/public/fonts/fontawesome-webfont.woff +0 -0
  43. data/public/fonts/fontawesome-webfont.woff2 +0 -0
  44. data/public/fonts/glyphicons-halflings-regular.eot +0 -0
  45. data/public/fonts/glyphicons-halflings-regular.svg +288 -0
  46. data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
  47. data/public/fonts/glyphicons-halflings-regular.woff +0 -0
  48. data/public/fonts/glyphicons-halflings-regular.woff2 +0 -0
  49. data/public/images/file.png +0 -0
  50. data/public/images/folder-closed.png +0 -0
  51. data/public/images/folder.png +0 -0
  52. data/public/images/node-closed-2.png +0 -0
  53. data/public/images/node-closed-light.png +0 -0
  54. data/public/images/node-closed.png +0 -0
  55. data/public/images/node-opened-2.png +0 -0
  56. data/public/images/node-opened-light.png +0 -0
  57. data/public/images/node-opened.png +0 -0
  58. data/public/img/ajax-loader-dark.gif +0 -0
  59. data/public/img/ajax-loader-light.gif +0 -0
  60. data/public/img/ajax-loader.gif +0 -0
  61. data/public/js/angular-animate.js +4115 -0
  62. data/public/js/angular-cookies.js +322 -0
  63. data/public/js/angular-local-storage.js +455 -0
  64. data/public/js/angular-route.js +1022 -0
  65. data/public/js/angular-sanitize.js +717 -0
  66. data/public/js/angular-strap.js +4339 -0
  67. data/public/js/angular-strap.tpl.js +43 -0
  68. data/public/js/angular-ui-tree.js +1569 -0
  69. data/public/js/angular.js +30714 -0
  70. data/public/js/i18n/angular-locale_pl.js +115 -0
  71. data/public/js/lodash.custom.min.js +97 -0
  72. data/public/js/ng-file-upload-shim.min.js +2 -0
  73. data/public/js/ng-file-upload.min.js +3 -0
  74. data/views/app.coffee +3 -0
  75. data/views/engine2.coffee +557 -0
  76. data/views/engine2actions.coffee +849 -0
  77. data/views/engine2templates.coffee +0 -0
  78. data/views/fields/blob.slim +22 -0
  79. data/views/fields/bs_select.slim +10 -0
  80. data/views/fields/bsselect_picker.slim +18 -0
  81. data/views/fields/bsselect_picker_opt.slim +22 -0
  82. data/views/fields/checkbox.slim +11 -0
  83. data/views/fields/checkbox_buttons.slim +6 -0
  84. data/views/fields/checkbox_buttons_opt.slim +8 -0
  85. data/views/fields/currency.slim +10 -0
  86. data/views/fields/date.slim +21 -0
  87. data/views/fields/date_range.slim +44 -0
  88. data/views/fields/date_time.slim +42 -0
  89. data/views/fields/datetime.slim +42 -0
  90. data/views/fields/decimal.slim +11 -0
  91. data/views/fields/decimal_date.slim +22 -0
  92. data/views/fields/decimal_time.slim +26 -0
  93. data/views/fields/email.slim +13 -0
  94. data/views/fields/file_store.slim +61 -0
  95. data/views/fields/input_text.slim +14 -0
  96. data/views/fields/integer.slim +11 -0
  97. data/views/fields/list_bsselect.slim +18 -0
  98. data/views/fields/list_bsselect_opt.slim +21 -0
  99. data/views/fields/list_buttons.slim +3 -0
  100. data/views/fields/list_buttons_opt.slim +5 -0
  101. data/views/fields/list_select.slim +11 -0
  102. data/views/fields/list_select_opt.slim +15 -0
  103. data/views/fields/password.slim +14 -0
  104. data/views/fields/radio_checkbox.slim +10 -0
  105. data/views/fields/scaffold.slim +2 -0
  106. data/views/fields/scaffold_picker.slim +20 -0
  107. data/views/fields/select_picker.slim +12 -0
  108. data/views/fields/select_picker_opt.slim +16 -0
  109. data/views/fields/text_area.slim +10 -0
  110. data/views/fields/time.slim +22 -0
  111. data/views/fields/typeahead_picker.slim +25 -0
  112. data/views/index.slim +44 -0
  113. data/views/infra/index.slim +5 -0
  114. data/views/infra/inspect.slim +81 -0
  115. data/views/modals/close_m.slim +15 -0
  116. data/views/modals/confirm_m.slim +19 -0
  117. data/views/modals/empty_m.slim +12 -0
  118. data/views/modals/menu_m.slim +13 -0
  119. data/views/modals/yes_no_m.slim +19 -0
  120. data/views/panels/menu_m.slim +9 -0
  121. data/views/scaffold/confirm.slim +3 -0
  122. data/views/scaffold/fields.slim +10 -0
  123. data/views/scaffold/form.slim +11 -0
  124. data/views/scaffold/list.slim +42 -0
  125. data/views/scaffold/message.slim +3 -0
  126. data/views/scaffold/search.slim +20 -0
  127. data/views/scaffold/view.slim +18 -0
  128. data/views/search_fields/bsmselect_picker.slim +25 -0
  129. data/views/search_fields/bsselect_picker.slim +24 -0
  130. data/views/search_fields/checkbox.slim +11 -0
  131. data/views/search_fields/checkbox2.slim +14 -0
  132. data/views/search_fields/checkbox_buttons.slim +10 -0
  133. data/views/search_fields/date_range.slim +46 -0
  134. data/views/search_fields/decimal_date_range.slim +47 -0
  135. data/views/search_fields/input_text.slim +18 -0
  136. data/views/search_fields/integer.slim +18 -0
  137. data/views/search_fields/integer_range.slim +27 -0
  138. data/views/search_fields/list_bsmselect.slim +24 -0
  139. data/views/search_fields/list_bsselect.slim +22 -0
  140. data/views/search_fields/list_buttons.slim +8 -0
  141. data/views/search_fields/list_select.slim +17 -0
  142. data/views/search_fields/scaffold_picker.slim +19 -0
  143. data/views/search_fields/select_picker.slim +17 -0
  144. data/views/search_fields/typeahead_picker.slim +25 -0
  145. metadata +327 -0
@@ -0,0 +1,9 @@
1
+ .panel.panel-default
2
+ .panel-heading
3
+ h4.modal-title ng-bind-html="action.meta.panel.title"
4
+ .panel-body
5
+ | modal-content-to-replace
6
+ .panel-footer
7
+ // .loader.pull-left: img src="img/ajax-loader.gif"
8
+ div e2-button-set="action.meta.menus.panel_menu"
9
+
@@ -0,0 +1,3 @@
1
+ span
2
+ .alert.alert-warning ng-hide="action.alert" {{action.message}}
3
+ .alert.alert-danger ng-show="action.alert" {{action.alert}}
@@ -0,0 +1,10 @@
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"
4
+ .col-sm-9.col-md-9.col-lg-9
5
+ .row
6
+ e2-include template="action.meta.info[f].render.template"
7
+ .row
8
+ .col-sm-12
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
@@ -0,0 +1,11 @@
1
+ form.form-horizontal role="form"
2
+ span ng-if="::!action.meta.tabs" ng-init="form_field_list = action.meta.fields"
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
+
11
+ span ng-if="action.alert": .alert.alert-danger[] {{action.alert}}
@@ -0,0 +1,42 @@
1
+ div
2
+ e2-include template="action.meta.panel.search_template" ng-if="action.ui_state.search_active"
3
+ /.well.well-sm
4
+ .panel.panel-default
5
+ .panel-body
6
+ table.table.table-striped.table-condensed.table-hover
7
+ thead
8
+ tr
9
+ th
10
+ div e2-button-set="action.meta.menus.menu"
11
+ th ng-repeat="f in action.meta.fields"
12
+ a> ng-if="action.meta.info[f].sort" ng-click="action.order(f)": strong ng-bind="::action.meta.info[f].loc"
13
+ span ng-show="action.ui.order == f"
14
+ span.glyphicon.glyphicon-chevron-up ng-show="action.ui.asc"
15
+ span.glyphicon.glyphicon-chevron-down ng-show="!action.ui.asc"
16
+ span ng-if="!action.meta.info[f].sort" ng-bind="::action.meta.info[f].loc"
17
+ tbody e2-table-body=""
18
+ / tr ng-repeat="e in action.entries track by action.id_for(e)" ng-class="action.selected_class($index)" ng-click="action.select($index, $event)"
19
+ / td
20
+ / div e2-button-set="item_menu" ng-if="action.meta.config.show_item_menu"
21
+ / td ng-repeat="f in action.meta.fields track by ::f" ng-bind-html="action.list_cell(e, f)"
22
+
23
+ span
24
+ .pull-right
25
+ .badge
26
+ | Strona:
27
+ span ng-bind="action.page_info()"
28
+ | 
29
+ .badge ng-if="action.selection"
30
+ | Zaznaczonych
31
+ span ng-bind="action.selected_size()"
32
+ ul.pagination
33
+ li ng-if="action.prev_active()"
34
+ a href="" ng-click="action.prev()": span.glyphicon.glyphicon-backward
35
+ li.disabled ng-if="!action.prev_active()"
36
+ a href="": span.glyphicon.glyphicon-backward
37
+ li ng-if="action.next_active()"
38
+ a href="" ng-click="action.next()": span.glyphicon.glyphicon-forward
39
+ li.disabled ng-if="!action.next_active()"
40
+ a href="": span.glyphicon.glyphicon-forward
41
+
42
+ span ng-if="action.alert": .alert.alert-danger ng-bind="action.alert"
@@ -0,0 +1,3 @@
1
+ span
2
+ .alert.alert-warning ng-hide="action.alert" {{action.message}}
3
+ .alert.alert-danger ng-show="action.alert" {{action.alert}}
@@ -0,0 +1,20 @@
1
+ .panel.panel-default
2
+ / | {{action.search}}
3
+ .panel-body
4
+ form
5
+ span ng-if="::!action.meta.tabs"
6
+ span ng-repeat="f in action.meta.search_fields track by $index" ng-if="!action.meta.info[f].hidden_search"
7
+ e2-include template="action.meta.info[f].render.template"
8
+ span ng-if="::action.meta.tabs"
9
+ 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"
10
+ div ng-repeat="t in ::action.meta.tabs track by $index" title="{{::t.loc}}" bs-pane=""
11
+ br
12
+ span ng-repeat="f in t.fields track by $index" ng-if="!action.meta.info[f].hidden_search"
13
+ e2-include template="action.meta.info[f].render.template"
14
+
15
+ .btn-group.btn-group-sm.pull-right
16
+ button.btn.btn-default ng-click="action.load_new()"
17
+ | Szukaj
18
+ span.glyphicon.glyphicon-zoom-in<
19
+ button.btn.btn-default ng-click="action.search_reset()"
20
+ span.glyphicon.glyphicon-asterisk
@@ -0,0 +1,18 @@
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)"
17
+
18
+ span ng-if="::action.alert": .alert.alert-danger[] {{::action.alert}}
@@ -0,0 +1,25 @@
1
+ e2-action action="[action.meta.info[f].assoc, 'list']"
2
+ .col-lg-3.col-md-4.col-sm-5
3
+ .form-group
4
+ .input-group.input-group-sm
5
+ button.btn.btn-default [
6
+ type="button"
7
+ ng-init="info = action.meta.info[f]"
8
+ ng-model="action.selected"
9
+ bs-options="v.id as v.value for v in action.values"
10
+ ng-change="action.change()"
11
+ ng-class="info.render.class"
12
+ class="form-control"
13
+
14
+ data-animation="{{::info.render.animation}}"
15
+ data-placeholder="{{::info.loc}}"
16
+ data-multiple="1"
17
+ data-max-length="3"
18
+ data-max-length-html="wybranych"
19
+ data-html="true"
20
+ bs-select=""
21
+ e2-search-field=""
22
+ ]
23
+ .input-group-btn
24
+ a.btn.btn-default ng-disabled="action.selected.length == 0" ng-click="action.reset()"
25
+ span.glyphicon.glyphicon-off
@@ -0,0 +1,24 @@
1
+ e2-action action="[action.meta.info[f].assoc, 'list']"
2
+ .col-lg-3.col-md-4.col-sm-5
3
+ .form-group
4
+ .input-group.input-group-sm
5
+ button.btn.btn-default [
6
+ type="button"
7
+ ng-init="info = action.meta.info[f]"
8
+ ng-model="action.selected"
9
+ bs-options="v.id as v.value for v in action.values"
10
+ ng-change="action.change()"
11
+ ng-class="info.render.class"
12
+ class="form-control"
13
+
14
+ data-animation="{{::info.render.animation}}"
15
+ data-placeholder="{{::info.loc}}"
16
+ data-html="true"
17
+ bs-select=""
18
+
19
+ e2-search-field=""
20
+ ]
21
+
22
+ .input-group-btn
23
+ a.btn.btn-default ng-disabled="!action.selected" ng-click="action.reset()"
24
+ span.glyphicon.glyphicon-off
@@ -0,0 +1,11 @@
1
+ input [
2
+ type="checkbox"
3
+ ng-model="action.query.search[f]"
4
+ ng-true-value="{{::action.meta.info[f].render.true_value}}"
5
+ ng-false-value="{{::action.meta.info[f].render.false_value}}"
6
+
7
+ xe2-search-field=""
8
+ ]
9
+
10
+ / ng-false-value="{{action.meta.info[f].render.false_value}}"
11
+ / ng-init="action.record[f] = '0'"
@@ -0,0 +1,14 @@
1
+ .form-group
2
+ .btn-group.btn-group-sm [
3
+ ng-model="action.query.search[f]"
4
+ bs-buttons-radio=""
5
+ ng-change="action.search_live(f)"
6
+ ]
7
+ button.btn.btn-default type="button" value="{{action.meta.info[f].render.true_value}}": span.glyphicon.glyphicon-ok
8
+ button.btn.btn-default type="button" value="{{action.meta.info[f].render.false_value}}": span.glyphicon.glyphicon-remove
9
+ button.btn.btn-default type="button" ng-disabled="!action.query.search[f]": span.glyphicon.glyphicon-off
10
+ span ng-bind="::action.meta.info[f].loc"
11
+
12
+ /input type="checkbox" id="{{f}}" ng-model="action.query.search[f]" ng-true-value="{{action.meta.info[f].render.true_value}}" ng-false-value="{{action.meta.info[f].render.false_value}}"
13
+ / ng-false-value="{{action.meta.info[f].render.false_value}}"
14
+ / ng-init="action.record[f] = '0'"
@@ -0,0 +1,10 @@
1
+ .col-lg-3.col-md-3.col-sm-3
2
+ .form-group
3
+ .btn-group.btn-group-sm ng-init="info = action.meta.info[f]" xe2-search-field=""
4
+ a.btn.btn-default ng-class="action.query.search[f] == info.render.true_value && 'active'" ng-click="action.query.search[f] = info.render.true_value; action.search_live(f)"
5
+ span.glyphicon.glyphicon-ok
6
+ a.btn.btn-default ng-class="action.query.search[f] == info.render.false_value && 'active'" ng-click="action.query.search[f] = info.render.false_value; action.search_live(f)"
7
+ span.glyphicon.glyphicon-remove
8
+ a.btn.btn-default ng-disabled="action.query.search[f] == null" ng-click="action.query.search[f] = null; action.search_live(f)"
9
+ span ng-bind="::action.meta.info[f].loc"
10
+ span.glyphicon.glyphicon-off<
@@ -0,0 +1,46 @@
1
+ span ng-init="action.query.search[f] = action.query.search[f] || {}; value = value || {}"
2
+ .col-lg-3.col-md-4.col-sm-4
3
+ .form-group
4
+ .input-group.input-group-sm
5
+ input.btn.btn-default [
6
+ ng-init="info = action.meta.info[f]"
7
+ type="text"
8
+ class="form-control"
9
+ placeholder="{{::info.loc}} <"
10
+ ng-model="value.from"
11
+ xng-change="action.search_live(f)"
12
+ data-max-date="{{value.to}}"
13
+ data-date-format="{{::info.render.format}}"
14
+ data-animation="{{::info.render.animation}}"
15
+ bs-datepicker=""
16
+ e2-datepicker="from"
17
+ e2-model-format="{{::info.render.model_format}}"
18
+ data-autoclose="1"
19
+ e2-search-field=""
20
+ ]
21
+ .input-group-btn
22
+ a.btn.btn-default data-toggle="datepicker": span.glyphicon.glyphicon-calendar
23
+ a.btn.btn-default ng-disabled="!action.query.search[f].from" ng-click="value.from = null; action.query.search[f].from = null; action.search_live(f)": span.glyphicon.glyphicon-off
24
+
25
+ .col-lg-3.col-md-4.col-sm-4
26
+ .form-group
27
+ .input-group.input-group-sm
28
+ input.btn.btn-default [
29
+ ng-init="info = action.meta.info[f]"
30
+ type="text"
31
+ class="form-control"
32
+ placeholder="{{::info.loc}} >"
33
+ ng-model="value.to"
34
+ xng-change="action.search_live(f)"
35
+ data-min-date="{{value.from}}"
36
+ data-date-format="{{::info.render.format}}"
37
+ data-animation="{{::info.render.animation}}"
38
+ bs-datepicker=""
39
+ e2-datepicker="to"
40
+ e2-model-format="{{::info.render.model_format}}"
41
+ data-autoclose="1"
42
+ e2-search-field=""
43
+ ]
44
+ .input-group-btn
45
+ a.btn.btn-default data-toggle="datepicker": span.glyphicon.glyphicon-calendar
46
+ a.btn.btn-default ng-disabled="!action.query.search[f].to" ng-click="value.to = null; action.query.search[f].to = null; action.search_live(f)": span.glyphicon.glyphicon-off
@@ -0,0 +1,47 @@
1
+ span ng-init="action.query.search[f] = action.query.search[f] || {}"
2
+ .col-lg-3.col-md-4.col-sm-4
3
+ .form-group
4
+ .input-group.input-group-sm
5
+ input.btn.btn-default [
6
+ type="text"
7
+ class="form-control"
8
+ placeholder="{{::action.meta.info[f].loc}} <"
9
+ xng-model="value"
10
+ ng-model="action.query.search[f].from"
11
+ ng-change="action.search_live(f)"
12
+ xe2-decimal-date-picker="" range="from"
13
+ data-max-date="{{action.query.search[f].to}}"
14
+ data-date-format="{{::action.meta.info[f].render.format}}"
15
+ data-model-date-format="yyyyMMdd"
16
+ bs-datepicker=""
17
+ data-autoclose="1"
18
+ data-date-type="string"
19
+ e2-search-field=""
20
+ ]
21
+ .input-group-btn
22
+ a.btn.btn-default.disabled data-toggle="datepicker": span.glyphicon.glyphicon-calendar
23
+ a.btn.btn-default ng-disabled="!action.query.search[f].from" ng-click="action.query.search[f].from = null; action.search_live(f)": span.glyphicon.glyphicon-off
24
+
25
+ .col-lg-3.col-md-4.col-sm-4
26
+ .form-group
27
+ .input-group.input-group-sm
28
+ input.btn.btn-default [
29
+ type="text"
30
+ class="form-control"
31
+ placeholder="{{::action.meta.info[f].loc}} >"
32
+ xng-model="value"
33
+ ng-model="action.query.search[f].to"
34
+ ng-change="action.search_live(f)"
35
+ xe2-decimal-date-picker="" range="to"
36
+ data-min-date="{{action.query.search[f].from}}"
37
+ data-date-format="{{::action.meta.info[f].render.format}}"
38
+ data-model-date-format="yyyyMMdd"
39
+ data-animation="{{::action.meta.info[f].render.animation}}"
40
+ bs-datepicker=""
41
+ data-autoclose="1"
42
+ data-date-type="string"
43
+ e2-search-field=""
44
+ ]
45
+ .input-group-btn
46
+ a.btn.btn-default.disabled data-toggle="datepicker": span.glyphicon.glyphicon-calendar
47
+ a.btn.btn-default ng-disabled="!action.query.search[f].to" ng-click="action.query.search[f].to = null; action.search_live(f)": span.glyphicon.glyphicon-off
@@ -0,0 +1,18 @@
1
+ .col-lg-4.col-md-4.col-sm-5
2
+ .form-group
3
+ .input-group.input-group-sm
4
+ input [
5
+ type="text"
6
+ ng-model="action.query.search[f]"
7
+ ng-model-options="{debounce: 200}"
8
+ maxlength="15"
9
+ ng-change="action.search_live(f)"
10
+ ng-class="action.meta.info[f].render.class"
11
+ class="form-control"
12
+ placeholder="{{::action.meta.info[f].loc}}"
13
+ e2-search-field=""
14
+ ]
15
+ .input-group-btn
16
+ a.btn.btn-default ng-disabled="!action.query.search[f]" ng-click="action.query.search[f] = null; action.search_live(f)"
17
+ span.glyphicon.glyphicon-off
18
+
@@ -0,0 +1,18 @@
1
+ .col-lg-2.col-md-3.col-sm-4
2
+ .form-group
3
+ .input-group.input-group-sm
4
+ input [
5
+ type="text"
6
+ ng-model="action.query.search[f]"
7
+ ng-model-options="{debounce: 200}"
8
+ ng-change="action.search_live(f)"
9
+ class="form-control"
10
+ placeholder="{{::action.meta.info[f].loc}}"
11
+ e2-search-field=""
12
+ e2-integer=""
13
+ ]
14
+ .input-group-btn
15
+ a.btn.btn-default ng-disabled="!action.query.search[f]" ng-click="action.query.search[f] = null; action.search_live(f)"
16
+ span.glyphicon.glyphicon-off
17
+
18
+ /button.btn ng-click="action.query.search[f] = null": i.icon-remove
@@ -0,0 +1,27 @@
1
+ span ng-init="action.query.search[f] = action.query.search[f] || {}"
2
+ .col-lg-2.col-md-3.col-sm-4
3
+ .form-group
4
+ .input-group.input-group-sm
5
+ input [
6
+ type="text"
7
+ ng-model="action.query.search[f].from"
8
+ class="form-control"
9
+ placeholder="{{::action.meta.info[f].loc}} <"
10
+ e2-search-field=""
11
+ e2-integer=""
12
+ ]
13
+ .input-group-btn
14
+ a.btn.btn-default ng-disabled="!action.query.search[f].from" ng-click="action.query.search[f].from = null; action.search_live(f)": span.glyphicon.glyphicon-off
15
+ .col-lg-2.col-md-3.col-sm-4
16
+ .form-group
17
+ .input-group.input-group-sm
18
+ input [
19
+ type="text"
20
+ ng-model="action.query.search[f].to"
21
+ class="form-control"
22
+ placeholder="{{::action.meta.info[f].loc}} >"
23
+ e2-search-field=""
24
+ e2-integer=""
25
+ ]
26
+ .input-group-btn
27
+ a.btn.btn-default ng-disabled="!action.query.search[f].to" ng-click="action.query.search[f].to = null; action.search_live(f)": span.glyphicon.glyphicon-off
@@ -0,0 +1,24 @@
1
+ .col-lg-3.col-md-4.col-sm-5
2
+ .form-group
3
+ .input-group.input-group-sm
4
+ button.btn.btn-default [
5
+ type="button"
6
+ ng-init="info = action.meta.info[f]; action.query.search[f] = action.query.search[f] || []"
7
+ ng-model="action.query.search[f]"
8
+ bs-options="v[0] as v[1] for v in info.render.list"
9
+ data-html="true"
10
+ ng-change="action.search_live(f)"
11
+ ng-class="info.render.class"
12
+ class="form-control"
13
+
14
+ data-animation="{{::info.render.animation}}"
15
+ data-placeholder="{{::info.loc}}"
16
+ data-multiple="1"
17
+ data-max-length-html="wybranych"
18
+ bs-select=""
19
+ e2-search-field=""
20
+ ]
21
+
22
+ .input-group-btn
23
+ a.btn.btn-default ng-disabled="action.query.search[f].length == 0" ng-click="action.query.search[f] = []; action.search_live(f)"
24
+ span.glyphicon.glyphicon-off
@@ -0,0 +1,22 @@
1
+ .col-lg-3.col-md-4.col-sm-5
2
+ .form-group
3
+ .input-group.input-group-sm
4
+ button.btn.btn-default [
5
+ type="button"
6
+ ng-init="info = action.meta.info[f]"
7
+ ng-model="action.query.search[f]"
8
+ bs-options="v[0] as v[1] for v in info.render.list"
9
+ data-html="true"
10
+ ng-change="action.search_live(f)"
11
+ ng-class="info.render.class"
12
+ class="form-control"
13
+
14
+ data-animation="{{::info.render.animation}}"
15
+ data-placeholder="{{::info.loc}}"
16
+ bs-select=""
17
+ e2-search-field=""
18
+ ]
19
+
20
+ .input-group-btn
21
+ a.btn.btn-default ng-disabled="action.query.search[f] == null" ng-click="action.query.search[f] = null; action.search_live(f)"
22
+ span.glyphicon.glyphicon-off
@@ -0,0 +1,8 @@
1
+ .col-lg-3.col-md-4.col-sm-5
2
+ /.container
3
+ .form-group
4
+ .btn-group.btn-group-sm ng-init="info = action.meta.info[f]" ng-model="action.query.search[f]" e2-search-field=""
5
+ a.btn.btn-default ng-class="action.query.search[f] == v[0] && 'active'" ng-click="action.query.search[f] = v[0]; action.search_live(f)" ng-repeat="v in info.render.list" ng-bind-html="v[1]"
6
+ a.btn.btn-default ng-disabled="action.query.search[f] == null" ng-click="action.query.search[f] = null; action.search_live(f)"
7
+ span ng-bind="::action.meta.info[f].loc"
8
+ span.glyphicon.glyphicon-off<
@@ -0,0 +1,17 @@
1
+ .col-lg-3.col-md-4.col-sm-5
2
+ .form-group
3
+ .input-group.input-group-sm
4
+ select.btn.btn-default [
5
+ ng-init="info = action.meta.info[f]"
6
+ ng-model="action.query.search[f]"
7
+ ng-options="v[0] as v[1] for v in info.render.list"
8
+ ng-change="action.search_live(f)"
9
+ ng-class="info.render.class"
10
+ class="form-control"
11
+ e2-search-field=""
12
+ ]
13
+ option value="" ng-bind="::action.meta.info[f].loc"
14
+
15
+ .input-group-btn
16
+ a.btn.btn-default ng-disabled="action.query.search[f] == null" ng-click="action.query.search[f] = null; action.search_live(f)"
17
+ span.glyphicon.glyphicon-off