Subversion Repositories bacoAlunos

Rev

Rev 1775 | Rev 1782 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1775 Rev 1781
Line 3... Line 3...
3
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
3
<%@ taglib uri="/WEB-INF/tlds/struts-logic.tld" prefix="logic" %>
4
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
4
<%@ taglib uri="/WEB-INF/tlds/struts-bean.tld" prefix="bean" %>
5
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
5
<%@ taglib uri="/WEB-INF/tlds/struts-tiles.tld" prefix="tiles" %>
6
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
6
<%@ taglib uri="/WEB-INF/tlds/baco.tld" prefix="baco" %>
7
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
7
<%@ taglib uri="/WEB-INF/tlds/jomm.tld" prefix="jomm" %>
-
 
8
<%@ page import="jomm.dao.impl.AbstractDao" %>
-
 
9
<%@ page import="pt.estgp.estgweb.domain.BpmnProcessImpl" %>
-
 
10
<%@ page import="pt.estgp.estgweb.domain.dao.DaoFactory" %>
8
<%@ page import="pt.estgp.estgweb.web.filters.UserRoleProxy" %>
11
<%@ page import="pt.estgp.estgweb.web.filters.UserRoleProxy" %>
-
 
12
<%@ taglib tagdir="/WEB-INF/tags" prefix="bacoTags" %>
9
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
13
<%@ page contentType="text/html;charset=UTF-8" language="java" %>
-
 
14
<%
-
 
15
 
-
 
16
    Long processId = Long.parseLong(request.getParameter("id"));
-
 
17
    AbstractDao.getCurrentSession().beginTransaction();
-
 
18
    BpmnProcessImpl process = (BpmnProcessImpl) DaoFactory.getBpmnProcessDaoImpl().get(processId);
-
 
19
 
-
 
20
 
-
 
21
%>
-
 
22
 
-
 
23
<style>
-
 
24
    div.dirty
-
 
25
    {
-
 
26
        border: 3px dashed orangered !important;
-
 
27
    }
-
 
28
</style>
10
 
29
 
11
 
30
 
12
<link rel="stylesheet" href="<%=request.getContextPath()%>/user/pagecontent/jorgeaux/angulartree/bower_components/angular-ui-tree/dist/angular-ui-tree.min.css">
31
<link rel="stylesheet" href="<%=request.getContextPath()%>/user/pagecontent/jorgeaux/angulartree/bower_components/angular-ui-tree/dist/angular-ui-tree.min.css">
13
<script type="text/javascript" src="<%=request.getContextPath()%>/user/pagecontent/jorgeaux/angulartree/bower_components/angular-ui-tree/dist/angular-ui-tree.js"></script>
32
<script type="text/javascript" src="<%=request.getContextPath()%>/user/pagecontent/jorgeaux/angulartree/bower_components/angular-ui-tree/dist/angular-ui-tree.js"></script>
14
 
33
 
Line 31... Line 50...
31
var processEditorModule = angular.module('processEditorModule', ['ui.tree']);
50
var processEditorModule = angular.module('processEditorModule', ['ui.tree']);
32
GLOBAL_BacoAngularAppDependencies.push('processEditorModule');
51
GLOBAL_BacoAngularAppDependencies.push('processEditorModule');
33
 
52
 
34
/**Fim de directiva reutilizavel**/
53
/**Fim de directiva reutilizavel**/
35
 
54
 
