promethee 0.1.3 → 0.1.5
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 +4 -4
- data/README.md +53 -50
- data/app/assets/javascripts/promethee-editor.js +8 -0
- data/app/assets/javascripts/promethee.js +0 -59
- data/app/assets/stylesheets/promethee-editor.sass +23 -78
- data/app/assets/stylesheets/promethee-editor/_component.sass +10 -0
- data/app/assets/stylesheets/promethee-editor/_mover.sass +67 -0
- data/app/assets/stylesheets/promethee-editor/_preview.sass +25 -0
- data/app/assets/stylesheets/promethee.sass +1 -2
- data/app/controllers/promethee_controller.rb +8 -0
- data/app/views/promethee/_edit.html.erb +52 -123
- data/app/views/promethee/_show.html.erb +1 -1
- data/app/views/promethee/components/_children.html.erb +4 -0
- data/app/views/promethee/components/_children_edit.html.erb +5 -0
- data/app/views/promethee/components/_column.html.erb +1 -1
- data/app/views/promethee/components/_column_edit.html.erb +35 -33
- data/app/views/promethee/components/_image_edit.html.erb +23 -28
- data/app/views/promethee/components/_page.html.erb +1 -0
- data/app/views/promethee/components/_page_edit.html.erb +10 -0
- data/app/views/promethee/components/_row.html.erb +1 -4
- data/app/views/promethee/components/_row_edit.html.erb +19 -22
- data/app/views/promethee/components/_text_edit.html.erb +16 -20
- data/app/views/promethee/components/_video_edit.html.erb +23 -22
- data/app/views/promethee/partials/_adder.html.erb +64 -0
- data/app/views/promethee/partials/_include_components.html.erb +9 -0
- data/app/views/promethee/partials/_mover.html.erb +98 -0
- data/app/views/promethee/partials/_navbar.html.erb +26 -0
- data/app/views/promethee/partials/_page.html.erb +6 -0
- data/app/views/promethee/partials/_preview.html.erb +12 -0
- data/app/views/promethee/partials/_toolbar_buttons.html.erb +2 -2
- data/app/views/promethee/preview.html.erb +1 -0
- data/config/routes.rb +3 -0
- data/lib/promethee.rb +2 -21
- data/lib/promethee/core_ext/tags.rb +2 -5
- data/lib/promethee/rails/version.rb +1 -1
- metadata +34 -27
- data/app/assets/javascripts/promethee/controller.js +0 -22
- data/app/assets/stylesheets/promethee-editor/_mixins.sass +0 -19
- data/app/assets/stylesheets/promethee-editor/_variables.sass +0 -4
- data/app/views/promethee/components/_index.html.erb +0 -3
- data/app/views/promethee/components/_index_edit.html.erb +0 -7
- data/app/views/promethee/components/_show.html.erb +0 -4
- data/app/views/promethee/components/_show_edit.html.erb +0 -3
- data/lib/promethee/component.rb +0 -28
- data/lib/promethee/component/attribute.rb +0 -42
- data/lib/promethee/component/attribute/boolean.rb +0 -4
- data/lib/promethee/component/attribute/float.rb +0 -3
- data/lib/promethee/component/attribute/integer.rb +0 -3
- data/lib/promethee/component/attribute/string.rb +0 -3
- data/lib/promethee/component/attributes.rb +0 -50
- data/lib/promethee/component/attributes/definer.rb +0 -13
- data/lib/promethee/component/base.rb +0 -68
- data/lib/promethee/component/collection.rb +0 -17
- data/lib/promethee/component/column.rb +0 -8
- data/lib/promethee/component/image.rb +0 -6
- data/lib/promethee/component/row.rb +0 -3
- data/lib/promethee/component/text.rb +0 -5
- data/lib/promethee/component/video.rb +0 -5
- data/lib/promethee/grid.rb +0 -52
- data/vendor/assets/javascripts/angular-drag-and-drop-lists.js +0 -49
@@ -1,16 +1,11 @@
|
|
1
1
|
<%
|
2
|
-
|
3
|
-
promethee_data = promethee.data
|
4
|
-
promethee_data = promethee_data.to_json unless promethee_data.is_a? String
|
2
|
+
data = data.to_json unless data.is_a? String
|
5
3
|
%>
|
6
4
|
|
7
5
|
<script>
|
8
6
|
var promethee = angular
|
9
|
-
.module('
|
10
|
-
.
|
11
|
-
.value('state', {
|
12
|
-
editing: false
|
13
|
-
})
|
7
|
+
.module('Promethee', ['ui.tinymce', 'ngAnimate'])
|
8
|
+
.value('data', <%= data.html_safe %>)
|
14
9
|
.value('definitions', [])
|
15
10
|
.filter('htmlSafe', ['$sce', function($sce) {
|
16
11
|
return function(val) {
|
@@ -28,111 +23,43 @@ promethee_data = promethee_data.to_json unless promethee_data.is_a? String
|
|
28
23
|
return val[0].toUpperCase() + val.substring(1).toLowerCase();
|
29
24
|
};
|
30
25
|
});
|
31
|
-
</script>
|
32
|
-
|
33
|
-
<div id="<%= promethee_id %>"
|
34
|
-
class="promethee-editor"
|
35
|
-
ng-app="<%= promethee_id %>"
|
36
|
-
ng-controller="PrometheeController as prometheeController"
|
37
|
-
ng-class="{
|
38
|
-
'fullscreen': fullscreen,
|
39
|
-
'promethee-editor--preview': preview,
|
40
|
-
'promethee-editor--preview--mobile': preview && previewMode == 'mobile',
|
41
|
-
'promethee-editor--preview--tablet': preview && previewMode == 'tablet',
|
42
|
-
'promethee-editor--preview--desktop': preview && previewMode == 'desktop'
|
43
|
-
}">
|
44
|
-
|
45
|
-
<% # TODO custom views %>
|
46
|
-
<% Dir['app/views/promethee/components/*'].each do |file| %>
|
47
|
-
<% end %>
|
48
|
-
<% # TODO iterate over files in gem %>
|
49
|
-
<% ['index', 'show', 'row', 'column', 'text', 'image', 'video'].each do |type| %>
|
50
|
-
<%= render partial: "promethee/components/#{type}_edit", locals: { promethee_id: promethee_id } %>
|
51
|
-
<% end %>
|
52
|
-
|
53
|
-
<input type="hidden" name="page[data]" id="page_data" value="{{data}}" />
|
54
26
|
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
<%= image_tag 'icon-promethee.png', class: 'navbar-brand' %>
|
59
|
-
</div>
|
60
|
-
<div id="navbar">
|
61
|
-
<ul class="nav navbar-nav navbar-right">
|
62
|
-
<li ng-click="enablePreview()" ng-hide="preview"><a><%= fa_icon :eye %></a></li>
|
63
|
-
<li ng-click="previewMode = 'mobile'" ng-class="{ active: previewMode == 'mobile' }" ng-show="preview">
|
64
|
-
<a><%= fa_icon :mobile %></a>
|
65
|
-
</li>
|
66
|
-
<li ng-click="previewMode = 'tablet'" ng-class="{ active: previewMode == 'tablet' }" ng-show="preview"><a>
|
67
|
-
<%= fa_icon :tablet %></a>
|
68
|
-
</li>
|
69
|
-
<li ng-click="previewMode = 'desktop'" ng-class="{ active: previewMode == 'desktop' }" ng-show="preview"><a>
|
70
|
-
<%= fa_icon :desktop %></a>
|
71
|
-
</li>
|
72
|
-
<li ng-click="disablePreview()" ng-show="preview"><a><%= fa_icon 'eye-slash' %></a>
|
73
|
-
</li>
|
74
|
-
<li ng-click="enableFullscreen()" ng-hide="fullscreen"><a><%= fa_icon :expand %></a></li>
|
75
|
-
<li ng-click="disableFullscreen()" ng-show="fullscreen"><a><%= fa_icon :compress %></a></li>
|
76
|
-
</ul>
|
77
|
-
</div>
|
78
|
-
</div>
|
79
|
-
</nav>
|
80
|
-
<div class="promethee-editor__page" ng-class="{ 'container-fluid': fullscreen }">
|
81
|
-
<ng-include src="'promethee/components/index'"></ng-include>
|
82
|
-
</div>
|
83
|
-
|
84
|
-
<span type="button" class="btn btn-default btn-block" ng-click="addComponentTo(data)" style="margin-bottom: 6px">Add component</span>
|
85
|
-
|
86
|
-
<div class="promethee-editor__adder" ng-controller="AdderController">
|
87
|
-
<div class="modal fade in" tabindex="-1" role="dialog" style="display: {{adding ? 'block' : 'none'}}">
|
88
|
-
<div class="modal-dialog modal-lg" role="document">
|
89
|
-
<div class="modal-content">
|
90
|
-
<div class="modal-header">
|
91
|
-
<button type="button" class="close" ng-click="close()"><span aria-hidden="true">×</span></button>
|
92
|
-
<h4 class="modal-title">Select component</h4>
|
93
|
-
</div>
|
94
|
-
<div class="modal-body">
|
95
|
-
<div class="row">
|
96
|
-
<div ng-repeat="definition in definitions"
|
97
|
-
ng-click="pushComponent(definition)"
|
98
|
-
class="col-md-3">
|
99
|
-
<div class="thumbnail">
|
100
|
-
<img ng-src="{{definition.thumb}}" class="img-responsive">
|
101
|
-
<h4>{{definition.name}}</h4>
|
102
|
-
</div>
|
103
|
-
</div>
|
104
|
-
</div>
|
105
|
-
</div>
|
106
|
-
</div>
|
107
|
-
</div>
|
108
|
-
</div>
|
109
|
-
</div>
|
110
|
-
|
111
|
-
<!-- Work in progress -->
|
112
|
-
<!-- <iframe id="iframe"></iframe> !-->
|
113
|
-
</div>
|
114
|
-
|
115
|
-
<script>
|
116
|
-
promethee.controller('PrometheeController', ['data', '$scope', 'definitions', function(data, $scope, definitions) {
|
27
|
+
promethee.controller('PrometheeController', ['data', '$scope', 'definitions', '$http', function(data, $scope, definitions, $http) {
|
28
|
+
|
29
|
+
// Data (TODO use Adder and probably page definition to init)
|
117
30
|
if (data === null || data === '') {
|
118
|
-
data =
|
31
|
+
data = {
|
32
|
+
type: 'page',
|
33
|
+
children: []
|
34
|
+
};
|
119
35
|
}
|
120
36
|
$scope.data = data;
|
37
|
+
// $scope.component = {
|
38
|
+
// children: data
|
39
|
+
// };
|
40
|
+
|
41
|
+
// Preview modes
|
121
42
|
$scope.fullscreen = false;
|
43
|
+
$scope.move = false;
|
122
44
|
$scope.preview = false;
|
123
45
|
$scope.previewMode = 'desktop';
|
124
|
-
$scope.component = {
|
125
|
-
children: data
|
126
|
-
};
|
127
|
-
|
128
|
-
$scope.allowedTypes = definitions.map(function(definition) {
|
129
|
-
return definition.data.type;
|
130
|
-
});
|
131
46
|
|
132
47
|
$scope.enablePreview = function() {
|
133
48
|
this.preview = true;
|
134
|
-
|
135
|
-
|
49
|
+
this.move = false;
|
50
|
+
|
51
|
+
var form = document.createElement('form');
|
52
|
+
document.body.appendChild(form);
|
53
|
+
form.method = 'POST';
|
54
|
+
form.action = 'promethee/preview';
|
55
|
+
form.target = 'preview';
|
56
|
+
var input = document.createElement('input');
|
57
|
+
input.type = 'text';
|
58
|
+
input.value = JSON.stringify(data);
|
59
|
+
input.name = 'data';
|
60
|
+
form.appendChild(input);
|
61
|
+
form.submit();
|
62
|
+
document.body.removeChild(form);
|
136
63
|
}
|
137
64
|
|
138
65
|
$scope.disablePreview = function() {
|
@@ -147,26 +74,28 @@ promethee_data = promethee_data.to_json unless promethee_data.is_a? String
|
|
147
74
|
this.fullscreen = false;
|
148
75
|
}
|
149
76
|
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
154
|
-
$scope.adding = null;
|
155
|
-
$scope.definitions = definitions;
|
156
|
-
|
157
|
-
$scope.close = function() {
|
158
|
-
$scope.adding = null;
|
159
|
-
};
|
160
|
-
|
161
|
-
$scope.pushComponent = function(definition) {
|
162
|
-
var definition = angular.copy(definition.data);
|
163
|
-
$scope.adding.push(definition);
|
164
|
-
$scope.close();
|
165
|
-
};
|
166
|
-
|
167
|
-
$rootScope.addComponentTo = function(components) {
|
168
|
-
$scope.adding = components;
|
169
|
-
};
|
77
|
+
$scope.remove = function(component, components) {
|
78
|
+
var index = components.indexOf(component);
|
79
|
+
components.splice(index, 1);
|
80
|
+
}
|
170
81
|
|
171
82
|
}]);
|
83
|
+
|
172
84
|
</script>
|
85
|
+
|
86
|
+
<div id="promethee"
|
87
|
+
class="promethee-editor"
|
88
|
+
ng-app="Promethee"
|
89
|
+
ng-controller="PrometheeController as prometheeController"
|
90
|
+
ng-class="{
|
91
|
+
'promethee-editor--fullscreen': fullscreen,
|
92
|
+
'promethee-editor--move': move,
|
93
|
+
'promethee-editor--preview': preview
|
94
|
+
}">
|
95
|
+
<input type="hidden" name="page[data]" id="page_data" value="{{data}}" />
|
96
|
+
<%= render 'promethee/partials/include_components' %>
|
97
|
+
<%= render 'promethee/partials/navbar' %>
|
98
|
+
<%= render 'promethee/partials/preview' %>
|
99
|
+
<%= render 'promethee/partials/mover' %>
|
100
|
+
<%= render 'promethee/partials/page' %>
|
101
|
+
</div>
|
@@ -4,5 +4,5 @@ offset = component[:attributes][:offset]
|
|
4
4
|
children = component[:children]
|
5
5
|
%>
|
6
6
|
<div class="col col-md-<%= size %><%= " col-md-offset-#{offset}" if offset > 0 %> <%= promethee_class_for component %>">
|
7
|
-
<%= render
|
7
|
+
<%= render 'promethee/components/children', children: children %>
|
8
8
|
</div>
|
@@ -1,40 +1,42 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/column">
|
2
|
-
<div
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
<ng-include src="'promethee/components/index'"></ng-include>
|
21
|
-
|
22
|
-
<span type="button" class="btn btn-default btn-block" ng-click="addComponentTo(component.children)" style="margin: 0 6px 6px 6px;width: auto">Add component</span>
|
2
|
+
<div class="col
|
3
|
+
col-md-{{component.attributes.size}}
|
4
|
+
col-md-offset-{{component.attributes.offset}}
|
5
|
+
promethee-editor__component
|
6
|
+
promethee-editor__component--column">
|
7
|
+
<div class="promethee-editor__toolbar">
|
8
|
+
Column
|
9
|
+
<%= render 'promethee/partials/toolbar_buttons' %>
|
10
|
+
</div>
|
11
|
+
<div ng-show="editing" class="promethee-editor__wrapper">
|
12
|
+
<div class="form-group">
|
13
|
+
<label class="label-control">Size</label>
|
14
|
+
<input ng-model="component.attributes.size" class="form-control" type="number"/>
|
15
|
+
</div>
|
16
|
+
<div class="form-group">
|
17
|
+
<label class="label-control">Offset</label>
|
18
|
+
<input ng-model="component.attributes.offset" class="form-control" type="number"/>
|
23
19
|
</div>
|
24
20
|
</div>
|
25
|
-
</div>
|
26
|
-
</script>
|
27
|
-
|
28
|
-
<script>
|
29
|
-
promethee.controller('ColumnController', ['$scope', 'definitions', function($scope, definitions) {
|
30
21
|
|
31
|
-
|
32
|
-
return definition.data.type;
|
33
|
-
});
|
22
|
+
<ng-include src="'promethee/components/children'"></ng-include>
|
34
23
|
|
35
|
-
|
36
|
-
|
37
|
-
|
24
|
+
<span type="button"
|
25
|
+
class="btn btn-default btn-block"
|
26
|
+
ng-click="addComponentTo(component.children)">Add component</span>
|
27
|
+
</div>
|
28
|
+
</script>
|
38
29
|
|
39
|
-
|
30
|
+
<script type="text/ng-template" id="promethee/components/column/move">
|
31
|
+
<div class="col col-md-{{component.attributes.size}} col-md-offset-{{component.attributes.offset}}">
|
32
|
+
<h1>Column</h1>
|
33
|
+
<ng-include src="'promethee/partials/mover'"></ng-include>
|
34
|
+
<div class=" promethee-editor__mover--droppable
|
35
|
+
promethee-editor__mover--droppable--row
|
36
|
+
promethee-editor__mover--droppable--row--inside-column"
|
37
|
+
droppable
|
38
|
+
data-index="{{$index+1}}"
|
39
|
+
data-type="{{type}}"
|
40
|
+
>
|
41
|
+
</div>
|
40
42
|
</script>
|
@@ -1,35 +1,34 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/image">
|
2
|
-
<div ng-controller="ImageController"
|
3
|
-
<div
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
<div ng-show="editing" class="promethee-editor__wrapper">
|
12
|
-
<div class="form-group">
|
13
|
-
<label class="label-control">Url</label>
|
14
|
-
<input ng-model="component.attributes.src" class="form-control" type="text"/>
|
15
|
-
</div>
|
16
|
-
<div class="form-group">
|
17
|
-
<label class="label-control">Alt</label>
|
18
|
-
<input ng-model="component.attributes.alt" class="form-control" type="text"/>
|
19
|
-
</div>
|
20
|
-
</div>
|
21
|
-
<div ng-show="component.attributes.src">
|
22
|
-
<img ng-click="edit()" ng-src="{{component.attributes.src}}" class="img-responsive">
|
2
|
+
<div ng-controller="ImageController" class="promethee-editor__component promethee-editor__component--image">
|
3
|
+
<div class="promethee-editor__toolbar">
|
4
|
+
Image
|
5
|
+
<%= render 'promethee/partials/toolbar_buttons' %>
|
6
|
+
</div>
|
7
|
+
<div ng-show="editing" class="promethee-editor__wrapper">
|
8
|
+
<div class="form-group">
|
9
|
+
<label class="label-control">Url</label>
|
10
|
+
<input ng-model="component.attributes.src" class="form-control" type="text"/>
|
23
11
|
</div>
|
24
|
-
<div
|
25
|
-
<
|
12
|
+
<div class="form-group">
|
13
|
+
<label class="label-control">Alt</label>
|
14
|
+
<input ng-model="component.attributes.alt" class="form-control" type="text"/>
|
26
15
|
</div>
|
27
16
|
</div>
|
17
|
+
<div ng-show="component.attributes.src">
|
18
|
+
<img ng-click="edit()" ng-src="{{component.attributes.src}}" class="img-responsive">
|
19
|
+
</div>
|
20
|
+
<div ng-hide="component.attributes.src">
|
21
|
+
<p ng-hide="editing" ng-click="edit()" class="text-center">Click to set the image</p>
|
22
|
+
</div>
|
28
23
|
</div>
|
29
24
|
</script>
|
30
25
|
|
26
|
+
<script type="text/ng-template" id="promethee/components/image/move">
|
27
|
+
<img ng-src="{{component.attributes.src}}" class="img-responsive">
|
28
|
+
</script>
|
29
|
+
|
31
30
|
<script>
|
32
|
-
angular.injector(['ng', '
|
31
|
+
angular.injector(['ng', 'Promethee']).get('definitions').push({
|
33
32
|
name: 'Image',
|
34
33
|
thumb: 'http://via.placeholder.com/300x200',
|
35
34
|
data: {
|
@@ -52,9 +51,5 @@
|
|
52
51
|
this.editing = false;
|
53
52
|
};
|
54
53
|
|
55
|
-
$scope.remove = function() {
|
56
|
-
this.components.splice(this.components.indexOf(this.component), 1);
|
57
|
-
};
|
58
|
-
|
59
54
|
}]);
|
60
55
|
</script>
|
@@ -0,0 +1 @@
|
|
1
|
+
<%= render 'promethee/components/children', children: page[:children] %>
|
@@ -0,0 +1,10 @@
|
|
1
|
+
<script type="text/ng-template" id="promethee/components/page">
|
2
|
+
<div ng-init="component = data"
|
3
|
+
class="promethee-editor__component promethee-editor__component--page">
|
4
|
+
<ng-include src="'promethee/components/children'"></ng-include>
|
5
|
+
</div>
|
6
|
+
</script>
|
7
|
+
|
8
|
+
<script type="text/ng-template" id="promethee/components/page/move">
|
9
|
+
<ng-include src="'promethee/partials/mover'"></ng-include>
|
10
|
+
</script>
|
@@ -1,6 +1,3 @@
|
|
1
|
-
<%
|
2
|
-
children = component[:children]
|
3
|
-
%>
|
4
1
|
<div class="row <%= promethee_class_for component %>">
|
5
|
-
<%= render
|
2
|
+
<%= render 'promethee/components/children', children: component[:children] %>
|
6
3
|
</div>
|
@@ -1,26 +1,27 @@
|
|
1
1
|
<script type="text/ng-template" id="promethee/components/row">
|
2
|
-
<div
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
<%= render 'promethee/partials/toolbar_buttons' %>
|
8
|
-
</div>
|
9
|
-
<div ng-show="editing" class="promethee-editor__wrapper">
|
10
|
-
Nothing to edit (yet...)
|
11
|
-
</div>
|
12
|
-
|
13
|
-
<ng-include src="'promethee/components/index'"></ng-include>
|
14
|
-
|
15
|
-
<div class="clearfix"></div>
|
16
|
-
<span class="btn btn-default btn-block" ng-click="addColumn()" style="margin: 0 6px 6px 6px;width: auto">Add column</span>
|
17
|
-
</div>
|
2
|
+
<div ng-controller="RowController"
|
3
|
+
class="row promethee-editor__component promethee-editor__component--row">
|
4
|
+
<div class="promethee-editor__toolbar">
|
5
|
+
Row
|
6
|
+
<%= render 'promethee/partials/toolbar_buttons' %>
|
18
7
|
</div>
|
8
|
+
<div ng-show="editing" class="promethee-editor__wrapper">
|
9
|
+
</div>
|
10
|
+
<ng-include src="'promethee/components/children'"></ng-include>
|
11
|
+
<div class="clearfix"></div>
|
12
|
+
<span class="btn btn-default btn-block" ng-click="addColumn()" style="margin: 0 6px 6px 6px;width: auto">Add column</span>
|
13
|
+
</div>
|
14
|
+
</script>
|
15
|
+
|
16
|
+
<script type="text/ng-template" id="promethee/components/row/move">
|
17
|
+
<h1>Row</h1>
|
18
|
+
<div class="row">
|
19
|
+
<ng-include src="'promethee/partials/mover'"></ng-include>
|
19
20
|
</div>
|
20
21
|
</script>
|
21
22
|
|
22
23
|
<script>
|
23
|
-
angular.injector(['ng', '
|
24
|
+
angular.injector(['ng', 'Promethee']).get('definitions').push({
|
24
25
|
name: 'Row',
|
25
26
|
thumb: 'http://via.placeholder.com/300x200',
|
26
27
|
data: {
|
@@ -38,16 +39,12 @@
|
|
38
39
|
this.component.children.push({
|
39
40
|
type: 'column',
|
40
41
|
attributes: {
|
41
|
-
size:
|
42
|
+
size: 4,
|
42
43
|
offset: 0
|
43
44
|
},
|
44
45
|
children: []
|
45
46
|
})
|
46
47
|
}
|
47
48
|
|
48
|
-
$scope.remove = function() {
|
49
|
-
this.components.splice(this.components.indexOf(this.component), 1);
|
50
|
-
};
|
51
|
-
|
52
49
|
}]);
|
53
50
|
</script>
|