Subversion Repositories bacoAlunos

Rev

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

Rev 1782 Rev 1785
Line 42... Line 42...
42
    .has-error .chosen-container
42
    .has-error .chosen-container
43
    {
43
    {
44
        border: 1px solid #a94442 !important;
44
        border: 1px solid #a94442 !important;
45
    }
45
    }
46
</style>
46
</style>
-
 
47
 
47
<script>
48
<script>
48
 
49
 
-
 
50
var BacoJS = (function () {
-
 
51
 
-
 
52
    //"private" variables:
-
 
53
    var myPrivateVar = "I can be accessed only from within obj.";
-
 
54
 
-
 
55
    //"private" method:
-
 
56
    var orderKeys = function(obj, expected) {
-
 
57
        var keys = Object.keys(obj).sort(function keyOrder(k1, k2)
-
 
58
        {
-
 
59
 
-
 
60
            if (k1 < k2) return -1;
-
 
61
            else if (k1 > k2) return +1;
-
 
62
            else return 0;
-
 
63
        });
-
 
64
 
-
 
65
        var i, after = {};
-
 
66
        for (i = 0; i < keys.length; i++) {
-
 
67
            after[keys[i]] = obj[keys[i]];
-
 
68
            delete obj[keys[i]];
-
 
69
        }
-
 
70
 
-
 
71
        for (i = 0; i < keys.length; i++) {
-
 
72
            obj[keys[i]] = after[keys[i]];
-
 
73
        }
-
 
74
        return obj;
-
 
75
    }
-
 
76
    var orderKeysRecur = function orderKeysRecur(obj, expected) {
-
 
77
 
-
 
78
        for (var k in obj)
-
 
79
        {
-
 
80
            if (typeof obj[k] == "object" && obj[k] !== null)
-
 
81
                orderKeysRecur(obj[k]);
-
 
82
            else
-
 
83
                orderKeys(obj, expected);
-
 
84
        }
-
 
85
    }
-
 
86
 
-
 
87
 
-
 
88
    return {
-
 
89
 
-
 
90
        stringifyOrdered: function(jsonObj)
-
 
91
        {
-
 
92
            return JSON.stringify(orderKeysRecur(jsonObj));
-
 
93
        }
-
 
94
    };
-
 
95
})();
-
 
96
 
-
 
97
 
-
 
98
 
-
 
99
//console.log(JSON.stringify(orderKeys(example)));
-
 
100
 
-
 
101
 
-
 
102
 
-
 
103
 
49
//DECLARACAO DA APLICACAO LOCAL EM ANGULAR
104
//DECLARACAO DA APLICACAO LOCAL EM ANGULAR
50
var processEditorModule = angular.module('processEditorModule', ['ui.tree']);
105
var processEditorModule = angular.module('processEditorModule', ['ui.tree']);
51
GLOBAL_BacoAngularAppDependencies.push('processEditorModule');
106
GLOBAL_BacoAngularAppDependencies.push('processEditorModule');
52
 
107
 
53
/**Fim de directiva reutilizavel**/
108
/**Fim de directiva reutilizavel**/
Line 85... Line 140...
85
                    $scope.$apply();
140
                    $scope.$apply();
86
                }
141
                }
87
        );
142
        );
88
    }
143
    }
89
 
144
 
-
 
145
    /*
-
 
146
    * Variaveis e metodos auxiliares
-
 
147
    * */
-
 
148
 
-
 
149
    $scope.allFlowComponents = [];
-
 
150
    $scope.autoSavesObjects = [];
-
 
151
    $scope.idTemp = -1;
-
 
152
    $scope.jsps = [];
-
 
153
 
90
    $scope.variaveisConstantes = [
154
    $scope.variaveisConstantes = [
91
        "Formulario",
155
        "Formulario",
92
        "Processo",
156
        "Processo",
93
        "Tarefa",
157
        "Tarefa",
94
        "User Executante",
158
        "User Executante",
95
        "User Iniciador Processo",
159
        "User Iniciador Processo",
96
        "UserSession"
160
        "UserSession"
97
 
161
 
98
 
162
 
99
    ];
163
    ];
