engine2 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/Gemfile +2 -0
- data/Rakefile +138 -0
- data/conf/message.yaml +93 -0
- data/conf/message_pl.yaml +93 -0
- data/engine2.gemspec +34 -0
- data/lib/engine2.rb +34 -0
- data/lib/engine2/action.rb +217 -0
- data/lib/engine2/core.rb +572 -0
- data/lib/engine2/handler.rb +134 -0
- data/lib/engine2/meta.rb +969 -0
- data/lib/engine2/meta/decode_meta.rb +110 -0
- data/lib/engine2/meta/delete_meta.rb +73 -0
- data/lib/engine2/meta/form_meta.rb +144 -0
- data/lib/engine2/meta/infra_meta.rb +292 -0
- data/lib/engine2/meta/link_meta.rb +133 -0
- data/lib/engine2/meta/list_meta.rb +284 -0
- data/lib/engine2/meta/save_meta.rb +63 -0
- data/lib/engine2/meta/view_meta.rb +22 -0
- data/lib/engine2/model.rb +390 -0
- data/lib/engine2/models/Files.rb +38 -0
- data/lib/engine2/models/UserInfo.rb +24 -0
- data/lib/engine2/post_bootstrap.rb +83 -0
- data/lib/engine2/pre_bootstrap.rb +27 -0
- data/lib/engine2/scheme.rb +202 -0
- data/lib/engine2/templates.rb +229 -0
- data/lib/engine2/type_info.rb +342 -0
- data/lib/engine2/version.rb +9 -0
- data/public/assets/javascripts.js +13 -0
- data/public/assets/styles.css +4 -0
- data/public/css/angular-motion.css +1022 -0
- data/public/css/angular-ui-tree.min.css +1 -0
- data/public/css/app.css +196 -0
- data/public/css/bootstrap-additions.css +1560 -0
- data/public/css/bootstrap.min.css +11 -0
- data/public/css/font-awesome.min.css +4 -0
- data/public/favicon.ico +0 -0
- data/public/fonts/FontAwesome.otf +0 -0
- data/public/fonts/fontawesome-webfont.eot +0 -0
- data/public/fonts/fontawesome-webfont.svg +655 -0
- data/public/fonts/fontawesome-webfont.ttf +0 -0
- data/public/fonts/fontawesome-webfont.woff +0 -0
- data/public/fonts/fontawesome-webfont.woff2 +0 -0
- data/public/fonts/glyphicons-halflings-regular.eot +0 -0
- data/public/fonts/glyphicons-halflings-regular.svg +288 -0
- data/public/fonts/glyphicons-halflings-regular.ttf +0 -0
- data/public/fonts/glyphicons-halflings-regular.woff +0 -0
- data/public/fonts/glyphicons-halflings-regular.woff2 +0 -0
- data/public/images/file.png +0 -0
- data/public/images/folder-closed.png +0 -0
- data/public/images/folder.png +0 -0
- data/public/images/node-closed-2.png +0 -0
- data/public/images/node-closed-light.png +0 -0
- data/public/images/node-closed.png +0 -0
- data/public/images/node-opened-2.png +0 -0
- data/public/images/node-opened-light.png +0 -0
- data/public/images/node-opened.png +0 -0
- data/public/img/ajax-loader-dark.gif +0 -0
- data/public/img/ajax-loader-light.gif +0 -0
- data/public/img/ajax-loader.gif +0 -0
- data/public/js/angular-animate.js +4115 -0
- data/public/js/angular-cookies.js +322 -0
- data/public/js/angular-local-storage.js +455 -0
- data/public/js/angular-route.js +1022 -0
- data/public/js/angular-sanitize.js +717 -0
- data/public/js/angular-strap.js +4339 -0
- data/public/js/angular-strap.tpl.js +43 -0
- data/public/js/angular-ui-tree.js +1569 -0
- data/public/js/angular.js +30714 -0
- data/public/js/i18n/angular-locale_pl.js +115 -0
- data/public/js/lodash.custom.min.js +97 -0
- data/public/js/ng-file-upload-shim.min.js +2 -0
- data/public/js/ng-file-upload.min.js +3 -0
- data/views/app.coffee +3 -0
- data/views/engine2.coffee +557 -0
- data/views/engine2actions.coffee +849 -0
- data/views/engine2templates.coffee +0 -0
- data/views/fields/blob.slim +22 -0
- data/views/fields/bs_select.slim +10 -0
- data/views/fields/bsselect_picker.slim +18 -0
- data/views/fields/bsselect_picker_opt.slim +22 -0
- data/views/fields/checkbox.slim +11 -0
- data/views/fields/checkbox_buttons.slim +6 -0
- data/views/fields/checkbox_buttons_opt.slim +8 -0
- data/views/fields/currency.slim +10 -0
- data/views/fields/date.slim +21 -0
- data/views/fields/date_range.slim +44 -0
- data/views/fields/date_time.slim +42 -0
- data/views/fields/datetime.slim +42 -0
- data/views/fields/decimal.slim +11 -0
- data/views/fields/decimal_date.slim +22 -0
- data/views/fields/decimal_time.slim +26 -0
- data/views/fields/email.slim +13 -0
- data/views/fields/file_store.slim +61 -0
- data/views/fields/input_text.slim +14 -0
- data/views/fields/integer.slim +11 -0
- data/views/fields/list_bsselect.slim +18 -0
- data/views/fields/list_bsselect_opt.slim +21 -0
- data/views/fields/list_buttons.slim +3 -0
- data/views/fields/list_buttons_opt.slim +5 -0
- data/views/fields/list_select.slim +11 -0
- data/views/fields/list_select_opt.slim +15 -0
- data/views/fields/password.slim +14 -0
- data/views/fields/radio_checkbox.slim +10 -0
- data/views/fields/scaffold.slim +2 -0
- data/views/fields/scaffold_picker.slim +20 -0
- data/views/fields/select_picker.slim +12 -0
- data/views/fields/select_picker_opt.slim +16 -0
- data/views/fields/text_area.slim +10 -0
- data/views/fields/time.slim +22 -0
- data/views/fields/typeahead_picker.slim +25 -0
- data/views/index.slim +44 -0
- data/views/infra/index.slim +5 -0
- data/views/infra/inspect.slim +81 -0
- data/views/modals/close_m.slim +15 -0
- data/views/modals/confirm_m.slim +19 -0
- data/views/modals/empty_m.slim +12 -0
- data/views/modals/menu_m.slim +13 -0
- data/views/modals/yes_no_m.slim +19 -0
- data/views/panels/menu_m.slim +9 -0
- data/views/scaffold/confirm.slim +3 -0
- data/views/scaffold/fields.slim +10 -0
- data/views/scaffold/form.slim +11 -0
- data/views/scaffold/list.slim +42 -0
- data/views/scaffold/message.slim +3 -0
- data/views/scaffold/search.slim +20 -0
- data/views/scaffold/view.slim +18 -0
- data/views/search_fields/bsmselect_picker.slim +25 -0
- data/views/search_fields/bsselect_picker.slim +24 -0
- data/views/search_fields/checkbox.slim +11 -0
- data/views/search_fields/checkbox2.slim +14 -0
- data/views/search_fields/checkbox_buttons.slim +10 -0
- data/views/search_fields/date_range.slim +46 -0
- data/views/search_fields/decimal_date_range.slim +47 -0
- data/views/search_fields/input_text.slim +18 -0
- data/views/search_fields/integer.slim +18 -0
- data/views/search_fields/integer_range.slim +27 -0
- data/views/search_fields/list_bsmselect.slim +24 -0
- data/views/search_fields/list_bsselect.slim +22 -0
- data/views/search_fields/list_buttons.slim +8 -0
- data/views/search_fields/list_select.slim +17 -0
- data/views/search_fields/scaffold_picker.slim +19 -0
- data/views/search_fields/select_picker.slim +17 -0
- data/views/search_fields/typeahead_picker.slim +25 -0
- metadata +327 -0
@@ -0,0 +1,18 @@
|
|
1
|
+
/.col-lg-7.col-md-8.col-sm-12
|
2
|
+
div e2-input-cols="{{::action.meta.info[f].render.length}}"
|
3
|
+
button.btn.btn-default.btn-sm [
|
4
|
+
type="button"
|
5
|
+
ng-init="info = action.meta.info[f]"
|
6
|
+
ng-model="action.record[f]"
|
7
|
+
bs-options="v[0] as v[1] for v in info.render.list"
|
8
|
+
data-html="true"
|
9
|
+
ng-disabled="info.disabled"
|
10
|
+
ng-class="info.render.class"
|
11
|
+
class="form-control input-sm"
|
12
|
+
|
13
|
+
data-animation="{{::info.render.animation}}"
|
14
|
+
data-placeholder="..."
|
15
|
+
bs-select=""
|
16
|
+
|
17
|
+
e2-field=""
|
18
|
+
]
|
@@ -0,0 +1,21 @@
|
|
1
|
+
/.col-lg-7.col-md-8.col-sm-12
|
2
|
+
div e2-input-cols="{{::action.meta.info[f].render.length}}"
|
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.record[f]"
|
8
|
+
bs-options="v[0] as v[1] for v in info.render.list"
|
9
|
+
data-html="true"
|
10
|
+
ng-disabled="info.disabled"
|
11
|
+
ng-class="info.render.class"
|
12
|
+
class="form-control input-sm"
|
13
|
+
e2-field=""
|
14
|
+
|
15
|
+
data-animation="{{::info.render.animation}}"
|
16
|
+
data-placeholder="..."
|
17
|
+
bs-select=""
|
18
|
+
]
|
19
|
+
.input-group-btn
|
20
|
+
a.btn.btn-default ng-disabled="action.meta.info[f].disabled || action.record[f] == null" ng-click="action.record[f] = null"
|
21
|
+
span.glyphicon.glyphicon-remove
|
@@ -0,0 +1,3 @@
|
|
1
|
+
.col-lg-12
|
2
|
+
.btn-group.btn-group-sm ng-init="info = action.meta.info[f]" 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 info.render.list" ng-bind-html="v[1]" ng-disabled="info.disabled"
|
@@ -0,0 +1,5 @@
|
|
1
|
+
.col-lg-12
|
2
|
+
.btn-group.btn-group-sm ng-init="info = action.meta.info[f]" 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 info.render.list" ng-bind-html="v[1]" ng-disabled="info.disabled"
|
4
|
+
a.btn.btn-default ng-disabled="action.record[f] == null || info.disabled" ng-click="action.record[f] = null"
|
5
|
+
span.glyphicon.glyphicon-remove
|
@@ -0,0 +1,11 @@
|
|
1
|
+
/.col-lg-7.col-md-8.col-sm-12
|
2
|
+
div e2-input-cols="{{::action.meta.info[f].render.length}}"
|
3
|
+
select.btn.btn-default.btn-sm [
|
4
|
+
ng-init="info = action.meta.info[f]"
|
5
|
+
ng-model="action.record[f]"
|
6
|
+
ng-options="v[0] as v[1] for v in info.render.list"
|
7
|
+
ng-disabled="info.disabled"
|
8
|
+
ng-class="info.render.class"
|
9
|
+
class="form-control input-sm"
|
10
|
+
e2-field=""
|
11
|
+
]
|
@@ -0,0 +1,15 @@
|
|
1
|
+
/.col-lg-7.col-md-8.col-sm-12
|
2
|
+
div e2-input-cols="{{::action.meta.info[f].render.length}}"
|
3
|
+
.input-group.input-group-sm
|
4
|
+
select.btn.btn-default.btn-sm [
|
5
|
+
ng-init="info = action.meta.info[f]"
|
6
|
+
ng-model="action.record[f]"
|
7
|
+
ng-options="v[0] as v[1] for v in info.render.list"
|
8
|
+
ng-disabled="info.disabled"
|
9
|
+
ng-class="info.render.class"
|
10
|
+
class="form-control input-sm"
|
11
|
+
e2-field=""
|
12
|
+
]
|
13
|
+
.input-group-btn
|
14
|
+
a.btn.btn-default ng-disabled="action.meta.info[f].disabled || action.record[f] == null" ng-click="action.record[f] = null"
|
15
|
+
span.glyphicon.glyphicon-remove
|
@@ -0,0 +1,14 @@
|
|
1
|
+
/.col-lg-8.col-md-9.col-sm-12
|
2
|
+
div e2-input-cols="{{::action.meta.info[f].render.length}}"
|
3
|
+
.input-group.input-group-sm
|
4
|
+
input [
|
5
|
+
ng-init="info = action.meta.info[f]"
|
6
|
+
type="password"
|
7
|
+
ng-model="action.record[f]"
|
8
|
+
maxlength="{{::info.render.length}}"
|
9
|
+
ng-disabled="info.disabled"
|
10
|
+
class="form-control input-sm"
|
11
|
+
ng-class="::info.render.class"
|
12
|
+
e2-field=""
|
13
|
+
]
|
14
|
+
span.input-group-addon: span.glyphicon.glyphicon-asterisk
|
@@ -0,0 +1,10 @@
|
|
1
|
+
.col-lg-3
|
2
|
+
.btn-group.btn-group-sm [
|
3
|
+
ng-init="info = action.meta.info[f]; action.record[f] = action.record[f] || info.render.false_value"
|
4
|
+
ng-model="action.record[f]"
|
5
|
+
bs-buttons-radio=""
|
6
|
+
e2-field=""
|
7
|
+
]
|
8
|
+
|
9
|
+
button.btn.btn-default type="button" value="{{::info.render.true_value}}": span.glyphicon.glyphicon-ok
|
10
|
+
button.btn.btn-default type="button" value="{{::info.render.false_value}}": span.glyphicon.glyphicon-remove
|
@@ -0,0 +1,20 @@
|
|
1
|
+
e2-action action="[action.meta.info[f].assoc, 'decode']"
|
2
|
+
.col-lg-6.col-md-6.col-sm-8
|
3
|
+
.input-group.input-group-sm
|
4
|
+
a.btn.btn-default [
|
5
|
+
ng-init="info = action.meta.info[f]"
|
6
|
+
ng-disabled="info.disabled"
|
7
|
+
class="form-control"
|
8
|
+
ng-click="!info.disabled && action.open()"
|
9
|
+
]
|
10
|
+
span ng-bind-html="action.decode"
|
11
|
+
|
12
|
+
.input-group-btn
|
13
|
+
a.btn.btn-default ng-disabled="info.disabled" ng-click="!info.disabled && action.open()": span.glyphicon.glyphicon-list
|
14
|
+
a.btn.btn-default ng-disabled="info.disabled || action.decode == null" ng-click="!info.disabled && action.reset()": span.glyphicon.glyphicon-remove
|
15
|
+
|
16
|
+
input [
|
17
|
+
type="hidden"
|
18
|
+
ng-model="action.record[f]"
|
19
|
+
e2-field=""
|
20
|
+
]
|
@@ -0,0 +1,12 @@
|
|
1
|
+
e2-action action="[action.meta.info[f].assoc, 'list']"
|
2
|
+
.col-lg-7.col-md-8.col-sm-12
|
3
|
+
select.btn.btn-default.btn-sm [
|
4
|
+
ng-init="info = action.meta.info[f]"
|
5
|
+
ng-model="action.selected"
|
6
|
+
ng-options="v.id as v.value for v in action.values"
|
7
|
+
ng-change="action.change()"
|
8
|
+
ng-disabled="info.disabled"
|
9
|
+
ng-class="info.render.class"
|
10
|
+
class="form-control input-sm"
|
11
|
+
e2-field=""
|
12
|
+
]
|
@@ -0,0 +1,16 @@
|
|
1
|
+
e2-action action="[action.meta.info[f].assoc, 'list']"
|
2
|
+
.col-lg-7.col-md-12.col-sm-12
|
3
|
+
.input-group.input-group-sm
|
4
|
+
select.btn.btn-default.btn-sm [
|
5
|
+
ng-init="info = action.meta.info[f]"
|
6
|
+
ng-model="action.selected"
|
7
|
+
ng-options="v.id as v.value for v in action.values"
|
8
|
+
ng-change="action.change()"
|
9
|
+
ng-disabled="info.disabled"
|
10
|
+
ng-class="info.render.class"
|
11
|
+
class="form-control"
|
12
|
+
e2-field=""
|
13
|
+
]
|
14
|
+
.input-group-btn
|
15
|
+
a.btn.btn-default ng-disabled="info.disabled || !action.selected" ng-click="action.reset()"
|
16
|
+
span.glyphicon.glyphicon-remove
|
@@ -0,0 +1,22 @@
|
|
1
|
+
.col-lg-3.col-md-3.col-sm-5
|
2
|
+
.input-group.input-group-sm
|
3
|
+
input.btn.btn-default [
|
4
|
+
ng-init="info = action.meta.info[f]"
|
5
|
+
type="text"
|
6
|
+
class="form-control"
|
7
|
+
ng-model="value"
|
8
|
+
ng-disabled="info.disabled"
|
9
|
+
|
10
|
+
data-time-format="{{::info.render.format}}"
|
11
|
+
data-animation="{{::info.render.animation}}"
|
12
|
+
bs-timepicker=""
|
13
|
+
e2-datepicker=""
|
14
|
+
e2-model-format="{{::info.render.model_format}}"
|
15
|
+
data-autoclose="1"
|
16
|
+
data-arrow-behavior="picker"
|
17
|
+
|
18
|
+
e2-force-view-value=""
|
19
|
+
e2-field=""
|
20
|
+
]
|
21
|
+
.input-group-btn data-toggle="datepicker"
|
22
|
+
a.btn.btn-default: span.glyphicon.glyphicon-time
|
@@ -0,0 +1,25 @@
|
|
1
|
+
e2-action action="[action.meta.info[f].assoc, 'typeahead']"
|
2
|
+
.col-lg-7.col-md-8.col-sm-12
|
3
|
+
.input-group.input-group-sm
|
4
|
+
input.btn.btn-default [
|
5
|
+
type="text"
|
6
|
+
ng-init="info = action.meta.info[f]"
|
7
|
+
ng-model="action.decode"
|
8
|
+
bs-options="v.value for v in action.load($viewValue)"
|
9
|
+
ng-keypress="action.key_pressed = true"
|
10
|
+
|
11
|
+
ng-disabled="info.disabled"
|
12
|
+
ng-class="info.render.class"
|
13
|
+
class="form-control"
|
14
|
+
|
15
|
+
data-animation="{{::info.render.animation}}"
|
16
|
+
placeholder="..."
|
17
|
+
data-html="true"
|
18
|
+
data-limit="10"
|
19
|
+
bs-typeahead=""
|
20
|
+
e2-field=""
|
21
|
+
]
|
22
|
+
span.input-group-addon: span.glyphicon.glyphicon-font
|
23
|
+
.input-group-btn
|
24
|
+
a.btn.btn-default ng-disabled="info.disabled || action.decode == null" ng-click="!info.disabled && action.reset()"
|
25
|
+
span.glyphicon.glyphicon-off
|
data/views/index.slim
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
doctype html
|
2
|
+
html
|
3
|
+
head
|
4
|
+
title App
|
5
|
+
meta http-equiv="x-ua-compatible" content="IE=edge"
|
6
|
+
link rel="stylesheet" href="css/bootstrap.min.css"
|
7
|
+
link rel="stylesheet" href="assets/styles.css"
|
8
|
+
link rel="stylesheet" href="css/app.css"
|
9
|
+
|
10
|
+
script type="text/javascript" src="assets/javascripts.js"
|
11
|
+
script type="text/javascript" src="js/engine2.js"
|
12
|
+
script type="text/javascript" src="js/engine2actions.js"
|
13
|
+
script type="text/javascript" src="js/engine2templates.js"
|
14
|
+
script type="text/javascript" src="js/app.js"
|
15
|
+
|
16
|
+
body ng-app="app"
|
17
|
+
e2-action ng-controller="AppController"
|
18
|
+
.nav.navbar.navbar-default
|
19
|
+
.container
|
20
|
+
.navbar-header
|
21
|
+
a.navbar-brand
|
22
|
+
| App
|
23
|
+
span.glyphicon.glyphicon-home<
|
24
|
+
button.navbar-toggle type="button" data-toggle="collapse" data-target="#collapse1"
|
25
|
+
span.icon-bar
|
26
|
+
span.icon-bar
|
27
|
+
span.icon-bar
|
28
|
+
|
29
|
+
.navbar-collapse.collapse id="collapse1"
|
30
|
+
ul.nav.navbar-nav.navbar-left
|
31
|
+
/ li: a href="#": span.glyphicon.glyphicon-home
|
32
|
+
li: .loader: img src="img/ajax-loader.gif"
|
33
|
+
div e2-action='' action="'menu!'"
|
34
|
+
|
35
|
+
ul.nav.navbar-nav.navbar-right
|
36
|
+
li
|
37
|
+
.navbar-form
|
38
|
+
div e2-action='' action="'infra!'" invoke="true"
|
39
|
+
li
|
40
|
+
.navbar-text
|
41
|
+
|
42
|
+
.container
|
43
|
+
ng-view
|
44
|
+
|
@@ -0,0 +1,81 @@
|
|
1
|
+
e2-action action="'inspect'"
|
2
|
+
div bs-tabs="" ng-if="'true'"
|
3
|
+
br
|
4
|
+
div title="API" bs-pane=""
|
5
|
+
.row
|
6
|
+
.col-lg-4
|
7
|
+
.panel.panel-default
|
8
|
+
.panel-body
|
9
|
+
script type="text/ng-template" id="nodes_renderer.html"
|
10
|
+
div data-nodrag="" ng-init="stack = stack.concat([$index])"
|
11
|
+
span.glyphicon.glyphicon-cog ng-if="node.terminal"
|
12
|
+
a ng-click="action.open(stack, node, collapsed, true); toggle(this)" ng-if="!node.terminal"
|
13
|
+
span.glyphicon ng-class="{'glyphicon-play-circle': collapsed && node.access, 'glyphicon-download': !collapsed, 'glyphicon-exclamation-sign': collapsed && !node.access}"
|
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;'}}"
|
15
|
+
ol ui-tree-nodes="" ng-model="node.actions" ng-class="{hidden: collapsed}"
|
16
|
+
li ng-repeat="node in node.actions" ui-tree-node="" data-collapsed="true" ng-include="'nodes_renderer.html'"
|
17
|
+
div ui-tree="" id="tree-root"
|
18
|
+
ol ui-tree-nodes="" ng-model="action.tree.actions"
|
19
|
+
li ng-repeat="node in action.tree.actions" ui-tree-node="" data-collapsed="true" ng-include="'nodes_renderer.html'" ng-init="stack = []"
|
20
|
+
|
21
|
+
.col-lg-8
|
22
|
+
.panel.panel-default
|
23
|
+
.panel-body
|
24
|
+
div bs-tabs="" bs-active-pane="actionTab" ng-init="actionTab = 0"
|
25
|
+
div title="Action" bs-pane=""
|
26
|
+
br
|
27
|
+
pre ng-bind="action.action_json | json"
|
28
|
+
div title="Meta" bs-pane=""
|
29
|
+
br
|
30
|
+
pre ng-bind="action.meta_json | json"
|
31
|
+
div title="State" bs-pane=""
|
32
|
+
br
|
33
|
+
pre ng-bind="action.action_state | json"
|
34
|
+
|
35
|
+
div title="Model" bs-pane=""
|
36
|
+
.row
|
37
|
+
.col-lg-4
|
38
|
+
.panel.panel-default
|
39
|
+
.panel-body
|
40
|
+
select.btn.btn-default [
|
41
|
+
ng-model="action.activeDB"
|
42
|
+
ng-options="db.name || 'dummy' for db in action.models"
|
43
|
+
class="form-control"
|
44
|
+
ng-change="action.model = (action.activeModel = (action.activeAssoc = undefined))"
|
45
|
+
]
|
46
|
+
option value="" Database
|
47
|
+
hr
|
48
|
+
select.btn.btn-default [
|
49
|
+
ng-model="action.activeModel"
|
50
|
+
ng-options="m for m in action.activeDB.models"
|
51
|
+
class="form-control"
|
52
|
+
ng-change="action.activeModel ? action.invoke_action('model_info', {db: action.activeDB.name, model: action.activeModel}) : (action.model = (action.activeAssoc = undefined))"
|
53
|
+
]
|
54
|
+
option value="" Model
|
55
|
+
.col-lg-8
|
56
|
+
.panel.panel-default
|
57
|
+
.panel-body
|
58
|
+
div bs-tabs="" bs-active-pane="modelTab" ng-init="modelTab = 0"
|
59
|
+
div title="Model" bs-pane=""
|
60
|
+
br
|
61
|
+
pre ng-bind="action.model.info | json"
|
62
|
+
div title="Schema" bs-pane=""
|
63
|
+
br
|
64
|
+
pre ng-bind="action.model.schema | json"
|
65
|
+
div title="Type info" bs-pane=""
|
66
|
+
br
|
67
|
+
pre ng-bind="action.model.type_info | json"
|
68
|
+
div title="Associations" bs-pane="" ng-if="action.model && action.has_assoc(action.model)"
|
69
|
+
br
|
70
|
+
.row
|
71
|
+
.col-lg-6
|
72
|
+
select.btn.btn-default [
|
73
|
+
ng-model="action.activeAssoc"
|
74
|
+
ng-options="key for (key, value) in action.model.assoc"
|
75
|
+
class="form-control"
|
76
|
+
]
|
77
|
+
option value="" Association
|
78
|
+
br
|
79
|
+
.row
|
80
|
+
.col-lg-12
|
81
|
+
pre ng-bind="action.activeAssoc | json"
|
@@ -0,0 +1,15 @@
|
|
1
|
+
.modal ng-class="action.meta.panel.class"
|
2
|
+
.modal-dialog
|
3
|
+
.modal-content
|
4
|
+
.modal-header
|
5
|
+
button.close type="button" ng-click="$hide()" ×
|
6
|
+
h4.modal-title ng-bind-html="action.meta.panel.title"
|
7
|
+
|
8
|
+
.modal-body
|
9
|
+
| modal-content-to-replace
|
10
|
+
|
11
|
+
.modal-footer
|
12
|
+
.loader.pull-left: img src="img/ajax-loader.gif"
|
13
|
+
.btn.btn-default ng-click="$hide()"
|
14
|
+
span.glyphicon.glyphicon-remove>
|
15
|
+
| Zamknij
|
@@ -0,0 +1,19 @@
|
|
1
|
+
.modal ng-class="action.meta.panel.class"
|
2
|
+
.modal-dialog
|
3
|
+
.modal-content
|
4
|
+
.modal-header
|
5
|
+
button.close type="button" ng-click="$hide()" ×
|
6
|
+
h4.modal-title ng-bind-html="action.meta.panel.title"
|
7
|
+
|
8
|
+
.modal-body
|
9
|
+
| modal-content-to-replace
|
10
|
+
|
11
|
+
.modal-footer
|
12
|
+
.loader.pull-left: img src="img/ajax-loader.gif"
|
13
|
+
.btn-group
|
14
|
+
.btn.btn-default ng-click="action.confirm()"
|
15
|
+
span.glyphicon.glyphicon-ok>
|
16
|
+
| Ok
|
17
|
+
.btn.btn-default ng-click="$hide()"
|
18
|
+
span.glyphicon.glyphicon-remove>
|
19
|
+
| Anuluj
|
@@ -0,0 +1,12 @@
|
|
1
|
+
.modal ng-class="action.meta.panel.class"
|
2
|
+
.modal-dialog
|
3
|
+
.modal-content
|
4
|
+
.modal-header
|
5
|
+
button.close type="button" ng-click="$hide()" ×
|
6
|
+
h4 ng-bind-html="action.meta.panel.title"
|
7
|
+
|
8
|
+
.modal-body
|
9
|
+
| modal-content-to-replace
|
10
|
+
|
11
|
+
.modal-footer
|
12
|
+
.loader.pull-left: img src="img/ajax-loader.gif"
|
@@ -0,0 +1,13 @@
|
|
1
|
+
.modal ng-class="action.meta.panel.class"
|
2
|
+
.modal-dialog
|
3
|
+
.modal-content
|
4
|
+
.modal-header
|
5
|
+
button.close type="button" ng-click="$hide()" ×
|
6
|
+
h4.modal-title ng-bind-html="action.meta.panel.title"
|
7
|
+
|
8
|
+
.modal-body
|
9
|
+
| modal-content-to-replace
|
10
|
+
|
11
|
+
.modal-footer
|
12
|
+
.loader.pull-left: img src="img/ajax-loader.gif"
|
13
|
+
div e2-button-set="action.meta.menus.panel_menu"
|
@@ -0,0 +1,19 @@
|
|
1
|
+
.modal ng-class="action.meta.panel.class"
|
2
|
+
.modal-dialog
|
3
|
+
.modal-content
|
4
|
+
.modal-header
|
5
|
+
button.close type="button" ng-click="$hide()" ×
|
6
|
+
h4.modal-title ng-bind-html="action.meta.panel.title"
|
7
|
+
|
8
|
+
.modal-body
|
9
|
+
| modal-content-to-replace
|
10
|
+
|
11
|
+
.modal-footer
|
12
|
+
.loader.pull-left: img src="img/ajax-loader.gif"
|
13
|
+
.btn-group
|
14
|
+
.btn.btn-default ng-click="action.yes(); $hide()"
|
15
|
+
span.glyphicon.glyphicon-ok>
|
16
|
+
| Tak
|
17
|
+
.btn.btn-default ng-click="action.no(); $hide()"
|
18
|
+
span.glyphicon.glyphicon-remove>
|
19
|
+
| Nie
|