engine2 1.0.4 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- 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
|
|