36
processEditorModule.controller('processEditorModuleController', function($scope) {
55
processEditorModule.controller('processEditorModuleController', function($scope,$interval,$filter)
37
    //$scope.files = {"service":"ok","uploadedFiles":[{fileName:"teste"}]};
-
 
38
    $scope.idTemp = -1;
-
 
-
 
56
{
39
 
57
 
40
    $scope.jsps = [];
58
    $scope.autoSavesObjects = [];
-
 
59
    $scope.inicializarSaves = function()
-
 
60
    {
-
 
61
        $interval(autoSaves,5000);
-
 
62
    }
41
 
63
 
42
    $scope.initBuilder = function()
64
    $scope.autoSaves = function()
43
    {
65
    {
-
 
66
        for(x in process.flowComponents)
-
 
67
        {
-
 
68
            var obj = process.flowComponents[x];
44
        $scope.initJsps();
69
            if(obj.dirty == true)
-
 
70
            {
-
 
71
 
-
 
72
            }
-
 
73
        }
-
 
74
        for(x in process.actorPools)
-
 
75
        {
-
 
76
            var obj = process.actorPools[f];
-
 
77
            if(obj.dirty == true)
-
 
78
            {
-
 
79
 
-
 
80
            }
-
 
81
        }
45
    }
82
    }
46
 
83
 
47
    $scope.initJsps = function()
84
    $scope.callService = function(service,parameters,callback)
48
    {
85
    {
49
        widgetCallWithActionParameters(
86
        widgetCallWithActionParameters(
50
                "<%=request.getContextPath()%>/admin/bpmn/bpmnController.do",
87
                "<%=request.getContextPath()%>/admin/bpmn/bpmnController.do",
-
 
88
                service,
-
 
89
                parameters,
51
                "loadJspsPlugins",{},"#processEditorModule",
90
                "#processEditorModule",
52
                function(interfaces)
91
                function(jsonAnswer)
-
 
92
                {
-
 
93
                    callback(jsonAnswer);
-
 
94
                    $scope.$apply();
-
 
95
                }
-
 
96
        );
-
 
97
    }
-
 
98
    $scope.callSimpleService = function(service,parameters,callback)
-
 
99
    {
-
 
100
        widgetSimpleCallWithActionParameters(
-
 
101
                "<%=request.getContextPath()%>/admin/bpmn/bpmnController.do",
-
 
102
                service,
-
 
103
                parameters,
-
 
104
                "#processEditorModule",
-
 
105
                function()
53
                {
106
                {
54
                    $scope.jsps = interfaces.jsps;
107
                    callback();
55
                    $scope.$apply();
108
                    $scope.$apply();
56
                    $(".angularChosen").chosen();
-
 
57
                }
109
                }
58
        );
110
        );
59
    }
111
    }
60
 
112
 
-
 
113
    //$scope.files = {"service":"ok","uploadedFiles":[{fileName:"teste"}]};
-
 
114
    $scope.idTemp = -1;
-
 
115
 
-
 
116
    $scope.jsps = [];
-
 
117
 
-
 
118
 
-
 
119
    $scope.initBuilder = function()
-
 
120
    {
-
 
121
        $scope.initJsps();
-
 
122
    }
-
 
123
 
-
 
124
    $scope.initJsps = function()
-
 
125
    {
-
 
126
        $scope.callService("loadJspsPlugins",{},function(interfaces)
-
 
127
        {
-
 
128
            $scope.jsps = interfaces.jsps;
-
 
129
            $scope.$apply();
-
 
130
            $(".angularChosen").chosen();
-
 
131
        });
-
 
132
    }
-
 
133
 
61
 
134
 
62
    /** Funções que interagem com directiva reutilizavel **/
135
    /** Funções que interagem com directiva reutilizavel **/
63
    $scope.save = function() {
136
    $scope.save = function() {
64
        $scope.$broadcast('show-errors-check-validity');
137
        $scope.$broadcast('show-errors-check-validity');
65
 
138
 
Line 77... Line 150...
77
        $scope.user = { name: '', email: '' };
150
        $scope.user = { name: '', email: '' };
78
    }
151
    }
79
    /** Fim de Funções que interagem com directiva reutilizavel **/
152
    /** Fim de Funções que interagem com directiva reutilizavel **/
80
 
153
 
81
 
154
 
82
    $scope.process = {
155
    $scope.process = <%=process.toJson()%>;
83
        "dbId" : 0,
-
 
84
        "description" : "",
-
 
85
        "name" : "",
-
 
86
        "class" : "BpmnProcessImpl",
-
 
87
        "path" : "",
-
 
88
        "flowComponents" : [],
-
 
89
        "actorPools" : [],
-
 
90
        //Para o controlo de atividade docente
-
 
91
        "esquemaPontos" : {
-
 
92
            "atividades" : []
-
 
93
        }
-
 
94
    };
-
 
95
 
156
 
96
    $scope.remove = function (scope) {
157
    $scope.removeTask = function (poolId,taskId,$index)
-
 
158
    {
-
 
159
        $scope.callSimpleService("removeTask",{"poolId":poolId,"taskId":taskId},function()
-
 
160
        {
-
 
161
            var pool = $filter('filter')($scope.process.actorPools, {id: poolId })[0];
-
 
162
            pool.flowComponents.splice($index,1);
97
        scope.remove();
163
        });
98
    }
164
    }
99
 
165
 
100
    $scope.newAtividadePontuada = function(){
166
    $scope.setDirty = function(obj)
101
        $scope.process.esquemaPontos.atividades.push(
-
 
102
                {
167
    {
103
                    "papelValidador" : "",
-
 
104
                    "pontos" : "",
168
        obj.dirty = "true";
105
                    "tipoAtividadeNome" : "",
-
 
106
                    "tipoAtividadeChave" : ""
169
        $scope.autoSavesObjects.push(obj);
107
                }
-
 
108
        );
-
 
109
        setTimeout(function() { invokeChosenSelects("#controloAtividadeDocente"); }, 100);
-
 
110
    }
170
    }
111
 
171
 
-
 
172
 
-
 
173
 
112
    $scope.newActorPool = function()
174
    $scope.newActorPool = function()
113
    {
175
    {
-
 
176
        $scope.callService("addActorPool",{"processId":$scope.process.id},function(actorPool)
114
        $scope.idTemp--;
177
        {
115
        $scope.process.actorPools.push(
178
            if($scope.process.actorPools == null)
116
                {
179
                $scope.process.actorPools = [];
117
                    "dbId" : $scope.idTemp,
180
            $scope.process.actorPools.push(actorPool);
118
                    "name" : "",
181
            $scope.$apply();
119
                    "roles" : []
182
            invokeChosenSelects("#bpmnPools");
120
                }
183
        });
-
 
184
    }
-
 
185
 
-
 
186
    $scope.addTaskActor = function(pool)
-
 
187
    {
-
 
188
        $scope.callService("addTaskActor",{"poolId":pool.id},function(taskActor)
121
        );
189
        {
-
 
190
            if(pool.flowComponents == null)
-
 
191
                pool.flowComponents = [];
-
 
192
            pool.flowComponents.push(taskActor);
-
 
193
            $scope.$apply();
122
        setTimeout(function() { invokeChosenSelects("#bpmnPools"); }, 100);
194
            //invokeChosenSelects("#bpmnPools");
-
 
195
        });
123
    }
196
    }
124
 
197
 
125
    $scope.newRoleForPool = function(item)
198
    $scope.newRoleForPool = function(item)
126
    {
199
    {
127
        $scope.idTemp--;
200
        $scope.idTemp--;
-
 
201
        if(item.roles == null)
-
 
202
        {
-
 
203
            item.roles = [];
-
 
204
        }
128
        item.roles.push(
205
        item.roles.push(
129
                {
206
                {
130
                    "role" : "",
207
                    "role" : "",
131
                    "trans" : ""
208
                    "trans" : ""
132
                }
209
                }
Line 134... Line 211...
134
        //O chosen está off para que na primeira interação nao actue sobre
211
        //O chosen está off para que na primeira interação nao actue sobre
135
        //o option padrão que está sempre presente para preenchimento pelo Angular
212
        //o option padrão que está sempre presente para preenchimento pelo Angular
136
        setTimeout(function() { invokeChosenSelects("#bpmnPools"); }, 100);
213
        setTimeout(function() { invokeChosenSelects("#bpmnPools"); }, 100);
137
    }
214
    }
138
 
215
 
139
 
-
 
140
    <%--
-
 
141
    $scope.newStepInProcess = function()
-
 
142
    {
-
 
143
        $scope.idTemp--;
-
 
144
        $scope.process.bpmnSteps.push(
-
 
145
                {
-
 
146
                    "dbId" : $scope.idTemp,
-
 
147
                    "name" : "",
-
 
148
                    "description" : "",
-
 
149
                    "bpmnSteps" : [],
-
 
150
                    "flowComponents" : []
-
 
151
                }
-
 
152
        );
-
 
153
    }
-
 
154
    $scope.newStepInStep = function(step)
-
 
155
    {
-
 
156
        $scope.idTemp--;
-
 
157
        step.bpmnSteps.push(
-
 
158
                {
-
 
159
                    "dbId" : $scope.idTemp,
-
 
160
                    "name" : "",
-
 
161
                    "description" : "",
-
 
162
                    "bpmnSteps" : [],
-
 
163
                    "flowComponents" : []
-
 
164
                }
-
 
165
        );
-
 
166
    }--%>
-
 
167
 
-
 
168
    $scope.newFlowComponent = function(type)
-
 
169
    {
-
 
170
 
-
 
171
        $scope.idTemp--;
-
 
172
        var i = $scope.process.flowComponents.push(
-
 
173
                {
-
 
174
                    "dbId" : $scope.idTemp,
-
 
175
                    "name" : "",
-
 
176
                    "class" : "",
-
 
177
                    "type" : type,
-
 
178
                    "description" : "",
-
 
179
                    "flowConnectors" : [],
-
 
180
 
-
 
181
                    //Tarefa Actor
-
 
182
                    "interface" : "",
-
 
183
                    "actorPool" : "",
-
 
184
                    //Tarefa GatewayExc
-
 
185
                    "question" : "",
-
 
186
                    //Evento Fim Mensagens
-
 
187
                    "sendEmail" : false,
-
 
188
                    "emailMsg" : ""
-
 
189
                }
-
 
190
        );
-
 
191
        //$scope.flowComponents.push(step.flowComponents[i-1]);
-
 
192
    }
-
 
193
 
-
 
194
    $scope.newFlowConnector = function(component)
-
 
195
    {
-
 
196
        $scope.idTemp--;
-
 
197
        component.flowConnectors.push(
-
 
198
                {
-
 
199
                    "dbId" : $scope.idTemp,
-
 
200
                    "key" : "",
-
 
201
                    "name" : "",
-
 
202
                    "sendEmail" : false,
-
 
203
                    "emailMsg" : "",
-
 
204
                    "targetComponent" : ""
-
 
205
                }
-
 
206
        );
-
 
207
    }
-
 
208
 
-
 
209
});
216
});
210
/**
217
/**
211
 Directiva showErrors reutilizavel para validação de forms groups
218
 Directiva showErrors reutilizavel para validação de forms groups
212
 Basta que um campo no form tenha a classe form-control*
219
 Basta que um campo no form tenha a classe form-control*
213
 
220
 
Line 290... Line 297...
290
</script>
297
</script>
291
 
298
 
292
<!--TODO TIRAR DAQUI-->
299
<!--TODO TIRAR DAQUI-->
293
<select ng-model="jsp" class="chosenOff angularChosen" ng-options="o for o in jsps"></select>
300
<select ng-model="jsp" class="chosenOff angularChosen" ng-options="o for o in jsps"></select>
294
 
301
 
-
 
302
 
295
<form class="row" name="processoForm">
303
<form class="row" name="processoForm">
296
    <button type="submit" ng-click="save()">Teste</button>
304
    <button type="submit" ng-click="save()">Teste</button>
297
    <div class="col-md-9 form-horizontal">
305
    <div class="col-md-9 form-horizontal">
298
 
306
 
299
        <div class="panel panel-primary">
307
        <div class="panel panel-primary">
Line 365... Line 373...
365
                Pools de Atores
373
                Pools de Atores
366
                <button class="btn btn-xs btn-success pull-right" type="button" ng-click="newActorPool()"><span class="glyphicon glyphicon-plus"></span></button>
374
                <button class="btn btn-xs btn-success pull-right" type="button" ng-click="newActorPool()"><span class="glyphicon glyphicon-plus"></span></button>
367
            </div>
375
            </div>
368
 
376
 
369
            <div ng-repeat="a in process.actorPools" class="panel-body gutter-0">
377
            <div ng-repeat="a in process.actorPools" class="panel-body gutter-0">
370
                <div class="col-md-1">
378
                <div class="panel panel-default">
371
                    <span class="glyphicon glyphicon-user"></span>
379
                    <div class="panel-heading clearfix">
372
                </div>
380
                        <a class="pull-right btn btn-default btn-xs bpmnTask" data-nodrag ng-click="addTaskActor(a)" style="margin-right: 8px;">
373
                <div class="col-md-5">
381
                            <span class="bpmn-icon-task"></span></a>
374
                    <input placeholder="Coloque aqui o nome do ator" class="form-control" ng-model="a.name">
382
                        <a class="pull-right btn btn-default btn-xs bpmnGateway" data-nodrag ng-click="newFlowComponent('bpmnGateway')" style="margin-right: 8px;">
375
                </div>
-
 
376
                <div class="col-md-1">
383
                            <span class="bpmn-icon-gateway-none"></span></a>
377
                    <button class="btn btn-xs btn-success pull-right" type="button" ng-click="newRoleForPool(a)"><span class="glyphicon glyphicon-plus"></span>Papel</button>
384
                        <a class="pull-right btn btn-default btn-xs bpmnEndEvent" data-nodrag ng-click="newFlowComponent('bpmnEndEvent')" style="margin-right: 8px;">
-
 
385
                            <span class="bpmn-icon-end-event-none"></span></a>
378
                </div>
386
                    </div>
379
                <div class="col-md-4">
387
                    <div class="panel-body">
380
                    <label ng-if="a.roles.length == 0">Não obrigatórios</label>
-
 
381
                    <div ng-repeat="r in a.roles" class="gutter-0">
-
 
382
                        <div class="col-md-2">
388
                        <div class="col-md-1">
383
                            <a class="btn btn-danger btn-xs" data-nodrag ng-click="a.roles.splice($index, 1)"><span
-
 
384
                                    class="glyphicon glyphicon-remove"></span></a>
389
                            <span class="glyphicon glyphicon-user"></span>
385
                        </div>
390
                        </div>
386
                        <div class="col-md-10">
391
                        <div class="col-md-5">
387
 
-
 
388
                            <select class="chosenOff" ng-model="r.role" class="form-control">
392
                            <input placeholder="Coloque aqui o nome do ator" class="form-control" ng-model="a.name">
389
                                <%
393
                        </div>
390
                                    for(String role: UserRoleProxy.getUserRoles())
-
 
391
                                    {
-
 
392
                                        request.setAttribute("role",role);
-
 
393
                                %>
394
                        <div class="col-md-1">
394
                                <option value="${role}" ng-selected="{{r.role == '${role}'}}"><bean:message key="user.role.${role}"/></option>
395
                            <button class="btn btn-xs btn-success pull-right" type="button" ng-click="newRoleForPool(a)"><span class="glyphicon glyphicon-plus"></span>Papel</button>
395
                                <%
-
 
396
                                    }
-
 
397
                                %>
-
 
398
                            </select>
-
 
399
                        </div>
396
                        </div>
-
 
397
                        <div class="col-md-4">
-
 
398
                            <label ng-if="a.roles.length == 0">Não obrigatórios</label>
-
 
399
                            <div ng-repeat="r in a.roles" class="gutter-0">
-
 
400
                                <div class="col-md-2">
-
 
401
                                    <a class="btn btn-danger btn-xs" data-nodrag ng-click="a.roles.splice($index, 1)"><span
-
 
402
                                            class="glyphicon glyphicon-remove"></span></a>
-
 
403
                                </div>
-
 
404
                                <div class="col-md-10">
-
 
405
 
-
 
406
                                    <select class="chosenOff" ng-model="r.role" class="form-control">
-
 
407
                                        <%
-
 
408
                                            for(String role: UserRoleProxy.getUserRoles())
-
 
409
                                            {
-
 
410
                                                request.setAttribute("role",role);
-
 
411
                                        %>
-
 
412
                                        <option value="${role}" ng-selected="{{r.role == '${role}'}}"><bean:message key="user.role.${role}"/></option>
-
 
413
                                        <%
-
 
414
                                            }
-
 
415
                                        %>
-
 
416
                                    </select>
-
 
417
                                </div>
400
 
418
 
-
 
419
                            </div>
-
 
420
                        </div>
-
 
421
                        <div class="col-md-1">
-
 
422
                            <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="process.actorPools.splice($index, 1)"><span
-
 
423
                                    class="glyphicon glyphicon-remove"></span></a>
-
 
424
                        </div>
-
 
425
                    </div>
-
 
426
                    <div class="panel-body">
-
 
427
                        <div ui-tree="treeOptions" id="page-content-root">
-
 
428
                            <div class="form-group">
-
 
429
                                <label class="control-label"> Pesquisar:</label>
-
 
430
                                <div class="col-md-4">
-
 
431
                                    <input class="form-control" ng-model="a.searchText">
-
 
432
                                </div>
-
 
433
                            </div>
-
 
434
 
-
 
435
                            <ol ui-tree-nodes ng-model="a.flowComponents">
-
 
436
                                <li   ng-repeat="node in a.flowComponents | filter:a.searchText" ui-tree-node ng-include="'flowComponent_renderer.html'" ng-init="pool=a"></li>
-
 
437
                            </ol>
-
 
438
                        </div>
401
                    </div>
439
                    </div>
402
                </div>
440
                </div>
403
                <div class="col-md-1">
-
 
404
                    <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="process.actorPools.splice($index, 1)"><span
-
 
405
                            class="glyphicon glyphicon-remove"></span></a>
-
 
406
                </div>
-
 
-
 
441
 
407
            </div>
442
            </div>
408
 
443
 
409
        </div>
444
        </div>
410
 
445
 
411
 
446
 
412
 
447
 
413
 
448
 
414
        <div class="panel panel-default">
-
 
415
            <div class="panel-heading clearfix">
-
 
416
                <a class="pull-right btn btn-default btn-xs bpmnTask" data-nodrag ng-click="newFlowComponent('bpmnTask')" style="margin-right: 8px;">
-
 
417
                    <span class="bpmn-icon-task"></span></a>
-
 
418
                <a class="pull-right btn btn-default btn-xs bpmnGateway" data-nodrag ng-click="newFlowComponent('bpmnGateway')" style="margin-right: 8px;">
-
 
419
                    <span class="bpmn-icon-gateway-none"></span></a>
-
 
420
                <a class="pull-right btn btn-default btn-xs bpmnEndEvent" data-nodrag ng-click="newFlowComponent('bpmnEndEvent')" style="margin-right: 8px;">
-
 
421
                    <span class="bpmn-icon-end-event-none"></span></a>
-
 
422
            </div>
-
 
423
            <div class="panel-body">
-
 
424
                <div ui-tree="treeOptions" id="page-content-root">
-
 
425
                    <ol ui-tree-nodes ng-model="process.flowComponents">
-
 
426
                        <li ng-repeat="node in process.flowComponents" ui-tree-node ng-include="'flowComponent_renderer.html'"></li>
-
 
427
                    </ol>
-
 
428
                </div>
-
 
429
            </div>
-
 
430
        </div>
449
 
431
    </div>
450
    </div>
432
 
451
 
433
    <div style="background-color: #fff2c3" class="col-md-3">
452
    <div style="background-color: #fff2c3" class="col-md-3">
434
        <h2>Debug</h2>
453
        <h2>Debug</h2>
435
        <pre class="code">{{ process | json }}</pre>
454
        <pre class="code">{{ process | json }}</pre>
Line 438... Line 457...
438
</form>
457
</form>
439
 
458
 
440
 
459
 
441
 
460
 
442
 
461
 
443
<%--
-
 
444
<script type="text/ng-template" id="childs_renderer.html">
-
 
445
    <!-- Coloquei aqui o predicado no NGClass que quando existe uma property nodrop = true o angular coloca nodrop na class o que faz o elemento ficar a vermelho e nao permite drop-->
-
 
446
 
-
 
447
    <div class="panel panel-default panel-block bpmnFase" ui-tree-handle data-nodrag class="tree-node tree-node-content" ng-class="{nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
-
 
448
        <div class="panel-heading clearfix">
-
 
449
            <div class="row gutter-0">
-
 
450
                <div class="col-md-1">
-
 
451
                    <span class="icon icon-stack pull-left col-md-2"></span> Fase
-
 
452
                </div>
-
 
453
                <div class="col-md-10">
-
 
454
                    <input data-nodrag class="form-control" ng-model="node.name">
-
 
455
                </div>
-
 
456
                <div class="col-md-1">
-
 
457
                    <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="remove(this)"><span
-
 
458
                            class="glyphicon glyphicon-remove"></span></a>
-
 
459
                </div>
-
 
460
            </div>
-
 
461
        </div>
-
 
462
        <div class="panel-body">
-
 
463
 
-
 
464
        </div>
-
 
465
        <div class="panel-footer clearfix">
-
 
466
            <a class="btn btn-success btn-xs" ng-if="node.bpmnSteps && node.bpmnSteps.length > 0" data-nodrag ng-click="toggle(this)">
-
 
467
                <span class="glyphicon" ng-class="{'glyphicon-chevron-right': collapsed,'glyphicon-chevron-down': !collapsed}"></span>
-
 
468
            </a>
-
 
469
 
-
 
470
            <span ng-if="node.nodrop">No drop</span> <span ng-if="node.nodrag">No drag</span>
-
 
471
 
-
 
472
            <a class="pull-left btn btn-primary btn-xs" data-nodrag ng-click="newStepInStep(node)" style="margin-right: 8px;"><span
-
 
473
                    class="glyphicon glyphicon-plus"></span>Fase</a>
-
 
474
            <a class="pull-right btn btn-default btn-xs bpmnTask" data-nodrag ng-click="newFlowComponent(node,'bpmnTask')" style="margin-right: 8px;">
-
 
475
                <span class="bpmn-icon-task"></span></a>
-
 
476
            <a class="pull-right btn btn-default btn-xs bpmnGateway" data-nodrag ng-click="newFlowComponent(node,'bpmnGateway')" style="margin-right: 8px;">
-
 
477
                <span class="bpmn-icon-gateway-none"></span></a>
-
 
478
            <a class="pull-right btn btn-default btn-xs bpmnEndEvent" data-nodrag ng-click="newFlowComponent(node,'bpmnEndEvent')" style="margin-right: 8px;">
-
 
479
                <span class="bpmn-icon-end-event-none"></span></a>
-
 
480
        </div>
-
 
481
    </div>
-
 
482
 
-
 
483
 
-
 
484
    <ol ui-tree-nodes="" data-nodrop-enabled="true" ng-model="node.flowComponents" ng-class="{hidden: collapsed}">
-
 
485
        <li ng-repeat="node in node.flowComponents" ui-tree-node ng-include="'flowComponent_renderer.html'">
-
 
486
        </li>
-
 
487
    </ol>
-
 
488
    <ol ui-tree-nodes="" ng-model="node.childs" ng-class="{hidden: collapsed}">
-
 
489
        <li ng-repeat="node in node.bpmnSteps" ui-tree-node ng-include="'childs_renderer.html'">
-
 
490
        </li>
-
 
491
    </ol>
-
 
492
</script>
-
 
493
--%>
-
 
494
 
462
 
495
 
463
 
496
<script type="text/ng-template" id="flowComponent_renderer.html">
464
<script type="text/ng-template" id="flowComponent_renderer.html">
497
    <!-- Coloquei aqui o predicado no NGClass que quando existe uma property nodrop = true o angular coloca nodrop na class o que faz o elemento ficar a vermelho e nao permite drop-->
465
    <!-- Coloquei aqui o predicado no NGClass que quando existe uma property nodrop = true o angular coloca nodrop na class o que faz o elemento ficar a vermelho e nao permite drop-->
498
    <div class="panel panel-default panel-block tree-node tree-node-content nodrop" ng-class="node.type" ng-class="{nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
466
    <div   class="panel panel-default panel-block tree-node tree-node-content nodrop"  ng-class="{bpmnActorTask: node['@class'] == 'pt.estgp.estgweb.domain.BpmnFlowComponentTaskActorImpl',dirty: node.dirty=='true',nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
499
        <div class="panel-heading clearfix" ng-class="node.type">
467
        <div class="panel-heading clearfix" ng-class="node.type">
500
            <div class="row gutter-0">
468
            <div class="row gutter-0">
501
                <div class="col-md-1">
469
                <div class="col-md-1">
502
                    <i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i>
470
                    <i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i>
503
                </div>
471
                </div>
504
                <div class="col-md-2">
472
                <div class="col-md-2">
505
                    <span ng-if="node.type == 'bpmnTask'" class="bpmn-icon-task"></span>
473
                    <span ng-if="node['@class'] == 'pt.estgp.estgweb.domain.BpmnFlowComponentTaskActorImpl'" class="bpmn-icon-task"></span>
506
                    <span ng-if="node.type == 'bpmnGateway'" class="bpmn-icon-gateway-none"></span>
474
                    <span ng-if="node.type == 'bpmnGateway'" class="bpmn-icon-gateway-none"></span>
507
                    <span ng-if="node.type == 'bpmnEndEvent'" class="bpmn-icon-end-event-none"></span>
475
                    <span ng-if="node.type == 'bpmnEndEvent'" class="bpmn-icon-end-event-none"></span>
508
 
476
 
509
                    <label ng-if="node.type == 'bpmnTask'" class="control-label">Tarefa</label>
477
                    <label ng-if="node['@class'] == 'pt.estgp.estgweb.domain.BpmnFlowComponentTaskActorImpl'" class="control-label">Tarefa Actor</label>
510
                    <label ng-if="node.type == 'bpmnGateway'" class="control-label">Gateway</label>
478
                    <label ng-if="node.type == 'bpmnGateway'" class="control-label">Gateway</label>
511
                    <label ng-if="node.type == 'bpmnEndEvent'" class="control-label">EventoFim</label>
479
                    <label ng-if="node.type == 'bpmnEndEvent'" class="control-label">EventoFim</label>
512
                </div>
480
                </div>
513
                <div class="col-md-8 no-drag" data-nodrag>
481
                <div class="col-md-8 no-drag" data-nodrag>
514
                    <input data-nodrag class="form-control" ng-model="node.name">
482
                    <input ng-keyup="setDirty(node)" data-nodrag class="form-control" ng-model="node.name">
515
                </div>
483
                </div>
516
                <div class="col-md-1">
484
                <div class="col-md-1">
-
 
485
 
517
                    <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="remove(this)"><span
486
                    <bacoTags:confirm  msg="Tem a certeza que deseja remover a atividade {{node.name}}" targetFunction="angular.element($('#processEditorModule')).scope().removeTask({{pool.id}},{{node.id}},{{$index}});angular.element($('#processEditorModule')).scope().$apply();" btnClass="btn btn-danger btn-xs pull-right" icon="glyphicon glyphicon-remove"/>
518
                            class="glyphicon glyphicon-remove"></span></a>
-
 
-
 
487
 
519
                </div>
488
                </div>
520
            </div>
489
            </div>
521
        </div>
490
        </div>
522
        <div class="panel-body">
491
        <div class="panel-body">
523
 
492
 
524
            <div class="form-group">
493
            <div class="form-group">
525
                <div class="col-md-2">
494
                <div class="col-md-2">
526
                    <span class="glyphicon glyphicon-user"></span> Actor Pool
495
                    <span class="glyphicon glyphicon-user"></span> Actor Pool
527
                </div>
496
                </div>
528
                <div class="col-md-10">
497
                <div class="col-md-10">
529
                    <select class="chosenOff form-control" ng-model="node.actorPool" class="form-control">
498
                    <select ng-change="setDirty(node)" class="chosenOff form-control" ng-model="node.actorPool" class="form-control">
530
                        <option ng-repeat="a in process.actorPools" value="{{a.dbId}}" ng-selected="{{a.dbId == node.actorPool}}">{{a.name}}</option>
499
                        <option ng-repeat="a in process.actorPools" value="{{a.dbId}}" ng-selected="{{a.dbId == node.actorPool}}">{{a.name}}</option>
531
                    </select>
500
                    </select>
532
                </div>
501
                </div>
533
            </div>
502
            </div>
534
        </div>
503
        </div>
Line 645... Line 614...
645
    }
614
    }
646
 
615
 
647
 
616
 
648
 
617
 
649
 
618
 
-
 
619
    .bpmnActorTask { background-color: #fff2c3 !important;border-color: #c69763 !important }
650
    .bpmnTask { background-color: #fff2c3 !important;border-color: #c69763 !important }
620
    .bpmnTask { background-color: #fff2c3 !important;border-color: #c69763 !important }
651
    .bpmnStartEvent { background-color: #EEF1CA !important; border-color: #A5CF84 !important }
621
    .bpmnStartEvent { background-color: #EEF1CA !important; border-color: #A5CF84 !important }
652
    .bpmnMiddleEvent { background-color: #A7BBCF !important ;border-color: #4F87B0 !important}
622
    .bpmnMiddleEvent { background-color: #A7BBCF !important ;border-color: #4F87B0 !important}
653
    .bpmnEndEvent { background-color: #FDE6E2 !important; border-color: #8C121D; !important }
623
    .bpmnEndEvent { background-color: #FDE6E2 !important; border-color: #8C121D; !important }
654
    .bpmnGateway { background-color: #ffcf53 !important; border-color: #ffa42a !important}
624
    .bpmnGateway { background-color: #ffcf53 !important; border-color: #ffa42a !important}
Line 734... Line 704...
734
        border: 2px solid blue !important;
704
        border: 2px solid blue !important;
735
    }
705
    }
736
</style>
706
</style>
737
</div>
707
</div>
738
708
 
-
 
709
<%
-
 
710
    AbstractDao.getCurrentSession().getTransaction().commit();
-
 
711
%>
-
 
712