-
 
164
 
-
 
165
 
-
 
166
    $scope.initBuilder = function()
-
 
167
    {
-
 
168
        $scope.initJsps();
-
 
169
        $scope.inicializarSaves();
100
    $scope.allFlowComponents = [];
170
        $scope.copiaFlowComponentsDasActorPools();
-
 
171
    }
-
 
172
 
-
 
173
 
101
    $scope.autoSavesObjects = [];
174
    $scope.initJsps = function()
-
 
175
    {
-
 
176
        $scope.callService("loadJspsPlugins",{},function(interfaces)
-
 
177
        {
-
 
178
            $scope.jsps = interfaces.jsps;
-
 
179
            $scope.$apply();
-
 
180
            $(".angularChosen").chosen();
-
 
181
        });
-
 
182
    }
-
 
183
 
102
    $scope.inicializarSaves = function()
184
    $scope.inicializarSaves = function()
103
    {
185
    {
104
        $interval($scope.autoSaves,2000);
186
        $interval($scope.autoSaves,2000);
105
    }
187
    }
106
 
188
 
Line 168... Line 250...
168
        }
250
        }
169
    }
251
    }
170
 
252
 
171
 
253
 
172
 
254
 
173
    //$scope.files = {"service":"ok","uploadedFiles":[{fileName:"teste"}]};
-
 
174
    $scope.idTemp = -1;
-
 
175
 
-
 
176
    $scope.jsps = [];
-
 
177
 
-
 
178
 
-
 
179
    $scope.initBuilder = function()
-
 
180
    {
-
 
181
        $scope.initJsps();
-
 
182
        $scope.inicializarSaves();
-
 
183
        $scope.copiaFlowComponentsDasActorPools();
-
 
184
    }
-
 
185
 
-
 
186
    $scope.initJsps = function()
-
 
187
    {
-
 
188
        $scope.callService("loadJspsPlugins",{},function(interfaces)
-
 
189
        {
-
 
190
            $scope.jsps = interfaces.jsps;
-
 
191
            $scope.$apply();
-
 
192
            $(".angularChosen").chosen();
-
 
193
        });
-
 
194
    }
-
 
195
 
-
 
196
 
255
 
197
    /** Funções que interagem com directiva reutilizavel **/
256
    /** Funções que interagem com directiva reutilizavel **/
198
    $scope.save = function() {
257
    $scope.save = function() {
199
        $scope.$broadcast('show-errors-check-validity');
258
        $scope.$broadcast('show-errors-check-validity');
200
 
259
 
Line 212... Line 271...
212
        $scope.user = { name: '', email: '' };
271
        $scope.user = { name: '', email: '' };
213
    }
272
    }
214
    /** Fim de Funções que interagem com directiva reutilizavel **/
273
    /** Fim de Funções que interagem com directiva reutilizavel **/
215
 
274
 
216
 
275
 
-
 
276
    /*
-
 
277
    * Funcoes e variaveis especificas do Processo
-
 
278
    *
-
 
279
    * */
-
 
280
 
217
    $scope.process = <%=process.toJson()%>;
281
    $scope.process = <%=process.toJson()%>;
218
 
282
 
219
    //todo remove do allComponennts
283
    $scope.removeActorPool = function(poolId,$index)
-
 
284
    {
-
 
285
        var pool = $filter('filter')($scope.process.actorPools, {id: poolId })[0];
-
 
286
        if(pool.flowComponents && pool.flowComponents.length > 0)
-
 
287
        {
-
 
288
            alert("Não pode apagar esta pool com atividades no seu interior");
-
 
289
        }
-
 
290
        else
-
 
291
        {
-
 
292
            $scope.callSimpleService("removeActorPool",{"poolId":pool.id},function()
-
 
293
            {
-
 
294
                $scope.process.actorPools.splice($index,1);
-
 
295
            });
-
 
296
        }
-
 
297
    }
-
 
298
 
220
    $scope.removeTask = function (poolId,taskId,$index)
