Commit e2a64d42 authored by Huang's avatar Huang
Browse files

no commit message

parent 0844dd86
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
/*
* Task listeners
*/
var KisBpmTaskListenersCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/task-listeners-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmTaskListenersPopupCtrl = [ '$scope', '$q', '$translate', function($scope, $q, $translate) {
// Put json representing form properties on scope
if ($scope.property.value !== undefined && $scope.property.value !== null
&& $scope.property.value.taskListeners !== undefined
&& $scope.property.value.taskListeners !== null) {
if ($scope.property.value.taskListeners.constructor == String)
{
$scope.taskListeners = JSON.parse($scope.property.value.taskListeners);
}
else
{
// Note that we clone the json object rather then setting it directly,
// this to cope with the fact that the user can click the cancel button and no changes should have happened
$scope.taskListeners = angular.copy($scope.property.value.taskListeners);
}
for (var i = 0; i < $scope.taskListeners.length; i++)
{
var taskListener = $scope.taskListeners[i];
if (taskListener.className !== undefined && taskListener.className !== '')
{
taskListener.implementation = taskListener.className;
}
else if (taskListener.expression !== undefined && taskListener.expression !== '')
{
taskListener.implementation = taskListener.expression;
}
else if (taskListener.delegateExpression !== undefined && taskListener.delegateExpression !== '')
{
taskListener.implementation = taskListener.delegateExpression;
}
}
} else {
$scope.taskListeners = [];
}
// Array to contain selected properties (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedListeners = [];
$scope.selectedFields = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var eventPromise = $translate('PROPERTY.TASKLISTENERS.EVENT');
var implementationPromise = $translate('PROPERTY.TASKLISTENERS.FIELDS.IMPLEMENTATION');
var namePromise = $translate('PROPERTY.TASKLISTENERS.FIELDS.NAME');
$q.all([eventPromise, implementationPromise, namePromise]).then(function(results) {
$scope.labels.eventLabel = results[0];
$scope.labels.implementationLabel = results[1];
$scope.labels.nameLabel = results[2];
$scope.translationsRetrieved = true;
// Config for grid
$scope.gridOptions = {
data: 'taskListeners',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedListeners,
afterSelectionChange: function (rowItem, event) {
$scope.selectedFields.length = 0;
if ($scope.selectedListeners.length > 0)
{
var fields = $scope.selectedListeners[0].fields;
if (fields !== undefined && fields !== null)
{
for (var i = 0; i < fields.length; i++)
{
var field = fields[i];
if (field.stringValue !== undefined && field.stringValue !== '')
{
field.implementation = field.stringValue;
}
else if (field.expression !== undefined && field.expression !== '')
{
field.implementation = field.expression;
}
else if (field.string !== undefined && field.string !== '')
{
field.implementation = field.string;
}
}
}
}
},
columnDefs: [{ field: 'event', displayName: $scope.labels.eventLabel },
{ field: 'implementation', displayName: $scope.labels.implementationLabel}]
};
// Config for field grid
$scope.gridFieldOptions = {
data: 'selectedListeners[0].fields',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedFields,
columnDefs: [{ field: 'name', displayName: $scope.labels.name },
{ field: 'implementation', displayName: $scope.labels.implementationLabel}]
};
});
$scope.listenerDetailsChanged = function() {
if ($scope.selectedListeners[0].className !== '')
{
$scope.selectedListeners[0].implementation = $scope.selectedListeners[0].className;
}
else if ($scope.selectedListeners[0].expression !== '')
{
$scope.selectedListeners[0].implementation = $scope.selectedListeners[0].expression;
}
else if ($scope.selectedListeners[0].delegateExpression !== '')
{
$scope.selectedListeners[0].implementation = $scope.selectedListeners[0].delegateExpression;
}
else
{
$scope.selectedListeners[0].implementation = '';
}
};
// Click handler for add button
$scope.addNewListener = function() {
$scope.taskListeners.push({ event : 'create',
implementation : '',
className : '',
expression: '',
delegateExpression: ''});
};
// Click handler for remove button
$scope.removeListener = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.taskListeners.indexOf($scope.selectedListeners[0]);
$scope.gridOptions.selectItem(index, false);
$scope.taskListeners.splice(index, 1);
$scope.selectedListeners.length = 0;
if (index < $scope.taskListeners.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.taskListeners.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.moveListenerUp = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.taskListeners.indexOf($scope.selectedListeners[0]);
if (index != 0) { // If it's the first, no moving up of course
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
var temp = $scope.taskListeners[index];
$scope.taskListeners.splice(index, 1);
$timeout(function(){
$scope.taskListeners.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.moveListenerDown = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.taskListeners.indexOf($scope.selectedListeners[0]);
if (index != $scope.taskListeners.length - 1) { // If it's the last element, no moving down of course
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
var temp = $scope.taskListeners[index];
$scope.taskListeners.splice(index, 1);
$timeout(function(){
$scope.taskListeners.splice(index + 1, 0, temp);
}, 100);
}
}
};
$scope.fieldDetailsChanged = function() {
if ($scope.selectedFields[0].stringValue != '')
{
$scope.selectedFields[0].implementation = $scope.selectedFields[0].stringValue;
}
else if ($scope.selectedFields[0].expression != '')
{
$scope.selectedFields[0].implementation = $scope.selectedFields[0].expression;
}
else if ($scope.selectedFields[0].string != '')
{
$scope.selectedFields[0].implementation = $scope.selectedFields[0].string;
}
else
{
$scope.selectedFields[0].implementation = '';
}
};
// Click handler for add button
$scope.addNewField = function() {
if ($scope.selectedListeners.length > 0)
{
if ($scope.selectedListeners[0].fields == undefined)
{
$scope.selectedListeners[0].fields = [];
}
$scope.selectedListeners[0].fields.push({ name : 'fieldName',
implementation : '',
stringValue : '',
expression: '',
string: ''});
}
};
// Click handler for remove button
$scope.removeField = function() {
if ($scope.selectedFields.length > 0) {
var index = $scope.selectedListeners[0].fields.indexOf($scope.selectedFields[0]);
$scope.gridFieldOptions.selectItem(index, false);
$scope.selectedListeners[0].fields.splice(index, 1);
$scope.selectedFields.length = 0;
if (index < $scope.selectedListeners[0].fields.length) {
$scope.gridFieldOptions.selectItem(index + 1, true);
} else if ($scope.selectedListeners[0].fields.length > 0) {
$scope.gridFieldOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.moveFieldUp = function() {
if ($scope.selectedFields.length > 0) {
var index = $scope.selectedListeners[0].fields.indexOf($scope.selectedFields[0]);
if (index != 0) { // If it's the first, no moving up of course
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
var temp = $scope.selectedListeners[0].fields[index];
$scope.selectedListeners[0].fields.splice(index, 1);
$timeout(function(){
$scope.selectedListeners[0].fields.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.moveFieldDown = function() {
if ($scope.selectedFields.length > 0) {
var index = $scope.selectedListeners[0].fields.indexOf($scope.selectedFields[0]);
if (index != $scope.selectedListeners[0].fields.length - 1) { // If it's the last element, no moving down of course
// Reason for funny way of swapping, see https://github.com/angular-ui/ng-grid/issues/272
var temp = $scope.selectedListeners[0].fields[index];
$scope.selectedListeners[0].fields.splice(index, 1);
$timeout(function(){
$scope.selectedListeners[0].fields.splice(index + 1, 0, temp);
}, 100);
}
}
};
// Click handler for save button
$scope.save = function() {
if ($scope.taskListeners.length > 0) {
$scope.property.value = {};
$scope.property.value.taskListeners = $scope.taskListeners;
} else {
$scope.property.value = null;
}
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.cancel = function() {
$scope.close();
};
// Close button handler
$scope.close = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
}];
\ No newline at end of file
/*
* Activiti Modeler component part of the Activiti project
* Copyright 2005-2014 Alfresco Software, Ltd. All rights reserved.
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
* License as published by the Free Software Foundation; either
* version 2.1 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Lesser General Public License for more details.
* You should have received a copy of the GNU Lesser General Public
* License along with this library; if not, write to the Free Software
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
*/
'use strict';
var KISBPM = KISBPM || {};
KISBPM.PROPERTY_CONFIG =
{
"string": {
"readModeTemplateUrl": "editor-app/configuration/properties/default-value-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/string-property-write-mode-template.html"
},
"boolean": {
"templateUrl": "editor-app/configuration/properties/boolean-property-template.html"
},
"text" : {
"readModeTemplateUrl": "editor-app/configuration/properties/default-value-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/text-property-write-template.html"
},
"kisbpm-multiinstance" : {
"readModeTemplateUrl": "editor-app/configuration/properties/default-value-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/multiinstance-property-write-template.html"
},
"oryx-formproperties-complex": {
"readModeTemplateUrl": "editor-app/configuration/properties/form-properties-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/form-properties-write-template.html"
},
"oryx-executionlisteners-multiplecomplex": {
"readModeTemplateUrl": "editor-app/configuration/properties/execution-listeners-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/execution-listeners-write-template.html"
},
"oryx-tasklisteners-multiplecomplex": {
"readModeTemplateUrl": "editor-app/configuration/properties/task-listeners-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/task-listeners-write-template.html"
},
"oryx-eventlisteners-multiplecomplex": {
"readModeTemplateUrl": "editor-app/configuration/properties/event-listeners-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/event-listeners-write-template.html"
},
"oryx-usertaskassignment-complex": {
"readModeTemplateUrl": "editor-app/configuration/properties/assignment-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/assignment-write-template.html"
},
"oryx-servicetaskfields-complex": {
"readModeTemplateUrl": "editor-app/configuration/properties/fields-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/fields-write-template.html"
},
"oryx-callactivityinparameters-complex": {
"readModeTemplateUrl": "editor-app/configuration/properties/in-parameters-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/in-parameters-write-template.html"
},
"oryx-callactivityoutparameters-complex": {
"readModeTemplateUrl": "editor-app/configuration/properties/out-parameters-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/out-parameters-write-template.html"
},
"oryx-subprocessreference-complex": {
"readModeTemplateUrl": "editor-app/configuration/properties/subprocess-reference-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/subprocess-reference-write-template.html"
},
"oryx-sequencefloworder-complex" : {
"readModeTemplateUrl": "editor-app/configuration/properties/sequenceflow-order-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/sequenceflow-order-write-template.html"
},
"oryx-conditionsequenceflow-complex" : {
"readModeTemplateUrl": "editor-app/configuration/properties/condition-expression-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/condition-expression-write-template.html"
},
"oryx-signaldefinitions-multiplecomplex" : {
"readModeTemplateUrl": "editor-app/configuration/properties/signal-definitions-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/signal-definitions-write-template.html"
},
"oryx-signalref-string" : {
"readModeTemplateUrl": "editor-app/configuration/properties/default-value-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/signal-property-write-template.html"
},
"oryx-messagedefinitions-multiplecomplex" : {
"readModeTemplateUrl": "editor-app/configuration/properties/message-definitions-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/message-definitions-write-template.html"
},
"oryx-messageref-string" : {
"readModeTemplateUrl": "editor-app/configuration/properties/default-value-display-template.html",
"writeModeTemplateUrl": "editor-app/configuration/properties/message-property-write-template.html"
}
};
<span ng-if="property.value.assignment.assignee">{{'PROPERTY.ASSIGNMENT.ASSIGNEE_DISPLAY' | translate:property.value.assignment }} </span>
<span ng-if="property.value.assignment.candidateUsers.length > 0">{{'PROPERTY.ASSIGNMENT.CANDIDATE_USERS_DISPLAY' | translate:property.value.assignment.candidateUsers}} </span>
<span ng-if="property.value.assignment.candidateGroups.length > 0">{{'PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS_DISPLAY' | translate:property.value.assignment.candidateGroups}} </span>
<span ng-if="!property.value.assignment.assignee && (!property.value.assignment.candidateUsers || property.value.assignment.candidateUsers.length == 0) && (!property.value.assignment.candidateGroups || property.value.assignment.candidateGroups.length == 0)" translate>PROPERTY.ASSIGNMENT.EMPTY</span>
\ No newline at end of file
<div class="modal" ng-controller="KisBpmAssignmentPopupCtrl">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-click="close()">&times;</button>
<h2 translate>PROPERTY.ASSIGNMENT.TITLE</h2>
</div>
<div class="modal-body">
<div class="row row-no-gutter">
<div class="form-group">
<label for="assigneeField">{{'PROPERTY.ASSIGNMENT.ASSIGNEE' | translate}}</label>
<input type="text" id="assigneeField" class="form-control" ng-model="assignment.assignee" placeholder="{{'PROPERTY.ASSIGNMENT.ASSIGNEE_PLACEHOLDER' | translate}}" />
</div>
</div>
<div class="row row-no-gutter">
<div class="form-group">
<label for="userField">{{'PROPERTY.ASSIGNMENT.CANDIDATE_USERS' | translate}}</label>
<div ng-repeat="candidateUser in assignment.candidateUsers">
<input id="userField" class="form-control" type="text" ng-model="candidateUser.value" />
<i class="glyphicon glyphicon-minus clickable-property" ng-click="removeCandidateUserValue($index)"></i>
<i ng-if="$index == (assignment.candidateUsers.length - 1)" class="glyphicon glyphicon-plus clickable-property" ng-click="addCandidateUserValue($index)"></i>
</div>
</div>
<div class="form-group">
<label for="groupField">{{'PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS' | translate}}</label>
<div ng-repeat="candidateGroup in assignment.candidateGroups">
<input id="groupField" class="form-control" type="text" ng-model="candidateGroup.value" />
<i class="glyphicon glyphicon-minus clickable-property" ng-click="removeCandidateGroupValue($index)"></i>
<i ng-if="$index == (assignment.candidateGroups.length - 1)" class="glyphicon glyphicon-plus clickable-property" ng-click="addCandidateGroupValue($index)"></i>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button ng-click="close()" class="btn btn-primary" translate>ACTION.CANCEL</button>
<button ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
</div>
</div>
</div>
</div>
\ No newline at end of file
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmAssignmentCtrl">
</span>
\ No newline at end of file
<div ng-controller="KisBpmBooleanPropertyCtrl">
<input type="checkbox" ng-model="property.value" ng-change="changeValue()"/>
</div>
\ No newline at end of file
<span ng-if="property.value">{{property.value|limitTo:20}}</span>
<span ng-if="!property.value">{{'PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY' | translate}}</span>
\ No newline at end of file
<div class="modal" ng-controller="KisBpmConditionExpressionPopupCtrl">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-click="close()">&times;</button>
<h2 translate>PROPERTY.SEQUENCEFLOW.CONDITION.TITLE</h2>
</div>
<div class="modal-body">
<div class="detail-group clearfix">
<div class="form-group clearfix">
<div class="col-xs-12">
<label class="col-xs-3">{{'PROPERTY.SEQUENCEFLOW.CONDITION.STATIC' | translate}}</label>
<div class="col-xs-9">
<textarea class="form-control" ng-model="conditionExpression.value" style="width:90%; height:100%; max-width: 100%; max-height: 100%; min-height: 100px"/>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button ng-click="close()" class="btn btn-primary" translate>ACTION.CANCEL</button>
<button ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
</div>
</div>
</div>
</div>
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmConditionExpressionCtrl">
</span>
\ No newline at end of file
<span ng-if="!property.noValue">{{property.value|limitTo:20}}</span>
<span ng-if="!property.noValue && property.value != null && property.value.length > 20">...</span>
<span ng-if="property.noValue" translate>PROPERTY.EMPTY</span>
\ No newline at end of file
<span ng-if="!property.noValue">{{'PROPERTY.EVENTLISTENERS.DISPLAY' | translate:property.value.eventListeners}}</span>
<span ng-if="property.noValue" translate>PROPERTY.EVENTLISTENERS.EMPTY</span>
\ No newline at end of file
<div class="modal" ng-controller="KisBpmEventListenersPopupCtrl">
<div class="modal-dialog modal-wide">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-click="close()">&times;</button>
<h2>{{'PROPERTY.PROPERTY.EDIT.TITLE' | translate:property}}</h2>
</div>
<div class="modal-body">
<div class="row row-no-gutter">
<div class="col-xs-10">
<div ng-if="translationsRetrieved" class="kis-listener-grid" ng-grid="gridOptions"></div>
<div class="pull-right">
<div class="btn-group">
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.MOVE.UP | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveListenerUp()"><i class="glyphicon glyphicon-arrow-up"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.MOVE.DOWN | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveListenerDown()"><i class="glyphicon glyphicon-arrow-down"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.ADD | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewListener()"><i class="glyphicon glyphicon-plus"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.REMOVE | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="removeListener()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
</div>
<div class="row row-no-gutter">
<div ng-if="translationsRetrieved" ng-show="selectedListeners.length > 0" class="col-xs-6">
<div class="form-group">
<label for="userField">{{'PROPERTY.EVENTLISTENERS.EVENTS' | translate}}</label>
<div ng-repeat="eventDefinition in selectedListeners[0].events">
<select id="eventField" class="form-control" ng-model="eventDefinition.event" ng-change="listenerDetailsChanged()">
<option title="{{'EVENT_TYPE.ACTIVITY.COMPENSATE.TOOLTIP' | translate}}">ACTIVITY_COMPENSATE</option>
<option title="{{'EVENT_TYPE.ACTIVITY.COMPLETED.TOOLTIP' | translate}}">ACTIVITY_COMPLETED</option>
<option title="bla">ACTIVITY_ERROR_RECEIVED</option>
<option>ACTIVITY_MESSAGE_RECEIVED</option>
<option>ACTIVITY_SIGNALED</option>
<option>ACTIVITY_STARTED</option>
<option>ENGINE_CLOSED</option>
<option>ENGINE_CREATED</option>
<option>ENTITY_ACTIVATED</option>
<option>ENTITY_CREATED</option>
<option>ENTITY_DELETED</option>
<option>ENTITY_INITIALIZED</option>
<option>ENTITY_SUSPENDED</option>
<option>ENTITY_UPDATED</option>
<option>JOB_EXECUTION_FAILURE</option>
<option>JOB_EXECUTION_SUCCESS</option>
<option>JOB_RETRIES_DECREMENTED</option>
<option title="{{'EVENT_TYPE.MEMBERSHIP.CREATED.TOOLTIP' | translate}}">MEMBERSHIP_CREATED</option>
<option title="{{'EVENT_TYPE.MEMBERSHIP.DELETED.TOOLTIP' | translate}}">MEMBERSHIP_DELETED</option>
<option title="{{'EVENT_TYPE.MEMBERSHIPS.DELETED.TOOLTIP' | translate}}">MEMBERSHIPS_DELETED</option>
<option title="{{'EVENT_TYPE.TASK.ASSIGNED.TOOLTIP' | translate}}">TASK_ASSIGNED</option>
<option title="{{'EVENT_TYPE.TASK.COMPLETED.TOOLTIP' | translate}}">TASK_COMPLETED</option>
<option>TIMER_FIRED</option>
<option title="{{'EVENT_TYPE.UNCAUGHT.BPMNERROR.TOOLTIP' | translate}}">UNCAUGHT_BPMN_ERROR</option>
<option title="{{'EVENT_TYPE.VARIABLE.CREATED.TOOLTIP' | translate}}">VARIABLE_CREATED</option>
<option title="{{'EVENT_TYPE.VARIABLE.DELETED.TOOLTIP' | translate}}">VARIABLE_DELETED</option>
<option title="{{'EVENT_TYPE.VARIABLE.UPDATED.TOOLTIP' | translate}}">VARIABLE_UPDATED</option>
</select>
<i ng-if="$index > 0" class="glyphicon glyphicon-minus clickable-property" ng-click="removeEventValue($index)"></i>
<i class="glyphicon glyphicon-plus clickable-property" ng-click="addEventValue($index)"></i>
</div>
<div class="form-group">
<label for="classField">{{'PROPERTY.EVENTLISTENERS.RETHROW' | translate}}</label>
<input type="checkbox" id="rethrowField" class="form-control" ng-model="selectedListeners[0].rethrowEvent" ng-change="listenerDetailsChanged()" />
</div>
</div>
</div>
<div ng-show="selectedListeners.length > 0 && selectedListeners[0].events[0].event" class="col-xs-6">
<div class="form-group" ng-if="!selectedListeners[0].rethrowEvent">
<label for="classField">{{'PROPERTY.EVENTLISTENERS.CLASS' | translate}}</label>
<input type="text" id="classField" class="form-control" ng-model="selectedListeners[0].className" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EVENTLISTENERS.CLASS.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group" ng-if="!selectedListeners[0].rethrowEvent">
<label for="delegateExpressionField">{{'PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION' | translate}}</label>
<input type="text" id="delegateExpressionField" class="form-control" ng-model="selectedListeners[0].delegateExpression" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group" ng-if="!selectedListeners[0].rethrowEvent">
<label for="entityTypeField">{{'PROPERTY.EVENTLISTENERS.ENTITYTYPE' | translate}}</label>
<input type="text" id="entityTypeField" class="form-control" ng-model="selectedListeners[0].entityType" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EVENTLISTENERS.ENTITYTYPE.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group" ng-if="selectedListeners[0].rethrowEvent">
<label for="delegateExpressionField">{{'PROPERTY.EVENTLISTENERS.RETHROWTYPE' | translate}}</label>
<select id="rethrowTypeField" class="form-control" ng-model="selectedListeners[0].rethrowType" ng-change="rethrowTypeChanged()">
<option>error</option>
<option>message</option>
<option>signal</option>
<option>globalSignal</option>
</select>
</div>
<div class="form-group" ng-if="selectedListeners[0].rethrowType === 'error'">
<label for="errorCodeField">{{'PROPERTY.EVENTLISTENERS.ERRORCODE' | translate}}</label>
<input type="text" id="errorCodeField" class="form-control" ng-model="selectedListeners[0].errorcode" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EVENTLISTENERS.ERRORCODE.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group" ng-if="selectedListeners[0].rethrowType === 'message'">
<label for="messageNameField">{{'PROPERTY.EVENTLISTENERS.MESSAGENAME' | translate}}</label>
<input type="text" id="messageNameField" class="form-control" ng-model="selectedListeners[0].messagename" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EVENTLISTENERS.MESSAGENAME.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group" ng-if="selectedListeners[0].rethrowType === 'signal' || selectedListeners[0].rethrowType === 'globalSignal'">
<label for="messageNameField">{{'PROPERTY.EVENTLISTENERS.SIGNALNAME' | translate}}</label>
<input type="text" id="signalNameField" class="form-control" ng-model="selectedListeners[0].signalname" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EVENTLISTENERS.SIGNALNAME.PLACEHOLDER' | translate}}" />
</div>
</div>
<div ng-show="selectedListeners.length == 0" class="col-xs-6 muted no-property-selected" translate>PROPERTY.EVENTLISTENERS.UNSELECTED</div>
</div>
</div>
<div class="modal-footer">
<button ng-click="cancel()" class="btn btn-primary" translate>ACTION.CANCEL</button>
<button ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
</div>
</div>
</div>
</div>
\ No newline at end of file
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmEventListenersCtrl">
</span>
\ No newline at end of file
<span ng-if="!property.noValue">{{'PROPERTY.EXECUTIONLISTENERS.DISPLAY' | translate:property.value.executionListeners}}</span>
<span ng-if="property.noValue" translate>PROPERTY.EXECUTIONLISTENERS.EMPTY</span>
\ No newline at end of file
<div class="modal" ng-controller="KisBpmExecutionListenersPopupCtrl">
<div class="modal-dialog modal-wide">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-click="close()">&times;</button>
<h2>{{'PROPERTY.PROPERTY.EDIT.TITLE' | translate:property}}</h2>
</div>
<div class="modal-body">
<div class="row row-no-gutter">
<div class="col-xs-6">
<div ng-if="translationsRetrieved" class="kis-listener-grid" ng-grid="gridOptions"></div>
<div class="pull-right">
<div class="btn-group">
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.MOVE.UP | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveListenerUp()"><i class="glyphicon glyphicon-arrow-up"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.MOVE.DOWN | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveListenerDown()"><i class="glyphicon glyphicon-arrow-down"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.ADD | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewListener()"><i class="glyphicon glyphicon-plus"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.REMOVE | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="removeListener()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-6">
<div ng-show="selectedListeners.length > 0">
<div class="form-group">
<label for="eventField">{{'PROPERTY.EXECUTIONLISTENERS.EVENT' | translate}}</label>
<select id="eventField" class="form-control" ng-model="selectedListeners[0].event">
<option>start</option>
<option>end</option>
<option>take</option>
</select>
</div>
<div class="form-group">
<label for="classField">{{'PROPERTY.EXECUTIONLISTENERS.CLASS' | translate}}</label>
<input type="text" id="classField" class="form-control" ng-model="selectedListeners[0].className" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EXECUTIONLISTENERS.CLASS.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.EXECUTIONLISTENERS.EXPRESSION' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedListeners[0].expression" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EXECUTIONLISTENERS.EXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="delegateExpressionField">{{'PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION' | translate}}</label>
<input type="text" id="delegateExpressionField" class="form-control" ng-model="selectedListeners[0].delegateExpression" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER' | translate}}" />
</div>
</div>
<div ng-show="selectedListeners.length == 0" class="muted no-property-selected" translate>PROPERTY.EXECUTIONLISTENERS.UNSELECTED</div>
</div>
</div>
<div class="row row-no-gutter">
<div class="col-xs-6">
<div ng-if="translationsRetrieved" class="kis-field-grid" ng-grid="gridFieldOptions"></div>
<div class="pull-right">
<div class="btn-group">
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.MOVE.UP | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveFieldUp()"><i class="glyphicon glyphicon-arrow-up"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.MOVE.DOWN | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveFieldDown()"><i class="glyphicon glyphicon-arrow-down"></i></a>
</div>
<div class="btn-group">
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.ADD | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewField()"><i class="glyphicon glyphicon-plus"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{ACTION.REMOVE | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="removeField()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-6">
<div ng-show="selectedFields.length > 0">
<div class="form-group">
<label for="nameField">{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME' | translate}}</label>
<input type="text" id="nameField" class="form-control" ng-model="selectedFields[0].name" placeholder="{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="stringValueField">{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE' | translate}}</label>
<input type="text" id="stringValueField" class="form-control" ng-model="selectedFields[0].stringValue" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedFields[0].expression" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="stringField">{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING' | translate}}</label>
<textarea id="stringField" class="form-control" ng-model="selectedFields[0].string" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING.PLACEHOLDER' | translate}}"></textarea>
</div>
</div>
<div ng-show="selectedFields.length == 0" class="muted no-property-selected"translate>PROPERTY.EXECUTIONLISTENERS.FIELDS.EMPTY</div>
</div>
</div>
</div>
<div class="modal-footer">
<button ng-click="cancel()" class="btn btn-primary" translate>ACTION.CANCEL</button>
<button ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
</div>
</div>
</div>
</div>
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmExecutionListenersCtrl">
</span>
\ No newline at end of file
<div class="modal" ng-controller="BpmnFeedbackPopupCtrl">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<h2>{{'PROPERTY.FEEDBACK.TITLE' | translate:property}}</h2>
</div>
<div class="modal-body">
<p><textarea auto-focus class="form-control" ng-model="model.feedback" style="width:90%; height:100%; max-width: 100%; max-height: 100%; min-height: 300px"/></p>
</div>
<div class="modal-footer">
<button ng-click="cancel()" class="btn btn-primary" translate >ACTION.CANCEL</button>
<button ng-click="send()" ng-disabled="model.feedback.length === 0" class="btn btn-primary" translate >ACTION.SEND</button>
</div>
</div>
</div>
</div>
\ No newline at end of file
<span ng-if="!property.noValue">{{'PROPERTY.FIELDS' | translate:property.value.fields}}</span>
<span ng-if="property.noValue">{{'PROPERTY.FIELDS.EMPTY' | translate}}</span>
\ No newline at end of file
<div class="modal" ng-controller="KisBpmFieldsPopupCtrl">
<div class="modal-dialog modal-wide">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true" ng-click="close()">&times;</button>
<h3>{{'PROPERTY.PROPERTY.EDIT.TITLE' | translate:property}}</h3>
</div>
<div class="modal-body">
<div class="row row-no-gutter">
<div class="col-xs-6">
<div ng-if="translationsRetrieved" class="kis-listener-grid" ng-grid="gridOptions"></div>
<div class="pull-right">
<div class="btn-group">
<a href="#" class="btn btn-icon btn-lg" rel="tooltip" data-title="{{'ACTION.MOVE.UP' | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveFieldUp()"><i class="glyphicon glyphicon-arrow-up"></i></a>
<a href="#" class="btn btn-icon btn-lg" rel="tooltip" data-title="{{'ACTION.MOVE.DOWN' | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="moveFieldDown()"><i class="glyphicon glyphicon-arrow-down"></i></a>
</div>
<div class="btn-group">
<a href="#" class="btn btn-icon btn-lg" rel="tooltip" data-title="{{'ACTION.ADD' | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewField()"><i class="glyphicon glyphicon-plus"></i></a>
<a href="#" class="btn btn-icon btn-lg" rel="tooltip" data-title="{{'ACTION.REMOVE' | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="removeField()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-6">
<div ng-show="selectedFields.length > 0">
<div class="form-group">
<label for="fieldName">{{'PROPERTY.FIELDS.NAME' | translate}}</label>
<input type="text" id="fieldName" class="form-control" ng-model="selectedFields[0].name" placeholder="{{'PROPERTY.FIELDS.NAME.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="fieldStringValue">{{'PROPERTY.FIELDS.STRINGVALUE' | translate}}</label>
<input type="text" id="fieldStringValue" class="form-control" ng-model="selectedFields[0].stringValue" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.FIELDS.STRINGVALUE.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="fieldExpression">{{'PROPERTY.FIELDS.EXPRESSION' | translate}}</label>
<input type="text" id="fieldExpression" class="form-control" ng-model="selectedFields[0].expression" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.FIELDS.EXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="fieldString">{{'PROPERTY.FIELDS.STRING' | translate}}</label>
<textarea type="text" id="fieldString" class="form-control" ng-model="selectedFields[0].string" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.FIELDS.STRING.PLACEHOLDER' | translate}}"></textarea>
</div>
</div>
<div ng-show="selectedFields.length == 0" class="muted no-property-selected" translate>PROPERTY.FIELDS.EMPTY</div>
</div>
</div>
</div>
<div class="modal-footer">
<button ng-click="cancel()" class="btn btn-primary" translate>ACTION.CANCEL</button>
<button ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
</div>
</div>
</div>
</div>
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmFieldsCtrl">
</span>
\ No newline at end of file
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment