engine2 1.0.4 → 1.0.9
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Gemfile +0 -0
- data/Rakefile +4 -4
- data/app/{engine2actions.coffee → actions.coffee} +341 -215
- data/app/app.coffee +0 -0
- data/app/app.css +17 -0
- data/app/engine2.coffee +158 -208
- data/app/modal.coffee +138 -0
- data/bower.json +4 -2
- data/conf/message.yaml +5 -0
- data/conf/message_pl.yaml +7 -2
- data/config.coffee +24 -12
- data/engine2.gemspec +8 -8
- data/lib/engine2.rb +12 -10
- data/lib/engine2/action.rb +1338 -133
- data/lib/engine2/action/array.rb +189 -0
- data/lib/engine2/{meta/decode_meta.rb → action/decode.rb} +52 -21
- data/lib/engine2/action/delete.rb +64 -0
- data/lib/engine2/action/form.rb +16 -0
- data/lib/engine2/{meta/infra_meta.rb → action/infra.rb} +123 -89
- data/lib/engine2/action/link.rb +117 -0
- data/lib/engine2/action/list.rb +333 -0
- data/lib/engine2/action/save.rb +28 -0
- data/lib/engine2/action/view.rb +8 -0
- data/lib/engine2/action_node.rb +221 -0
- data/lib/engine2/core.rb +175 -87
- data/lib/engine2/handler.rb +14 -13
- data/lib/engine2/model.rb +85 -43
- data/lib/engine2/models/Files.rb +4 -1
- data/lib/engine2/models/UserInfo.rb +6 -3
- data/lib/engine2/post_bootstrap.rb +4 -3
- data/lib/engine2/pre_bootstrap.rb +10 -6
- data/lib/engine2/scheme.rb +107 -65
- data/lib/engine2/templates.rb +41 -6
- data/lib/engine2/type_info.rb +51 -23
- data/lib/engine2/version.rb +2 -1
- data/package.json +22 -16
- data/public/favicon.ico +0 -0
- data/public/img/ajax-loader-dark.gif +0 -0
- data/public/img/ajax-loader.gif +0 -0
- data/views/fields/blob.slim +1 -1
- data/views/fields/bs_select.slim +2 -2
- data/views/fields/bsselect_picker.slim +4 -4
- data/views/fields/bsselect_picker_opt.slim +5 -5
- data/views/fields/checkbox.slim +4 -4
- data/views/fields/checkbox_button.slim +6 -0
- data/views/fields/checkbox_buttons.slim +3 -3
- data/views/fields/checkbox_buttons_opt.slim +3 -3
- data/views/fields/currency.slim +2 -2
- data/views/fields/date.slim +4 -4
- data/views/fields/date_range.slim +9 -9
- data/views/fields/date_time.slim +9 -9
- data/views/fields/datetime.slim +8 -8
- data/views/fields/decimal.slim +1 -1
- data/views/fields/decimal_date.slim +3 -3
- data/views/fields/decimal_time.slim +3 -3
- data/views/fields/email.slim +3 -3
- data/views/fields/file_store.slim +11 -11
- data/views/fields/input_text.slim +4 -4
- data/views/fields/integer.slim +1 -1
- data/views/fields/list_bsmselect.slim +20 -0
- data/views/fields/list_bsselect.slim +5 -5
- data/views/fields/list_bsselect_opt.slim +6 -6
- data/views/fields/list_buttons.slim +1 -1
- data/views/fields/list_buttons_opt.slim +2 -2
- data/views/fields/list_mbuttons.slim +9 -0
- data/views/fields/list_mbuttons_opt.slim +11 -0
- data/views/fields/list_mselect.slim +12 -0
- data/views/fields/list_select.slim +4 -4
- data/views/fields/list_select_opt.slim +5 -5
- data/views/fields/password.slim +4 -4
- data/views/fields/radio_checkbox.slim +3 -3
- data/views/fields/scaffold.slim +2 -2
- data/views/fields/scaffold_picker.slim +5 -5
- data/views/fields/select_picker.slim +3 -3
- data/views/fields/select_picker_opt.slim +4 -4
- data/views/fields/text_area.slim +4 -3
- data/views/fields/time.slim +5 -4
- data/views/fields/typeahead_picker.slim +12 -9
- data/views/index.slim +3 -3
- data/views/infra/index.slim +0 -0
- data/views/infra/inspect.slim +41 -10
- data/views/modals/close_m.slim +0 -0
- data/views/modals/confirm_m.slim +0 -0
- data/views/modals/empty_m.slim +0 -0
- data/views/modals/menu_m.slim +1 -1
- data/views/modals/yes_no_m.slim +0 -0
- data/views/panels/menu_m.slim +1 -1
- data/views/scaffold/confirm.slim +0 -0
- data/views/scaffold/fields.slim +6 -4
- data/views/scaffold/form.slim +1 -1
- data/views/scaffold/form_collapse.slim +4 -3
- data/views/scaffold/form_tabs.slim +3 -2
- data/views/scaffold/list.slim +0 -0
- data/views/scaffold/message.slim +0 -0
- data/views/scaffold/search.slim +4 -4
- data/views/scaffold/search_collapse.slim +8 -7
- data/views/scaffold/search_tabs.slim +6 -5
- data/views/scaffold/view.slim +2 -2
- data/views/scaffold/view_collapse.slim +5 -4
- data/views/scaffold/view_tabs.slim +4 -3
- data/views/search_fields/bsmselect_picker.slim +4 -4
- data/views/search_fields/bsselect_picker.slim +4 -4
- data/views/search_fields/checkbox.slim +3 -3
- data/views/search_fields/checkbox2.slim +5 -5
- data/views/search_fields/checkbox_buttons.slim +3 -3
- data/views/search_fields/date.slim +20 -0
- data/views/search_fields/date_range.slim +8 -8
- data/views/search_fields/decimal_date_range.slim +5 -5
- data/views/search_fields/input_text.slim +2 -2
- data/views/search_fields/integer.slim +1 -1
- data/views/search_fields/integer_range.slim +2 -2
- data/views/search_fields/list_bsmselect.slim +4 -4
- data/views/search_fields/list_bsselect.slim +4 -4
- data/views/search_fields/list_buttons.slim +2 -2
- data/views/search_fields/list_mbuttons.slim +12 -0
- data/views/search_fields/list_select.slim +3 -3
- data/views/search_fields/scaffold_picker.slim +2 -2
- data/views/search_fields/select_picker.slim +3 -3
- data/views/search_fields/typeahead_picker.slim +8 -7
- metadata +53 -48
- data/lib/engine2/meta.rb +0 -1216
- data/lib/engine2/meta/array_meta.rb +0 -82
- data/lib/engine2/meta/delete_meta.rb +0 -60
- data/lib/engine2/meta/form_meta.rb +0 -15
- data/lib/engine2/meta/link_meta.rb +0 -134
- data/lib/engine2/meta/list_meta.rb +0 -281
- data/lib/engine2/meta/save_meta.rb +0 -50
- data/lib/engine2/meta/view_meta.rb +0 -7
- data/public/__sinatra__/404.png +0 -0
- data/public/__sinatra__/500.png +0 -0
data/views/fields/scaffold.slim
CHANGED
@@ -1,2 +1,2 @@
|
|
1
|
-
.col-lg-
|
2
|
-
e2-action action="
|
1
|
+
.col-lg-12.col-md-12.col-sm-10
|
2
|
+
e2-action action="field.assoc"
|
@@ -1,16 +1,16 @@
|
|
1
|
-
e2-action action="[
|
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="
|
5
|
+
ng-disabled="field.disabled"
|
6
6
|
class="form-control"
|
7
|
-
ng-click="!
|
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="
|
13
|
-
a.btn.btn-default ng-disabled="
|
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="[
|
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="
|
8
|
-
ng-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="[
|
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="
|
9
|
-
ng-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="
|
14
|
+
a.btn.btn-default ng-disabled="field.disabled || !action.selected" ng-click="action.reset()"
|
15
15
|
span.glyphicon.glyphicon-remove
|
data/views/fields/text_area.slim
CHANGED
@@ -1,9 +1,10 @@
|
|
1
1
|
.col-lg-11
|
2
2
|
textarea [
|
3
|
+
spellcheck="false"
|
3
4
|
ng-model="action.record[f]"
|
4
|
-
cols="{{
|
5
|
-
rows="{{
|
6
|
-
ng-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
|
]
|
data/views/fields/time.slim
CHANGED
@@ -4,15 +4,16 @@
|
|
4
4
|
type="text"
|
5
5
|
class="form-control"
|
6
6
|
ng-model="value"
|
7
|
-
ng-disabled="
|
7
|
+
ng-disabled="field.disabled"
|
8
8
|
|
9
|
-
data-time-format="{{::
|
10
|
-
data-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="{{::
|
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="[
|
2
|
-
|
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(
|
8
|
-
ng-keypress="action.key_pressed = true"
|
9
|
+
bs-options="v.value for v in action.load(action.decode)"
|
9
10
|
|
10
|
-
ng-disabled="
|
11
|
-
ng-class="
|
11
|
+
ng-disabled="field.disabled"
|
12
|
+
ng-class="field.render.class"
|
12
13
|
class="form-control"
|
13
14
|
|
14
|
-
data-animation="{{::
|
15
|
+
data-animation="{{::field.render.animation}}"
|
15
16
|
placeholder="..."
|
16
17
|
data-html="true"
|
17
|
-
data-limit="
|
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="
|
26
|
+
a.btn.btn-default ng-disabled="field.disabled || !action.decode" ng-click="!field.disabled && action.reset()"
|
24
27
|
span.glyphicon.glyphicon-off
|
data/views/index.slim
CHANGED
@@ -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="
|
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
|
-
|
39
|
+
ui-view
|
40
40
|
|
data/views/infra/index.slim
CHANGED
File without changes
|
data/views/infra/inspect.slim
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
e2-action action="'
|
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
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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 |
|
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() |
|
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"
|
data/views/modals/close_m.slim
CHANGED
File without changes
|
data/views/modals/confirm_m.slim
CHANGED
File without changes
|
data/views/modals/empty_m.slim
CHANGED
File without changes
|
data/views/modals/menu_m.slim
CHANGED
data/views/modals/yes_no_m.slim
CHANGED
File without changes
|
data/views/panels/menu_m.slim
CHANGED
data/views/scaffold/confirm.slim
CHANGED
File without changes
|
data/views/scaffold/fields.slim
CHANGED
@@ -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.
|
3
|
-
label.control-label ng-class="
|
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="
|
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="
|
12
|
+
div ng-if="::field.hr": hr
|
data/views/scaffold/form.slim
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
form.form-horizontal role="form"
|
2
|
-
span ng-init="form_field_list = action.meta.
|
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
|
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.
|
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-
|
5
|
-
|
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
|
|
data/views/scaffold/list.slim
CHANGED
File without changes
|
data/views/scaffold/message.slim
CHANGED
File without changes
|
data/views/scaffold/search.slim
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
.panel.panel-default
|
2
2
|
.panel-body
|
3
3
|
form
|
4
|
-
span ng-repeat="f in action.meta.
|
5
|
-
e2-include 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
|
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.
|
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
|
19
|
-
e2-include 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-
|
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.
|
8
|
-
e2-include 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
|
data/views/scaffold/view.slim
CHANGED
@@ -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.
|
4
|
-
td ng-bind="::action.meta.
|
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
|
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.
|
18
|
-
td ng-bind="::action.meta.
|
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-
|
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.
|
7
|
-
td ng-bind="::action.meta.
|
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
|
|