299
    $scope.removeTask = function (poolId,taskId,$index)
221
    {
300
    {
222
        $scope.callSimpleService("removeTask",{"poolId":poolId,"taskId":taskId},function()
301
        $scope.callSimpleService("removeTask",{"poolId":poolId,"taskId":taskId},function()
223
        {
302
        {
224
            var pool = $filter('filter')($scope.process.actorPools, {id: poolId })[0];
303
            var pool = $filter('filter')($scope.process.actorPools, {id: poolId })[0];
Line 227... Line 306...
227
            var index = $scope.allFlowComponents.indexOf(taskInAllFlows );
306
            var index = $scope.allFlowComponents.indexOf(taskInAllFlows );
228
            $scope.allFlowComponents.splice(index,1);
307
            $scope.allFlowComponents.splice(index,1);
229
        });
308
        });
230
    }
309
    }
231
 
310
 
232
    $scope.removeConnector = function (taskId,connectorId,poolId,$index)
311
    $scope.removeConnector = function (connectorId,taskId,poolId,$index)
233
    {
312
    {
234
        $scope.callSimpleService("removeConnector",{"taskId":taskId,"connectorId":connectorId},function()
313
        $scope.callSimpleService("removeConnector",{"taskId":taskId,"connectorId":connectorId},function()
235
        {
314
        {
236
            var pool = $filter('filter')($scope.process.actorPools, {id: poolId })[0];
315
            var pool = $filter('filter')($scope.process.actorPools, {id: poolId })[0];
237
            var task = $filter('filter')(pool.flowComponents, {id: taskId })[0];
316
            var task = $filter('filter')(pool.flowComponents, {id: taskId })[0];
Line 285... Line 364...
285
 
364
 
286
    $scope.addConnector = function(task)
365
    $scope.addConnector = function(task)
287
    {
366
    {
288
        $scope.callService("addConnector",{"taskId":task.id},function(connector)
367
        $scope.callService("addConnector",{"taskId":task.id},function(connector)
289
        {
368
        {
-
 
369
            //connector = orderKeys(connector);
290
            if(task.flowConnectors == null)
370
            if(task.flowConnectors == null)
291
                task.flowConnectors = [];
371
                task.flowConnectors = [];
292
            task.flowConnectors.push(connector);
372
            task.flowConnectors.push(connector);
293
            $scope.$apply();
373
            $scope.$apply();
294
            //invokeChosenSelects("#bpmnPools");
374
            //invokeChosenSelects("#bpmnPools");
295
        });
375
        });
296
    }
376
    }
297
 
377
 
-
 
378
    $scope.orderConnector = function(connector)
-
 
379
    {
-
 
380
        orderKeys(connector);
-
 
381
    }
-
 
382
 
-
 
383
    $scope.orderKeysRecursive = function(object)
-
 
384
    {
-
 
385
        console.log(BacoJS.stringifyOrdered(object));
-
 
386
    }
-
 
387
 
298
    $scope.newRoleForPool = function(item)
388
    $scope.newRoleForPool = function(item)
299
    {
389
    {
300
        $scope.idTemp--;
390
        $scope.idTemp--;
301
        if(item.roles == null)
391
        if(item.roles == null)
302
        {
392
        {
Line 404... Line 494...
404
</style>
494
</style>
405
<div class="web-messages"></div>
495
<div class="web-messages"></div>
406
<form  style="height: 80vh" class="row" name="processoForm">
496
<form  style="height: 80vh" class="row" name="processoForm">
407
 
497
 
408
    <div  style="height: 80vh;overflow-y: auto;" class="col-md-6 form-horizontal">
498
    <div  style="height: 80vh;overflow-y: auto;" class="col-md-6 form-horizontal">
409
 
-
 
-
 
499
        <button type="button" ng-click="orderKeysRecursive(process)">Ordena</button>
410
        <div class="panel panel-primary">
500
        <div class="panel panel-primary">
411
            <div class="panel-heading">
501
            <div class="panel-heading">
412
                Identificação do Processo
502
                Identificação do Processo
413
            </div>
503
            </div>
414
            <div class="panel-body">
504
            <div class="panel-body">
Line 479... Line 569...
479
 
569
 
480
            <div ng-repeat="a in process.actorPools" class="panel-body gutter-0">
570
            <div ng-repeat="a in process.actorPools" class="panel-body gutter-0">
481
                <div class="panel panel-default">
571
                <div class="panel panel-default">
482
                    <div class="panel-heading clearfix">
572
                    <div class="panel-heading clearfix">
483
                        <a class="pull-right btn btn-default btn-xs bpmnTask" data-nodrag ng-click="addTaskActor(a)" style="margin-right: 8px;">
573
                        <a class="pull-right btn btn-default btn-xs bpmnTask" data-nodrag ng-click="addTaskActor(a)" style="margin-right: 8px;">
484
                            <span class="bpmn-icon-task"></span></a>
574
                            <span class="glyphicon glyphicon-user"></span><span class="bpmn-icon-task"></span></a>
485
                        <a class="pull-right btn btn-default btn-xs bpmnGateway" data-nodrag ng-click="newFlowComponent('bpmnGateway')" style="margin-right: 8px;">
575
                        <a class="pull-right btn btn-default btn-xs bpmnGateway" data-nodrag ng-click="newFlowComponent('bpmnGateway')" style="margin-right: 8px;">
486
                            <span class="bpmn-icon-gateway-none"></span></a>
576
                            <span class="bpmn-icon-gateway-none"></span></a>
487
                        <a class="pull-right btn btn-default btn-xs bpmnEndEvent" data-nodrag ng-click="newFlowComponent('bpmnEndEvent')" style="margin-right: 8px;">
577
                        <a class="pull-right btn btn-default btn-xs bpmnEndEvent" data-nodrag ng-click="newFlowComponent('bpmnEndEvent')" style="margin-right: 8px;">
488
                            <span class="bpmn-icon-end-event-none"></span></a>
578
                            <span class="bpmn-icon-end-event-none"></span></a>
489
                    </div>
579
                    </div>
Line 520... Line 610...
520
                                </div>
610
                                </div>
521
 
611
 
522
                            </div>
612
                            </div>
523
                        </div>
613
                        </div>
524
                        <div class="col-md-1">
614
                        <div class="col-md-1">
525
                            <a class="pull-right btn btn-danger btn-xs" data-nodrag ng-click="process.actorPools.splice($index, 1)"><span
-
 
526
                                    class="glyphicon glyphicon-remove"></span></a>
615
                            <bacoTags:confirm  msg="Tem a certeza que deseja remover a pool {{a.name}}" targetFunction="angular.element($('#processEditorModule')).scope().removeActorPool({{a.id}},{{$index}});angular.element($('#processEditorModule')).scope().$apply();" btnClass="btn btn-danger btn-xs pull-right" icon="glyphicon glyphicon-remove"/>
-
 
616
 
527
                        </div>
617
                        </div>
528
                    </div>
618
                    </div>
529
                    <div class="panel-body">
619
                    <div class="panel-body">
530
                        <div ui-tree="treeOptions" id="page-content-root">
620
                        <div ui-tree="treeOptions" id="page-content-root">
531
                            <div class="form-group">
621
                            <div class="form-group">
Line 630... Line 720...
630
        <div class="panel-body">
720
        <div class="panel-body">
631
            <table class="tableHeading">
721
            <table class="tableHeading">
632
                <tr>
722
                <tr>
633
                    <td><i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i></td>
723
                    <td><i class="glyphicon glyphicon-resize-vertical" ui-tree-handle></i></td>
634
                    <td>
724
                    <td>
635
                        <span ng-if="node['@class'] == 'pt.estgp.estgweb.domain.BpmnFlowComponentTaskActorImpl'" class="bpmn-icon-task"></span>
725
                        <span ng-if="node['@class'] == 'pt.estgp.estgweb.domain.BpmnFlowComponentTaskActorImpl'">
-
 
726
                            <span class="glyphicon glyphicon-user"></span><span class="bpmn-icon-task"></span>
-
 
727
                        </span>
636
                        <span ng-if="node.type == 'bpmnGateway'" class="bpmn-icon-gateway-none"></span>
728
                        <span ng-if="node.type == 'bpmnGateway'" class="bpmn-icon-gateway-none"></span>
637
                        <span ng-if="node.type == 'bpmnEndEvent'" class="bpmn-icon-end-event-none"></span>
729
                        <span ng-if="node.type == 'bpmnEndEvent'" class="bpmn-icon-end-event-none"></span>
638
                        <label ng-if="node['@class'] == 'pt.estgp.estgweb.domain.BpmnFlowComponentTaskActorImpl'" class="control-label">Tarefa Actor</label>
730
                        <label ng-if="node['@class'] == 'pt.estgp.estgweb.domain.BpmnFlowComponentTaskActorImpl'" class="control-label">Tarefa Actor</label>
639
                        <label ng-if="node.type == 'bpmnGateway'" class="control-label">Gateway</label>
731
                        <label ng-if="node.type == 'bpmnGateway'" class="control-label">Gateway</label>
640
                        <label ng-if="node.type == 'bpmnEndEvent'" class="control-label">EventoFim</label>
732
                        <label ng-if="node.type == 'bpmnEndEvent'" class="control-label">EventoFim</label>
Line 669... Line 761...
669
                    class="bpmn-icon-connection"></span></a>
761
                    class="bpmn-icon-connection"></span></a>
670
 
762
 
671
        </div>
763
        </div>
672
    </div>
764
    </div>
673
 
765
 
674
    <ol ui-tree-nodes="" data-nodrop-enabled="true" ng-model="node.flowConnectors" ng-class="{hidden: collapsed}">
766
    <ol ui-tree-nodes="" data-nodrop-enabled="true" ng-model="node.flowConnectors" ng-class="{hidden: collapsed}" ng-init="task=node">
675
        <li ng-repeat="node in node.flowConnectors" ui-tree-node ng-include="'connector_renderer.html'" ng-init="task=node;pool=pool">
767
        <li ng-repeat="node in node.flowConnectors" ui-tree-node ng-include="'connector_renderer.html'">
676
        </li>
768
        </li>
677
    </ol>
769
    </ol>
678
</script>
770
</script>
679
 
771
 
680
 
772
 
681
<script type="text/ng-template" id="connector_renderer.html">
773
<script type="text/ng-template" id="connector_renderer.html">
682
    <!-- 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-->
774
    <!-- 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-->
683
 
775
 
684
 
-
 
-
 
776
    <button type="button" ng-click="orderConnector(node)">Ordena</button>
685
    <div ng-click="select(node)" class="panel panel-info panel-block tree-node tree-node-content bpmnConnector" data-nodrag ng-class="{dirty: node.dirty==true, selected: node.selected == true,nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
777
    <div ng-click="select(node)" class="panel panel-info panel-block tree-node tree-node-content bpmnConnector" data-nodrag ng-class="{dirty: node.dirty==true, selected: node.selected == true,nodrop: node.nodrop, nodrag: node.nodrag, moved: node.moved}">
686
        <div class="panel-heading clearfix" ng-class="node.type">
778
        <div class="panel-heading clearfix" ng-class="node.type">
687
            <div class="row gutter-0">
779
            <div class="row gutter-0">
688
                <table class="tableHeading">
780
                <table class="tableHeading">
689
                    <tr>
781
                    <tr>
Line 693... Line 785...
693
                        </td>
785
                        </td>
694
                        <td class="headingTitle">
786
                        <td class="headingTitle">
695
                            <input ng-keyup="setDirty(node)" data-nodrag class="form-control" ng-model="node.nameConnection">
787
                            <input ng-keyup="setDirty(node)" data-nodrag class="form-control" ng-model="node.nameConnection">
696
                        </td>
788
                        </td>
697
                        <td>
789
                        <td>
698
                            <bacoTags:confirm  msg="Tem a certeza que deseja remover o connector {{node.name}}" targetFunction="angular.element($('#processEditorModule')).scope().removeConnector({{task.id}},{{node.id}},{{pool.id}}{{$index}});angular.element($('#processEditorModule')).scope().$apply();" btnClass="btn btn-danger btn-xs pull-right" icon="glyphicon glyphicon-remove"/>
790
                            <bacoTags:confirm  msg="Tem a certeza que deseja remover o connector {{node.name}}" targetFunction="angular.element($('#processEditorModule')).scope().removeConnector({{node.id}},{{task.id}},{{pool.id}},{{$index}});angular.element($('#processEditorModule')).scope().$apply();" btnClass="btn btn-danger btn-xs pull-right" icon="glyphicon glyphicon-remove"/>
699
                        </td>
791
                        </td>
700
                    </tr>
792
                    </tr>
701
                </table>
793
                </table>
702
            </div>
794
            </div>
703
        </div>
795
        </div>
Line 705... Line 797...
705
            <div class="form-group">
797
            <div class="form-group">
706
                <div class="col-md-2">
798
                <div class="col-md-2">
707
                    <span class="glyphicon glyphicon-arrow-right"></span> Ligação
799
                    <span class="glyphicon glyphicon-arrow-right"></span> Ligação
708
                </div>
800
                </div>
709
                <div class="col-md-10">
801
                <div class="col-md-10">
710
                    <select data-nodrag class="form-control" ng-model="node.flowComponentId"
802
                    <select ng-change="setDirty(node)" data-nodrag class="form-control" ng-model="node.flowComponentId"
711
                            ng-options="f.id as f.title for f in allFlowComponents">
803
                            ng-options="f.id as f.title for f in allFlowComponents">
712
                    </select>
804
                    </select>
713
                </div>
805
                </div>
714
            </div>
806
            </div>
715
            <div class="form-group">
807
            <div class="form-group">
716
                <div class="col-md-2">
808
                <div class="col-md-2">
717
                    <span class="glyphicon glyphicon-tag"></span> Chave
809
                    <span class="glyphicon glyphicon-tag"></span> Chave
718
                </div>
810
                </div>
719
                <div class="col-md-10">
811
                <div class="col-md-10">
720
                    <input type="text" data-nodrag class="form-control" ng-model="node.keyValue">
812
                    <input type="text" ng-keyup="setDirty(node)" data-nodrag class="form-control" ng-model="node.keyValue">
721
                </div>
813
                </div>
722
            </div>
814
            </div>
723
            <div class="form-group">
815
            <div class="form-group">
724
                <div class="col-md-2">
816
                <div class="col-md-2">
725
                    <span class="glyphicon glyphicon-envelope"></span> Enviar Emails
817
                    <span class="glyphicon glyphicon-envelope"></span> Enviar Emails
726
                </div>
818
                </div>
727
                <div class="col-md-2">
819
                <div class="col-md-2">
728
                    <select class="form-control chosenOff" ng-model="node.sendEmail" ng-options="o.v as o.n for o in [{ n: 'Sim', v: true }, { n: 'Não', v: false }]">
820
                    <select class="form-control chosenOff" ng-change="setDirty(node)" ng-model="node.sendEmail" ng-options="o.v as o.n for o in [{ n: 'Sim', v: true }, { n: 'Não', v: false }]">
729
                    </select>
821
                    </select>
730
                </div>
822
                </div>
731
            </div>
823
            </div>
732
            <div class="form-group" ng-show="node.sendEmail==true">
824
            <div class="form-group" ng-show="node.sendEmail==true">
733
                <div class="col-md-2">
825
                <div class="col-md-2">
734
                    Mensagem
826
                    Mensagem
735
                </div>
827
                </div>
736
                <div class="col-md-10">
828
                <div class="col-md-10">
737
                    <textarea rows="3" class="form-control" ng-model="node.msgEmail"></textarea>
829
                    <textarea ng-keyup="setDirty(node)" rows="3" class="form-control" ng-model="node.msgEmail"></textarea>
738
                </div>
830
                </div>
739
            </div>
831
            </div>
740
        </div>
832
        </div>
741
    </div>
833
    </div>
742
 
834