engine2 1.0.5 → 1.0.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/app/actions.coffee +93 -58
- data/app/app.css +12 -0
- data/app/engine2.coffee +42 -24
- data/conf/message.yaml +1 -0
- data/conf/message_pl.yaml +1 -0
- data/config.coffee +2 -2
- data/engine2.gemspec +1 -1
- data/lib/engine2/action.rb +130 -126
- data/lib/engine2/action/array.rb +4 -4
- data/lib/engine2/action/decode.rb +13 -9
- data/lib/engine2/action/infra.rb +3 -3
- data/lib/engine2/action/list.rb +17 -10
- data/lib/engine2/action_node.rb +1 -2
- data/lib/engine2/core.rb +35 -7
- data/lib/engine2/model.rb +64 -15
- data/lib/engine2/post_bootstrap.rb +1 -1
- data/lib/engine2/pre_bootstrap.rb +10 -0
- data/lib/engine2/scheme.rb +2 -2
- data/lib/engine2/templates.rb +8 -0
- data/lib/engine2/type_info.rb +37 -15
- data/lib/engine2/version.rb +1 -1
- data/package.json +8 -5
- 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_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 +4 -4
- 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_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 +1 -1
- 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 +3 -3
- data/views/fields/time.slim +5 -4
- data/views/fields/typeahead_picker.slim +5 -5
- data/views/scaffold/fields.slim +4 -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/search.slim +2 -2
- data/views/scaffold/search_collapse.slim +6 -5
- data/views/scaffold/search_tabs.slim +4 -3
- 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_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_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 +4 -4
- metadata +6 -5
data/views/fields/email.slim
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
/.col-lg-8.col-md-10.col-sm-12
|
2
|
-
div e2-input-cols="{{::
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
3
|
.input-group.input-group-sm
|
4
4
|
input [
|
5
5
|
type="text"
|
6
6
|
ng-model="action.record[f]"
|
7
|
-
maxlength="{{
|
7
|
+
maxlength="{{field.render.length}}"
|
8
8
|
class="form-control"
|
9
|
-
ng-disabled="
|
9
|
+
ng-disabled="field.disabled"
|
10
10
|
e2-field=""
|
11
11
|
]
|
12
12
|
span.input-group-addon @
|
@@ -27,18 +27,18 @@ e2-action action="[f + '_file_store!']"
|
|
27
27
|
.progress.progress-striped
|
28
28
|
.progress-bar.progress-bar-success ng-style="{'width': action.progress + '%'}"
|
29
29
|
|
30
|
-
div ng-if="
|
30
|
+
div ng-if="field.render.multiple"
|
31
31
|
input [
|
32
32
|
type="file"
|
33
|
-
ng-disabled="
|
33
|
+
ng-disabled="field.disabled"
|
34
34
|
ngf-select="action.select($files)"
|
35
35
|
ngf-multiple="true"
|
36
36
|
]
|
37
37
|
|
38
|
-
div ng-if="!
|
38
|
+
div ng-if="!field.render.multiple"
|
39
39
|
input [
|
40
40
|
type="file"
|
41
|
-
ng-disabled="
|
41
|
+
ng-disabled="field.disabled"
|
42
42
|
ngf-select="action.select($files)"
|
43
43
|
ngf-multiple="false"
|
44
44
|
]
|
@@ -1,13 +1,13 @@
|
|
1
1
|
/.col-lg-8.col-md-9.col-sm-12
|
2
|
-
div e2-input-cols="{{::
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
3
|
.input-group.input-group-sm
|
4
4
|
input [
|
5
5
|
type="text"
|
6
6
|
ng-model="action.record[f]"
|
7
|
-
maxlength="{{::
|
8
|
-
ng-disabled="
|
7
|
+
maxlength="{{::field.render.length}}"
|
8
|
+
ng-disabled="field.disabled"
|
9
9
|
class="form-control input-sm"
|
10
|
-
ng-class="::
|
10
|
+
ng-class="::field.render.class"
|
11
11
|
e2-field=""
|
12
12
|
]
|
13
13
|
span.input-group-addon: span.glyphicon.glyphicon-pencil
|
data/views/fields/integer.slim
CHANGED
@@ -0,0 +1,20 @@
|
|
1
|
+
/.col-lg-7.col-md-8.col-sm-12
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
|
+
button.btn.btn-default.btn-sm [
|
4
|
+
type="button"
|
5
|
+
ng-model="action.record[f]"
|
6
|
+
bs-options="v[0] as v[1] for v in field.render.values"
|
7
|
+
data-html="true"
|
8
|
+
ng-disabled="field.disabled"
|
9
|
+
ng-class="field.render.class"
|
10
|
+
class="form-control input-sm"
|
11
|
+
|
12
|
+
data-animation="{{::field.render.animation}}"
|
13
|
+
data-placeholder="..."
|
14
|
+
data-multiple="1"
|
15
|
+
data-max-length="{{::field.render.max_length}}"
|
16
|
+
data-max-length-html="{{::field.render.max_length_html}}"
|
17
|
+
bs-select=""
|
18
|
+
|
19
|
+
e2-field=""
|
20
|
+
]
|
@@ -1,15 +1,15 @@
|
|
1
1
|
/.col-lg-7.col-md-8.col-sm-12
|
2
|
-
div e2-input-cols="{{::
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
3
|
button.btn.btn-default.btn-sm [
|
4
4
|
type="button"
|
5
5
|
ng-model="action.record[f]"
|
6
|
-
bs-options="v[0] as v[1] for v in
|
6
|
+
bs-options="v[0] as v[1] for v in field.render.values"
|
7
7
|
data-html="true"
|
8
|
-
ng-disabled="
|
9
|
-
ng-class="
|
8
|
+
ng-disabled="field.disabled"
|
9
|
+
ng-class="field.render.class"
|
10
10
|
class="form-control input-sm"
|
11
11
|
|
12
|
-
data-animation="{{::
|
12
|
+
data-animation="{{::field.render.animation}}"
|
13
13
|
data-placeholder="..."
|
14
14
|
bs-select=""
|
15
15
|
|
@@ -1,20 +1,20 @@
|
|
1
1
|
/.col-lg-7.col-md-8.col-sm-12
|
2
|
-
div e2-input-cols="{{::
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
3
|
.input-group.input-group-sm
|
4
4
|
button.btn.btn-default [
|
5
5
|
type="button"
|
6
6
|
ng-model="action.record[f]"
|
7
|
-
bs-options="v[0] as v[1] for v in
|
7
|
+
bs-options="v[0] as v[1] for v in field.render.values"
|
8
8
|
data-html="true"
|
9
|
-
ng-disabled="
|
10
|
-
ng-class="
|
9
|
+
ng-disabled="field.disabled"
|
10
|
+
ng-class="field.render.class"
|
11
11
|
class="form-control input-sm"
|
12
12
|
e2-field=""
|
13
13
|
|
14
|
-
data-animation="{{::
|
14
|
+
data-animation="{{::field.render.animation}}"
|
15
15
|
data-placeholder="..."
|
16
16
|
bs-select=""
|
17
17
|
]
|
18
18
|
.input-group-btn
|
19
|
-
a.btn.btn-default ng-disabled="
|
19
|
+
a.btn.btn-default ng-disabled="field.disabled || action.record[f] == null" ng-click="action.record[f] = null"
|
20
20
|
span.glyphicon.glyphicon-remove
|
@@ -1,3 +1,3 @@
|
|
1
1
|
.col-lg-12
|
2
2
|
.btn-group.btn-group-sm ng-model="action.record[f]" e2-field=""
|
3
|
-
a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in
|
3
|
+
a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in field.render.values" ng-bind-html="v[1]" ng-disabled="field.disabled"
|
@@ -1,5 +1,5 @@
|
|
1
1
|
.col-lg-12
|
2
2
|
.btn-group.btn-group-sm ng-model="action.record[f]" e2-field=""
|
3
|
-
a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in
|
4
|
-
a.btn.btn-default ng-disabled="action.record[f] == null ||
|
3
|
+
a.btn.btn-default ng-class="action.record[f] == v[0] && 'active'" ng-click="action.record[f] = v[0]" ng-repeat="v in field.render.values" ng-bind-html="v[1]" ng-disabled="field.disabled"
|
4
|
+
a.btn.btn-default ng-disabled="action.record[f] == null || field.disabled" ng-click="action.record[f] = null"
|
5
5
|
span.glyphicon.glyphicon-remove
|
@@ -1,10 +1,10 @@
|
|
1
1
|
/.col-lg-7.col-md-8.col-sm-12
|
2
|
-
div e2-input-cols="{{::
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
3
|
select.btn.btn-default.btn-sm [
|
4
4
|
ng-model="action.record[f]"
|
5
|
-
ng-options="v[0] as v[1] for v in
|
6
|
-
ng-disabled="
|
7
|
-
ng-class="
|
5
|
+
ng-options="v[0] as v[1] for v in field.render.values"
|
6
|
+
ng-disabled="field.disabled"
|
7
|
+
ng-class="field.render.class"
|
8
8
|
class="form-control input-sm"
|
9
9
|
e2-field=""
|
10
10
|
]
|
@@ -1,14 +1,14 @@
|
|
1
1
|
/.col-lg-7.col-md-8.col-sm-12
|
2
|
-
div e2-input-cols="{{::
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
3
|
.input-group.input-group-sm
|
4
4
|
select.btn.btn-default.btn-sm [
|
5
5
|
ng-model="action.record[f]"
|
6
|
-
ng-options="v[0] as v[1] for v in
|
7
|
-
ng-disabled="
|
8
|
-
ng-class="
|
6
|
+
ng-options="v[0] as v[1] for v in field.render.values"
|
7
|
+
ng-disabled="field.disabled"
|
8
|
+
ng-class="field.render.class"
|
9
9
|
class="form-control input-sm"
|
10
10
|
e2-field=""
|
11
11
|
]
|
12
12
|
.input-group-btn
|
13
|
-
a.btn.btn-default ng-disabled="
|
13
|
+
a.btn.btn-default ng-disabled="field.disabled || action.record[f] == null" ng-click="action.record[f] = null"
|
14
14
|
span.glyphicon.glyphicon-remove
|
data/views/fields/password.slim
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
/.col-lg-8.col-md-9.col-sm-12
|
2
|
-
div e2-input-cols="{{::
|
2
|
+
div e2-input-cols="{{::field.render.length}}"
|
3
3
|
.input-group.input-group-sm
|
4
4
|
input [
|
5
5
|
type="password"
|
6
6
|
ng-model="action.record[f]"
|
7
|
-
maxlength="{{::
|
8
|
-
ng-disabled="
|
7
|
+
maxlength="{{::field.render.length}}"
|
8
|
+
ng-disabled="field.disabled"
|
9
9
|
class="form-control input-sm"
|
10
|
-
ng-class="::
|
10
|
+
ng-class="::field.render.class"
|
11
11
|
e2-field=""
|
12
12
|
]
|
13
13
|
span.input-group-addon: span.glyphicon.glyphicon-asterisk
|
@@ -1,10 +1,10 @@
|
|
1
1
|
.col-lg-3
|
2
2
|
.btn-group.btn-group-sm [
|
3
|
-
ng-init="action.record[f] = action.record[f] ||
|
3
|
+
ng-init="action.record[f] = action.record[f] || field.render.false_value"
|
4
4
|
ng-model="action.record[f]"
|
5
5
|
bs-buttons-radio=""
|
6
6
|
e2-field=""
|
7
7
|
]
|
8
8
|
|
9
|
-
button.btn.btn-default type="button" value="{{::
|
10
|
-
button.btn.btn-default type="button" value="{{::
|
9
|
+
button.btn.btn-default type="button" value="{{::field.render.true_value}}": span.glyphicon.glyphicon-ok
|
10
|
+
button.btn.btn-default type="button" value="{{::field.render.false_value}}": span.glyphicon.glyphicon-remove
|
data/views/fields/scaffold.slim
CHANGED
@@ -1,2 +1,2 @@
|
|
1
1
|
.col-lg-10.col-md-10.col-sm-10
|
2
|
-
e2-action action="
|
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
@@ -2,9 +2,9 @@
|
|
2
2
|
textarea [
|
3
3
|
spellcheck="false"
|
4
4
|
ng-model="action.record[f]"
|
5
|
-
cols="{{
|
6
|
-
rows="{{
|
7
|
-
ng-disabled="
|
5
|
+
cols="{{field.render.cols}}"
|
6
|
+
rows="{{field.render.rows}}"
|
7
|
+
ng-disabled="field.disabled"
|
8
8
|
class="form-control"
|
9
9
|
e2-field=""
|
10
10
|
]
|
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,4 +1,4 @@
|
|
1
|
-
e2-action action="[
|
1
|
+
e2-action action="[field.assoc, 'typeahead']"
|
2
2
|
.col-lg-7.col-md-8.col-sm-12
|
3
3
|
.input-group.input-group-sm
|
4
4
|
input.btn.btn-default [
|
@@ -7,11 +7,11 @@ e2-action action="[info.assoc, 'typeahead']"
|
|
7
7
|
bs-options="v.value for v in action.load($viewValue)"
|
8
8
|
ng-keypress="action.key_pressed = true"
|
9
9
|
|
10
|
-
ng-disabled="
|
11
|
-
ng-class="
|
10
|
+
ng-disabled="field.disabled"
|
11
|
+
ng-class="field.render.class"
|
12
12
|
class="form-control"
|
13
13
|
|
14
|
-
data-animation="{{::
|
14
|
+
data-animation="{{::field.render.animation}}"
|
15
15
|
placeholder="..."
|
16
16
|
data-html="true"
|
17
17
|
data-limit="10"
|
@@ -20,5 +20,5 @@ e2-action action="[info.assoc, 'typeahead']"
|
|
20
20
|
]
|
21
21
|
span.input-group-addon: span.glyphicon.glyphicon-font
|
22
22
|
.input-group-btn
|
23
|
-
a.btn.btn-default ng-disabled="
|
23
|
+
a.btn.btn-default ng-disabled="field.disabled || action.decode == null" ng-click="!field.disabled && action.reset()"
|
24
24
|
span.glyphicon.glyphicon-off
|
data/views/scaffold/fields.slim
CHANGED
@@ -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.
|
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
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="
|
10
|
+
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/search.slim
CHANGED
@@ -1,8 +1,8 @@
|
|
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
8
|
button.btn.btn-default ng-click="action.load_new()"
|
@@ -9,14 +9,15 @@
|
|
9
9
|
ng-init="action.ui_state.search_tab = (action.ui_state.search_tab + 0) <= 0 ? [0] : action.ui_state.search_tab"
|
10
10
|
ng-model="action.ui_state.search_tab"
|
11
11
|
]
|
12
|
-
div
|
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
23
|
button.btn.btn-default ng-click="action.load_new()"
|
@@ -2,10 +2,11 @@
|
|
2
2
|
.panel-body
|
3
3
|
form
|
4
4
|
div bs-tabs="" ng-init="action.ui_state.search_tab = (action.ui_state.search_tab + 0) <= 0 ? 0 : action.ui_state.search_tab" bs-active-pane="action.ui_state.search_tab"
|
5
|
-
div ng-
|
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
12
|
button.btn.btn-default ng-click="action.load_new()"
|