first commit

This commit is contained in:
2026-01-16 14:13:44 +08:00
commit 903ff8d495
34603 changed files with 8585054 additions and 0 deletions

View File

@ -0,0 +1,25 @@
/*
* 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 ACTIVITI = ACTIVITI || {};
ACTIVITI.CONFIG = {
'contextRoot' : '/SSMBootstrap/service',
};

View File

@ -0,0 +1,438 @@
/*
* 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 activitiModeler = angular.module('activitiModeler', [
'ngCookies',
'ngResource',
'ngSanitize',
'ngRoute',
'ngDragDrop',
'mgcrea.ngStrap',
'ngGrid',
'ngAnimate',
'pascalprecht.translate',
'duScroll'
]);
var activitiModule = activitiModeler;
activitiModeler
// Initialize routes
.config(['$selectProvider', '$translateProvider', function ($selectProvider, $translateProvider) {
// Override caret for bs-select directive
angular.extend($selectProvider.defaults, {
caretHtml: '&nbsp;<i class="icon icon-caret-down"></i>'
});
// Initialize angular-translate
$translateProvider.useStaticFilesLoader({
prefix: './editor-app/i18n/',
suffix: '.json'
});
$translateProvider.preferredLanguage('en');
/*var language = navigator.language;
console.log("language",language)
if("zh-CN" == language){
$translateProvider.preferredLanguage('zh-CN');
}else{
$translateProvider.preferredLanguage('en');
} */
// remember language
$translateProvider.useCookieStorage();
}])
.run(['$rootScope', '$timeout', '$modal', '$translate', '$location', '$window', '$http', '$q',
function($rootScope, $timeout, $modal, $translate, $location, $window, $http, $q) {
$rootScope.config = ACTIVITI.CONFIG;
$rootScope.editorInitialized = false;
$rootScope.editorFactory = $q.defer();
$rootScope.forceSelectionRefresh = false;
$rootScope.ignoreChanges = false; // by default never ignore changes
$rootScope.validationErrors = [];
$rootScope.staticIncludeVersion = Date.now();
/**
* A 'safer' apply that avoids concurrent updates (which $apply allows).
*/
$rootScope.safeApply = function(fn) {
var phase = this.$root.$$phase;
if(phase == '$apply' || phase == '$digest') {
if(fn && (typeof(fn) === 'function')) {
fn();
}
} else {
this.$apply(fn);
}
};
/**
* Initialize the event bus: couple all Oryx events with a dispatch of the
* event of the event bus. This way, it gets much easier to attach custom logic
* to any event.
*/
/* Helper method to fetch model from server (always needed) */
function fetchModel(modelId) {
var modelUrl = KISBPM.URL.getModel(modelId);
$http({method: 'GET', url: modelUrl}).
success(function (data, status, headers, config) {
$rootScope.editor = new ORYX.Editor(data);
$rootScope.modelData = angular.fromJson(data);
$rootScope.editorFactory.resolve();
}).
error(function (data, status, headers, config) {
console.log('Error loading model with id ' + modelId + ' ' + data);
});
}
function initScrollHandling() {
var canvasSection = jQuery('#canvasSection');
canvasSection.scroll(function() {
// Hides the resizer and quick menu items during scrolling
var selectedElements = $rootScope.editor.selection;
var subSelectionElements = $rootScope.editor._subSelection;
$rootScope.selectedElements = selectedElements;
$rootScope.subSelectionElements = subSelectionElements;
if (selectedElements && selectedElements.length > 0) {
$rootScope.selectedElementBeforeScrolling = selectedElements[0];
}
jQuery('.Oryx_button').each(function(i, obj) {
$rootScope.orginalOryxButtonStyle = obj.style.display;
obj.style.display = 'none';
});
jQuery('.resizer_southeast').each(function(i, obj) {
$rootScope.orginalResizerSEStyle = obj.style.display;
obj.style.display = 'none';
});
jQuery('.resizer_northwest').each(function(i, obj) {
$rootScope.orginalResizerNWStyle = obj.style.display;
obj.style.display = 'none';
});
$rootScope.editor.handleEvents({type:ORYX.CONFIG.EVENT_CANVAS_SCROLL});
});
canvasSection.scrollStopped(function(){
// Puts the quick menu items and resizer back when scroll is stopped.
$rootScope.editor.setSelection([]); // needed cause it checks for element changes and does nothing if the elements are the same
$rootScope.editor.setSelection($rootScope.selectedElements, $rootScope.subSelectionElements);
$rootScope.selectedElements = undefined;
$rootScope.subSelectionElements = undefined;
function handleDisplayProperty(obj) {
if (jQuery(obj).position().top > 0) {
obj.style.display = 'block';
} else {
obj.style.display = 'none';
}
}
jQuery('.Oryx_button').each(function(i, obj) {
handleDisplayProperty(obj);
});
jQuery('.resizer_southeast').each(function(i, obj) {
handleDisplayProperty(obj);
});
jQuery('.resizer_northwest').each(function(i, obj) {
handleDisplayProperty(obj);
});
});
}
/**
* Initialize the Oryx Editor when the content has been loaded
*/
$rootScope.$on('$includeContentLoaded', function (event) {
if (!$rootScope.editorInitialized) {
ORYX._loadPlugins();
var modelId = EDITOR.UTIL.getParameterByName('modelId');
fetchModel(modelId);
$rootScope.window = {};
var updateWindowSize = function() {
$rootScope.window.width = $window.innerWidth;
$rootScope.window.height = $window.innerHeight;
};
// Window resize hook
angular.element($window).bind('resize', function() {
$rootScope.safeApply(updateWindowSize());
});
$rootScope.$watch('window.forceRefresh', function(newValue) {
if(newValue) {
$timeout(function() {
updateWindowSize();
$rootScope.window.forceRefresh = false;
});
}
});
updateWindowSize();
// Hook in resizing of main panels when window resizes
// TODO: perhaps move to a separate JS-file?
jQuery(window).resize(function () {
// Calculate the offset based on the bottom of the module header
var offset = jQuery("#editor-header").offset();
var propSectionHeight = jQuery('#propertySection').height();
var canvas = jQuery('#canvasSection');
var mainHeader = jQuery('#main-header');
if (offset == undefined || offset === null
|| propSectionHeight === undefined || propSectionHeight === null
|| canvas === undefined || canvas === null || mainHeader === null) {
return;
}
if ($rootScope.editor)
{
var selectedElements = $rootScope.editor.selection;
var subSelectionElements = $rootScope.editor._subSelection;
$rootScope.selectedElements = selectedElements;
$rootScope.subSelectionElements = subSelectionElements;
if (selectedElements && selectedElements.length > 0)
{
$rootScope.selectedElementBeforeScrolling = selectedElements[0];
$rootScope.editor.setSelection([]); // needed cause it checks for element changes and does nothing if the elements are the same
$rootScope.editor.setSelection($rootScope.selectedElements, $rootScope.subSelectionElements);
$rootScope.selectedElements = undefined;
$rootScope.subSelectionElements = undefined;
}
}
var totalAvailable = jQuery(window).height() - offset.top - mainHeader.height() - 21;
canvas.height(totalAvailable - propSectionHeight);
jQuery('#paletteSection').height(totalAvailable);
// Update positions of the resize-markers, according to the canvas
var actualCanvas = null;
if (canvas && canvas[0].children[1]) {
actualCanvas = canvas[0].children[1];
}
var canvasTop = canvas.position().top;
var canvasLeft = canvas.position().left;
var canvasHeight = canvas[0].clientHeight;
var canvasWidth = canvas[0].clientWidth;
var iconCenterOffset = 8;
var widthDiff = 0;
var actualWidth = 0;
if(actualCanvas) {
// In some browsers, the SVG-element clientwidth isn't available, so we revert to the parent
actualWidth = actualCanvas.clientWidth || actualCanvas.parentNode.clientWidth;
}
if(actualWidth < canvas[0].clientWidth) {
widthDiff = actualWidth - canvas[0].clientWidth;
// In case the canvas is smaller than the actual viewport, the resizers should be moved
canvasLeft -= widthDiff / 2;
canvasWidth += widthDiff;
}
var iconWidth = 17;
var iconOffset = 20;
var north = jQuery('#canvas-grow-N');
north.css('top', canvasTop + iconOffset + 'px');
north.css('left', canvasLeft - 10 + (canvasWidth - iconWidth) / 2 + 'px');
var south = jQuery('#canvas-grow-S');
south.css('top', (canvasTop + canvasHeight - iconOffset - iconCenterOffset) + 'px');
south.css('left', canvasLeft - 10 + (canvasWidth - iconWidth) / 2 + 'px');
var east = jQuery('#canvas-grow-E');
east.css('top', canvasTop - 10 + (canvasHeight - iconWidth) / 2 + 'px');
east.css('left', (canvasLeft + canvasWidth - iconOffset - iconCenterOffset) + 'px');
var west = jQuery('#canvas-grow-W');
west.css('top', canvasTop -10 + (canvasHeight - iconWidth) / 2 + 'px');
west.css('left', canvasLeft + iconOffset + 'px');
north = jQuery('#canvas-shrink-N');
north.css('top', canvasTop + iconOffset + 'px');
north.css('left', canvasLeft + 10 + (canvasWidth - iconWidth) / 2 + 'px');
south = jQuery('#canvas-shrink-S');
south.css('top', (canvasTop + canvasHeight - iconOffset - iconCenterOffset) + 'px');
south.css('left', canvasLeft +10 + (canvasWidth - iconWidth) / 2 + 'px');
east = jQuery('#canvas-shrink-E');
east.css('top', canvasTop + 10 + (canvasHeight - iconWidth) / 2 + 'px');
east.css('left', (canvasLeft + canvasWidth - iconOffset - iconCenterOffset) + 'px');
west = jQuery('#canvas-shrink-W');
west.css('top', canvasTop + 10 + (canvasHeight - iconWidth) / 2 + 'px');
west.css('left', canvasLeft + iconOffset + 'px');
});
jQuery(window).trigger('resize');
jQuery.fn.scrollStopped = function(callback) {
jQuery(this).scroll(function(){
var self = this, $this = jQuery(self);
if ($this.data('scrollTimeout')) {
clearTimeout($this.data('scrollTimeout'));
}
$this.data('scrollTimeout', setTimeout(callback,50,self));
});
};
// Always needed, cause the DOM element on which the scroll event listeners are attached are changed for every new model
initScrollHandling();
$rootScope.editorInitialized = true;
}
});
/**
* Initialize the event bus: couple all Oryx events with a dispatch of the
* event of the event bus. This way, it gets much easier to attach custom logic
* to any event.
*/
$rootScope.editorFactory.promise.then(function() {
KISBPM.eventBus.editor = $rootScope.editor;
var eventMappings = [
{ oryxType : ORYX.CONFIG.EVENT_SELECTION_CHANGED, kisBpmType : KISBPM.eventBus.EVENT_TYPE_SELECTION_CHANGE },
{ oryxType : ORYX.CONFIG.EVENT_DBLCLICK, kisBpmType : KISBPM.eventBus.EVENT_TYPE_DOUBLE_CLICK },
{ oryxType : ORYX.CONFIG.EVENT_MOUSEOUT, kisBpmType : KISBPM.eventBus.EVENT_TYPE_MOUSE_OUT },
{ oryxType : ORYX.CONFIG.EVENT_MOUSEOVER, kisBpmType : KISBPM.eventBus.EVENT_TYPE_MOUSE_OVER }
];
eventMappings.forEach(function(eventMapping) {
$rootScope.editor.registerOnEvent(eventMapping.oryxType, function(event) {
KISBPM.eventBus.dispatch(eventMapping.kisBpmType, event);
});
});
$rootScope.editor.registerOnEvent(ORYX.CONFIG.EVENT_SHAPEREMOVED, function (event) {
var validateButton = document.getElementById(event.shape.resourceId + "-validate-button");
if (validateButton)
{
validateButton.style.display = 'none';
}
});
// The Oryx canvas is ready (we know since we're in this promise callback) and the
// event bus is ready. The editor is now ready for use
KISBPM.eventBus.dispatch(KISBPM.eventBus.EVENT_TYPE_EDITOR_READY, {type : KISBPM.eventBus.EVENT_TYPE_EDITOR_READY});
});
// Alerts
$rootScope.alerts = {
queue: []
};
$rootScope.showAlert = function(alert) {
if(alert.queue.length > 0) {
alert.current = alert.queue.shift();
// Start timout for message-pruning
alert.timeout = $timeout(function() {
if (alert.queue.length == 0) {
alert.current = undefined;
alert.timeout = undefined;
} else {
$rootScope.showAlert(alert);
}
}, (alert.current.type == 'error' ? 5000 : 1000));
} else {
$rootScope.alerts.current = undefined;
}
};
$rootScope.addAlert = function(message, type) {
var newAlert = {message: message, type: type};
if (!$rootScope.alerts.timeout) {
// Timeout for message queue is not running, start one
$rootScope.alerts.queue.push(newAlert);
$rootScope.showAlert($rootScope.alerts);
} else {
$rootScope.alerts.queue.push(newAlert);
}
};
$rootScope.dismissAlert = function() {
if (!$rootScope.alerts.timeout) {
$rootScope.alerts.current = undefined;
} else {
$timeout.cancel($rootScope.alerts.timeout);
$rootScope.alerts.timeout = undefined;
$rootScope.showAlert($rootScope.alerts);
}
};
$rootScope.addAlertPromise = function(promise, type) {
if (promise) {
promise.then(function(data) {
$rootScope.addAlert(data, type);
});
}
};
}
])
// Moment-JS date-formatting filter
.filter('dateformat', function() {
return function(date, format) {
if (date) {
if (format) {
return moment(date).format(format);
} else {
return moment(date).calendar();
}
}
return '';
};
});

View File

@ -0,0 +1,150 @@
/*
* 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
*/
/*
* Assignment
*/
var KisBpmAssignmentCtrl = [ '$scope', '$modal', function($scope, $modal) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/assignment-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmAssignmentPopupCtrl = [ '$scope', function($scope) {
// Put json representing assignment on scope
if ($scope.property.value !== undefined && $scope.property.value !== null
&& $scope.property.value.assignment !== undefined
&& $scope.property.value.assignment !== null)
{
$scope.assignment = $scope.property.value.assignment;
} else {
$scope.assignment = {};
}
if ($scope.assignment.candidateUsers == undefined || $scope.assignment.candidateUsers.length == 0)
{
$scope.assignment.candidateUsers = [{value: ''}];
}
// Click handler for + button after enum value
var userValueIndex = 1;
$scope.addCandidateUserValue = function(index) {
$scope.assignment.candidateUsers.splice(index + 1, 0, {value: 'value ' + userValueIndex++});
};
// Click handler for - button after enum value
$scope.removeCandidateUserValue = function(index) {
$scope.assignment.candidateUsers.splice(index, 1);
};
if ($scope.assignment.candidateGroups == undefined || $scope.assignment.candidateGroups.length == 0)
{
$scope.assignment.candidateGroups = [{value: ''}];
}
var groupValueIndex = 1;
$scope.addCandidateGroupValue = function(index) {
$scope.assignment.candidateGroups.splice(index + 1, 0, {value: 'value ' + groupValueIndex++});
};
// Click handler for - button after enum value
$scope.removeCandidateGroupValue = function(index) {
$scope.assignment.candidateGroups.splice(index, 1);
};
$scope.save = function() {
$scope.property.value = {};
handleAssignmentInput($scope);
$scope.property.value.assignment = $scope.assignment;
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
// Close button handler
$scope.close = function() {
handleAssignmentInput($scope);
$scope.property.mode = 'read';
$scope.$hide();
};
var handleAssignmentInput = function($scope) {
if ($scope.assignment.candidateUsers)
{
var emptyUsers = true;
var toRemoveIndexes = [];
for (var i = 0; i < $scope.assignment.candidateUsers.length; i++)
{
if ($scope.assignment.candidateUsers[i].value != '')
{
emptyUsers = false;
}
else
{
toRemoveIndexes[toRemoveIndexes.length] = i;
}
}
for (var i = 0; i < toRemoveIndexes.length; i++)
{
$scope.assignment.candidateUsers.splice(toRemoveIndexes[i], 1);
}
if (emptyUsers)
{
$scope.assignment.candidateUsers = undefined;
}
}
if ($scope.assignment.candidateGroups)
{
var emptyGroups = true;
var toRemoveIndexes = [];
for (var i = 0; i < $scope.assignment.candidateGroups.length; i++)
{
if ($scope.assignment.candidateGroups[i].value != '')
{
emptyGroups = false;
}
else
{
toRemoveIndexes[toRemoveIndexes.length] = i;
}
}
for (var i = 0; i < toRemoveIndexes.length; i++)
{
$scope.assignment.candidateGroups.splice(toRemoveIndexes[i], 1);
}
if (emptyGroups)
{
$scope.assignment.candidateGroups = undefined;
}
}
};
}];

View File

@ -0,0 +1,58 @@
/*
* 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
*/
/*
* Condition expression
*/
var KisBpmConditionExpressionCtrl = [ '$scope', '$modal', function($scope, $modal) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/condition-expression-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmConditionExpressionPopupCtrl = [ '$scope', '$translate', '$http', function($scope, $translate, $http) {
// Put json representing condition on scope
if ($scope.property.value !== undefined && $scope.property.value !== null) {
$scope.conditionExpression = {value: $scope.property.value};
} else {
$scope.conditionExpression = {value: ''};
}
$scope.save = function() {
$scope.property.value = $scope.conditionExpression.value;
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
// Close button handler
$scope.close = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
}];

View File

@ -0,0 +1,18 @@
/*
* 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
*/

View File

@ -0,0 +1,115 @@
/*
* 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
*/
/*
* String controller
*/
var KisBpmStringPropertyCtrl = [ '$scope', function ($scope) {
$scope.shapeId = $scope.selectedShape.id;
$scope.valueFlushed = false;
/** Handler called when input field is blurred */
$scope.inputBlurred = function() {
$scope.valueFlushed = true;
if ($scope.property.value) {
$scope.property.value = $scope.property.value.replace(/(<([^>]+)>)/ig,"");
}
$scope.updatePropertyInModel($scope.property);
};
$scope.enterPressed = function(keyEvent) {
if (keyEvent && keyEvent.which === 13) {
keyEvent.preventDefault();
$scope.inputBlurred(); // we want to do the same as if the user would blur the input field
}
};
$scope.$on('$destroy', function controllerDestroyed() {
if(!$scope.valueFlushed) {
if ($scope.property.value) {
$scope.property.value = $scope.property.value.replace(/(<([^>]+)>)/ig,"");
}
$scope.updatePropertyInModel($scope.property, $scope.shapeId);
}
});
}];
/*
* Boolean controller
*/
var KisBpmBooleanPropertyCtrl = ['$scope', function ($scope) {
$scope.changeValue = function() {
if ($scope.property.key === 'oryx-defaultflow' && $scope.property.value) {
var selectedShape = $scope.selectedShape;
if (selectedShape) {
var incomingNodes = selectedShape.getIncomingShapes();
if (incomingNodes && incomingNodes.length > 0) {
// get first node, since there can be only one for a sequence flow
var rootNode = incomingNodes[0];
var flows = rootNode.getOutgoingShapes();
if (flows && flows.length > 1) {
// in case there are more flows, check if another flow is already defined as default
for (var i = 0; i < flows.length; i++) {
if (flows[i].resourceId != selectedShape.resourceId) {
var defaultFlowProp = flows[i].properties['oryx-defaultflow'];
if (defaultFlowProp) {
flows[i].setProperty('oryx-defaultflow', false, true);
}
}
}
}
}
}
}
$scope.updatePropertyInModel($scope.property);
};
}];
/*
* Text controller
*/
var KisBpmTextPropertyCtrl = [ '$scope', '$modal', function($scope, $modal) {
var opts = {
template: 'editor-app/configuration/properties/text-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmTextPropertyPopupCtrl = ['$scope', function($scope) {
$scope.save = function() {
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.close = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
}];

View File

@ -0,0 +1,266 @@
/*
* 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
*/
/*
* Execution listeners
*/
var KisBpmEventListenersCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/event-listeners-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
//Need a separate controller for the modal window due to https://github.com/angular-ui/bootstrap/issues/259
// Will be fixed in a newer version of Angular UI
var KisBpmEventListenersPopupCtrl = [ '$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.eventListeners !== undefined
&& $scope.property.value.eventListeners !== null) {
if ($scope.property.value.eventListeners.constructor == String)
{
$scope.eventListeners = JSON.parse($scope.property.value.eventListeners);
}
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.eventListeners = angular.copy($scope.property.value.eventListeners);
}
} else {
$scope.eventListeners = [];
}
// Array to contain selected properties (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedListeners = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var eventPromise = $translate('PROPERTY.EXECUTIONLISTENERS.EVENT');
var implementationPromise = $translate('PROPERTY.EXECUTIONLISTENERS.FIELDS.IMPLEMENTATION');
var namePromise = $translate('PROPERTY.EXECUTIONLISTENERS.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: 'eventListeners',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedListeners,
afterSelectionChange: function (rowItem, event) {
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;
}
}
}
if (!$scope.selectedListeners[0].events || $scope.selectedListeners[0].events.length == 0)
{
$scope.selectedListeners[0].events = [{event: ''}];
}
}
},
columnDefs: [{ field: 'event', displayName: $scope.labels.eventLabel },
{ field: 'implementation', displayName: $scope.labels.implementationLabel }]
};
});
// Click handler for + button after enum value
$scope.addEventValue = function(index) {
$scope.selectedListeners[0].events.splice(index + 1, 0, {event: ''});
};
// Click handler for - button after enum value
$scope.removeEventValue = function(index) {
$scope.selectedListeners[0].events.splice(index, 1);
$scope.listenerDetailsChanged();
};
$scope.listenerDetailsChanged = function() {
var listener = $scope.selectedListeners[0];
if (listener.events)
{
var eventText = '';
for (var i = 0; i < listener.events.length; i++)
{
if (i > 0)
{
eventText += ", ";
}
eventText += listener.events[i].event;
}
$scope.selectedListeners[0].event = eventText;
}
if (listener.rethrowEvent)
{
var implementationText = '';
if (listener.rethrowType && listener.rethrowType.length > 0)
{
if (listener.rethrowType === 'error' && listener.errorcode !== '')
{
implementationText = "Rethrow as error " + listener.errorcode;
}
else if (listener.rethrowType === 'message' && listener.messagename !== '')
{
implementationText = "Rethrow as message " + listener.messagename;
}
else if ((listener.rethrowType === 'signal' || listener.rethrowType === 'globalSignal') && listener.signalname !== '')
{
implementationText = "Rethrow as signal " + listener.signalname;
}
}
$scope.selectedListeners[0].implementation = implementationText;
}
else
{
if ($scope.selectedListeners[0].className !== '')
{
$scope.selectedListeners[0].implementation = $scope.selectedListeners[0].className;
}
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.eventListeners.push({ event : '',
implementation : '',
className : '',
delegateExpression: '',
retrowEvent: false});
};
// Click handler for remove button
$scope.removeListener = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.eventListeners.indexOf($scope.selectedListeners[0]);
$scope.gridOptions.selectItem(index, false);
$scope.eventListeners.splice(index, 1);
$scope.selectedListeners.length = 0;
if (index < $scope.eventListeners.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.eventListeners.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.moveListenerUp = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.eventListeners.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.eventListeners[index];
$scope.eventListeners.splice(index, 1);
$timeout(function(){
$scope.eventListeners.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.moveListenerDown = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.eventListeners.indexOf($scope.selectedListeners[0]);
if (index != $scope.eventListeners.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.eventListeners[index];
$scope.eventListeners.splice(index, 1);
$timeout(function(){
$scope.eventListeners.splice(index + 1, 0, temp);
}, 100);
}
}
};
// Click handler for save button
$scope.save = function() {
if ($scope.eventListeners.length > 0) {
$scope.property.value = {};
$scope.property.value.eventListeners = $scope.eventListeners;
} else {
$scope.property.value = null;
}
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.cancel = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
// Close button handler
$scope.close = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
}];

View File

@ -0,0 +1,326 @@
/*
* 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
*/
/*
* Execution listeners
*/
var KisBpmExecutionListenersCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/execution-listeners-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmExecutionListenersPopupCtrl = [ '$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.executionListeners !== undefined
&& $scope.property.value.executionListeners !== null) {
if ($scope.property.value.executionListeners.constructor == String)
{
$scope.executionListeners = JSON.parse($scope.property.value.executionListeners);
}
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.executionListeners = angular.copy($scope.property.value.executionListeners);
}
for (var i = 0; i < $scope.executionListeners.length; i++)
{
var executionListener = $scope.executionListeners[i];
if (executionListener.className !== undefined && executionListener.className !== '')
{
executionListener.implementation = executionListener.className;
}
else if (executionListener.expression !== undefined && executionListener.expression !== '')
{
executionListener.implementation = executionListener.expression;
}
else if (executionListener.delegateExpression !== undefined && executionListener.delegateExpression !== '')
{
executionListener.implementation = executionListener.delegateExpression;
}
}
} else {
$scope.executionListeners = [];
}
// 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.EXECUTIONLISTENERS.EVENT');
var implementationPromise = $translate('PROPERTY.EXECUTIONLISTENERS.FIELDS.IMPLEMENTATION');
var namePromise = $translate('PROPERTY.EXECUTIONLISTENERS.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: 'executionListeners',
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.nameLabel },
{ 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.executionListeners.push({ event : 'start',
implementation : '',
className : '',
expression: '',
delegateExpression: ''});
};
// Click handler for remove button
$scope.removeListener = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.executionListeners.indexOf($scope.selectedListeners[0]);
$scope.gridOptions.selectItem(index, false);
$scope.executionListeners.splice(index, 1);
$scope.selectedListeners.length = 0;
if (index < $scope.executionListeners.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.executionListeners.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.moveListenerUp = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.executionListeners.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.executionListeners[index];
$scope.executionListeners.splice(index, 1);
$timeout(function(){
$scope.executionListeners.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.moveListenerDown = function() {
if ($scope.selectedListeners.length > 0) {
var index = $scope.executionListeners.indexOf($scope.selectedListeners[0]);
if (index != $scope.executionListeners.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.executionListeners[index];
$scope.executionListeners.splice(index, 1);
$timeout(function(){
$scope.executionListeners.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.executionListeners.length > 0) {
$scope.property.value = {};
$scope.property.value.executionListeners = $scope.executionListeners;
} else {
$scope.property.value = null;
}
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.cancel = function() {
$scope.$hide();
$scope.property.mode = 'read';
};
// Close button handler
$scope.close = function() {
$scope.$hide();
$scope.property.mode = 'read';
};
}];

View File

@ -0,0 +1,192 @@
/*
* 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 KisBpmFieldsCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/fields-popup.html',
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmFieldsPopupCtrl = [ '$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.fields !== undefined
&& $scope.property.value.fields !== null) {
// 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.fields = angular.copy($scope.property.value.fields);
for (var i = 0; i < $scope.fields.length; i++)
{
var field = $scope.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;
}
}
} else {
$scope.fields = [];
}
// Array to contain selected properties (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedFields = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var namePromise = $translate('PROPERTY.FIELDS.NAME');
var implementationPromise = $translate('PROPERTY.FIELDS.IMPLEMENTATION');
$q.all([namePromise, implementationPromise]).then(function(results) {
$scope.labels.nameLabel = results[0];
$scope.labels.implementationLabel = results[1];
$scope.translationsRetrieved = true;
// Config for grid
$scope.gridOptions = {
data: 'fields',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected: false,
selectedItems: $scope.selectedFields,
columnDefs: [{field: 'name', displayName: $scope.labels.nameLabel},
{field: 'implementation', displayName: $scope.labels.implementationLabel}]
};
});
$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() {
$scope.fields.push({ name : 'fieldName',
implementation : '',
stringValue : '',
expression: '',
string: ''});
};
// Click handler for remove button
$scope.removeField = function() {
if ($scope.selectedFields.length > 0) {
var index = $scope.fields.indexOf($scope.selectedFields[0]);
$scope.gridOptions.selectItem(index, false);
$scope.fields.splice(index, 1);
$scope.selectedFields.length = 0;
if (index < $scope.fields.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.fields.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.moveFieldUp = function() {
if ($scope.selectedFields.length > 0) {
var index = $scope.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.fields[index];
$scope.fields.splice(index, 1);
$timeout(function(){
$scope.fields.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.moveFieldDown = function() {
if ($scope.selectedFields.length > 0) {
var index = $scope.fields.indexOf($scope.selectedFields[0]);
if (index != $scope.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.fields[index];
$scope.fields.splice(index, 1);
$timeout(function(){
$scope.fields.splice(index + 1, 0, temp);
}, 100);
}
}
};
// Click handler for save button
$scope.save = function() {
if ($scope.fields.length > 0) {
$scope.property.value = {};
$scope.property.value.fields = $scope.fields;
} 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();
};
}];

View File

@ -0,0 +1,276 @@
/*
* 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
*/
/*
* Form Properties
*/
var KisBpmFormPropertiesCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/form-properties-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmFormPropertiesPopupCtrl = ['$scope', '$q', '$translate', '$timeout', function($scope, $q, $translate, $timeout) {
// Put json representing form properties on scope
if ($scope.property.value !== undefined && $scope.property.value !== null
&& $scope.property.value.formProperties !== undefined
&& $scope.property.value.formProperties !== null) {
// 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 happended
$scope.formProperties = angular.copy($scope.property.value.formProperties);
for (var i = 0; i < $scope.formProperties.length; i++) {
var formProperty = $scope.formProperties[i];
if (formProperty.enumValues && formProperty.enumValues.length > 0) {
for (var j = 0; j < formProperty.enumValues.length; j++) {
var enumValue = formProperty.enumValues[j];
if (!enumValue.id && !enumValue.name && enumValue.value) {
enumValue.id = enumValue.value;
enumValue.name = enumValue.value;
}
}
}
}
} else {
$scope.formProperties = [];
}
// Array to contain selected properties (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedProperties = [];
$scope.selectedEnumValues = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var idPromise = $translate('PROPERTY.FORMPROPERTIES.ID');
var namePromise = $translate('PROPERTY.FORMPROPERTIES.NAME');
var typePromise = $translate('PROPERTY.FORMPROPERTIES.TYPE');
$q.all([idPromise, namePromise, typePromise]).then(function(results) {
$scope.labels.idLabel = results[0];
$scope.labels.nameLabel = results[1];
$scope.labels.typeLabel = results[2];
$scope.translationsRetrieved = true;
// Config for grid
$scope.gridOptions = {
data: 'formProperties',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedProperties,
columnDefs: [{ field: 'id', displayName: $scope.labels.idLabel },
{ field: 'name', displayName: $scope.labels.nameLabel},
{ field: 'type', displayName: $scope.labels.typeLabel}]
};
$scope.enumGridOptions = {
data: 'selectedProperties[0].enumValues',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedEnumValues,
columnDefs: [{ field: 'id', displayName: $scope.labels.idLabel },
{ field: 'name', displayName: $scope.labels.nameLabel}]
}
});
// Handler for when the value of the type dropdown changes
$scope.propertyTypeChanged = function() {
// Check date. If date, show date pattern
if ($scope.selectedProperties[0].type === 'date') {
$scope.selectedProperties[0].datePattern = 'MM-dd-yyyy hh:mm';
} else {
delete $scope.selectedProperties[0].datePattern;
}
// Check enum. If enum, show list of options
if ($scope.selectedProperties[0].type === 'enum') {
$scope.selectedProperties[0].enumValues = [ {id: 'value1', name: 'Value 1'}, {id: 'value2', name: 'Value 2'}];
} else {
delete $scope.selectedProperties[0].enumValues;
}
};
// Click handler for add button
var propertyIndex = 1;
$scope.addNewProperty = function() {
$scope.formProperties.push({ id : 'new_property_' + propertyIndex++,
name : '',
type : 'string',
readable: true,
writable: true});
$timeout(function(){
$scope.gridOptions.selectItem($scope.formProperties.length - 1, true);
});
};
// Click handler for remove button
$scope.removeProperty = function() {
if ($scope.selectedProperties.length > 0) {
var index = $scope.formProperties.indexOf($scope.selectedProperties[0]);
$scope.gridOptions.selectItem(index, false);
$scope.formProperties.splice(index, 1);
$scope.selectedProperties.length = 0;
if (index < $scope.formProperties.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.formProperties.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.movePropertyUp = function() {
if ($scope.selectedProperties.length > 0) {
var index = $scope.formProperties.indexOf($scope.selectedProperties[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.formProperties[index];
$scope.formProperties.splice(index, 1);
$timeout(function(){
$scope.formProperties.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.movePropertyDown = function() {
if ($scope.selectedProperties.length > 0) {
var index = $scope.formProperties.indexOf($scope.selectedProperties[0]);
if (index != $scope.formProperties.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.formProperties[index];
$scope.formProperties.splice(index, 1);
$timeout(function(){
$scope.formProperties.splice(index + 1, 0, temp);
}, 100);
}
}
};
$scope.addNewEnumValue = function() {
if ($scope.selectedProperties.length > 0) {
$scope.selectedProperties[0].enumValues.push({ id : '', name : ''});
}
$timeout(function(){
$scope.enumGridOptions.selectItem($scope.selectedProperties[0].enumValues.length - 1, true);
});
};
// Click handler for remove button
$scope.removeEnumValue = function() {
if ($scope.selectedProperties.length > 0 && $scope.selectedEnumValues.length > 0) {
var index = $scope.selectedProperties[0].enumValues.indexOf($scope.selectedEnumValues[0]);
$scope.enumGridOptions.selectItem(index, false);
$scope.selectedProperties[0].enumValues.splice(index, 1);
$scope.selectedEnumValues.length = 0;
if (index < $scope.selectedProperties[0].enumValues.length) {
$timeout(function(){
$scope.enumGridOptions.selectItem(index + 1, true);
});
} else if ($scope.selectedProperties[0].enumValues.length > 0) {
$timeout(function(){
$scope.enumGridOptions.selectItem(index - 1, true);
});
}
}
};
// Click handler for up button
$scope.moveEnumValueUp = function() {
if ($scope.selectedProperties.length > 0 && $scope.selectedEnumValues.length > 0) {
var index = $scope.selectedProperties[0].enumValues.indexOf($scope.selectedEnumValues[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.selectedProperties[0].enumValues[index];
$scope.selectedProperties[0].enumValues.splice(index, 1);
$timeout(function(){
$scope.selectedProperties[0].enumValues.splice(index + -1, 0, temp);
});
}
}
};
// Click handler for down button
$scope.moveEnumValueDown = function() {
if ($scope.selectedProperties.length > 0 && $scope.selectedEnumValues.length > 0) {
var index = $scope.selectedProperties[0].enumValues.indexOf($scope.selectedEnumValues[0]);
if (index != $scope.selectedProperties[0].enumValues.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.selectedProperties[0].enumValues[index];
$scope.selectedProperties[0].enumValues.splice(index, 1);
$timeout(function(){
$scope.selectedProperties[0].enumValues.splice(index + 1, 0, temp);
});
}
}
};
// Click handler for save button
$scope.save = function() {
if ($scope.formProperties.length > 0) {
$scope.property.value = {};
$scope.property.value.formProperties = $scope.formProperties;
} else {
$scope.property.value = null;
}
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.cancel = function() {
$scope.$hide();
$scope.property.mode = 'read';
};
// Close button handler
$scope.close = function() {
$scope.$hide();
$scope.property.mode = 'read';
};
}];

View File

@ -0,0 +1,158 @@
/*
* 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
*/
/*
* Input parameters for call activity
*/
var KisBpmInParametersCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/in-parameters-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmInParametersPopupCtrl = ['$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.inParameters !== undefined
&& $scope.property.value.inParameters !== null) {
// 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.parameters = angular.copy($scope.property.value.inParameters);
} else {
$scope.parameters = [];
}
// Array to contain selected properties (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedParameters = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var sourcePromise = $translate('PROPERTY.PARAMETER.SOURCE');
var sourceExpressionPromise = $translate('PROPERTY.PARAMETER.SOURCEEXPRESSION');
var targetPromise = $translate('PROPERTY.PARAMETER.TARGET');
$q.all([sourcePromise, sourceExpressionPromise, targetPromise]).then(function(results) {
$scope.labels.sourceLabel = results[0];
$scope.labels.sourceExpressionLabel = results[1];
$scope.labels.targetLabel = results[2];
$scope.translationsRetrieved = true;
// Config for grid
$scope.gridOptions = {
data: 'parameters',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedParameters,
columnDefs: [{ field: 'source', displayName: $scope.labels.sourceLabel },
{ field: 'sourceExpression', displayName: $scope.labels.sourceExpressionLabel },
{ field: 'target', displayName: $scope.labels.targetLabel }]
};
});
// Click handler for add button
$scope.addNewParameter = function() {
$scope.parameters.push({ source : '',
sourceExpression : '',
target : ''});
};
// Click handler for remove button
$scope.removeParameter = function() {
if ($scope.selectedParameters.length > 0) {
var index = $scope.parameters.indexOf($scope.selectedParameters[0]);
$scope.gridOptions.selectItem(index, false);
$scope.parameters.splice(index, 1);
$scope.selectedParameters.length = 0;
if (index < $scope.parameters.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.parameters.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.moveParameterUp = function() {
if ($scope.selectedParameters.length > 0) {
var index = $scope.parameters.indexOf($scope.selectedParameters[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.parameters[index];
$scope.parameters.splice(index, 1);
$timeout(function(){
$scope.parameters.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.moveParameterDown = function() {
if ($scope.selectedParameters.length > 0) {
var index = $scope.parameters.indexOf($scope.selectedParameters[0]);
if (index != $scope.parameters.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.parameters[index];
$scope.parameters.splice(index, 1);
$timeout(function(){
$scope.parameters.splice(index + 1, 0, temp);
}, 100);
}
}
};
// Click handler for save button
$scope.save = function() {
if ($scope.parameters.length > 0) {
$scope.property.value = {};
$scope.property.value.inParameters = $scope.parameters;
} 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();
};
}];

View File

@ -0,0 +1,137 @@
/*
* 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
*/
/*
* Execution listeners
*/
angular.module('activitiModeler').controller('ActivitiMessageDefinitionsCtrl', ['$scope', '$modal', function ($scope, $modal) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/message-definitions-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}]);
//Need a separate controller for the modal window due to https://github.com/angular-ui/bootstrap/issues/259
// Will be fixed in a newer version of Angular UI
angular.module('activitiModeler').controller('ActivitiMessageDefinitionsPopupCtrl',
['$scope', '$q', '$translate', '$timeout', function ($scope, $q, $translate, $timeout) {
// Put json representing mesage definitions on scope
if ($scope.property.value !== undefined && $scope.property.value !== null && $scope.property.value.length > 0) {
if ($scope.property.value.constructor == String) {
$scope.messageDefinitions = JSON.parse($scope.property.value);
}
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.messageDefinitions = angular.copy($scope.property.value);
}
} else {
$scope.messageDefinitions = [];
}
// Array to contain selected mesage definitions (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedMessages = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var idPromise = $translate('PROPERTY.MESSAGEDEFINITIONS.ID');
var namePromise = $translate('PROPERTY.MESSAGEDEFINITIONS.NAME');
$q.all([idPromise, namePromise]).then(function (results) {
$scope.labels.idLabel = results[0];
$scope.labels.nameLabel = results[1];
$scope.translationsRetrieved = true;
// Config for grid
$scope.gridOptions = {
data: 'messageDefinitions',
headerRowHeight: 28,
enableRowSelection: true,
enableRowHeaderSelection: false,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedMessages,
columnDefs: [
{field: 'id', displayName: $scope.labels.idLabel},
{field: 'name', displayName: $scope.labels.nameLabel}]
};
});
// Click handler for add button
$scope.addNewMessageDefinition = function () {
var newMessageDefinition = {id: '', name: ''};
$scope.messageDefinitions.push(newMessageDefinition);
$timeout(function () {
$scope.gridOptions.selectItem($scope.messageDefinitions.length - 1, true);
});
};
// Click handler for remove button
$scope.removeMessageDefinition = function () {
if ($scope.selectedMessages && $scope.selectedMessages.length > 0) {
var index = $scope.messageDefinitions.indexOf($scope.selectedMessages[0]);
$scope.gridOptions.selectItem(index, false);
$scope.messageDefinitions.splice(index, 1);
$scope.selectedMessages.length = 0;
if (index < $scope.messageDefinitions.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.messageDefinitions.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for save button
$scope.save = function () {
if ($scope.messageDefinitions.length > 0) {
$scope.property.value = $scope.messageDefinitions;
} else {
$scope.property.value = null;
}
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.cancel = function () {
$scope.property.mode = 'read';
$scope.$hide();
};
// Close button handler
$scope.close = function () {
$scope.property.mode = 'read';
$scope.$hide();
};
}]);

View File

@ -0,0 +1,48 @@
/*
* 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
*/
angular.module('activitiModeler').controller('ActivitiMessageRefCtrl', [ '$scope', function($scope) {
// Find the parent shape on which the message definitions are defined
var messageDefinitionsProperty = undefined;
var parent = $scope.selectedShape;
while (parent !== null && parent !== undefined && messageDefinitionsProperty === undefined) {
if (parent.properties && parent.properties['oryx-messagedefinitions']) {
messageDefinitionsProperty = parent.properties['oryx-messagedefinitions'];
} else {
parent = parent.parent;
}
}
try {
messageDefinitionsProperty = JSON.parse(messageDefinitionsProperty);
if (typeof messageDefinitionsProperty == 'string') {
messageDefinitionsProperty = JSON.parse(messageDefinitionsProperty);
}
} catch (err) {
// Do nothing here, just to be sure we try-catch it
}
$scope.messageDefinitions = messageDefinitionsProperty;
$scope.messageChanged = function() {
$scope.updatePropertyInModel($scope.property);
};
}]);

View File

@ -0,0 +1,34 @@
/*
* 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
*/
/*
* Execution listeners
*/
var KisBpmMultiInstanceCtrl = [ '$scope', function($scope) {
if ($scope.property.value == undefined && $scope.property.value == null)
{
$scope.property.value = 'None';
}
$scope.multiInstanceChanged = function() {
$scope.updatePropertyInModel($scope.property);
};
}];

View File

@ -0,0 +1,158 @@
/*
* 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
*/
/*
* Input parameters for call activity
*/
var KisBpmOutParametersCtrl = [ '$scope' , '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/out-parameters-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}];
var KisBpmOutParametersPopupCtrl = [ '$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.outParameters !== undefined
&& $scope.property.value.outParameters !== null) {
// 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.parameters = angular.copy($scope.property.value.outParameters);
} else {
$scope.parameters = [];
}
// Array to contain selected properties (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedParameters = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var sourcePromise = $translate('PROPERTY.PARAMETER.SOURCE');
var sourceExpressionPromise = $translate('PROPERTY.PARAMETER.SOURCEEXPRESSION');
var targetPromise = $translate('PROPERTY.PARAMETER.TARGET');
$q.all([sourcePromise, sourceExpressionPromise, targetPromise]).then(function(results) {
$scope.labels.sourceLabel = results[0];
$scope.labels.sourceExpressionLabel = results[1];
$scope.labels.targetLabel = results[2];
$scope.translationsRetrieved = true;
// Config for grid
$scope.gridOptions = {
data: 'parameters',
enableRowReordering: true,
headerRowHeight: 28,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedParameters,
columnDefs: [{ field: 'source', displayName: $scope.labels.sourceLabel },
{ field: 'sourceExpression', displayName: $scope.labels.sourceExpressionLabel },
{ field: 'target', displayName: $scope.labels.targetLabel }]
};
});
// Click handler for add button
$scope.addNewParameter = function() {
$scope.parameters.push({ source : '',
sourceExpression : '',
target : ''});
};
// Click handler for remove button
$scope.removeParameter = function() {
if ($scope.selectedParameters.length > 0) {
var index = $scope.parameters.indexOf($scope.selectedParameters[0]);
$scope.gridOptions.selectItem(index, false);
$scope.parameters.splice(index, 1);
$scope.selectedParameters.length = 0;
if (index < $scope.parameters.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.parameters.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for up button
$scope.moveParameterUp = function() {
if ($scope.selectedParameters.length > 0) {
var index = $scope.parameters.indexOf($scope.selectedParameters[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.parameters[index];
$scope.parameters.splice(index, 1);
$timeout(function(){
$scope.parameters.splice(index + -1, 0, temp);
}, 100);
}
}
};
// Click handler for down button
$scope.moveParameterDown = function() {
if ($scope.selectedParameters.length > 0) {
var index = $scope.parameters.indexOf($scope.selectedParameters[0]);
if (index != $scope.parameters.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.parameters[index];
$scope.parameters.splice(index, 1);
$timeout(function(){
$scope.parameters.splice(index + 1, 0, temp);
}, 100);
}
}
};
// Click handler for save button
$scope.save = function() {
if ($scope.parameters.length > 0) {
$scope.property.value = {};
$scope.property.value.outParameters = $scope.parameters;
} 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();
};
}];

View File

@ -0,0 +1,130 @@
/*
* 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
*/
/*
* Sequence flow order controller
*/
var KisBpmSequenceFlowOrderCtrl = [ '$scope', '$modal', '$timeout', '$translate', function($scope, $modal, $timeout, $translate) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/sequenceflow-order-popup.html?version=' + Date.now(),
scope: $scope
};
$modal(opts);
}];
var KisBpmSequenceFlowOrderPopupCtrl = ['$scope', '$translate', function($scope, $translate) {
// Find the outgoing sequence flow of the current selected shape
var outgoingSequenceFlow = [];
var selectedShape = $scope.selectedShape;
if (selectedShape) {
var outgoingNodes = selectedShape.getOutgoingShapes();
for (var i=0; i<outgoingNodes.length; i++) {
if (outgoingNodes[i].getStencil().title() === 'Sequence flow') {
var targetActivity = outgoingNodes[i].getTarget();
// We need the resourceId of a sequence flow, not the id because that will change with every editor load
outgoingSequenceFlow.push({
id : outgoingNodes[i].resourceId,
targetTitle : targetActivity.properties['oryx-name'],
targetType : targetActivity.getStencil().title()
});
}
}
} else {
console.log('Programmatic error: no selected shape found');
}
// Now we can apply the order which was (possibly) previously saved
var orderedOutgoingSequenceFlow = [];
if ($scope.property.value && $scope.property.value.sequenceFlowOrder) {
var sequenceFlowOrderList = $scope.property.value.sequenceFlowOrder;
// Loop the list of sequence flow that was saved in the json model and match them with the outgoing sequence flow found above
for (var flowIndex=0; flowIndex < sequenceFlowOrderList.length; flowIndex++) {
// find the sequence flow in the outgoing sequence flows.
for (var outgoingFlowIndex=0; outgoingFlowIndex < outgoingSequenceFlow.length; outgoingFlowIndex++) {
if (outgoingSequenceFlow[outgoingFlowIndex].id === sequenceFlowOrderList[flowIndex]) {
orderedOutgoingSequenceFlow.push(outgoingSequenceFlow[outgoingFlowIndex]);
outgoingSequenceFlow.splice(outgoingFlowIndex, 1);
break;
}
}
}
// Now all the matching sequence flow we're removed from the outgoing sequence flow list
// We can simply apply the remaining ones (these are new vs. the time when the values were saved to the model)
orderedOutgoingSequenceFlow = orderedOutgoingSequenceFlow.concat(outgoingSequenceFlow);
} else {
orderedOutgoingSequenceFlow = outgoingSequenceFlow;
}
// Now we can put it on the scope
$scope.outgoingSequenceFlow = orderedOutgoingSequenceFlow;
// Move up click handler
$scope.moveUp = function(index) {
var temp = $scope.outgoingSequenceFlow[index];
$scope.outgoingSequenceFlow[index] = $scope.outgoingSequenceFlow[index - 1];
$scope.outgoingSequenceFlow[index - 1] = temp;
};
// Move down click handler
$scope.moveDown = function(index) {
var temp = $scope.outgoingSequenceFlow[index];
$scope.outgoingSequenceFlow[index] = $scope.outgoingSequenceFlow[index + 1];
$scope.outgoingSequenceFlow[index + 1] = temp;
};
// Save click handler
$scope.save = function() {
if ($scope.outgoingSequenceFlow.length > 0) {
$scope.property.value = {};
$scope.property.value.sequenceFlowOrder = [];
for (var flowIndex=0; flowIndex < $scope.outgoingSequenceFlow.length; flowIndex++) {
$scope.property.value.sequenceFlowOrder.push($scope.outgoingSequenceFlow[flowIndex].id);
}
} else {
$scope.property.value = null;
}
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
// Cancel click handler
$scope.cancel = function() {
$scope.close();
};
// Close button handler
$scope.close = function() {
$scope.property.mode = 'read';
$scope.$hide();
};
}];

View File

@ -0,0 +1,136 @@
/*
* 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
*/
angular.module('activitiModeler').controller('ActivitiSignalDefinitionsCtrl', ['$scope', '$modal', function ($scope, $modal) {
// Config for the modal window
var opts = {
template: 'editor-app/configuration/properties/signal-definitions-popup.html?version=' + Date.now(),
scope: $scope
};
// Open the dialog
$modal(opts);
}]);
//Need a separate controller for the modal window due to https://github.com/angular-ui/bootstrap/issues/259
// Will be fixed in a newer version of Angular UI
angular.module('activitiModeler').controller('ActivitiSignalDefinitionsPopupCtrl',
['$scope', '$q', '$translate', '$timeout', function ($scope, $q, $translate, $timeout) {
// Put json representing signal definitions on scope
if ($scope.property.value !== undefined && $scope.property.value !== null && $scope.property.value.length > 0) {
if ($scope.property.value.constructor == String) {
$scope.signalDefinitions = JSON.parse($scope.property.value);
}
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.signalDefinitions = angular.copy($scope.property.value);
}
} else {
$scope.signalDefinitions = [];
}
// Array to contain selected signal definitions (yes - we only can select one, but ng-grid isn't smart enough)
$scope.selectedSignals = [];
$scope.translationsRetrieved = false;
$scope.labels = {};
var idPromise = $translate('PROPERTY.SIGNALDEFINITIONS.ID');
var namePromise = $translate('PROPERTY.SIGNALDEFINITIONS.NAME');
var scopePromise = $translate('PROPERTY.SIGNALDEFINITIONS.SCOPE');
$q.all([idPromise, namePromise, scopePromise]).then(function (results) {
$scope.labels.idLabel = results[0];
$scope.labels.nameLabel = results[1];
$scope.labels.scopeLabel = results[2];
$scope.translationsRetrieved = true;
// Config for grid
$scope.gridOptions = {
data: 'signalDefinitions',
headerRowHeight: 28,
enableRowSelection: true,
enableRowHeaderSelection: false,
multiSelect: false,
keepLastSelected : false,
selectedItems: $scope.selectedSignals,
columnDefs: [
{field: 'id', displayName: $scope.labels.idLabel},
{field: 'name', displayName: $scope.labels.nameLabel},
{field: 'scope', displayName: $scope.labels.scopeLabel}]
};
});
// Click handler for add button
$scope.addNewSignalDefinition = function () {
var newSignalDefinition = {id: '', name: '', scope: 'global'};
$scope.signalDefinitions.push(newSignalDefinition);
$timeout(function () {
$scope.gridOptions.selectItem($scope.signalDefinitions.length - 1, true);
});
};
// Click handler for remove button
$scope.removeSignalDefinition = function () {
if ($scope.selectedSignals && $scope.selectedSignals.length > 0) {
var index = $scope.signalDefinitions.indexOf($scope.selectedSignals[0]);
$scope.gridOptions.selectItem(index, false);
$scope.signalDefinitions.splice(index, 1);
$scope.selectedSignals.length = 0;
if (index < $scope.signalDefinitions.length) {
$scope.gridOptions.selectItem(index + 1, true);
} else if ($scope.signalDefinitions.length > 0) {
$scope.gridOptions.selectItem(index - 1, true);
}
}
};
// Click handler for save button
$scope.save = function () {
if ($scope.signalDefinitions.length > 0) {
$scope.property.value = $scope.signalDefinitions;
} else {
$scope.property.value = null;
}
$scope.updatePropertyInModel($scope.property);
$scope.close();
};
$scope.cancel = function () {
$scope.property.mode = 'read';
$scope.$hide();
};
// Close button handler
$scope.close = function () {
$scope.property.mode = 'read';
$scope.$hide();
};
}]);

View File

@ -0,0 +1,47 @@
/*
* 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
*/
angular.module('activitiModeler').controller('ActivitiSignalRefCtrl', [ '$scope', function($scope) {
// Find the parent shape on which the signal definitions are defined
var signalDefinitionsProperty = undefined;
var parent = $scope.selectedShape;
while (parent !== null && parent !== undefined && signalDefinitionsProperty === undefined) {
if (parent.properties && parent.properties['oryx-signaldefinitions']) {
signalDefinitionsProperty = parent.properties['oryx-signaldefinitions'];
} else {
parent = parent.parent;
}
}
try {
signalDefinitionsProperty = JSON.parse(signalDefinitionsProperty);
if (typeof signalDefinitionsProperty == 'string') {
signalDefinitionsProperty = JSON.parse(signalDefinitionsProperty);
}
} catch (err) {
// Do nothing here, just to be sure we try-catch it
}
$scope.signalDefinitions = signalDefinitionsProperty;
$scope.signalChanged = function() {
$scope.updatePropertyInModel($scope.property);
};
}]);

View File

@ -0,0 +1,325 @@
/*
* 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();
};
}];

View File

@ -0,0 +1,99 @@
/*
* 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"
}
};

View File

@ -0,0 +1,4 @@
<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>

View File

@ -0,0 +1,44 @@
<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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmAssignmentCtrl">
</span>

View File

@ -0,0 +1,4 @@
<div ng-controller="KisBpmBooleanPropertyCtrl">
<input type="checkbox" ng-model="property.value" ng-change="changeValue()"/>
</div>

View File

@ -0,0 +1,2 @@
<span ng-if="property.value">{{property.value|limitTo:20}}</span>
<span ng-if="!property.value">{{'PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY' | translate}}</span>

View File

@ -0,0 +1,29 @@
<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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmConditionExpressionCtrl">
</span>

View File

@ -0,0 +1,4 @@
<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>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.EVENTLISTENERS.DISPLAY' | translate:property.value.eventListeners}}</span>
<span ng-if="property.noValue" translate>PROPERTY.EVENTLISTENERS.EMPTY</span>

View File

@ -0,0 +1,115 @@
<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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmEventListenersCtrl">
</span>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.EXECUTIONLISTENERS.DISPLAY' | translate:property.value.executionListeners}}</span>
<span ng-if="property.noValue" translate>PROPERTY.EXECUTIONLISTENERS.EMPTY</span>

View File

@ -0,0 +1,101 @@
<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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmExecutionListenersCtrl">
</span>

View File

@ -0,0 +1,17 @@
<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>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.FIELDS' | translate:property.value.fields}}</span>
<span ng-if="property.noValue">{{'PROPERTY.FIELDS.EMPTY' | translate}}</span>

View File

@ -0,0 +1,61 @@
<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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmFieldsCtrl">
</span>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.FORMPROPERTIES.VALUE' | translate:property.value.formProperties}}</span>
<span ng-if="property.noValue" translate>PROPERTY.FORMPROPERTIES.EMPTY</span>

View File

@ -0,0 +1,117 @@
<div class="modal" ng-controller="KisBpmFormPropertiesPopupCtrl">
<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="default-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="movePropertyUp()"><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="movePropertyDown()"><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="addNewProperty()"><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="removeProperty()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-6">
<div ng-show="selectedProperties.length > 0">
<div class="form-group">
<label for="idField">{{'PROPERTY.FORMPROPERTIES.ID' | translate}}</label>
<input id="idField" class="form-control" type="text" ng-model="selectedProperties[0].id" placeholder="{{'PROPERTY.FORMPROPERTIES.ID.PLACEHOLDER' | translate }}" />
</div>
<div class="form-group">
<label for="nameField">{{'PROPERTY.FORMPROPERTIES.NAME' | translate}}</label>
<input id="nameField" class="form-control" type="text" ng-model="selectedProperties[0].name" placeholder="{{'PROPERTY.FORMPROPERTIES.NAME.PLACEHOLDER' | translate }}" />
</div>
<div class="form-group">
<label for="typeField">{{'PROPERTY.FORMPROPERTIES.TYPE' | translate}}</label>
<select id="typeField" class="form-control" ng-model="selectedProperties[0].type" ng-change="propertyTypeChanged()">
<option>string</option>
<option>long</option>
<option>boolean</option>
<option>date</option>
<option>enum</option>
</select>
</div>
<div class="form-group" ng-show="selectedProperties[0].datePattern">
<label for="datePatternField">{{'PROPERTY.FORMPROPERTIES.DATEPATTERN' | translate}}</label>
<input id="datePatternField" class="form-control" type="text" ng-model="selectedProperties[0].datePattern" placeholder="{{'PROPERTY.FORMPROPERTIES.DATEPATTERN.PLACEHOLDER' | translate }}" />
</div>
<div ng-if="selectedProperties[0].type == 'enum'" style="padding-bottom:10px">
<div class="row row-no-gutter">
<div class="col-xs-6">
<div ng-if="translationsRetrieved" class="kis-listener-grid" ng-grid="enumGridOptions"></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="moveEnumValueUp()"><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="moveEnumValueDown()"><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="addNewEnumValue()"><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="removeEnumValue()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-6">
<div ng-show="selectedEnumValues.length > 0">
<div class="form-group">
<label for="classField">{{'PROPERTY.FORMPROPERTIES.VALUES.ID' | translate}}</label>
<input type="text" id="classField" class="form-control" ng-model="selectedEnumValues[0].id" placeholder="{{'PROPERTY.FORMPROPERTIES.VALUES.ID.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="classField">{{'PROPERTY.FORMPROPERTIES.VALUES.NAME' | translate}}</label>
<input type="text" id="classField" class="form-control" ng-model="selectedEnumValues[0].name" placeholder="{{'PROPERTY.FORMPROPERTIES.VALUES.NAME.PLACEHOLDER' | translate}}" />
</div>
</div>
<div ng-show="selectedEnumValues.length == 0" class="muted no-property-selected" translate>PROPERTY.FORMPROPERTIES.ENUMVALUES.EMPTY</div>
</div>
</div>
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.FORMPROPERTIES.EXPRESSION' | translate}}</label>
<input id="expressionField" class="form-control" type="text" ng-model="selectedProperties[0].expression" placeholder="{{'PROPERTY.FORMPROPERTIES.EXPRESSION.PLACEHOLDER' | translate }}" />
</div>
<div class="form-group">
<label for="variableField">{{'PROPERTY.FORMPROPERTIES.VARIABLE' | translate}}</label>
<input id="variableField" class="form-control" type="text" ng-model="selectedProperties[0].variable" placeholder="{{'PROPERTY.FORMPROPERTIES.VARIABLE.PLACEHOLDER' | translate }}" />
</div>
<div class="form-inline">
<div class="form-group col-xs-2" >
<label for="requiredField">{{'PROPERTY.FORMPROPERTIES.REQUIRED' | translate}}</label>
<input id="requiredField" class="form-control" type="checkbox" ng-model="selectedProperties[0].required" />
</div>
<div class="form-group col-xs-2">
<label for="readableField">{{'PROPERTY.FORMPROPERTIES.READABLE' | translate}}</label>
<input id="readableField" class="form-control" type="checkbox" ng-model="selectedProperties[0].readable" />
</div>
<div class="form-group col-xs-2">
<label for="writableField">{{'PROPERTY.FORMPROPERTIES.WRITABLE' | translate}}</label>
<input id="writableField" class="form-control" type="checkbox" ng-model="selectedProperties[0].writable" />
</div>
</div>
</div>
<div ng-show="selectedProperties.length == 0" class="muted no-property-selected" translate>PROPERTY.FORMPROPERTIES.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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmFormPropertiesCtrl">
</span>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.INPARAMETERS.VALUE' | translate:property.value.inParameters}}</span>
<span ng-if="property.noValue" translate>PROPERTY.INPARAMETERS.EMPTY</span>

View File

@ -0,0 +1,53 @@
<div class="modal" ng-controller="KisBpmInParametersPopupCtrl">
<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="moveParameterUp()"><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="moveParameterDown()"><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:property}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewParameter()"><i class="glyphicon glyphicon-plus"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{'ACTION.REMOVE' | translate:property}}" data-placement="bottom" data-original-title="" title="" ng-click="removeParameter()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-6">
<div ng-show="selectedParameters.length > 0">
<div class="form-group">
<label for="sourceField">{{'PROPERTY.PARAMETER.SOURCE' | translate}}</label>
<input type="text" id="sourceField" class="form-control" ng-model="selectedParameters[0].source" placeholder="{{'PROPERTY.PARAMETER.SOURCE.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.PARAMETER.SOURCEEXPRESSION' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedParameters[0].sourceExpression" placeholder="{{'PROPERTY.PARAMETER.SOURCEEXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.PARAMETER.TARGET' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedParameters[0].target" placeholder="{{'PROPERTY.PARAMETER.TARGET.PLACEHOLDER' | translate}}" />
</div>
</div>
<div ng-show="selectedParameters.length == 0" class="muted no-property-selected" translate>PROPERTY.PARAMETER.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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmInParametersCtrl">
</span>

View File

@ -0,0 +1,2 @@
<span ng-if="!property.noValue">{{'PROPERTY.MESSAGEDEFINITIONS.DISPLAY' | translate:property.value}}</span>
<span ng-if="property.noValue" translate>PROPERTY.MESSAGEDEFINITIONS.EMPTY</span>

View File

@ -0,0 +1,50 @@
<div class="modal" ng-controller="ActivitiMessageDefinitionsPopupCtrl">
<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-8">
<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.ADD | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewMessageDefinition()"><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="removeMessageDefinition()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-4" ng-show="selectedMessages && selectedMessages.length > 0">
<div class="form-group">
<label>{{'PROPERTY.MESSAGEDEFINITIONS.ID' | translate}}</label>
<input type="text" class="form-control" ng-model="selectedMessages[0].id">
</div>
<div class="form-group">
<label>{{'PROPERTY.MESSAGEDEFINITIONS.NAME' | translate}}</label>
<input type="text" class="form-control" ng-model="selectedMessages[0].name">
</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>

View File

@ -0,0 +1,3 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="ActivitiMessageDefinitionsCtrl">
</span>

View File

@ -0,0 +1,4 @@
<div ng-controller="ActivitiMessageRefCtrl">
<select ng-model="property.value" ng-change="messageChanged()" ng-options="messageDefinition.id as (messageDefinition.name + ' (' + messageDefinition.id + ')') for messageDefinition in messageDefinitions">
</select>
</div>

View File

@ -0,0 +1,8 @@
<div ng-controller="KisBpmMultiInstanceCtrl">
<select ng-model="property.value" ng-change="multiInstanceChanged()">
<option>None</option>
<option>Parallel</option>
<option>Sequential</option>
</select>
</div>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.OUTPARAMETERS.VALUE' | translate:property.value.outParameters}}</span>
<span ng-if="property.noValue" translate>PROPERTY.OUTPARAMETERS.EMPTY</span>

View File

@ -0,0 +1,53 @@
<div class="modal" ng-controller="KisBpmOutParametersPopupCtrl">
<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="moveParameterUp()"><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="moveParameterDown()"><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:property}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewParameter()"><i class="glyphicon glyphicon-plus"></i></a>
<a class="btn btn-icon btn-lg" rel="tooltip" data-title="{{'ACTION.REMOVE' | translate:property}}" data-placement="bottom" data-original-title="" title="" ng-click="removeParameter()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-6">
<div ng-show="selectedParameters.length > 0">
<div class="form-group">
<label for="sourceField">{{'PROPERTY.PARAMETER.SOURCE' | translate}}</label>
<input type="text" id="sourceField" class="form-control" ng-model="selectedParameters[0].source" placeholder="{{'PROPERTY.PARAMETER.SOURCE.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.PARAMETER.SOURCEEXPRESSION' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedParameters[0].sourceExpression" placeholder="{{'PROPERTY.PARAMETER.SOURCEEXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.PARAMETER.TARGET' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedParameters[0].target" placeholder="{{'PROPERTY.PARAMETER.TARGET.PLACEHOLDER' | translate}}" />
</div>
</div>
<div ng-show="selectedParameters.length == 0" class="muted no-property-selected" translate>PROPERTY.PARAMETER.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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmOutParametersCtrl">
</span>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue" translate>PROPERTY.SEQUENCEFLOW.ORDER.NOT.EMPTY</span>
<span ng-if="property.noValue" translate>PROPERTY.SEQUENCEFLOW.ORDER.EMPTY</span>

View File

@ -0,0 +1,47 @@
<div class="modal" ng-controller="KisBpmSequenceFlowOrderPopupCtrl">
<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>
<h3>{{'PROPERTY.PROPERTY.EDIT.TITLE' | translate:property}}</h3>
</div>
<div class="modal-body">
<div translate>PROPERTY.SEQUENCEFLOW.ORDER.DESCRIPTION</div>
<br/>
<ol>
<li class="sequence-flow-order-element" ng-repeat="sequenceFlow in outgoingSequenceFlow">
{{'PROPERTY.SEQUENCEFLOW.ORDER.SEQUENCEFLOW.VALUE' | translate:sequenceFlow}}
<a class="btn btn-icon btn-sm"
rel="tooltip"
data-title="{{'ACTION.MOVE.UP' | translate}}"
data-placement="bottom"
data-original-title="" title=""
ng-click="moveUp($index)"
ng-if="$index > 0">
<i class="glyphicon glyphicon-arrow-up"></i>
</a>
<a class="btn btn-icon btn-sm"
rel="tooltip"
data-title="{{'ACTION.MOVE.DOWN' | translate}}"
data-placement="bottom"
data-original-title=""
title=""
ng-click="moveDown($index)"
ng-if="$index < outgoingSequenceFlow.length - 1">
<i class="glyphicon glyphicon-arrow-down"></i>
</a>
</li>
</ol>
</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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmSequenceFlowOrderCtrl">
</span>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.SIGNALDEFINITIONS.DISPLAY' | translate:property.value}}</span>
<span ng-if="property.noValue" translate>PROPERTY.SIGNALDEFINITIONS.EMPTY</span>

View File

@ -0,0 +1,58 @@
<div class="modal" ng-controller="ActivitiSignalDefinitionsPopupCtrl">
<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-8">
<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.ADD | translate}}" data-placement="bottom" data-original-title="" title="" ng-click="addNewSignalDefinition()"><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="removeSignalDefinition()"><i class="glyphicon glyphicon-minus"></i></a>
</div>
</div>
</div>
<div class="col-xs-4" ng-show="selectedSignals && selectedSignals.length > 0">
<div class="form-group">
<label>{{'PROPERTY.SIGNALDEFINITIONS.ID' | translate}}</label>
<input type="text" class="form-control" ng-model="selectedSignals[0].id">
</div>
<div class="form-group">
<label>{{'PROPERTY.SIGNALDEFINITIONS.NAME' | translate}}</label>
<input type="text" class="form-control" ng-model="selectedSignals[0].name">
</div>
<div class="form-group">
<label>{{'PROPERTY.SIGNALDEFINITIONS.SCOPE' | translate}}</label>
<select class="form-control" ng-model="selectedSignals[0].scope">
<option value="global">{{'PROPERTY.SIGNALDEFINITIONS.SCOPE-GLOBAL' | translate}}</option>
<option value="processInstance">{{'PROPERTY.SIGNALDEFINITIONS.SCOPE-PROCESSINSTANCE' | translate}}</option>
</select>
</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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="ActivitiSignalDefinitionsCtrl">
</span>

View File

@ -0,0 +1,4 @@
<div ng-controller="ActivitiSignalRefCtrl">
<select ng-model="property.value" ng-change="signalChanged()" ng-options="signalDefinition.id as (signalDefinition.name + ' (' + signalDefinition.id + ')') for signalDefinition in signalDefinitions">
</select>
</div>

View File

@ -0,0 +1,8 @@
<div ng-controller="KisBpmStringPropertyCtrl">
<input type="text" ng-model="property.value"
class="form-control"
auto-focus
ng-blur="inputBlurred()"
ng-keypress="enterPressed($event)"/>
</div>

View File

@ -0,0 +1,3 @@
<span ng-if="property.value.name">{{property.value.name}}</span>
<span ng-if="!property.value || !property.value.name" translate>PROPERTY.SUBPROCESSREFERENCE.EMPTY</span>

View File

@ -0,0 +1,43 @@
<div class="modal" ng-controller="KisBpmCollapsedSubprocessReferencePopupCrtl">
<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.SUBPROCESSREFERENCE.TITLE' | translate}}
<span ng-show="selectedSubProcess != null"> - {{selectedSubProcess.name}}</span>
<span ng-show="selectedSubProcess == null"> - {{'PROPERTY.SUBPROCESSREFERENCE.EMPTY' | translate}}</span>
</h2>
</div>
<div class="modal-body">
<div class="detail-group clearfix">
<div class="col-xs-12">
<div class="alert alert-error" ng-show="(!state.loadingFolders && !state.loadingSubprocesses) && state.subprocessError" translate>PROPERTY.SUBPROCESSREFERENCE.ERROR.SUBPROCESS</div>
</div>
</div>
<div class="detail-group clearfix">
<div class="col-xs-12 editor-item-picker">
<div ng-if="!state.loadingSubprocesses && !state.subprocessError" class="col-xs-4 editor-item-picker-component" ng-repeat="sub in subProcesses" ng-class="{'selected' : sub.id == selectedSubProcess.id}" ng-click="selectSubProcess(sub, $event)">
<div class="controls">
<input type="checkbox" value="option1" ng-click="selectSubProcess(sub, $event)" ng-checked="sub.id == selectedSubProcess.id" />
</div>
<h4>{{sub.name}}</h4>
<img src="{{config.contextRoot}}/app/rest/models/{{sub.id}}/thumbnail" />
</div>
<div ng-show="state.loadingSubprocesses">
<p class="loading" translate>PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.LOADING</p>
</div>
<div ng-show="!state.loadingSubprocesses && subProcesses.length == 0">
<p translate>PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.EMPTY</p>
</div>
</div>
</div>
</div>
<div class="modal-footer">
<button ng-disabled="state.subprocessError" ng-click="save()" class="btn btn-primary" translate>ACTION.SAVE</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmCollapsedSubprocessReferenceCrtl">
</span>

View File

@ -0,0 +1,3 @@
<span ng-if="!property.noValue">{{'PROPERTY.TASKLISTENERS.VALUE' | translate:property.value.taskListeners}}</span>
<span ng-if="property.noValue" translate>PROPERTY.TASKLISTENERS.EMPTY</span>

View File

@ -0,0 +1,102 @@
<div class="modal" ng-controller="KisBpmTaskListenersPopupCtrl">
<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.TASKLISTENERS.EVENT' | translate}}</label>
<select id="eventField" class="form-control" ng-model="selectedListeners[0].event">
<option>create</option>
<option>assignment</option>
<option>complete</option>
<option>delete</option>
</select>
</div>
<div class="form-group">
<label for="classField">{{'PROPERTY.TASKLISTENERS.CLASS' | translate}}</label>
<input type="text" id="classField" class="form-control" ng-model="selectedListeners[0].className" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.TASKLISTENERS.CLASS.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.TASKLISTENERS.EXPRESSION' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedListeners[0].expression" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.TASKLISTENERS.EXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="delegateExpressionField">{{'PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION' | translate}}</label>
<input type="text" id="delegateExpressionField" class="form-control" ng-model="selectedListeners[0].delegateExpression" ng-change="listenerDetailsChanged()" placeholder="{{'PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER' | translate}}" />
</div>
</div>
<div ng-show="selectedListeners.length == 0" class="muted no-property-selected" translate>PROPERTY.TASKLISTENERS.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.TASKLISTENERS.FIELDS.NAME' | translate}}</label>
<input type="text" id="nameField" class="form-control" ng-model="selectedFields[0].name" placeholder="{{'PROPERTY.TASKLISTENERS.FIELDS.NAME.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="stringValueField">{{'PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE' | translate}}</label>
<input type="text" id="stringValueField" class="form-control" ng-model="selectedFields[0].stringValue" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="expressionField">{{'PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION' | translate}}</label>
<input type="text" id="expressionField" class="form-control" ng-model="selectedFields[0].expression" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER' | translate}}" />
</div>
<div class="form-group">
<label for="stringField">{{'PROPERTY.TASKLISTENERS.FIELDS.STRING' | translate}}</label>
<textarea id="stringField" class="form-control" ng-model="selectedFields[0].string" ng-change="fieldDetailsChanged()" placeholder="{{'PROPERTY.TASKLISTENERS.FIELDS.STRING.PLACEHOLDER' | translate}}"></textarea>
</div>
</div>
<div ng-show="selectedFields.length == 0" class="muted no-property-selected"translate>PROPERTY.TASKLISTENERS.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>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmTaskListenersCtrl">
</span>

View File

@ -0,0 +1,17 @@
<div class="modal" ng-controller="KisBpmTextPropertyPopupCtrl">
<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>
<h3>{{'PROPERTY.PROPERTY.EDIT.TITLE' | translate:property}}</h3>
</div>
<div class="modal-body">
<p><textarea auto-focus class="form-control" ng-model="property.value" style="width:70%; height:100%; max-width: 100%; max-height: 100%; min-height: 200px"/></p>
</div>
<div class="modal-footer">
<button ng-click="save()" class="btn btn-primary" translate >ACTION.SAVE</button>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,4 @@
<!-- Just need to instantiate the controller, and it will take care of showing the modal dialog -->
<span ng-controller="KisBpmTextPropertyCtrl">
</span>

View File

@ -0,0 +1,18 @@
/*
* 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
*/

View File

@ -0,0 +1,429 @@
/*
* 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.TOOLBAR = {
ACTIONS: {
saveModel: function (services) {
var modal = services.$modal({
backdrop: true,
keyboard: true,
template: 'editor-app/popups/save-model.html?version=' + Date.now(),
scope: services.$scope
});
},
undo: function (services) {
// Get the last commands
var lastCommands = services.$scope.undoStack.pop();
if (lastCommands) {
// Add the commands to the redo stack
services.$scope.redoStack.push(lastCommands);
// Force refresh of selection, might be that the undo command
// impacts properties in the selected item
if (services.$rootScope && services.$rootScope.forceSelectionRefresh)
{
services.$rootScope.forceSelectionRefresh = true;
}
// Rollback every command
for (var i = lastCommands.length - 1; i >= 0; --i) {
lastCommands[i].rollback();
}
// Update and refresh the canvas
services.$scope.editor.handleEvents({
type: ORYX.CONFIG.EVENT_UNDO_ROLLBACK,
commands: lastCommands
});
// Update
services.$scope.editor.getCanvas().update();
services.$scope.editor.updateSelection();
}
var toggleUndo = false;
if (services.$scope.undoStack.length == 0)
{
toggleUndo = true;
}
var toggleRedo = false;
if (services.$scope.redoStack.length > 0)
{
toggleRedo = true;
}
if (toggleUndo || toggleRedo) {
for (var i = 0; i < services.$scope.items.length; i++) {
var item = services.$scope.items[i];
if (toggleUndo && item.action === 'KISBPM.TOOLBAR.ACTIONS.undo') {
services.$scope.safeApply(function () {
item.enabled = false;
});
}
else if (toggleRedo && item.action === 'KISBPM.TOOLBAR.ACTIONS.redo') {
services.$scope.safeApply(function () {
item.enabled = true;
});
}
}
}
},
redo: function (services) {
// Get the last commands from the redo stack
var lastCommands = services.$scope.redoStack.pop();
if (lastCommands) {
// Add this commands to the undo stack
services.$scope.undoStack.push(lastCommands);
// Force refresh of selection, might be that the redo command
// impacts properties in the selected item
if (services.$rootScope && services.$rootScope.forceSelectionRefresh)
{
services.$rootScope.forceSelectionRefresh = true;
}
// Execute those commands
lastCommands.each(function (command) {
command.execute();
});
// Update and refresh the canvas
services.$scope.editor.handleEvents({
type: ORYX.CONFIG.EVENT_UNDO_EXECUTE,
commands: lastCommands
});
// Update
services.$scope.editor.getCanvas().update();
services.$scope.editor.updateSelection();
}
var toggleUndo = false;
if (services.$scope.undoStack.length > 0) {
toggleUndo = true;
}
var toggleRedo = false;
if (services.$scope.redoStack.length == 0) {
toggleRedo = true;
}
if (toggleUndo || toggleRedo) {
for (var i = 0; i < services.$scope.items.length; i++) {
var item = services.$scope.items[i];
if (toggleUndo && item.action === 'KISBPM.TOOLBAR.ACTIONS.undo') {
services.$scope.safeApply(function () {
item.enabled = true;
});
}
else if (toggleRedo && item.action === 'KISBPM.TOOLBAR.ACTIONS.redo') {
services.$scope.safeApply(function () {
item.enabled = false;
});
}
}
}
},
cut: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxEditPlugin(services.$scope).editCut();
for (var i = 0; i < services.$scope.items.length; i++) {
var item = services.$scope.items[i];
if (item.action === 'KISBPM.TOOLBAR.ACTIONS.paste') {
services.$scope.safeApply(function () {
item.enabled = true;
});
}
}
},
copy: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxEditPlugin(services.$scope).editCopy();
for (var i = 0; i < services.$scope.items.length; i++) {
var item = services.$scope.items[i];
if (item.action === 'KISBPM.TOOLBAR.ACTIONS.paste') {
services.$scope.safeApply(function () {
item.enabled = true;
});
}
}
},
paste: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxEditPlugin(services.$scope).editPaste();
},
deleteItem: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxEditPlugin(services.$scope).editDelete();
},
addBendPoint: function (services) {
var dockerPlugin = KISBPM.TOOLBAR.ACTIONS._getOryxDockerPlugin(services.$scope);
var enableAdd = !dockerPlugin.enabledAdd();
dockerPlugin.setEnableAdd(enableAdd);
if (enableAdd)
{
dockerPlugin.setEnableRemove(false);
document.body.style.cursor = 'pointer';
}
else
{
document.body.style.cursor = 'default';
}
},
removeBendPoint: function (services) {
var dockerPlugin = KISBPM.TOOLBAR.ACTIONS._getOryxDockerPlugin(services.$scope);
var enableRemove = !dockerPlugin.enabledRemove();
dockerPlugin.setEnableRemove(enableRemove);
if (enableRemove)
{
dockerPlugin.setEnableAdd(false);
document.body.style.cursor = 'pointer';
}
else
{
document.body.style.cursor = 'default';
}
},
/**
* Helper method: fetches the Oryx Edit plugin from the provided scope,
* if not on the scope, it is created and put on the scope for further use.
*
* It's important to reuse the same EditPlugin while the same scope is active,
* as the clipboard is stored for the whole lifetime of the scope.
*/
_getOryxEditPlugin: function ($scope) {
if ($scope.oryxEditPlugin === undefined || $scope.oryxEditPlugin === null) {
$scope.oryxEditPlugin = new ORYX.Plugins.Edit($scope.editor);
}
return $scope.oryxEditPlugin;
},
zoomIn: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxViewPlugin(services.$scope).zoom([1.0 + ORYX.CONFIG.ZOOM_OFFSET]);
},
zoomOut: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxViewPlugin(services.$scope).zoom([1.0 - ORYX.CONFIG.ZOOM_OFFSET]);
},
zoomActual: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxViewPlugin(services.$scope).setAFixZoomLevel(1);
},
zoomFit: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxViewPlugin(services.$scope).zoomFitToModel();
},
alignVertical: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxArrangmentPlugin(services.$scope).alignShapes([ORYX.CONFIG.EDITOR_ALIGN_MIDDLE]);
},
alignHorizontal: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxArrangmentPlugin(services.$scope).alignShapes([ORYX.CONFIG.EDITOR_ALIGN_CENTER]);
},
sameSize: function (services) {
KISBPM.TOOLBAR.ACTIONS._getOryxArrangmentPlugin(services.$scope).alignShapes([ORYX.CONFIG.EDITOR_ALIGN_SIZE]);
},
closeEditor: function(services) {
window.location.href = "./";
},
/**
* Helper method: fetches the Oryx View plugin from the provided scope,
* if not on the scope, it is created and put on the scope for further use.
*/
_getOryxViewPlugin: function ($scope) {
if ($scope.oryxViewPlugin === undefined || $scope.oryxViewPlugin === null) {
$scope.oryxViewPlugin = new ORYX.Plugins.View($scope.editor);
}
return $scope.oryxViewPlugin;
},
_getOryxArrangmentPlugin: function ($scope) {
if ($scope.oryxArrangmentPlugin === undefined || $scope.oryxArrangmentPlugin === null) {
$scope.oryxArrangmentPlugin = new ORYX.Plugins.Arrangement($scope.editor);
}
return $scope.oryxArrangmentPlugin;
},
_getOryxDockerPlugin: function ($scope) {
if ($scope.oryxDockerPlugin === undefined || $scope.oryxDockerPlugin === null) {
$scope.oryxDockerPlugin = new ORYX.Plugins.AddDocker($scope.editor);
}
return $scope.oryxDockerPlugin;
}
}
};
/** Custom controller for the save dialog */
var SaveModelCtrl = [ '$rootScope', '$scope', '$http', '$route', '$location',
function ($rootScope, $scope, $http, $route, $location) {
var modelMetaData = $scope.editor.getModelMetaData();
var description = '';
if (modelMetaData.description) {
description = modelMetaData.description;
}
var saveDialog = { 'name' : modelMetaData.name,
'description' : description};
$scope.saveDialog = saveDialog;
var json = $scope.editor.getJSON();
json = JSON.stringify(json);
var params = {
modeltype: modelMetaData.model.modelType,
json_xml: json,
name: 'model'
};
$scope.status = {
loading: false
};
$scope.close = function () {
$scope.$hide();
};
$scope.saveAndClose = function () {
$scope.save(function() {
CloseWindow('ok');
});
};
$scope.save = function (successCallback) {
if (!$scope.saveDialog.name || $scope.saveDialog.name.length == 0) {
return;
}
// Indicator spinner image
$scope.status = {
loading: true
};
modelMetaData.name = $scope.saveDialog.name;
modelMetaData.description = $scope.saveDialog.description;
var json = $scope.editor.getJSON();
json = JSON.stringify(json);
var selection = $scope.editor.getSelection();
$scope.editor.setSelection([]);
// Get the serialized svg image source
var svgClone = $scope.editor.getCanvas().getSVGRepresentation(true);
$scope.editor.setSelection(selection);
if ($scope.editor.getCanvas().properties["oryx-showstripableelements"] === false) {
var stripOutArray = jQuery(svgClone).find(".stripable-element");
for (var i = stripOutArray.length - 1; i >= 0; i--) {
stripOutArray[i].remove();
}
}
// Remove all forced stripable elements
var stripOutArray = jQuery(svgClone).find(".stripable-element-force");
for (var i = stripOutArray.length - 1; i >= 0; i--) {
stripOutArray[i].remove();
}
// Parse dom to string
var svgDOM = DataManager.serialize(svgClone);
var params = {
json_xml: json,
svg_xml: svgDOM,
name: $scope.saveDialog.name,
description: $scope.saveDialog.description
};
// Update
$http({ method: 'PUT',
data: params,
ignoreErrors: true,
headers: {'Accept': 'application/json',
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
transformRequest: function (obj) {
var str = [];
for (var p in obj) {
str.push(encodeURIComponent(p) + "=" + encodeURIComponent(obj[p]));
}
return str.join("&");
},
url: KISBPM.URL.putModel(modelMetaData.modelId)})
.success(function (data, status, headers, config) {
$scope.editor.handleEvents({
type: ORYX.CONFIG.EVENT_SAVED
});
$scope.modelData.name = $scope.saveDialog.name;
$scope.modelData.lastUpdated = data.lastUpdated;
$scope.status.loading = false;
$scope.$hide();
// Fire event to all who is listening
var saveEvent = {
type: KISBPM.eventBus.EVENT_TYPE_MODEL_SAVED,
model: params,
modelId: modelMetaData.modelId,
eventType: 'update-model'
};
KISBPM.eventBus.dispatch(KISBPM.eventBus.EVENT_TYPE_MODEL_SAVED, saveEvent);
// Reset state
$scope.error = undefined;
$scope.status.loading = false;
// Execute any callback
if (successCallback) {
successCallback();
}
})
.error(function (data, status, headers, config) {
$scope.error = {};
console.log('Something went wrong when updating the process model:' + JSON.stringify(data));
$scope.status.loading = false;
});
};
}];

View File

@ -0,0 +1,175 @@
/*
* 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.TOOLBAR_CONFIG = {
"items" : [
{
"type" : "button",
"title" : "TOOLBAR.ACTION.SAVE",
"cssClass" : "editor-icon editor-icon-save",
"action" : "KISBPM.TOOLBAR.ACTIONS.saveModel"
},
{
"type" : "separator",
"title" : "",
"cssClass" : "toolbar-separator"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.CUT",
"cssClass" : "editor-icon editor-icon-cut",
"action" : "KISBPM.TOOLBAR.ACTIONS.cut",
"enabled" : false,
"enabledAction" : "element"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.COPY",
"cssClass" : "editor-icon editor-icon-copy",
"action" : "KISBPM.TOOLBAR.ACTIONS.copy",
"enabled" : false,
"enabledAction" : "element"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.PASTE",
"cssClass" : "editor-icon editor-icon-paste",
"action" : "KISBPM.TOOLBAR.ACTIONS.paste",
"enabled" : false
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.DELETE",
"cssClass" : "editor-icon editor-icon-delete",
"action" : "KISBPM.TOOLBAR.ACTIONS.deleteItem",
"enabled" : false,
"enabledAction" : "element"
},
{
"type" : "separator",
"title" : "TOOLBAR.ACTION.SAVE",
"cssClass" : "toolbar-separator"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.REDO",
"cssClass" : "editor-icon editor-icon-redo",
"action" : "KISBPM.TOOLBAR.ACTIONS.redo",
"enabled" : false
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.UNDO",
"cssClass" : "editor-icon editor-icon-undo",
"action" : "KISBPM.TOOLBAR.ACTIONS.undo",
"enabled" : false
},
{
"type" : "separator",
"title" : "TOOLBAR.ACTION.SAVE",
"cssClass" : "toolbar-separator"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.ALIGNVERTICAL",
"cssClass" : "editor-icon editor-icon-align-vertical",
"action" : "KISBPM.TOOLBAR.ACTIONS.alignVertical",
"enabled" : false,
"enabledAction" : "element",
"minSelectionCount" : 2
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.ALIGNHORIZONTAL",
"cssClass" : "editor-icon editor-icon-align-horizontal",
"action" : "KISBPM.TOOLBAR.ACTIONS.alignHorizontal",
"enabledAction" : "element",
"enabled" : false,
"minSelectionCount" : 2
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.SAMESIZE",
"cssClass" : "editor-icon editor-icon-same-size",
"action" : "KISBPM.TOOLBAR.ACTIONS.sameSize",
"enabledAction" : "element",
"enabled" : false,
"minSelectionCount" : 2
},
{
"type" : "separator",
"title" : "TOOLBAR.ACTION.SAVE",
"cssClass" : "toolbar-separator"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.ZOOMIN",
"cssClass" : "editor-icon editor-icon-zoom-in",
"action" : "KISBPM.TOOLBAR.ACTIONS.zoomIn"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.ZOOMOUT",
"cssClass" : "editor-icon editor-icon-zoom-out",
"action" : "KISBPM.TOOLBAR.ACTIONS.zoomOut"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.ZOOMACTUAL",
"cssClass" : "editor-icon editor-icon-zoom-actual",
"action" : "KISBPM.TOOLBAR.ACTIONS.zoomActual"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.ZOOMFIT",
"cssClass" : "editor-icon editor-icon-zoom-fit",
"action" : "KISBPM.TOOLBAR.ACTIONS.zoomFit"
},
{
"type" : "separator",
"title" : "TOOLBAR.ACTION.SAVE",
"cssClass" : "toolbar-separator"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.BENDPOINT.ADD",
"cssClass" : "editor-icon editor-icon-bendpoint-add",
"action" : "KISBPM.TOOLBAR.ACTIONS.addBendPoint",
"id" : "add-bendpoint-button"
},
{
"type" : "button",
"title" : "TOOLBAR.ACTION.BENDPOINT.REMOVE",
"cssClass" : "editor-icon editor-icon-bendpoint-remove",
"action" : "KISBPM.TOOLBAR.ACTIONS.removeBendPoint",
"id" : "remove-bendpoint-button"
}
],
"secondaryItems" : [
{
"type" : "button",
"title" : "Close",
"cssClass" : "editor-icon editor-icon-close",
"action" : "KISBPM.TOOLBAR.ACTIONS.closeEditor"
}
]
};

View File

@ -0,0 +1,34 @@
/*
* 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
*/
var KISBPM = KISBPM || {};
KISBPM.URL = {
getModel: function(modelId) {
return ACTIVITI.CONFIG.contextRoot + '/model/' + modelId + '/json';
},
getStencilSet: function() {
return ACTIVITI.CONFIG.contextRoot + '/editor/stencilset?version=' + Date.now();
},
putModel: function(modelId) {
return ACTIVITI.CONFIG.contextRoot + '/model/' + modelId + '/save';
}
};

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,639 @@
/**
Colors:
- Header: #333333
- Subheader: #e8edf1
- Subheader border: #a4acb9
- Highlight buttons/text: #36a7c4
- Text color: #1a1a1a
- Filter color: #373e48
- Dark highlight: #606b7d
*/
.container-fluid {
max-width: 1400px;
min-width: 1000px;
margin: 0 auto;
}
.subtle-select .glyphicon {
visibility: hidden;
padding-left: 5px;
}
a.subtle-select:hover .glyphicon {
visibility: visible;
}
.full {
padding: 0 15px;
width: 100%;
}
.inline {
display: inline;
}
.greyish {
color: #afafaf;
}
.roweditor-canvas {
margin-top: 50px;
}
.no-pad {
margin: 0;
max-width: 1300px;
min-width: 1100px;
}
.content.no-pad {
max-width: 100%;
min-width: 100%;
}
.inset .col-sm-3 {
margin-left: -15px;
}
.no-pad > div{
padding: 0;
}
.dropdown-toggle .icon-caret-down {
padding-left: 10px;
font-size: 85%;
}
h1 {
margin: 0 0 0 15px;
padding: 0;
font-size: 22px;
line-height: 40px;
border: none;
color: #ffffff;
font-family: 'Lato', sans-serif;
}
.truncate, .truncate > span {
white-space: nowrap;
width: 100%;
overflow: hidden;
text-overflow: ellipsis;
}
.subheader .details .counter {
top: -1px;
line-height: 1;
display: inline-block;
padding: 2px 6px;
min-width: 20px;
background-color: #e8edf1;
color: #333333;
}
.subheader .subtle-select {
margin: -6px 0 0 -8px;
}
.btn .icon-and-label {
padding-right: 5px;
}
.dropdown-menu .title {
margin: 5px 10px 0px 10px;
font-size: 17px;
min-width: 250px;
}
.dropdown-menu ul {
list-style: none;
list-style-position: inside;
padding: 5px 10px;
}
.input-group-addon {
background-color: transparent;
}
/* List Filter */
.filter-wrapper {
min-height: 400px;
margin-top: 10px;
margin-left: -15px;
}
ul.filter-list {
list-style: none;
list-style-position: inside;
padding-left: 0px;
padding-top: 10px;
}
ul.filter-list li a {
display: block;
color: #373e48;
font-size: 17px;
margin: 10px 5px 10px 0px;
padding-left: 10px;
}
ul.filter-list li.current a {
color: #36a7c4;
padding-left: 5px;
border-left: 4px solid #36a7c4;
}
ul.filter-list li a:hover, ul.filter-list li a:focus {
text-decoration: none;
background-color: #e8edf1;
}
ul.filter-list li.current a:hover, ul.filter-list li.current a:focus {
background-color: transparent;
color: #36a7c4;
cursor: default;
text-decoration: none;
}
/* Result items */
.item-wrapper {
padding-left: 0;
margin-top: 5px;
}
.item-wrapper .message {
text-align: left;
margin-left: 5px;
line-height: 40px;
color: #606b7d;
}
.item-wrapper .message span {
font-size: 14px;
}
.item-wrapper .item {
width: 25%;
padding: 0;
margin: 0;
float: left;
}
.item-wrapper .item .btn-default.disabled,
.item-wrapper .item .btn-default[disabled],
.item-wrapper .item .btn-default[disabled]:active,
.item-wrapper .item .btn-default[disabled]:hover {
border-color: #ffffff;
cursor: default;
}
.item-wrapper .item .item-box {
margin: 5px;
border: 1px solid #e8edf1;
height: 250px;
overflow: hidden;
cursor: pointer;
background-repeat: no-repeat;
background-position: center 20px;
background-size: auto;
position: relative;
}
.item-box .details {
position: relative;
background-color: #e8edf1;
height: 160px;
margin-top: 120px;
padding: 5px;
color: #373e48;
font-size: 13px;
transition: margin-top .5s ease;
-moz-transition: margin-top .5s ease;
-webkit-transition: margin-top .5s ease;
-o-transition: margin-top .5s ease;
}
.item-box:hover .details, .item-box.active .details {
margin-top: 50px;
}
.item-box .actions {
padding: 5px;
height: 45px;
}
.item-box .actions .btn-group {
visibility: hidden;
}
.item-box:hover .actions .btn-group, .item-box.active .actions .btn-group {
visibility: inherit;
}
.item-box .details h3 {
font-size: 14px;
margin: 0;
padding: 2px;
color: #373e48;
}
.item-box .details span {
display: block;
margin-top: 5px;
}
.item-box .details span i {
padding-right: 10px;
padding-left: 5px;
}
.item-box .details .basic-details {
min-height: 60px;
}
.item-box .details p {
width: 100%;
height: 70px;
font-size: 12px;
overflow: hidden;
}
.create-inline {
padding: 100px 20px 80px 20px;
border: 1px solid #e8edf1;
}
.create-inline span {
display: block;
font-size: 18px;
color: #1a1a1a;
text-align: center;
margin-bottom: 20px;
}
.create-inline .glyphicon {
margin-right: 10px;
}
.show-more {
clear: both;
height: 50px;
text-align: center;
padding-top: 5px;
margin: 5px;
}
.show-more a {
display: block;
padding: 5px;
font-size: 15px;
text-decoration: none;
cursor: pointer;
color: #666666;
}
.show-more a:hover {
color: #1a1a1a;
background: #e8edf1;
}
.content-canvas-wrapper {
-moz-box-shadow: inset 0 3px 3px -4px #ababab;
-webkit-box-shadow: inset 0 3px 3px -4px #ababab;
box-shadow: inset 0 3px 3px -4px #ababab;
margin: 15px 7px 0 7px;
z-index: 0;
}
.content-canvas {
background-color: #f9f9f9;
margin: 0 3px 0 3px;
-moz-box-shadow: inset 0 3px 3px -4px #ababab;
-webkit-box-shadow: inset 0 3px 3px -4px #ababab;
box-shadow: inset 0 3px 3px -4px #ababab;
padding: 20px;
}
.content-canvas h3 {
margin-bottom: 5px;
}
.content-canvas .no-results{
color: #999999;
font-size: 16px;
margin: 10px 0px;
}
.content-canvas .item-wrapper {
margin: 5px 10px;
}
/* History */
table.history {
margin: 0;
padding: 0;
}
.subheader table.history {
min-width: 250px;
}
table.history td {
vertical-align: middle;
}
table.history tr td:last-child {
width: 90%;
}
table.history tr:hover {
background-color: #f3f6f8;
cursor: pointer;
}
table.history tr.current:hover {
background-color: #e8edf1;
cursor: inherit;
}
table.history a:hover {
text-decoration: none;
}
table.history .version {
font-size: 30px;
display: inline-block;
color: #36a7c4;
padding: 5px 10px;
vertical-align:middle;
color: #36a7c4;
}
table.history .detail {
padding: 5px 5px;
font-size: 15px;
color: #1a1a1a;
display: inline-block;
}
table.history tr.current {
font-weight: bold;
background-color: #e8edf1;
}
table.history tr.current td {
background-color: #e8edf1;
}
.comments {
clear: both;
width: 350px;
border-top: 1px solid #eeeeee;
margin-top: 5px;
max-height: 350px;
overflow: auto;
}
.comment {
margin: 10px 0px 20px 0px;
font-size: 12px;
}
.comment .date {
color: #999999;
font-size: 12px;
}
.comment .author {
color: #36a7c4;
font-size: 18px;
}
.comment p {
word-wrap: break-word;
}
.modal.modal-wide .modal-dialog {
width: 1000px;
}
.modal-dialog.modal-wide {
width: 1000px;
}
.modal-body p {
font-size: 15px;
}
.modal-body p.danger {
color: #d35f5f;
margin-top: 10px;
}
.form-group .inline-help {
font-size: 11px;
color: #666666;
margin-top: 5px;
}
.form-group .message {
color: #1a1a1a;
font-size: 14px;
}
.people-select > .selection {
width: 100%;
text-align: left;
}
.popup-wrapper .people-select {
max-height: 160px;
}
.people-select .nothing-to-see {
padding: 5px 0;
color: #999999;
}
.inline-people-select {
max-height: 120px;
overflow: auto;
}
/** Center tabbed pane */
.center-pane {
overflow: auto;
padding-bottom: 20px;
}
.center-pane .content {
overflow: hidden;
}
.center-pane .tab-actions {
padding: 8px;
}
.center-pane .tabs-wrapper > .pull-right {
margin-right: 5px;
}
.center-pane .content {
padding: 10px;
}
.center-pane.content {
padding: 0;
}
.center-pane .content .tabs, .center-pane.content .tabs {
padding-left: 15px;
}
.center-pane .content .tabs > li a, .center-pane.content .tabs > li a {
padding: 8px 30px;
}
.center-pane .header h1 {
font-size: 30px;
margin: 0;
padding:0;
}
.center-pane .header h2 {
font-size: 24px;
margin: 0 0 5px 0;
padding:0;
}
.center-pane .header {
padding: 5px 10px 25px 10px;
}
.center-pane .header.compact {
padding-bottom: 5px;
}
.center-pane .well {
-moz-border-radius: 0px;
-webkit-border-radius: px;
border-radius: 0px;
background-color: #f9f9f9;
padding: 12px 10px;
margin: 15px 0 0 0;
border: 1px solid #eeeeee;
}
/** General button styling */
.btn.btn-clean {
border: none;
background-color: transparent;
font-size: 24px;
padding: 2px 6px;
color: #444444;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.btn-clean:hover .icon-remove {
color: #a02828;
}
.btn-clean:focus, .btn-clean:hover {
color: #5f8dd3;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
.btn-clean:active {
color: #2c5aa0;
-webkit-box-shadow: none;
-moz-box-shadow: none;
box-shadow: none;
}
/* Show list in popup */
ul.list {
list-style: none inside;
padding: 0px;
margin-bottom: 3px;
}
ul.list>li {
line-height: 30px;
margin: 0;
padding: 4px;
cursor: pointer;
}
.popup-wrapper ul.list>li {
border-top: 1px solid #eeeeee;
}
.popup-wrapper ul.list>li:last-child {
border-bottom: 1px solid #eeeeee;
}
ul.list>li:hover, ul.list>li.active {
background-color: #f2f2f2;
}
ul.list >li .actions {
float:right;
margin: 0px 0px 0px 5px;
visibility: hidden;
}
ul.list>li:hover .actions {
visibility: inherit;
}
/** Animations **/
.fadein.ng-enter,
.fadein.ng-move {
-webkit-transition: 0.5s linear opacity;
transition: 0.5s linear all;
}
.fadein.ng-enter {
opacity:0;
}
.fadein.ng-enter.ng-enter-active {
opacity:1;
}
.fadein.ng-move {
opacity:0.5;
}
.fadein.ng-move.ng-move-active {
opacity:1;
}
.popup-error {
color: red;
padding: 0 5px 8px 0;
}
/** Passwords */
.password-field {
width: 320px;
}
/** LOADING */
.message .loading {
line-height: 40px;
margin-left: 0px;
}

View File

@ -0,0 +1,477 @@
@font-face {
font-family: 'ActivitiModeler';
src: url('../fonts/activiti-admin-webfont.eot');
src: url('../fonts/activiti-admin-webfont.eot?#iefix') format('embedded-opentype'),
url('../fonts/activiti-admin-webfont.woff') format('woff'),
url('../fonts/activiti-admin-webfont.ttf') format('truetype'),
url('../fonts/activiti-admin-webfont.svg#activitimodelerregular') format('svg');
font-weight: normal;
font-style: normal;
}
.row-no-gutter .col-xs-9 {
padding-left: 0px;
padding-right: 0px;
z-index: 50;
}
.row-no-gutter .col-xs-3 {
padding-left: 0px;
padding-right: 0px;
z-index: 100;
}
.editor-item-picker {
height: 400px;
max-height: 400px;
min-height: 400px;
overflow: auto;
}
.editor-item-picker-component {
height: 185px;
max-height: 185px;
overflow: hidden;
}
.editor-toolbar {
padding-left: 5px;
}
.editor-toolbar > .btn-group {
margin: 12px 15px 0px 0px;
}
.editor-toolbar > .btn-group.pull-right {
margin: 0;
}
.editor-toolbar .btn.btn-inverse {
font-size: 24px;
color: #FFFFFF;
border-color: rgba(0, 0, 0, 0);
padding: 3px 6px 0px 6px;
box-shadow: none;
text-shadow: none;
text-align: center;
border: none;
margin: 0px 0px 0px 5px;
height: 36px;
min-width: 36px;
}
.editor-toolbar .btn.btn-inverse.pressed {
background-color: #287d92;
color: #174753;
}
.editor-toolbar .btn.btn-inverse.disabled, .editor-toolbar .btn.btn-inverse[disabled], .editor-toolbar .btn.btn-inverse[disabled]:active, .editor-toolbar .btn.btn-inverse[disabled]:hover {
background-color: #668b94;
border-color: #668b94;
}
.editor-toolbar .btn.btn-inverse.separator {
background: transparent;
padding: 4px 5px 0px 5px;
width: 1px;
min-width: 1px;
}
.editor-toolbar .toolbar-separator {
background: #a4acb9;
width: 1px;
height: 30px;
}
.stencils {
border-right: 1pt solid #c7cacd;
overflow: auto;
z-index: 5000;
}
.stencils ul {
padding-left: 0;
}
.stencils > div {
margin-top: 10px;
}
.stencil-group {
list-style: none;
list-style-position: outside;
margin: 0px 15px 0px 0px;
}
.stencil-group > li {
list-style: none;
list-style-position: outside;
margin: 0px 0px 5px 15px;
background-color: #ffffff;
font-family: Arial, Regular;
font-size: 17px;
color: #323437;
}
.stencil-group > li > span {
margin-left: 5px;
padding-top:5px;
padding-bottom: 5px;
display: block;
cursor: pointer;
}
.stencil-group > li > span > i {
font-size: 12px;
line-height: 17px;
}
.stencil-group > li > ul {
list-style: none;
list-style-position: inside;
background-color: transparent;
margin: 0px;
overflow: hidden;
padding-left: 20px;
}
.stencil-group.collapsed > li {
color: #000000;
}
.stencil-group.collapsed > li > ul {
max-height: 0px;
padding-top: 0;
padding-bottom: 0;
}
.stencil-group-non-root > li {
background-color: #ffffff;
}
.stencil-item {
cursor: pointer;
padding: 5px;
}
.root-stencil-item {
margin: 0 0 0 15px;
font-family: Arial, Regular;
font-size: 17px;
}
.ui-draggable.stencil-item.stencil-item-dragged {
display: block;
text-overflow: ellipsis;
white-space: nowrap;
}
/* Modeling Canvas
-------------------------------- */
div.canvas-wrapper {
overflow: auto;
background-color: #F8F8F8;
}
.canvas_resize_indicator i {
font-size: 15px;
color: #ffffff;
cursor: pointer;
}
.canvas_resize_indicator.N, .canvas_resize_indicator.S, .canvas_resize_indicator.E, .canvas_resize_indicator.W {
background: #5fbcd3;
height: 17px;
width: 17px;
text-align: center;
-webkit-border-radius:3px;
-moz-border-radius:3px;
border-radius:3px;
}
#canvas-grow-N.canvas_resize_indicator, #canvas-shrink-S.canvas_resize_indicator {
margin: 0;
top: auto;
}
#canvas-grow-S.canvas_resize_indicator, #canvas-shrink-N.canvas_resize_indicator {
margin: 0;
bottom: auto;
}
#canvas-grow-E.canvas_resize_indicator, #canvas-shrink-W.canvas_resize_indicator {
margin: 0;
right: auto;
}
#canvas-grow-W.canvas_resize_indicator, #canvas-shrink-E.canvas_resize_indicator {
margin: 0;
left: auto;
}
.x-panel-body.x-panel-body-noheader.x-panel-body-noborder, .ORYX_Editor x-panel {
background-color: #F8F8F8;
}
.canvas-message {
position: absolute;
top: 60px;
right: 10px;
background: transparent;
font-size: 10pt;
}
div.propertySection {
height: 250px;
background-color: #e8edf1;
margin-bottom: 0px;
}
.selected-item-title {
font-size: 25px;
font-weight: bold;
padding: 8px 0 8px 8px;
border-bottom: 1px solid #a4acb9;
cursor: pointer;
}
.selected-item-title a {
display: block;
color: #1a1a1a;
}
.selected-item-title .glyphicon {
line-height: 25px;
font-size: 14px;
}
.selected-item-title a:hover, .selected-item-title a:focus {
color: #1a1a1a;
text-decoration: none;
}
.selected-item-section > div > .pull-right {
line-height: 50px;
margin: 0px 10px;
font-size: 14px;
}
.selected-item-body .property-row {
float: left;
width: 50%;
border: 0;
margin: 0;
padding: 0;
font-size: 13px;
overflow: hidden;
}
.selected-item-body .property-row:hover {
background-color: #d7dfe6;
}
.selected-item-body {
padding: 0;
overflow: auto;
height: 199px;
}
.selected-item-body > div {
overflow: hidden;
margin: 5px 20px;
}
.property-row > span {
display: block;
float: left;
margin: 2px 2%;
padding: 0;
min-height: 25px;
}
.property-row span.value {
cursor: pointer;
width: 46%;
padding: 0;
margin: 0;
}
.property-row span.value:hover {
cursor: pointer;
}
.property-row span.title {
font-size: 13px;
font-weight: bold;
width: 46%;
}
.property-row span.title-removed {
font-size: 13px;
font-weight: normal;
width: 46%;
}
.propertySection.collapsed {
max-height: 50px;
height: 50px;
overflow: hidden;
}
.propertySection.collapsed .selected-item-title {
border: none;
}
.property-row input[type="text"] {
height: 25px;
margin: 2px 0;
padding: 0px 5px;
width: 100%;
outline: none;
border:none !important;
box-shadow:none !important;
}
.default-grid {
border: 1px solid rgb(212,212,212);
width: 100%;
height: 300px;
margin-bottom: 10px;
}
.kis-listener-grid {
border: 1px solid rgb(212,212,212);
width: 100%;
height: 200px;
margin-bottom: 10px;
}
.kis-field-grid {
border: 1px solid rgb(212,212,212);
width: 100%;
height: 150px;
margin-bottom: 10px;
}
.saving-text {
display: table;
margin: 0 auto;
padding: 20px 0 0px 0;
}
.form-property-checkbox {
margin:0;
}
/* Oryx overrides
-------------------------------- */
ul.x-menu-list {
list-style: none;
list-style-position: inside;
width: 200px;
background-color: #FFFFFF;
border: 1px solid #E1E2E5;
-webkit-border-radius:3px;
-moz-border-radius:3px;
border-radius:3px;
padding: 3px;
}
img.x-menu-item-icon {
width: auto;
height: auto;
margin-right: 5px;
}
li.x-menu-list-item {
margin: 3px 0px;
}
li.x-menu-list-item.x-menu-item-active {
background-color: #EFEFEF;
}
li.x-menu-list-item a {
color: #000000;
}
li.x-menu-list-item.x-menu-item-active a {
text-decoration: none;
}
.sequence-flow-order-element {
margin: 12px 0 12px 0;
}
/* Editor icon font */
.editor-icon {
position: relative;
top: 1px;
display: inline-block;
font-family: 'ActivitiModeler';
font-style: normal;
font-weight: 400;
line-height: 1;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
.editor-icon-save:before {
content: 'a';
}
.editor-icon-edit:before {
content: 'b';
}
.editor-icon-cut:before {
content: 'c';
}
.editor-icon-copy:before {
content: 'd';
}
.editor-icon-paste:before {
content: 'e';
}
.editor-icon-delete:before {
content: 'f';
}
.editor-icon-redo:before {
content: 'h';
}
.editor-icon-undo:before {
content: 'g';
}
.editor-icon-same-size:before {
content: 'i';
}
.editor-icon-zoom-in:before {
content: 'k';
}
.editor-icon-zoom-out:before {
content: 'l';
}
.editor-icon-zoom-actual:before {
content: 'm';
}
.editor-icon-zoom-fit:before {
content: 'j';
}
.editor-icon-bendpoint-add:before {
content: 'n';
}
.editor-icon-bendpoint-remove:before {
content: 'o';
}
.editor-icon-align-horizontal:before {
content: 'p';
}
.editor-icon-align-vertical:before {
content: 'q';
}
.editor-icon-close:before {
content: "X";
}

View File

@ -0,0 +1,32 @@
/*
* 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.CONFIG = {
'showRemovedProperties' : false
};
KISBPM.HEADER_CONFIG = {
'showAppTitle' : true,
'showHeaderMenu' : true,
'showMainNavigation' : true,
'showPageHeader' : true
};

View File

@ -0,0 +1,65 @@
/*
* 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';
angular.module('activitiModeler')
.controller('EditorUnsavedChangesPopupCrtl', ['$rootScope', '$scope', '$http', '$location', '$window', function ($rootScope, $scope, $http, $location, $window) {
$scope.ok = function () {
if ($scope.handleResponseFunction) {
$scope.handleResponseFunction(true);
// Also clear any 'onbeforeunload', added by oryx
$window.onbeforeunload = undefined;
}
$scope.$hide();
};
$scope.cancel = function () {
if ($scope.handleResponseFunction) {
$scope.handleResponseFunction(false);
}
$scope.$hide();
};
}]);
activitiModule
.directive('autoFocus', ['$timeout', '$parse', function($timeout, $parse) {
return {
restrict: 'AC',
compile: function($element, attr) {
return function(_scope, _element, _attrs) {
var firstChild = (_attrs.focusFirstChild !== undefined);
$timeout(function () {
if (firstChild) {
// look for first input-element in child-tree and focus that
var inputs = _element.find('input');
if (inputs && inputs.length > 0) {
inputs[0].focus();
}
} else {
// Focus element where the directive is put on
_element[0].focus();
}
}, 100);
}
}
};
}]);

View File

@ -0,0 +1,135 @@
/*
* 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
*/
/**
* Utility methods are grouped together here.
*/
var EDITOR = EDITOR || {};
EDITOR.UTIL = {
getParameterByName: function (name) {
name = name.replace(/[\[]/, "\\[").replace(/[\]]/, "\\]");
var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
results = regex.exec(location.search);
return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
},
/**
* Starts at the provided start element, and walks all preceding elements in the graph.
* Each element is tested to have a certain property and, if it has, adds this property value
* to the return result list.
*/
collectPropertiesFromPrecedingElements: function (startElement, propertyType) {
var visitedElements = [];
var collectedProperties = [];
EDITOR.UTIL._visitElementAndCollectProperty(startElement, propertyType, visitedElements, collectedProperties);
return collectedProperties;
},
/**
* Starts at the provided start element, and walks all preceding elements in the graph.
* Each element is tested to be a specific stencil id and, if it has, adds the element
* to the return result list.
*/
collectElementsFromPrecedingElements: function (startElement, stencilId) {
var visitedElements = [];
var collectedElements = [];
var incomingShapesIterator = startElement.getIncomingShapes();
if (incomingShapesIterator) {
for (var i = 0; i < incomingShapesIterator.length; i++) {
var incomingShape = incomingShapesIterator[i];
if (visitedElements.indexOf(incomingShape.id) < 0) {
EDITOR.UTIL._visitElementAndCollectElement(incomingShape, stencilId, visitedElements, collectedElements);
}
}
}
return collectedElements;
},
_visitElementAndCollectProperty: function (element, propertyType, visitedElementsArray, collectedProperties) {
visitedElementsArray.push(element.id);
var property = element.properties[propertyType]
if (property) {
collectedProperties.push(property);
}
var incomingShapesIterator = element.getIncomingShapes();
if (incomingShapesIterator) {
for (var i = 0; i < incomingShapesIterator.length; i++) {
var incomingShape = incomingShapesIterator[i];
if (visitedElementsArray.indexOf(incomingShape.id) < 0) {
EDITOR.UTIL._visitElementAndCollectProperty(incomingShape, propertyType, visitedElementsArray, collectedProperties);
}
}
}
},
_visitElementAndCollectElement: function (element, stencilId, visitedElementsArray, collectedElements) {
visitedElementsArray.push(element.id);
var elementStencilId = element.getStencil().id();
if (elementStencilId && elementStencilId.indexOf(stencilId) >= 0) {
collectedElements.push(element);
}
var incomingShapesIterator = element.getIncomingShapes();
if (incomingShapesIterator) {
for (var i = 0; i < incomingShapesIterator.length; i++) {
var incomingShape = incomingShapesIterator[i];
if (visitedElementsArray.indexOf(incomingShape.id) < 0) {
EDITOR.UTIL._visitElementAndCollectElement(incomingShape, stencilId, visitedElementsArray, collectedElements);
}
}
}
},
/**
* Goes up the chain of parents of the provided element.
* When the property is encountered, its value is immediately returned.
* If the chain of parents is completely walked through, undefined is returned.
*/
getPropertyFromParent: function (element, propertyType) {
if (element.parent) {
return EDITOR.UTIL._getPropertyFromParent(element.parent, propertyType);
} else {
return undefined;
}
},
_getPropertyFromParent: function (parentElement, propertyType) {
var property = parentElement.properties[propertyType];
if (property) {
return property;
}
if (parentElement.parent) {
return EDITOR.UTIL._getPropertyFromParent(parentElement.parent, propertyType);
} else {
return undefined;
}
}
};

View File

@ -0,0 +1,136 @@
<div ng-controller="StencilController">
<div class="subheader editor-toolbar" id="editor-header">
<div class="btn-group">
<div class="btn-toolbar pull-left" ng-controller="ToolbarController" ng-cloak>
<button id="{{item.id}}"
title="{{item.title | translate}}"
ng-repeat="item in items"
ng-switch on="item.type"
class="btn btn-inverse" ng-class="{'separator': item.type == 'separator'}"
ng-disabled="item.type == 'separator' || item.enabled == false"
ng-click="toolbarButtonClicked($index)">
<i ng-switch-when="button" ng-class="item.cssClass" class="toolbar-button" data-toggle="tooltip" title="{{item.title | translate}}"></i>
<div ng-switch-when="separator" ng-class="item.cssClass"></div>
</button>
</div>
</div>
<div class="btn-group pull-right" ng-show="!secondaryItems.length">
<div class="btn-toolbar pull-right" ng-controller="ToolbarController">
<button title="{{item.title | translate}}" ng-repeat="item in secondaryItems" ng-switch on="item.type" class="btn btn-inverse" ng-class="{'separator': item.type == 'separator'}"
ng-disabled="item.type == 'separator'" ng-click="toolbarSecondaryButtonClicked($index)" id="{{item.id}}">
<i ng-switch-when="button" ng-class="item.cssClass" class="toolbar-button" data-toggle="tooltip" title="{{item.title | translate}}"></i>
<div ng-switch-when="separator" ng-class="item.cssClass"></div>
</button>
</div>
</div>
</div>
<div class="full">
<div class="row row-no-gutter">
<div id="paletteHelpWrapper" class="col-xs-3">
<div class="stencils" id="paletteSection">
<div ng-if="stencilItemGroups.length > 1">
<div ng-repeat="group in stencilItemGroups">
<ul ng-if="group.visible && group.items" class="stencil-group" ng-class="{collapsed: !group.expanded, 'first': $first}">
<li ng-include="'editor-app/partials/stencil-item-template.html?version=4'"></li>
</ul>
<div ng-if="!group.items" ng-include="'editor-app/partials/root-stencil-item-template.html?version=4'"></div>
</div>
</div>
<div ng-if="stencilItemGroups.length == 1">
<ul class="stencil-group">
<li ng-repeat="item in stencilItemGroups[0].paletteItems" class="stencil-item"
id="{{item.id}}"
title="{{item.description}}"
ng-model="draggedElement"
data-drag="true"
jqyoui-draggable="{onStart:'startDragCallback', onDrag:'dragCallback'}"
data-jqyoui-options="{revert: 'invalid', helper: 'clone', opacity : 0.5}">
<img ng-src="editor-app/stencilsets/bpmn2.0/icons/{{item.icon}}" width="16px;" height="16px;"/>
{{item.name}}
</li>
</ul>
</div>
</div>
</div>
<div id="canvasHelpWrapper" class="col-xs-9">
<div class="canvas-wrapper" id="canvasSection"
ng-model="droppedElement"
ng-model="droppedElement"
data-drop="true"
data-jqyoui-options
jqyoui-droppable="{onDrop:'dropCallback',onOver: 'overCallback', onOut: 'outCallback'}">
<div class="canvas-message" id="model-modified-date"></div>
<div class="Oryx_button"
id="delete-button"
title="{{'BUTTON.ACTION.DELETE.TOOLTIP' | translate}}"
ng-click="deleteShape()"
style="display:none">
<img src="editor-app/images/delete.png"/>
</div>
<div class="Oryx_button"
id="morph-button"
title="{{'BUTTON.ACTION.MORPH.TOOLTIP' | translate}}"
ng-click="morphShape()"
style="display:none">
<img src="editor-app/images/wrench.png"/>
</div>
<div class="Oryx_button"
ng-repeat="item in quickMenuItems"
id="{{item.id}}"
title="{{item.description}}"
ng-click="quickAddItem(item.id)"
ng-model="draggedElement"
data-drag="true"
jqyoui-draggable="{onStart:'startDragCallbackQuickMenu', onDrag:'dragCallbackQuickMenu'}"
data-jqyoui-options="{revert: 'invalid', helper: 'clone', opacity : 0.5}"
style="display:none">
<img ng-src="editor-app/stencilsets/bpmn2.0/icons/{{item.icon}}"/>
</div>
</div>
</div>
<div id="propertiesHelpWrapper" class="col-xs-9">
<div class="propertySection" id="propertySection"
ng-class="{collapsed: propertyWindowState.collapsed}">
<div class="selected-item-section">
<div class="clearfix">
<div class="pull-right" ng-if="selectedItem.auditData.createDate">
<strong>{{'ELEMENT.DATE_CREATED' | translate}}: </strong> {{selectedItem.auditData.createDate}}
</div>
<div class="pull-right" ng-if="selectedItem.auditData.author">
<strong>{{'ELEMENT.AUTHOR' | translate}}: </strong> {{selectedItem.auditData.author}}
</div>
<div class="selected-item-title">
<a ng-click="propertyWindowState.toggle()">
<i class="glyphicon" ng-class="{'glyphicon-chevron-right': propertyWindowState.collapsed, 'glyphicon-chevron-down': !propertyWindowState.collapsed}"></i>
<span ng-show="selectedItem.title != undefined && selectedItem.title != null && selectedItem.title.length > 0">{{selectedItem.title}}</span>
<span ng-show="!selectedItem || selectedItem.title == undefined || selectedItem.title == null || selectedItem.title.length == 0">{{modelData.name}}</span>
</a>
</div>
</div>
<div class="selected-item-body">
<div>
<div class="property-row" ng-repeat="property in selectedItem.properties"
ng-click="propertyClicked($index)" ng-class="{'clear' : $index%2 == 0}">
<span class="title" ng-if="!property.hidden">{{ property.title }}&nbsp;:</span>
<span class="title-removed" ng-if="property.hidden"><i>{{ property.title }}&nbsp;({{'PROPERTY.REMOVED' | translate}})&nbsp;:</i></span>
<span class="value">
<ng-include
src="getPropertyTemplateUrl($index)" ng-if="!property.hasReadWriteMode"></ng-include>
<ng-include src="getPropertyReadModeTemplateUrl($index)"
ng-if="property.hasReadWriteMode && property.mode == 'read'"></ng-include>
<ng-include src="getPropertyWriteModeTemplateUrl($index)"
ng-if="property.hasReadWriteMode && property.mode == 'write'"></ng-include>
</span>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>

View File

@ -0,0 +1,202 @@
body, html {
font-family: tahoma,arial,helvetica,sans-serif;
font-size: 12px;
}
/*********
* SVG Style
*/
text,
text * {
cursor:default;
-webkit-user-select: none;
}
/*********
* HEADER SECTION
*
*/
#oryx_canvas_htmlContainer {
}
.ORYX_Editor {
background: white;
border: none;
margin:-5px;
margin-top:0px;
width:1200px;
height:600px;
}
.icon-large {
width:18px !important;
}
#oryxcanvas {
width:1200px;
height:600px;
}
/** Resizer for the Canvas **/
.canvas_resize_indicator_area {
margin :auto;
display :block;
height :30px;
left :20%;
position :absolute;
text-align :center;
top :0;
width :60%;
}
.canvas_resize_indicator {
width : 15px;
height : 15px;
position : absolute;
display : block;
margin : auto;
opacity : 0.6;
}
.canvas_resize_indicator:hover {
opacity : 1.0;
}
/** End Resizer **/
.Oryx_down {
}
.Oryx_button img {
width:16px;
height:16px;
top:0px;
left:0px;
line-height: 16px;
}
.Oryx_Right .Oryx_button,
.Oryx_Left .Oryx_button,
.Oryx_Top .Oryx_button,
.Oryx_Bottom .Oryx_button {
opacity: 0.5;
}
.Oryx_button.x-opacity-0 {
opacity: 0;
display:none;
}
.Oryx_button.x-opacity-10 {
opacity: 0.1;
}
.Oryx_button.x-opacity-20 {
opacity: 0.2;
}
.Oryx_button.x-opacity-50 {
opacity: 0.5;
}
.Oryx_Right:hover .Oryx_button,
.Oryx_Left:hover .Oryx_button,
.Oryx_Top:hover .Oryx_button,
.Oryx_Bottom:hover .Oryx_button {
opacity: 0.7;
display:block;
}
.Oryx_button img {
top:0px;
}
.Oryx_Left img {
top:0px;
}
.Oryx_button {
width:24px;
height:24px;
padding:2px;
position:absolute;
background-color: #ffffff;
background-color: rgba(255,255,255,0.7);
cursor: pointer;
}
.Oryx_button_with_caption {
width:inherit;
height:16px;
padding:4px;
position:absolute;
}
/*** Resizer ***/
.resizer_southeast,
.resizer_northwest {
width:12px;
height:12px;
position:relative;
background-color: transparent;
background-repeat:no-repeat;
}
/*** Selection Frame ***/
.Oryx_SelectionFrame{
position:absolute;
border:1px dotted gray;
background:none;
}
.LoadingIndicator {
background-image: url('../../images/loading.gif');
}
.Oryx_hover, .Oryx_button:hover {
background-color: #999999;
background-color: rgba(193, 229, 238, 0.7);
opacity: 1 !important;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
.ValidateButton {
width:24px;
height:24px;
padding:2px;
position:absolute;
cursor: pointer;
}
.ValidateButton:hover {
background-color: #999999;
background-color: rgba(193, 229, 238, 0.7);
opacity: 1 !important;
-webkit-border-radius: 3px;
-moz-border-radius: 3px;
border-radius: 3px;
}
.resizer_southeast {
background-image:url(../../images/se-handle-dark.gif);
cursor: se-resize;
background-position: 4px 4px;
}
.resizer_northwest {
background-image:url(../../images/nw-handle-dark.gif);
cursor: nw-resize;
background-position: -2px -2px;
}

View File

@ -0,0 +1,383 @@
/**
* @author nicolas.peters
*
* Contains all strings for German language.
* Version 1 - 08/29/08
*/
if(!ORYX) var ORYX = {};
if(!ORYX.I18N) ORYX.I18N = {};
ORYX.I18N.Language = "de_DE"; //Pattern <ISO language code>_<ISO country code> in lower case!
if(!ORYX.I18N.Oryx) ORYX.I18N.Oryx = {};
ORYX.I18N.Oryx.pleaseWait = "Editor wird geladen. Bitte warten...";
ORYX.I18N.Oryx.notLoggedOn = "Nicht angemeldet";
ORYX.I18N.Oryx.noBackendDefined = "Achtung! \n Es wurde kein Repository definiert.\n Ihr Model kann nicht geladen werden. Bitte nutzen sie eine Editor Konfiguration mit einem Speicher Plugin.";
if(!ORYX.I18N.AddDocker) ORYX.I18N.AddDocker = {};
ORYX.I18N.AddDocker.group = "Docker";
ORYX.I18N.AddDocker.add = "Docker Hinzufügen";
ORYX.I18N.AddDocker.addDesc = "Fügen Sie einer Kante einen Docker hinzu, indem Sie auf die Kante klicken";
ORYX.I18N.AddDocker.del = "Docker Löschen";
ORYX.I18N.AddDocker.delDesc = "Löscht einen Docker durch Klicken auf den zu löschenden Docker";
if(!ORYX.I18N.Arrangement) ORYX.I18N.Arrangement = {};
ORYX.I18N.Arrangement.groupZ = "Z-Order";
ORYX.I18N.Arrangement.btf = "In den Vordergrund";
ORYX.I18N.Arrangement.btfDesc = "In den Vordergrund";
ORYX.I18N.Arrangement.btb = "In den Hintergrund";
ORYX.I18N.Arrangement.btbDesc = "In den Hintergrund";
ORYX.I18N.Arrangement.bf = "Eine Ebene nach Vorne";
ORYX.I18N.Arrangement.bfDesc = "Eine Ebene nach Vorne";
ORYX.I18N.Arrangement.bb = "Eine Ebene nach Hinten";
ORYX.I18N.Arrangement.bbDesc = "Eine Ebene nach Hinten";
ORYX.I18N.Arrangement.groupA = "Alignment";
ORYX.I18N.Arrangement.ab = "Unten ausrichten";
ORYX.I18N.Arrangement.abDesc = "Unten ausrichten";
ORYX.I18N.Arrangement.am = "Horizontal ausrichten";
ORYX.I18N.Arrangement.amDesc = "Horizontal ausrichten";
ORYX.I18N.Arrangement.at = "Oben ausrichten";
ORYX.I18N.Arrangement.atDesc = "Oben ausrichten";
ORYX.I18N.Arrangement.al = "Links ausrichten";
ORYX.I18N.Arrangement.alDesc = "Links ausrichten";
ORYX.I18N.Arrangement.ac = "Vertikal ausrichten";
ORYX.I18N.Arrangement.acDesc = "Vertikal ausrichten";
ORYX.I18N.Arrangement.ar = "Rechts ausrichten";
ORYX.I18N.Arrangement.arDesc = "Rechts ausrichten";
ORYX.I18N.Arrangement.as = "Größenangleichung";
ORYX.I18N.Arrangement.asDesc = "Größenangleichung";
if(!ORYX.I18N.Edit) ORYX.I18N.Edit = {};
ORYX.I18N.Edit.group = "Edit";
ORYX.I18N.Edit.cut = "Ausschneiden";
ORYX.I18N.Edit.cutDesc = "Ausschneiden der selektierten Elemente";
ORYX.I18N.Edit.copy = "Kopieren";
ORYX.I18N.Edit.copyDesc = "Kopieren der selektierten Elemente";
ORYX.I18N.Edit.paste = "Einfügen";
ORYX.I18N.Edit.pasteDesc = "Einfügen von kopierten/ausgeschnittenen Elementen";
ORYX.I18N.Edit.del = "Löschen";
ORYX.I18N.Edit.delDesc = "Löschen der selektierten Elemente";
if(!ORYX.I18N.EPCSupport) ORYX.I18N.EPCSupport = {};
ORYX.I18N.EPCSupport.group = "EPC";
ORYX.I18N.EPCSupport.exp = "EPML Export";
ORYX.I18N.EPCSupport.expDesc = "Exportieren nach EPML";
ORYX.I18N.EPCSupport.imp = "EPML Import";
ORYX.I18N.EPCSupport.impDesc = "Importieren einer EPML Datei";
ORYX.I18N.EPCSupport.progressExp = "Exportiere Modell";
ORYX.I18N.EPCSupport.selectFile = "Wählen Sie eine EPML Datei aus, die Sie importieren möchten.";
ORYX.I18N.EPCSupport.file = "Datei";
ORYX.I18N.EPCSupport.impPanel = "EPML Datei importieren";
ORYX.I18N.EPCSupport.impBtn = "Importieren";
ORYX.I18N.EPCSupport.close = "Schließen";
ORYX.I18N.EPCSupport.error = "Fehler";
ORYX.I18N.EPCSupport.progressImp = "Importiere...";
if(!ORYX.I18N.ERDFSupport) ORYX.I18N.ERDFSupport = {};
ORYX.I18N.ERDFSupport.exp = "ERDF Export";
ORYX.I18N.ERDFSupport.expDesc = "Exportieren nach ERDF";
ORYX.I18N.ERDFSupport.imp = "ERDF Import";
ORYX.I18N.ERDFSupport.impDesc = "ERDF Datei importieren";
ORYX.I18N.ERDFSupport.impFailed = "Anfrage für den Import der ERDF Datei ist fehlgeschlagen.";
ORYX.I18N.ERDFSupport.impFailed2 = "Während des Importierens ist ein Fehler aufgetreten. <br/>Fehlermeldung: <br/><br/>";
ORYX.I18N.ERDFSupport.error = "Fehler";
ORYX.I18N.ERDFSupport.noCanvas = "Das XML Dokument enthält keinen Oryx Canvas Knoten.";
ORYX.I18N.ERDFSupport.noSS = "Im XML Dokument ist kein Stencil Set referenziert.";
ORYX.I18N.ERDFSupport.wrongSS = "Das im XML Dokument referenzierte Stencil Set passt nicht zu dem im Editor geladenen Stencil Set.";
ORYX.I18N.ERDFSupport.selectFile = "Wählen sie eine ERDF Datei (.xml) aus oder geben Sie den ERDF Code im Textfeld ein.";
ORYX.I18N.ERDFSupport.file = "Datei";
ORYX.I18N.ERDFSupport.impERDF = "ERDF importieren";
ORYX.I18N.ERDFSupport.impBtn = "Importieren";
ORYX.I18N.ERDFSupport.impProgress = "Importiere...";
ORYX.I18N.ERDFSupport.close = "Schließen";
ORYX.I18N.ERDFSupport.deprTitle = "Wirklich nach eRDF exportieren?";
ORYX.I18N.ERDFSupport.deprText = "Der Export nach eRDF wird nicht empfohlen, da dieses Format in zukünftigen Versionen des Oryx Editors nicht mehr unterstützt wird. Verwenden Sie statt dessen den Export nach JSON, falls möglich. Wollen Sie dennoch das Model nach eRDF exportieren?";
if(!ORYX.I18N.jPDLSupport) ORYX.I18N.jPDLSupport = {};
ORYX.I18N.jPDLSupport.group = "ExecBPMN";
ORYX.I18N.jPDLSupport.exp = "jPDL Export";
ORYX.I18N.jPDLSupport.expDesc = "Exportieren nach jPDL";
ORYX.I18N.jPDLSupport.imp = "jPDL Import";
ORYX.I18N.jPDLSupport.impDesc = "jPDL Datei importieren";
ORYX.I18N.jPDLSupport.impFailedReq = "Anfrage für den Import der jPDL Datei ist fehlgeschlagen.";
ORYX.I18N.jPDLSupport.impFailedJson = "Transformation der jPDL Datei ist fehlgeschlagen.";
ORYX.I18N.jPDLSupport.impFailedJsonAbort = "Import abgebrochen.";
ORYX.I18N.jPDLSupport.loadSseQuestionTitle = "Stencil Set Erweiterung für jBPM muss geladen werden";
ORYX.I18N.jPDLSupport.loadSseQuestionBody = "Um jPDL importieren zu können, muss die Stencil Set Erweiterung für jBPM geladen werden. Möchten Sie fortfahren?";
ORYX.I18N.jPDLSupport.expFailedReq = "Anfrage für den Export des Models ist fehlgeschlagen.";
ORYX.I18N.jPDLSupport.expFailedXml = "Export nach jPDL ist fehlgeschlagen. Exporter meldet: ";
ORYX.I18N.jPDLSupport.error = "Fehler";
ORYX.I18N.jPDLSupport.selectFile = "Wählen sie eine jPDL Datei (.xml) aus oder geben Sie den jPDL Code im Textfeld ein.";
ORYX.I18N.jPDLSupport.file = "Datei";
ORYX.I18N.jPDLSupport.impJPDL = "jPDL importieren";
ORYX.I18N.jPDLSupport.impBtn = "Importieren";
ORYX.I18N.jPDLSupport.impProgress = "Importiere...";
ORYX.I18N.jPDLSupport.close = "Schließen";
if(!ORYX.I18N.Save) ORYX.I18N.Save = {};
ORYX.I18N.Save.group = "File";
ORYX.I18N.Save.save = "Speichern";
ORYX.I18N.Save.saveDesc = "Speichern";
ORYX.I18N.Save.saveAs = "Speichern als...";
ORYX.I18N.Save.saveAsDesc = "Speichern als...";
ORYX.I18N.Save.unsavedData = "Das Diagramm enthält nicht gespeicherte Daten. Sind Sie sicher, daß Sie den Editor schließen möchten?";
ORYX.I18N.Save.newProcess = "Neuer Prozess";
ORYX.I18N.Save.saveAsTitle = "Speichern als...";
ORYX.I18N.Save.saveBtn = "Speichern";
ORYX.I18N.Save.close = "Schließen";
ORYX.I18N.Save.savedAs = "Gespeichert als";
ORYX.I18N.Save.saved = "Gespeichert";
ORYX.I18N.Save.failed = "Das Speichern ist fehlgeschlagen.";
ORYX.I18N.Save.noRights = "Sie haben nicht die erforderlichen Rechte, um Änderungen zu speichern.";
ORYX.I18N.Save.saving = "Speichern";
ORYX.I18N.Save.saveAsHint = "Das Diagramm wurde unter folgendem Link gespeichert:";
if(!ORYX.I18N.File) ORYX.I18N.File = {};
ORYX.I18N.File.group = "File";
ORYX.I18N.File.print = "Drucken";
ORYX.I18N.File.printDesc = "Drucken";
ORYX.I18N.File.pdf = "PDF Export";
ORYX.I18N.File.pdfDesc = "Exportieren nach PDF";
ORYX.I18N.File.info = "Über";
ORYX.I18N.File.infoDesc = "Über";
ORYX.I18N.File.genPDF = "PDF wird generiert";
ORYX.I18N.File.genPDFFailed = "Die Generierung der PDF Datei ist fehlgeschlagen.";
ORYX.I18N.File.printTitle = "Drucken";
ORYX.I18N.File.printMsg = "Leider arbeitet die Druckfunktion zur Zeit nicht immer korrekt. Bitte nutzen Sie den PDF Export, und drucken Sie das PDF Dokument aus. Möchten Sie dennoch mit dem Drucken fortfahren?";
if(!ORYX.I18N.Grouping) ORYX.I18N.Grouping = {};
ORYX.I18N.Grouping.grouping = "Grouping";
ORYX.I18N.Grouping.group = "Gruppieren";
ORYX.I18N.Grouping.groupDesc = "Gruppierung der selektierten Elemente";
ORYX.I18N.Grouping.ungroup = "Gruppierung aufheben";
ORYX.I18N.Grouping.ungroupDesc = "Aufheben aller Gruppierungen der selektierten Elemente";
if(!ORYX.I18N.Loading) ORYX.I18N.Loading = {};
ORYX.I18N.Loading.waiting ="Bitte warten...";
if(!ORYX.I18N.PropertyWindow) ORYX.I18N.PropertyWindow = {};
ORYX.I18N.PropertyWindow.name = "Name";
ORYX.I18N.PropertyWindow.value = "Wert";
ORYX.I18N.PropertyWindow.selected = "ausgewählt";
ORYX.I18N.PropertyWindow.clickIcon = "Symbol anklicken";
ORYX.I18N.PropertyWindow.add = "Hinzufügen";
ORYX.I18N.PropertyWindow.rem = "Löschen";
ORYX.I18N.PropertyWindow.complex = "Editor für komplexe Eigenschaft";
ORYX.I18N.PropertyWindow.text = "Editor für einen Text";
ORYX.I18N.PropertyWindow.ok = "Ok";
ORYX.I18N.PropertyWindow.cancel = "Abbrechen";
ORYX.I18N.PropertyWindow.dateFormat = "d/m/y";
if(!ORYX.I18N.ShapeMenuPlugin) ORYX.I18N.ShapeMenuPlugin = {};
ORYX.I18N.ShapeMenuPlugin.drag = "Ziehen";
ORYX.I18N.ShapeMenuPlugin.clickDrag = "Klicken oder ziehen";
ORYX.I18N.ShapeMenuPlugin.morphMsg = "Shape morphen";
if(!ORYX.I18N.SyntaxChecker) ORYX.I18N.SyntaxChecker = {};
ORYX.I18N.SyntaxChecker.group = "Verification";
ORYX.I18N.SyntaxChecker.name = "Syntax-Checker";
ORYX.I18N.SyntaxChecker.desc = "Überprüfung der Syntax";
ORYX.I18N.SyntaxChecker.noErrors = "Es wurden keine Syntaxfehler gefunden.";
ORYX.I18N.SyntaxChecker.invalid = "Ungültige Antwort vom Server.";
ORYX.I18N.SyntaxChecker.checkingMessage = "Überprüfung wird durchgeführt ...";
if(!ORYX.I18N.Undo) ORYX.I18N.Undo = {};
ORYX.I18N.Undo.group = "Undo";
ORYX.I18N.Undo.undo = "Rückgängig";
ORYX.I18N.Undo.undoDesc = "Rückgängig";
ORYX.I18N.Undo.redo = "Wiederherstellen";
ORYX.I18N.Undo.redoDesc = "Wiederherstellen";
if(!ORYX.I18N.View) ORYX.I18N.View = {};
ORYX.I18N.View.group = "Zoom";
ORYX.I18N.View.zoomIn = "Vergrößern";
ORYX.I18N.View.zoomInDesc = "Vergrößern";
ORYX.I18N.View.zoomOut = "Verkleinern";
ORYX.I18N.View.zoomOutDesc = "Verkleinern";
ORYX.I18N.View.zoomStandard = "Originalgröße";
ORYX.I18N.View.zoomStandardDesc = "Originalgröße";
ORYX.I18N.View.zoomFitToModel = "Modelgröße";
ORYX.I18N.View.zoomFitToModelDesc = "Modelgröße";
/** New Language Properties: 08.12.2008 **/
ORYX.I18N.PropertyWindow.title = "Eigenschaften";
if(!ORYX.I18N.ShapeRepository) ORYX.I18N.ShapeRepository = {};
ORYX.I18N.ShapeRepository.title = "Shape Verzeichnis";
ORYX.I18N.Save.dialogDesciption = "Bitte geben Sie einen Namen, eine Beschreibung und einen Kommentar ein.";
ORYX.I18N.Save.dialogLabelTitle = "Titel";
ORYX.I18N.Save.dialogLabelDesc = "Beschreibung";
ORYX.I18N.Save.dialogLabelType = "Typ";
ORYX.I18N.Save.dialogLabelComment = "Revisionskommentar";
if(!ORYX.I18N.Perspective) ORYX.I18N.Perspective = {};
ORYX.I18N.Perspective.no = "Keine Perspektive"
ORYX.I18N.Perspective.noTip = "Zurücksetzen der aktuellen Perspektive"
/** New Language Properties: 21.04.2009 */
ORYX.I18N.JSONSupport = {
imp: {
name: "JSON importieren",
desc: "Importiert ein neues Modell aus JSON",
group: "Export",
selectFile: "Wählen Sie eine JSON-Datei (*.json) aus, die Sie importieren möchten, oder fügen Sie JSON in das Textfeld ein.",
file: "Datei",
btnImp: "Importieren",
btnClose: "Schließen",
progress: "Importieren ...",
syntaxError: "Syntaxfehler"
},
exp: {
name: "Nach JSON exportieren",
desc: "Exportiert das aktuelle Modell nach JSON",
group: "Export"
}
};
/** New Language Properties: 09.05.2009 */
if(!ORYX.I18N.JSONImport) ORYX.I18N.JSONImport = {};
ORYX.I18N.JSONImport.title = "JSON Import";
ORYX.I18N.JSONImport.wrongSS = "Das Stencil Set der importierten Datei ({0}) entspricht nicht dem geladenen Stencil Set ({1})."
/** New Language Properties: 14.05.2009 */
if(!ORYX.I18N.RDFExport) ORYX.I18N.RDFExport = {};
ORYX.I18N.RDFExport.group = "Export";
ORYX.I18N.RDFExport.rdfExport = "Nach RDF exportieren";
ORYX.I18N.RDFExport.rdfExportDescription = "Exportiert das aktuelle Model in die XML-Serialisierung des Resource Description Frameworks (RDF)";
/** New Language Properties: 15.05.2009*/
if(!ORYX.I18N.SyntaxChecker.BPMN) ORYX.I18N.SyntaxChecker.BPMN={};
ORYX.I18N.SyntaxChecker.BPMN_NO_SOURCE = "Eine Kante muss einen Ursprung haben.";
ORYX.I18N.SyntaxChecker.BPMN_NO_TARGET = "Eine Kante muss ein Ziel haben.";
ORYX.I18N.SyntaxChecker.BPMN_DIFFERENT_PROCESS = "Ursprungs- und Zielknoten müssen im gleichen Prozess sein.";
ORYX.I18N.SyntaxChecker.BPMN_SAME_PROCESS = "Ursprungs- und Zielknoten müssen in verschiedenen Pools enthalten sein.";
ORYX.I18N.SyntaxChecker.BPMN_FLOWOBJECT_NOT_CONTAINED_IN_PROCESS = "Ein Kontrollflussobjekt muss sich in einem Prozess befinden.";
ORYX.I18N.SyntaxChecker.BPMN_ENDEVENT_WITHOUT_INCOMING_CONTROL_FLOW = "Ein End-Ereignis muss einen eingehenden Sequenzfluss haben.";
ORYX.I18N.SyntaxChecker.BPMN_STARTEVENT_WITHOUT_OUTGOING_CONTROL_FLOW = "Ein Start-Ereignis muss einen ausgehenden Sequenzfluss haben.";
ORYX.I18N.SyntaxChecker.BPMN_STARTEVENT_WITH_INCOMING_CONTROL_FLOW = "Start-Ereignisse dürfen keinen eingehenden Sequenzfluss haben.";
ORYX.I18N.SyntaxChecker.BPMN_ATTACHEDINTERMEDIATEEVENT_WITH_INCOMING_CONTROL_FLOW = "Angeheftete Zwischen-Ereignisse dürfen keinen eingehenden Sequenzfluss haben.";
ORYX.I18N.SyntaxChecker.BPMN_ATTACHEDINTERMEDIATEEVENT_WITHOUT_OUTGOING_CONTROL_FLOW = "Angeheftete Zwischen-Ereignisse müssen genau einen ausgehenden Sequenzfluss haben.";
ORYX.I18N.SyntaxChecker.BPMN_ENDEVENT_WITH_OUTGOING_CONTROL_FLOW = "End-Ereignisse dürfen keinen ausgehenden Sequenzfluss haben.";
ORYX.I18N.SyntaxChecker.BPMN_EVENTBASEDGATEWAY_BADCONTINUATION = "Auf Ereignis-basierte Gateways dürfen weder Gateways noch Subprozesse folgen.";
ORYX.I18N.SyntaxChecker.BPMN_NODE_NOT_ALLOWED = "Knotentyp ist nicht erlaubt.";
if(!ORYX.I18N.SyntaxChecker.IBPMN) ORYX.I18N.SyntaxChecker.IBPMN={};
ORYX.I18N.SyntaxChecker.IBPMN_NO_ROLE_SET = "Für Interaktionen muss ein Sender und ein Empfänger definiert sein.";
ORYX.I18N.SyntaxChecker.IBPMN_NO_INCOMING_SEQFLOW = "Dieser Knoten muss eingehenden Sequenzfluss besitzen.";
ORYX.I18N.SyntaxChecker.IBPMN_NO_OUTGOING_SEQFLOW = "Dieser Knoten muss ausgehenden Sequenzfluss besitzen.";
if(!ORYX.I18N.SyntaxChecker.InteractionNet) ORYX.I18N.SyntaxChecker.InteractionNet={};
ORYX.I18N.SyntaxChecker.InteractionNet_SENDER_NOT_SET = "Sender ist nicht definiert";
ORYX.I18N.SyntaxChecker.InteractionNet_RECEIVER_NOT_SET = "Empfänger ist nicht definiert";
ORYX.I18N.SyntaxChecker.InteractionNet_MESSAGETYPE_NOT_SET = "Nachrichtentyp ist nicht definiert.";
ORYX.I18N.SyntaxChecker.InteractionNet_ROLE_NOT_SET = "Rolle ist nicht definiert.";
if(!ORYX.I18N.SyntaxChecker.EPC) ORYX.I18N.SyntaxChecker.EPC={};
ORYX.I18N.SyntaxChecker.EPC_NO_SOURCE = "Eine Kante muss einen Ursprung haben.";
ORYX.I18N.SyntaxChecker.EPC_NO_TARGET = "Eine Kante muss ein Ziel haben.";
ORYX.I18N.SyntaxChecker.EPC_NOT_CONNECTED = "Dieser Knoten muss eingehende oder ausgehende Kanten besitzen.";
ORYX.I18N.SyntaxChecker.EPC_NOT_CONNECTED_2 = "Dieser Knoten muss sowohl eingehende als auch ausgehende Kanten besitzen.";
ORYX.I18N.SyntaxChecker.EPC_TOO_MANY_EDGES = "Knoten ist mit zu vielen Kanten verbunden.";
ORYX.I18N.SyntaxChecker.EPC_NO_CORRECT_CONNECTOR = "Knoten ist kein korrekter Konnektor.";
ORYX.I18N.SyntaxChecker.EPC_MANY_STARTS = "Es darf nur ein Start-Ereignis geben.";
ORYX.I18N.SyntaxChecker.EPC_FUNCTION_AFTER_OR = "Funktionen hinter einem OR-/XOR-Split sind nicht erlaubt.";
ORYX.I18N.SyntaxChecker.EPC_PI_AFTER_OR = "Prozessschnittstellen hinter einem OR-/XOR-Split ist nicht erlaubt.";
ORYX.I18N.SyntaxChecker.EPC_FUNCTION_AFTER_FUNCTION = "Auf eine Funktion darf keine Funktion folgen.";
ORYX.I18N.SyntaxChecker.EPC_EVENT_AFTER_EVENT = "Auf ein Ereignis darf kein Ereignis folgen.";
ORYX.I18N.SyntaxChecker.EPC_PI_AFTER_FUNCTION = "Auf eine Funktion darf keine Prozessschnittstelle folgen.";
ORYX.I18N.SyntaxChecker.EPC_FUNCTION_AFTER_PI = "Auf eine Prozessschnittstelle darf keine Funktion folgen.";
ORYX.I18N.SyntaxChecker.EPC_SOURCE_EQUALS_TARGET = "Eine Kante muss zwei verschiedene Knoten verbinden."
if(!ORYX.I18N.SyntaxChecker.PetriNet) ORYX.I18N.SyntaxChecker.PetriNet={};
ORYX.I18N.SyntaxChecker.PetriNet_NOT_BIPARTITE = "Der Graph ist nicht bepartit.";
ORYX.I18N.SyntaxChecker.PetriNet_NO_LABEL = "Bezeichnung für einen bezeichnete Transition ist nicht gesetzt.";
ORYX.I18N.SyntaxChecker.PetriNet_NO_ID = "Ein Knoten besitzt keine ID.";
ORYX.I18N.SyntaxChecker.PetriNet_SAME_SOURCE_AND_TARGET = "Zwei Flussbeziehungen besitzen den gleichen Ursprung und das gleiche Ziel.";
ORYX.I18N.SyntaxChecker.PetriNet_NODE_NOT_SET = "Ein Knoten ist nicht definiert für einen Flussbeziehung.";
/** New Language Properties: 02.06.2009*/
ORYX.I18N.Edge = "Kante";
ORYX.I18N.Node = "Knoten";
/** New Language Properties: 02.06.2009*/
ORYX.I18N.SyntaxChecker.notice = "Bitte bewegen Sie den Mauszeiger über ein rotes Kreuz, um die Details zu erfahren.";
/** New Language Properties: 15.07.2009*/
if(!ORYX.I18N.Layouting) ORYX.I18N.Layouting ={};
ORYX.I18N.Layouting.doing = "Layouten...";
/** New Language Properties: 18.08.2009*/
ORYX.I18N.SyntaxChecker.MULT_ERRORS = "Mehrere Fehler";
/** New Language Properties: 08.09.2009*/
if(!ORYX.I18N.PropertyWindow) ORYX.I18N.PropertyWindow = {};
ORYX.I18N.PropertyWindow.oftenUsed = "Hauptattribute";
ORYX.I18N.PropertyWindow.moreProps = "Mehr Attribute";
/** New Language Properties 01.10.2009 */
if(!ORYX.I18N.SyntaxChecker.BPMN2) ORYX.I18N.SyntaxChecker.BPMN2 = {};
ORYX.I18N.SyntaxChecker.BPMN2_DATA_INPUT_WITH_INCOMING_DATA_ASSOCIATION = "Ein Dateninput darf keine ausgehenden Datenassoziationen haben.";
ORYX.I18N.SyntaxChecker.BPMN2_DATA_OUTPUT_WITH_OUTGOING_DATA_ASSOCIATION = "Ein Datenoutput darf keine eingehenden Datenassoziationen haben.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_TARGET_WITH_TOO_MANY_INCOMING_SEQUENCE_FLOWS = "Ziele von Ereignis-basierten Gateways dürfen nicht mehr als einen eingehenden Sequenzfluss haben.";
/** New Language Properties 02.10.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WITH_TOO_LESS_OUTGOING_SEQUENCE_FLOWS = "Ein Ereignis-basiertes Gateway muss 2 oder mehr ausgehende Sequenzflüsse besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_EVENT_TARGET_CONTRADICTION = "Wenn Nachrichten-Zwischenereignisse im Diagramm verwendet werden, dann dürfen Receive Tasks nicht verwendet werden und umgekehrt.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WRONG_TRIGGER = "Nur die folgenden Zwischen-Ereignis-Auslöser sind hier zulässig: Nachricht, Signal, Timer, Bedingungs und Mehrfach.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WRONG_CONDITION_EXPRESSION = "Die ausgehenden Sequenzflüsse eines Ereignis-Gateways dürfen keinen Bedingungsausdruck besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_NOT_INSTANTIATING = "Das Gateway erfüllt nicht die Voraussetzungen um den Prozess zu instantiieren. Bitte verwenden Sie ein Start-Ereignis oder setzen Sie die Instanziierungs-Attribute korrekt.";
/** New Language Properties 05.10.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAYDIRECTION_MIXED_FAILURE = "Das Gateway muss mehrere eingehende und ausgehende Sequenzflüsse besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAYDIRECTION_CONVERGING_FAILURE = "Das Gateway muss mehrere eingehende aber darf keine mehrfache ausgehende Sequenzflüsse besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAYDIRECTION_DIVERGING_FAILURE = "Das Gateway darf keine mehrfachen eingehenden aber muss mehrfache ausgehende Sequenzflüsse besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAY_WITH_NO_OUTGOING_SEQUENCE_FLOW = "Ein Gateway muss mindestens einen ausgehenden Sequenzfluss besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_RECEIVE_TASK_WITH_ATTACHED_EVENT = "Empfangende Tasks, die in Ereignis-Gateway-Konfigurationen benutzt werden, dürfen keine angehefteten Zwischen-Ereignisse besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_SUBPROCESS_BAD_CONNECTION = "Ein Ereignis-Unterprozess darf keinen eingehenden oder ausgehenden Sequenzfluss besitzen.";
/** New Language Properties 13.10.2009 */
ORYX.I18N.SyntaxChecker.BPMN_MESSAGE_FLOW_NOT_CONNECTED = "Mindestens ein Ende des Nachrichtenflusses muss mit einem anderen Objekt verbunden sein.";
/** New Language Properties 05.11.2009 */
if(!ORYX.I18N.RESIZE) ORYX.I18N.RESIZE = {};
ORYX.I18N.RESIZE.tipGrow = "Zeichenfläche vergrößern:";
ORYX.I18N.RESIZE.tipShrink = "Zeichenfläche verkleinern:";
ORYX.I18N.RESIZE.N = "Nach oben";
ORYX.I18N.RESIZE.W = "Nach links";
ORYX.I18N.RESIZE.S ="Nach unten";
ORYX.I18N.RESIZE.E ="Nach rechts";
/** New Language Properties 24.11.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_TOO_MANY_INITIATING_MESSAGES = "Eine Choreographie-Aktivität darf nur eine initiierende Nachricht besitzen.";
ORYX.I18N.SyntaxChecker.BPMN_MESSAGE_FLOW_NOT_ALLOWED = "Ein Nachrichtenfluss ist an dieser Stelle nicht erlaubt.";
/** New Language Properties 27.11.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WITH_TOO_LESS_INCOMING_SEQUENCE_FLOWS = "Ein Ereignis-basiertes Gateway, dass nicht instanziierend ist, muss mindestens einen eingehenden Kontrollfluss besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_TOO_FEW_INITIATING_PARTICIPANTS = "Eine Choreographie-Aktivität musst genau einen initiierenden Teilnehmer (weiß) besitzen.";
ORYX.I18N.SyntaxChecker.BPMN2_TOO_MANY_INITIATING_PARTICIPANTS = "Eine Choreographie-Aktivität darf nicht mehr als einen initiierenden Teilnehmer (weiß) besitzen."
ORYX.I18N.SyntaxChecker.COMMUNICATION_AT_LEAST_TWO_PARTICIPANTS = "Die Kommunikation oder Sub-Konversation muss mit mindestens zwei Teilnehmern verbunden sein.";
ORYX.I18N.SyntaxChecker.MESSAGEFLOW_START_MUST_BE_PARTICIPANT = "Die Nachrichtenflussquelle muss ein Teilnehmer sein.";
ORYX.I18N.SyntaxChecker.MESSAGEFLOW_END_MUST_BE_PARTICIPANT = "Das Nachrichtenflussziel muss ein Teilnehmer sein.";
ORYX.I18N.SyntaxChecker.CONV_LINK_CANNOT_CONNECT_CONV_NODES = "Der Konversationslink muss eine Kommunikation oder Sub-Konversation mit einem Teilnehmer verbinden.";

View File

@ -0,0 +1,423 @@
/**
* @author nicolas.peters
*
* Contains all strings for the default language (en-us).
* Version 1 - 08/29/08
*/
if(!ORYX) var ORYX = {};
if(!ORYX.I18N) ORYX.I18N = {};
ORYX.I18N.Language = "en_us"; //Pattern <ISO language code>_<ISO country code> in lower case!
if(!ORYX.I18N.Oryx) ORYX.I18N.Oryx = {};
ORYX.I18N.Oryx.title = "Oryx";
ORYX.I18N.Oryx.noBackendDefined = "Caution! \nNo Backend defined.\n The requested model cannot be loaded. Try to load a configuration with a save plugin.";
ORYX.I18N.Oryx.pleaseWait = "Please wait while loading...";
ORYX.I18N.Oryx.notLoggedOn = "Not logged on";
ORYX.I18N.Oryx.editorOpenTimeout = "The editor does not seem to be started yet. Please check, whether you have a popup blocker enabled and disable it or allow popups for this site. We will never display any commercials on this site.";
if(!ORYX.I18N.AddDocker) ORYX.I18N.AddDocker = {};
ORYX.I18N.AddDocker.group = "Docker";
ORYX.I18N.AddDocker.add = "Add Docker";
ORYX.I18N.AddDocker.addDesc = "Add a Docker to an edge, by clicking on it";
ORYX.I18N.AddDocker.del = "Delete Docker";
ORYX.I18N.AddDocker.delDesc = "Delete a Docker";
if(!ORYX.I18N.Arrangement) ORYX.I18N.Arrangement = {};
ORYX.I18N.Arrangement.groupZ = "Z-Order";
ORYX.I18N.Arrangement.btf = "Bring To Front";
ORYX.I18N.Arrangement.btfDesc = "Bring to Front";
ORYX.I18N.Arrangement.btb = "Bring To Back";
ORYX.I18N.Arrangement.btbDesc = "Bring To Back";
ORYX.I18N.Arrangement.bf = "Bring Forward";
ORYX.I18N.Arrangement.bfDesc = "Bring Forward";
ORYX.I18N.Arrangement.bb = "Bring Backward";
ORYX.I18N.Arrangement.bbDesc = "Bring Backward";
ORYX.I18N.Arrangement.groupA = "Alignment";
ORYX.I18N.Arrangement.ab = "Alignment Bottom";
ORYX.I18N.Arrangement.abDesc = "Bottom";
ORYX.I18N.Arrangement.am = "Alignment Middle";
ORYX.I18N.Arrangement.amDesc = "Middle";
ORYX.I18N.Arrangement.at = "Alignment Top";
ORYX.I18N.Arrangement.atDesc = "Top";
ORYX.I18N.Arrangement.al = "Alignment Left";
ORYX.I18N.Arrangement.alDesc = "Left";
ORYX.I18N.Arrangement.ac = "Alignment Center";
ORYX.I18N.Arrangement.acDesc = "Center";
ORYX.I18N.Arrangement.ar = "Alignment Right";
ORYX.I18N.Arrangement.arDesc = "Right";
ORYX.I18N.Arrangement.as = "Alignment Same Size";
ORYX.I18N.Arrangement.asDesc = "Same Size";
if(!ORYX.I18N.Edit) ORYX.I18N.Edit = {};
ORYX.I18N.Edit.group = "Edit";
ORYX.I18N.Edit.cut = "Cut";
ORYX.I18N.Edit.cutDesc = "Cuts the selection into an Oryx clipboard";
ORYX.I18N.Edit.copy = "Copy";
ORYX.I18N.Edit.copyDesc = "Copies the selection into an Oryx clipboard";
ORYX.I18N.Edit.paste = "Paste";
ORYX.I18N.Edit.pasteDesc = "Pastes the Oryx clipboard to the canvas";
ORYX.I18N.Edit.del = "Delete";
ORYX.I18N.Edit.delDesc = "Deletes all selected shapes";
if(!ORYX.I18N.EPCSupport) ORYX.I18N.EPCSupport = {};
ORYX.I18N.EPCSupport.group = "EPC";
ORYX.I18N.EPCSupport.exp = "Export EPC";
ORYX.I18N.EPCSupport.expDesc = "Export diagram to EPML";
ORYX.I18N.EPCSupport.imp = "Import EPC";
ORYX.I18N.EPCSupport.impDesc = "Import an EPML file";
ORYX.I18N.EPCSupport.progressExp = "Exporting model";
ORYX.I18N.EPCSupport.selectFile = "Select an EPML (.empl) file to import.";
ORYX.I18N.EPCSupport.file = "File";
ORYX.I18N.EPCSupport.impPanel = "Import EPML File";
ORYX.I18N.EPCSupport.impBtn = "Import";
ORYX.I18N.EPCSupport.close = "Close";
ORYX.I18N.EPCSupport.error = "Error";
ORYX.I18N.EPCSupport.progressImp = "Import...";
if(!ORYX.I18N.ERDFSupport) ORYX.I18N.ERDFSupport = {};
ORYX.I18N.ERDFSupport.exp = "Export to ERDF";
ORYX.I18N.ERDFSupport.expDesc = "Export to ERDF";
ORYX.I18N.ERDFSupport.imp = "Import from ERDF";
ORYX.I18N.ERDFSupport.impDesc = "Import from ERDF";
ORYX.I18N.ERDFSupport.impFailed = "Request for import of ERDF failed.";
ORYX.I18N.ERDFSupport.impFailed2 = "An error while importing occurs! <br/>Please check error message: <br/><br/>";
ORYX.I18N.ERDFSupport.error = "Error";
ORYX.I18N.ERDFSupport.noCanvas = "The xml document has no Oryx canvas node included!";
ORYX.I18N.ERDFSupport.noSS = "The Oryx canvas node has no stencil set definition included!";
ORYX.I18N.ERDFSupport.wrongSS = "The given stencil set does not fit to the current editor!";
ORYX.I18N.ERDFSupport.selectFile = "Select an ERDF (.xml) file or type in the ERDF to import it!";
ORYX.I18N.ERDFSupport.file = "File";
ORYX.I18N.ERDFSupport.impERDF = "Import ERDF";
ORYX.I18N.ERDFSupport.impBtn = "Import";
ORYX.I18N.ERDFSupport.impProgress = "Importing...";
ORYX.I18N.ERDFSupport.close = "Close";
ORYX.I18N.ERDFSupport.deprTitle = "Really export to eRDF?";
ORYX.I18N.ERDFSupport.deprText = "Exporting to eRDF is not recommended anymore because the support will be stopped in future versions of the Oryx editor. If possible, export the model to JSON. Do you want to export anyway?";
if(!ORYX.I18N.jPDLSupport) ORYX.I18N.jPDLSupport = {};
ORYX.I18N.jPDLSupport.group = "ExecBPMN";
ORYX.I18N.jPDLSupport.exp = "Export to jPDL";
ORYX.I18N.jPDLSupport.expDesc = "Export to jPDL";
ORYX.I18N.jPDLSupport.imp = "Import from jPDL";
ORYX.I18N.jPDLSupport.impDesc = "Import jPDL File";
ORYX.I18N.jPDLSupport.impFailedReq = "Request for import of jPDL failed.";
ORYX.I18N.jPDLSupport.impFailedJson = "Transformation of jPDL failed.";
ORYX.I18N.jPDLSupport.impFailedJsonAbort = "Import aborted.";
ORYX.I18N.jPDLSupport.loadSseQuestionTitle = "jBPM stencil set extension needs to be loaded";
ORYX.I18N.jPDLSupport.loadSseQuestionBody = "In order to import jPDL, the stencil set extension has to be loaded. Do you want to proceed?";
ORYX.I18N.jPDLSupport.expFailedReq = "Request for export of model failed.";
ORYX.I18N.jPDLSupport.expFailedXml = "Export to jPDL failed. Exporter reported: ";
ORYX.I18N.jPDLSupport.error = "Error";
ORYX.I18N.jPDLSupport.selectFile = "Select an jPDL (.xml) file or type in the jPDL to import it!";
ORYX.I18N.jPDLSupport.file = "File";
ORYX.I18N.jPDLSupport.impJPDL = "Import jPDL";
ORYX.I18N.jPDLSupport.impBtn = "Import";
ORYX.I18N.jPDLSupport.impProgress = "Importing...";
ORYX.I18N.jPDLSupport.close = "Close";
if(!ORYX.I18N.Save) ORYX.I18N.Save = {};
ORYX.I18N.Save.group = "File";
ORYX.I18N.Save.save = "Save";
ORYX.I18N.Save.saveDesc = "Save";
ORYX.I18N.Save.saveAs = "Save As...";
ORYX.I18N.Save.saveAsDesc = "Save As...";
ORYX.I18N.Save.unsavedData = "There are unsaved data, please save before you leave, otherwise your changes get lost!";
ORYX.I18N.Save.newProcess = "New Process";
ORYX.I18N.Save.saveAsTitle = "Save as...";
ORYX.I18N.Save.saveBtn = "Save";
ORYX.I18N.Save.close = "Close";
ORYX.I18N.Save.savedAs = "Saved As";
ORYX.I18N.Save.saved = "Saved!";
ORYX.I18N.Save.failed = "Saving failed.";
ORYX.I18N.Save.noRights = "You have no rights to save changes.";
ORYX.I18N.Save.saving = "Saving";
ORYX.I18N.Save.saveAsHint = "The process diagram is stored under:";
if(!ORYX.I18N.File) ORYX.I18N.File = {};
ORYX.I18N.File.group = "File";
ORYX.I18N.File.print = "Print";
ORYX.I18N.File.printDesc = "Print current model";
ORYX.I18N.File.pdf = "Export as PDF";
ORYX.I18N.File.pdfDesc = "Export as PDF";
ORYX.I18N.File.info = "Info";
ORYX.I18N.File.infoDesc = "Info";
ORYX.I18N.File.genPDF = "Generating PDF";
ORYX.I18N.File.genPDFFailed = "Generating PDF failed.";
ORYX.I18N.File.printTitle = "Print";
ORYX.I18N.File.printMsg = "We are currently experiencing problems with the printing function. We recommend using the PDF Export to print the diagram. Do you really want to continue printing?";
if(!ORYX.I18N.Grouping) ORYX.I18N.Grouping = {};
ORYX.I18N.Grouping.grouping = "Grouping";
ORYX.I18N.Grouping.group = "Group";
ORYX.I18N.Grouping.groupDesc = "Groups all selected shapes";
ORYX.I18N.Grouping.ungroup = "Ungroup";
ORYX.I18N.Grouping.ungroupDesc = "Deletes the group of all selected Shapes";
if(!ORYX.I18N.Loading) ORYX.I18N.Loading = {};
ORYX.I18N.Loading.waiting ="Please wait...";
if(!ORYX.I18N.PropertyWindow) ORYX.I18N.PropertyWindow = {};
ORYX.I18N.PropertyWindow.name = "Name";
ORYX.I18N.PropertyWindow.value = "Value";
ORYX.I18N.PropertyWindow.selected = "selected";
ORYX.I18N.PropertyWindow.clickIcon = "Click Icon";
ORYX.I18N.PropertyWindow.add = "Add";
ORYX.I18N.PropertyWindow.rem = "Remove";
ORYX.I18N.PropertyWindow.complex = "Editor for a Complex Type";
ORYX.I18N.PropertyWindow.text = "Editor for a Text Type";
ORYX.I18N.PropertyWindow.ok = "Ok";
ORYX.I18N.PropertyWindow.cancel = "Cancel";
ORYX.I18N.PropertyWindow.dateFormat = "m/d/y";
if(!ORYX.I18N.ShapeMenuPlugin) ORYX.I18N.ShapeMenuPlugin = {};
ORYX.I18N.ShapeMenuPlugin.drag = "Drag";
ORYX.I18N.ShapeMenuPlugin.clickDrag = "Click or drag";
ORYX.I18N.ShapeMenuPlugin.morphMsg = "Morph shape";
if(!ORYX.I18N.SyntaxChecker) ORYX.I18N.SyntaxChecker = {};
ORYX.I18N.SyntaxChecker.group = "Verification";
ORYX.I18N.SyntaxChecker.name = "Syntax Checker";
ORYX.I18N.SyntaxChecker.desc = "Check Syntax";
ORYX.I18N.SyntaxChecker.noErrors = "There are no syntax errors.";
ORYX.I18N.SyntaxChecker.invalid = "Invalid answer from server.";
ORYX.I18N.SyntaxChecker.checkingMessage = "Checking ...";
if(!ORYX.I18N.FormHandler) ORYX.I18N.FormHandler = {};
ORYX.I18N.FormHandler.group = "FormHandling";
ORYX.I18N.FormHandler.name = "FormHandler";
ORYX.I18N.FormHandler.desc = "Testing from handling";
if(!ORYX.I18N.Deployer) ORYX.I18N.Deployer = {};
ORYX.I18N.Deployer.group = "Deployment";
ORYX.I18N.Deployer.name = "Deployer";
ORYX.I18N.Deployer.desc = "Deploy to engine";
if(!ORYX.I18N.Tester) ORYX.I18N.Tester = {};
ORYX.I18N.Tester.group = "Testing";
ORYX.I18N.Tester.name = "Test process";
ORYX.I18N.Tester.desc = "Open the test component to test this process definition";
if(!ORYX.I18N.Undo) ORYX.I18N.Undo = {};
ORYX.I18N.Undo.group = "Undo";
ORYX.I18N.Undo.undo = "Undo";
ORYX.I18N.Undo.undoDesc = "Undo the last action";
ORYX.I18N.Undo.redo = "Redo";
ORYX.I18N.Undo.redoDesc = "Redo the last undone action";
if(!ORYX.I18N.View) ORYX.I18N.View = {};
ORYX.I18N.View.group = "Zoom";
ORYX.I18N.View.zoomIn = "Zoom In";
ORYX.I18N.View.zoomInDesc = "Zoom into the model";
ORYX.I18N.View.zoomOut = "Zoom Out";
ORYX.I18N.View.zoomOutDesc = "Zoom out of the model";
ORYX.I18N.View.zoomStandard = "Zoom Standard";
ORYX.I18N.View.zoomStandardDesc = "Zoom to the standard level";
ORYX.I18N.View.zoomFitToModel = "Zoom fit to model";
ORYX.I18N.View.zoomFitToModelDesc = "Zoom to fit the model size";
if(!ORYX.I18N.XFormsSerialization) ORYX.I18N.XFormsSerialization = {};
ORYX.I18N.XFormsSerialization.group = "XForms Serialization";
ORYX.I18N.XFormsSerialization.exportXForms = "XForms Export";
ORYX.I18N.XFormsSerialization.exportXFormsDesc = "Export XForms+XHTML markup";
ORYX.I18N.XFormsSerialization.importXForms = "XForms Import";
ORYX.I18N.XFormsSerialization.importXFormsDesc = "Import XForms+XHTML markup";
ORYX.I18N.XFormsSerialization.noClientXFormsSupport = "No XForms support";
ORYX.I18N.XFormsSerialization.noClientXFormsSupportDesc = "<h2>Your browser does not support XForms. Please install the <a href=\"https://addons.mozilla.org/firefox/addon/824\" target=\"_blank\">Mozilla XForms Add-on</a> for Firefox.</h2>";
ORYX.I18N.XFormsSerialization.ok = "Ok";
ORYX.I18N.XFormsSerialization.selectFile = "Select a XHTML (.xhtml) file or type in the XForms+XHTML markup to import it!";
ORYX.I18N.XFormsSerialization.selectCss = "Please insert url of css file";
ORYX.I18N.XFormsSerialization.file = "File";
ORYX.I18N.XFormsSerialization.impFailed = "Request for import of document failed.";
ORYX.I18N.XFormsSerialization.impTitle = "Import XForms+XHTML document";
ORYX.I18N.XFormsSerialization.expTitle = "Export XForms+XHTML document";
ORYX.I18N.XFormsSerialization.impButton = "Import";
ORYX.I18N.XFormsSerialization.impProgress = "Importing...";
ORYX.I18N.XFormsSerialization.close = "Close";
/** New Language Properties: 08.12.2008 */
ORYX.I18N.PropertyWindow.title = "Properties";
if(!ORYX.I18N.ShapeRepository) ORYX.I18N.ShapeRepository = {};
ORYX.I18N.ShapeRepository.title = "Shape Repository";
ORYX.I18N.Save.dialogDesciption = "Please enter a name, a description and a comment.";
ORYX.I18N.Save.dialogLabelTitle = "Title";
ORYX.I18N.Save.dialogLabelDesc = "Description";
ORYX.I18N.Save.dialogLabelType = "Type";
ORYX.I18N.Save.dialogLabelComment = "Revision comment";
if(!ORYX.I18N.Perspective) ORYX.I18N.Perspective = {};
ORYX.I18N.Perspective.no = "No Perspective"
ORYX.I18N.Perspective.noTip = "Unload the current perspective"
/** New Language Properties: 21.04.2009 */
ORYX.I18N.JSONSupport = {
imp: {
name: "Import from JSON",
desc: "Imports a model from JSON",
group: "Export",
selectFile: "Select an JSON (.json) file or type in JSON to import it!",
file: "File",
btnImp: "Import",
btnClose: "Close",
progress: "Importing ...",
syntaxError: "Syntax error"
},
exp: {
name: "Export to JSON",
desc: "Exports current model to JSON",
group: "Export"
}
};
/** New Language Properties: 09.05.2009 */
if(!ORYX.I18N.JSONImport) ORYX.I18N.JSONImport = {};
ORYX.I18N.JSONImport.title = "JSON Import";
ORYX.I18N.JSONImport.wrongSS = "The stencil set of the imported file ({0}) does not match to the loaded stencil set ({1})."
/** New Language Properties: 14.05.2009 */
if(!ORYX.I18N.RDFExport) ORYX.I18N.RDFExport = {};
ORYX.I18N.RDFExport.group = "Export";
ORYX.I18N.RDFExport.rdfExport = "Export to RDF";
ORYX.I18N.RDFExport.rdfExportDescription = "Exports current model to the XML serialization defined for the Resource Description Framework (RDF)";
/** New Language Properties: 15.05.2009*/
if(!ORYX.I18N.SyntaxChecker.BPMN) ORYX.I18N.SyntaxChecker.BPMN={};
ORYX.I18N.SyntaxChecker.BPMN_NO_SOURCE = "An edge must have a source.";
ORYX.I18N.SyntaxChecker.BPMN_NO_TARGET = "An edge must have a target.";
ORYX.I18N.SyntaxChecker.BPMN_DIFFERENT_PROCESS = "Source and target node must be contained in the same process.";
ORYX.I18N.SyntaxChecker.BPMN_SAME_PROCESS = "Source and target node must be contained in different pools.";
ORYX.I18N.SyntaxChecker.BPMN_FLOWOBJECT_NOT_CONTAINED_IN_PROCESS = "A flow object must be contained in a process.";
ORYX.I18N.SyntaxChecker.BPMN_ENDEVENT_WITHOUT_INCOMING_CONTROL_FLOW = "An end event must have an incoming sequence flow.";
ORYX.I18N.SyntaxChecker.BPMN_STARTEVENT_WITHOUT_OUTGOING_CONTROL_FLOW = "A start event must have an outgoing sequence flow.";
ORYX.I18N.SyntaxChecker.BPMN_STARTEVENT_WITH_INCOMING_CONTROL_FLOW = "Start events must not have incoming sequence flows.";
ORYX.I18N.SyntaxChecker.BPMN_ATTACHEDINTERMEDIATEEVENT_WITH_INCOMING_CONTROL_FLOW = "Attached intermediate events must not have incoming sequence flows.";
ORYX.I18N.SyntaxChecker.BPMN_ATTACHEDINTERMEDIATEEVENT_WITHOUT_OUTGOING_CONTROL_FLOW = "Attached intermediate events must have exactly one outgoing sequence flow.";
ORYX.I18N.SyntaxChecker.BPMN_ENDEVENT_WITH_OUTGOING_CONTROL_FLOW = "End events must not have outgoing sequence flows.";
ORYX.I18N.SyntaxChecker.BPMN_EVENTBASEDGATEWAY_BADCONTINUATION = "Event-based gateways must not be followed by gateways or subprocesses.";
ORYX.I18N.SyntaxChecker.BPMN_NODE_NOT_ALLOWED = "Node type is not allowed.";
if(!ORYX.I18N.SyntaxChecker.IBPMN) ORYX.I18N.SyntaxChecker.IBPMN={};
ORYX.I18N.SyntaxChecker.IBPMN_NO_ROLE_SET = "Interactions must have a sender and a receiver role set";
ORYX.I18N.SyntaxChecker.IBPMN_NO_INCOMING_SEQFLOW = "This node must have incoming sequence flow.";
ORYX.I18N.SyntaxChecker.IBPMN_NO_OUTGOING_SEQFLOW = "This node must have outgoing sequence flow.";
if(!ORYX.I18N.SyntaxChecker.InteractionNet) ORYX.I18N.SyntaxChecker.InteractionNet={};
ORYX.I18N.SyntaxChecker.InteractionNet_SENDER_NOT_SET = "Sender not set";
ORYX.I18N.SyntaxChecker.InteractionNet_RECEIVER_NOT_SET = "Receiver not set";
ORYX.I18N.SyntaxChecker.InteractionNet_MESSAGETYPE_NOT_SET = "Message type not set";
ORYX.I18N.SyntaxChecker.InteractionNet_ROLE_NOT_SET = "Role not set";
if(!ORYX.I18N.SyntaxChecker.EPC) ORYX.I18N.SyntaxChecker.EPC={};
ORYX.I18N.SyntaxChecker.EPC_NO_SOURCE = "Each edge must have a source.";
ORYX.I18N.SyntaxChecker.EPC_NO_TARGET = "Each edge must have a target.";
ORYX.I18N.SyntaxChecker.EPC_NOT_CONNECTED = "Node must be connected with edges.";
ORYX.I18N.SyntaxChecker.EPC_NOT_CONNECTED_2 = "Node must be connected with more edges.";
ORYX.I18N.SyntaxChecker.EPC_TOO_MANY_EDGES = "Node has too many connected edges.";
ORYX.I18N.SyntaxChecker.EPC_NO_CORRECT_CONNECTOR = "Node is no correct connector.";
ORYX.I18N.SyntaxChecker.EPC_MANY_STARTS = "There must be only one start event.";
ORYX.I18N.SyntaxChecker.EPC_FUNCTION_AFTER_OR = "There must be no functions after a splitting OR/XOR.";
ORYX.I18N.SyntaxChecker.EPC_PI_AFTER_OR = "There must be no process interface after a splitting OR/XOR.";
ORYX.I18N.SyntaxChecker.EPC_FUNCTION_AFTER_FUNCTION = "There must be no function after a function.";
ORYX.I18N.SyntaxChecker.EPC_EVENT_AFTER_EVENT = "There must be no event after an event.";
ORYX.I18N.SyntaxChecker.EPC_PI_AFTER_FUNCTION = "There must be no process interface after a function.";
ORYX.I18N.SyntaxChecker.EPC_FUNCTION_AFTER_PI = "There must be no function after a process interface.";
ORYX.I18N.SyntaxChecker.EPC_SOURCE_EQUALS_TARGET = "Edge must connect two distinct nodes."
if(!ORYX.I18N.SyntaxChecker.PetriNet) ORYX.I18N.SyntaxChecker.PetriNet={};
ORYX.I18N.SyntaxChecker.PetriNet_NOT_BIPARTITE = "The graph is not bipartite";
ORYX.I18N.SyntaxChecker.PetriNet_NO_LABEL = "Label not set for a labeled transition";
ORYX.I18N.SyntaxChecker.PetriNet_NO_ID = "There is a node without id";
ORYX.I18N.SyntaxChecker.PetriNet_SAME_SOURCE_AND_TARGET = "Two flow relationships have the same source and target";
ORYX.I18N.SyntaxChecker.PetriNet_NODE_NOT_SET = "A node is not set for a flowrelationship";
/** New Language Properties: 02.06.2009*/
ORYX.I18N.Edge = "Edge";
ORYX.I18N.Node = "Node";
/** New Language Properties: 03.06.2009*/
ORYX.I18N.SyntaxChecker.notice = "Move the mouse over a red cross icon to see the error message.";
/** New Language Properties: 05.06.2009*/
if(!ORYX.I18N.RESIZE) ORYX.I18N.RESIZE = {};
ORYX.I18N.RESIZE.tipGrow = "Increase canvas size:";
ORYX.I18N.RESIZE.tipShrink = "Decrease canvas size:";
ORYX.I18N.RESIZE.N = "Top";
ORYX.I18N.RESIZE.W = "Left";
ORYX.I18N.RESIZE.S ="Down";
ORYX.I18N.RESIZE.E ="Right";
/** New Language Properties: 15.07.2009*/
if(!ORYX.I18N.Layouting) ORYX.I18N.Layouting ={};
ORYX.I18N.Layouting.doing = "Layouting...";
/** New Language Properties: 18.08.2009*/
ORYX.I18N.SyntaxChecker.MULT_ERRORS = "Multiple Errors";
/** New Language Properties: 08.09.2009*/
if(!ORYX.I18N.PropertyWindow) ORYX.I18N.PropertyWindow = {};
ORYX.I18N.PropertyWindow.oftenUsed = "Often used";
ORYX.I18N.PropertyWindow.moreProps = "More Properties";
/** New Language Properties 01.10.2009 */
if(!ORYX.I18N.SyntaxChecker.BPMN2) ORYX.I18N.SyntaxChecker.BPMN2 = {};
ORYX.I18N.SyntaxChecker.BPMN2_DATA_INPUT_WITH_INCOMING_DATA_ASSOCIATION = "A Data Input must not have any incoming Data Associations.";
ORYX.I18N.SyntaxChecker.BPMN2_DATA_OUTPUT_WITH_OUTGOING_DATA_ASSOCIATION = "A Data Output must not have any outgoing Data Associations.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_TARGET_WITH_TOO_MANY_INCOMING_SEQUENCE_FLOWS = "Targets of Event-based Gateways may only have one incoming Sequence Flow.";
/** New Language Properties 02.10.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WITH_TOO_LESS_OUTGOING_SEQUENCE_FLOWS = "An Event-based Gateway must have two or more outgoing Sequence Flows.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_EVENT_TARGET_CONTRADICTION = "If Message Intermediate Events are used in the configuration, then Receive Tasks must not be used and vice versa.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WRONG_TRIGGER = "Only the following Intermediate Event triggers are valid: Message, Signal, Timer, Conditional and Multiple.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WRONG_CONDITION_EXPRESSION = "The outgoing Sequence Flows of the Event Gateway must not have a condition expression.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_NOT_INSTANTIATING = "The Gateway does not meet the conditions to instantiate the process. Please use a start event or an instantiating attribute for the gateway.";
/** New Language Properties 05.10.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAYDIRECTION_MIXED_FAILURE = "The Gateway must have both multiple incoming and outgoing Sequence Flows.";
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAYDIRECTION_CONVERGING_FAILURE = "The Gateway must have multiple incoming but most NOT have multiple outgoing Sequence Flows.";
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAYDIRECTION_DIVERGING_FAILURE = "The Gateway must NOT have multiple incoming but must have multiple outgoing Sequence Flows.";
ORYX.I18N.SyntaxChecker.BPMN2_GATEWAY_WITH_NO_OUTGOING_SEQUENCE_FLOW = "A Gateway must have a minimum of one outgoing Sequence Flow.";
ORYX.I18N.SyntaxChecker.BPMN2_RECEIVE_TASK_WITH_ATTACHED_EVENT = "Receive Tasks used in Event Gateway configurations must not have any attached Intermediate Events.";
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_SUBPROCESS_BAD_CONNECTION = "An Event Subprocess must not have any incoming or outgoing Sequence Flow.";
/** New Language Properties 13.10.2009 */
ORYX.I18N.SyntaxChecker.BPMN_MESSAGE_FLOW_NOT_CONNECTED = "At least one side of the Message Flow has to be connected.";
/** New Language Properties 24.11.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_TOO_MANY_INITIATING_MESSAGES = "A Choreography Activity may only have one initiating message.";
ORYX.I18N.SyntaxChecker.BPMN_MESSAGE_FLOW_NOT_ALLOWED = "A Message Flow is not allowed here.";
/** New Language Properties 27.11.2009 */
ORYX.I18N.SyntaxChecker.BPMN2_EVENT_BASED_WITH_TOO_LESS_INCOMING_SEQUENCE_FLOWS = "An Event-based Gateway that is not instantiating must have a minimum of one incoming Sequence Flow.";
ORYX.I18N.SyntaxChecker.BPMN2_TOO_FEW_INITIATING_PARTICIPANTS = "A Choreography Activity must have one initiating Participant (white).";
ORYX.I18N.SyntaxChecker.BPMN2_TOO_MANY_INITIATING_PARTICIPANTS = "A Choreography Acitivity must not have more than one initiating Participant (white)."
ORYX.I18N.SyntaxChecker.COMMUNICATION_AT_LEAST_TWO_PARTICIPANTS = "The communication must be connected to at least two participants.";
ORYX.I18N.SyntaxChecker.MESSAGEFLOW_START_MUST_BE_PARTICIPANT = "The message flow's source must be a participant.";
ORYX.I18N.SyntaxChecker.MESSAGEFLOW_END_MUST_BE_PARTICIPANT = "The message flow's target must be a participant.";
ORYX.I18N.SyntaxChecker.CONV_LINK_CANNOT_CONNECT_CONV_NODES = "The conversation link must connect a communication or sub conversation node with a participant.";

View File

@ -0,0 +1,106 @@
Ext.PagingToolbar.prototype.firstText = "Erste Seite";
Ext.PagingToolbar.prototype.prevText = "Vorherige Seite";
Ext.PagingToolbar.prototype.nextText = "Nächste Seite";
Ext.PagingToolbar.prototype.lastText = "Letzte Seite";
ORYX.I18N.PropertyWindow.dateFormat = "d.m.y";
ORYX.I18N.View.East = "Attribute";
ORYX.I18N.View.West = "Modellierungselemente";
ORYX.I18N.Oryx.pleaseWait = "Der Signavio Process Editor wird geladen. Bitte warten...";
ORYX.I18N.AddDocker.add = "Docker hinzufügen";
ORYX.I18N.AddDocker.del = "Docker löschen";
ORYX.I18N.ERDFSupport.noCanvas = "Das XML Dokument enthält keinen Canvas Knoten.";
ORYX.I18N.ERDFSupport.deprText = "Der Export nach eRDF wird nicht empfohlen, da dieses Format in zukünftigen Versionen des Signavio Process Editors nicht mehr unterstützt wird. Verwenden Sie stattdessen den Export nach JSON, falls möglich. Wollen Sie dennoch das Model nach eRDF exportieren?";
ORYX.I18N.Save.unsavedData = "Das Diagramm enthält nicht gespeicherte Daten. Sind Sie sicher, dass Sie den Editor schließen möchten?";
ORYX.I18N.Save.pleaseWait = "Bitte warten Sie, während<br/>das Diagramm gespeichert wird.";
ORYX.I18N.File.info = "Info";
ORYX.I18N.File.infoDesc = "Info";
ORYX.I18N.PropertyWindow.name = "Attribut";
ORYX.I18N.View.zoomStandard = "Zoom: Originalgröße";
ORYX.I18N.View.zoomStandardDesc = "Zoom: Originalgröße";
ORYX.I18N.View.zoomFitToModel = "Zoom: Modellgröße";
ORYX.I18N.View.zoomFitToModelDesc = "Zoom: Modellgröße";
ORYX.I18N.ShapeRepository.title = "Modellierungselemente";
ORYX.I18N.Save.dialogLabelComment = "Änderungs-\nkommentar";
ORYX.I18N.Save.saveAs = "Kopie speichern...";
ORYX.I18N.Save.saveAsDesc = "Kopie speichern...";
ORYX.I18N.Save.saveAsTitle = "Kopie speichern...";
ORYX.I18N.Save.savedAs = "Kopie gespeichert";
ORYX.I18N.Save.savedDescription = "Das kopierte Diagramm ist unter folgendem Link gespeichert";
ORYX.I18N.Save.notAuthorized = "Sie sind derzeit nicht angemeldet. Bitte melden Sie sich in einem <a href='/p/login' target='_blank'>neuen Fenstern</a> an, damit Sie diese Model speichern können."
ORYX.I18N.Save.transAborted = "Die Anfrage zum Speichern Ihres Diagramms hat zu lange gedauert. Bitte benutzen Sie eine schnellere Internetverbindung. Wenn Sie eine kabellose Internetverbindung benutzen, dann überprüfen Sie bitte die Signalstärke.";
ORYX.I18N.Save.noRights = "Sie haben nicht die benötigten Rechte, um das Diagramm abzuspeichern. Bitte überprüfen Sie im <a href='/p/explorer' target='_blank'>Signavio Explorer</a>, ob Sie noch die benötigten Rechte im Zielordner besitzen.";
ORYX.I18N.Save.comFailed = "Die Kommunikation mit dem Signavio Server ist fehlgeschlagen. Bitte überprüfen Sie Ihre Internetverbindung. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an den Signavio Support über das Briefumschlagssymbol in der Toolbar.";
ORYX.I18N.Save.failed = "Beim Speichern Ihres Diagramms ist ein Problem aufgetreten. Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an den Signavio Support über das Briefumschlagssymbol in der Toolbar.";
ORYX.I18N.Save.exception = "Beim Speichern Ihres Diagramms sind einige Probleme aufgetreten. Bitte versuchen Sie es erneut. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an den Signavio Support über das Briefumschlagssymbol in der Toolbar.";
ORYX.I18N.Save.retrieveData = "Bitte warten, Daten werden geladen";
/** New Language Properties: 10.6.09*/
if(!ORYX.I18N.ShapeMenuPlugin) ORYX.I18N.ShapeMenuPlugin = {};
ORYX.I18N.ShapeMenuPlugin.morphMsg = "Umwandeln";
ORYX.I18N.ShapeMenuPlugin.morphWarningTitleMsg = "Umwandeln";
ORYX.I18N.ShapeMenuPlugin.morphWarningMsg = "Einige Kindelemente können nicht im neuen Element enthalten sein.<br/>Möchten Sie dennoch das Element umwandeln?";
if (!Signavio) { var Signavio = {}; }
if (!Signavio.I18N) { Signavio.I18N = {} }
if (!Signavio.I18N.Editor) { Signavio.I18N.Editor = {} }
if (!Signavio.I18N.Editor.Linking) { Signavio.I18N.Editor.Linking = {} }
Signavio.I18N.Editor.Linking.CreateDiagram = "Neues Diagramm erstellen:";
Signavio.I18N.Editor.Linking.UseDiagram = "Vorhandenes Diagramm verwenden";
Signavio.I18N.Editor.Linking.UseLink = "Web-Link verwenden";
Signavio.I18N.Editor.Linking.CreateTitle = "Verlinkung setzen";
Signavio.I18N.Editor.Linking.Close = "Schließen";
Signavio.I18N.Editor.Linking.Cancel = "Abbrechen";
Signavio.I18N.Editor.Linking.UseName = "Diagrammnamen übernehmen";
Signavio.I18N.Editor.Linking.UseNameHint = "Ersetzt den Bezeichner des aktuellen Elements ({type}) durch den Namen des zu verlinkenden Diagramms.";
Signavio.I18N.Editor.Linking.AlertSelectModel = "Bitte selektieren Sie ein Diagramm.";
Signavio.I18N.Editor.Linking.ButtonLink = "Verlinkung setzen";
Signavio.I18N.Editor.Linking.LinkNoAccess = "Sie haben keine Berechtigung für das Diagramm.";
Signavio.I18N.Editor.Linking.LinkUnavailable = "Das Diagramm ist nicht verfügbar.";
Signavio.I18N.Editor.Linking.RemoveLink = "Link löschen";
Signavio.I18N.Editor.Linking.EditLink = "Link ändern";
Signavio.I18N.Editor.Linking.OpenLink = "Öffnen";
Signavio.I18N.Editor.Linking.BrokenLink = "Der Link ist nicht verfügbar!";
Signavio.I18N.Editor.Linking.PreviewTitle = "Vorschau";
if(!ORYX.I18N.PropertyWindow) ORYX.I18N.PropertyWindow = {};
ORYX.I18N.PropertyWindow.oftenUsed = "Hauptattribute";
ORYX.I18N.PropertyWindow.moreProps = "Weitere Attribute";
ORYX.I18N.PropertyWindow.characteristicNr = "Kennzahlen";
ORYX.I18N.PropertyWindow.meta = "Eigene Attribute";
if(!ORYX.I18N.PropertyWindow.Category){ORYX.I18N.PropertyWindow.Category = {}}
ORYX.I18N.PropertyWindow.Category.popular = "Hauptattribute";
ORYX.I18N.PropertyWindow.Category.characteristicnr = "Kennzahlen";
ORYX.I18N.PropertyWindow.Category.others = "Weitere Attribute";
ORYX.I18N.PropertyWindow.Category.meta = "Eigene Attribute";
if(!ORYX.I18N.PropertyWindow.ListView) ORYX.I18N.PropertyWindow.ListView = {};
ORYX.I18N.PropertyWindow.ListView.title = "Attribut: ";
ORYX.I18N.PropertyWindow.ListView.dataViewLabel = "Bereits vorhandene Einträge";
ORYX.I18N.PropertyWindow.ListView.dataViewEmptyText = "Es sind noch keine Einträge vorhanden.";
ORYX.I18N.PropertyWindow.ListView.addEntryLabel = "Neuen Eintrag hinzufügen";
ORYX.I18N.PropertyWindow.ListView.buttonAdd = "Hinzufügen";
ORYX.I18N.PropertyWindow.ListView.save = "Speichern";
ORYX.I18N.PropertyWindow.ListView.cancel = "Abbrachen";
if(!Signavio.I18N.Buttons) Signavio.I18N.Buttons = {};
Signavio.I18N.Buttons.save = "Speichern";
Signavio.I18N.Buttons.cancel = "Abbrechen";
Signavio.I18N.Buttons.remove = "Entfernen";
if(!Signavio.I18N.btn) {Signavio.I18N.btn = {};}
Signavio.I18N.btn.btnEdit = "Editieren";
Signavio.I18N.btn.btnRemove = "Löschen";
Signavio.I18N.btn.moveUp = "Nach oben";
Signavio.I18N.btn.moveDown = "Nach unten";
if(!Signavio.I18N.field) {Signavio.I18N.field = {};}
Signavio.I18N.field.Url = "URL";
Signavio.I18N.field.UrlLabel = "Label";

View File

@ -0,0 +1,108 @@
ORYX.I18N.PropertyWindow.dateFormat = "d/m/y";
ORYX.I18N.View.East = "Attributes";
ORYX.I18N.View.West = "Modeling Elements";
ORYX.I18N.Oryx.title = "Signavio";
ORYX.I18N.Oryx.pleaseWait = "Please wait while the Signavio Process Editor is loading...";
ORYX.I18N.Edit.cutDesc = "Cuts the selection into the clipboard";
ORYX.I18N.Edit.copyDesc = "Copies the selection into the clipboard";
ORYX.I18N.Edit.pasteDesc = "Pastes the clipboard to the canvas";
ORYX.I18N.ERDFSupport.noCanvas = "The xml document has no canvas node included!";
ORYX.I18N.ERDFSupport.noSS = "The Signavio Process Editor canvas node has no stencil set definition included!";
ORYX.I18N.ERDFSupport.deprText = "Exporting to eRDF is not recommended anymore because the support will be stopped in future versions of the Signavio Process Editor. If possible, export the model to JSON. Do you want to export anyway?";
ORYX.I18N.Save.pleaseWait = "Please wait<br/>while saving...";
ORYX.I18N.Save.saveAs = "Save a copy...";
ORYX.I18N.Save.saveAsDesc = "Save a copy...";
ORYX.I18N.Save.saveAsTitle = "Save a copy...";
ORYX.I18N.Save.savedAs = "Copy saved";
ORYX.I18N.Save.savedDescription = "The process diagram is stored under";
ORYX.I18N.Save.notAuthorized = "You are currently not logged in. Please <a href='/p/login' target='_blank'>log in</a> in a new window so that you can save the current diagram."
ORYX.I18N.Save.transAborted = "The saving request took too long. You may use a faster internet connection. If you use wireless LAN, please check the strength of your connection.";
ORYX.I18N.Save.noRights = "You do not have the required rights to store that model. Please check in the <a href='/p/explorer' target='_blank'>Signavio Explorer</a>, if you still have the rights to write in the target directory.";
ORYX.I18N.Save.comFailed = "The communication with the Signavio server failed. Please check your internet connection. If the problem resides, please contact the Signavio Support via the envelope symbol in the toolbar.";
ORYX.I18N.Save.failed = "Something went wrong when trying to save your diagram. Please try again. If the problem resides, please contact the Signavio Support via the envelope symbol in the toolbar.";
ORYX.I18N.Save.exception = "Some exceptions are raised while trying to save your diagram. Please try again. If the problem resides, please contact the Signavio Support via the envelope symbol in the toolbar.";
ORYX.I18N.Save.retrieveData = "Please wait, data is retrieving.";
/** New Language Properties: 10.6.09*/
if(!ORYX.I18N.ShapeMenuPlugin) ORYX.I18N.ShapeMenuPlugin = {};
ORYX.I18N.ShapeMenuPlugin.morphMsg = "Transform shape";
ORYX.I18N.ShapeMenuPlugin.morphWarningTitleMsg = "Transform shape";
ORYX.I18N.ShapeMenuPlugin.morphWarningMsg = "There are child shape which can not be contained in the transformed element.<br/>Do you want to transform anyway?";
if (!Signavio) { var Signavio = {}; }
if (!Signavio.I18N) { Signavio.I18N = {} }
if (!Signavio.I18N.Editor) { Signavio.I18N.Editor = {} }
if (!Signavio.I18N.Editor.Linking) { Signavio.I18N.Editor.Linking = {} }
Signavio.I18N.Editor.Linking.CreateDiagram = "Create a new diagram";
Signavio.I18N.Editor.Linking.UseDiagram = "Use existing diagram";
Signavio.I18N.Editor.Linking.UseLink = "Use web link";
Signavio.I18N.Editor.Linking.Close = "Close";
Signavio.I18N.Editor.Linking.Cancel = "Cancel";
Signavio.I18N.Editor.Linking.UseName = "Adopt diagram name";
Signavio.I18N.Editor.Linking.UseNameHint = "Replaces the current name of the modeling element ({type}) with the name of the linked diagram.";
Signavio.I18N.Editor.Linking.CreateTitle = "Establish link";
Signavio.I18N.Editor.Linking.AlertSelectModel = "You have to select a model.";
Signavio.I18N.Editor.Linking.ButtonLink = "Link diagram";
Signavio.I18N.Editor.Linking.LinkNoAccess = "You have no access to this diagram.";
Signavio.I18N.Editor.Linking.LinkUnavailable = "The diagram is unavailable.";
Signavio.I18N.Editor.Linking.RemoveLink = "Remove link";
Signavio.I18N.Editor.Linking.EditLink = "Edit Link";
Signavio.I18N.Editor.Linking.OpenLink = "Open";
Signavio.I18N.Editor.Linking.BrokenLink = "The link is broken!";
Signavio.I18N.Editor.Linking.PreviewTitle = "Preview";
if(!Signavio.I18N.Glossary_Support) { Signavio.I18N.Glossary_Support = {}; }
Signavio.I18N.Glossary_Support.renameEmpty = "No dictionary entry";
Signavio.I18N.Glossary_Support.renameLoading = "Searching...";
/** New Language Properties: 08.09.2009*/
if(!ORYX.I18N.PropertyWindow) ORYX.I18N.PropertyWindow = {};
ORYX.I18N.PropertyWindow.oftenUsed = "Main properties";
ORYX.I18N.PropertyWindow.moreProps = "More properties";
ORYX.I18N.PropertyWindow.btnOpen = "Open";
ORYX.I18N.PropertyWindow.btnRemove = "Remove";
ORYX.I18N.PropertyWindow.btnEdit = "Edit";
ORYX.I18N.PropertyWindow.btnUp = "Move up";
ORYX.I18N.PropertyWindow.btnDown = "Move down";
ORYX.I18N.PropertyWindow.createNew = "Create new";
if(!ORYX.I18N.PropertyWindow) ORYX.I18N.PropertyWindow = {};
ORYX.I18N.PropertyWindow.oftenUsed = "Main attributes";
ORYX.I18N.PropertyWindow.moreProps = "More attributes";
ORYX.I18N.PropertyWindow.characteristicNr = "Cost &amp; Resource Analysis";
ORYX.I18N.PropertyWindow.meta = "Custom attributes";
if(!ORYX.I18N.PropertyWindow.Category){ORYX.I18N.PropertyWindow.Category = {}}
ORYX.I18N.PropertyWindow.Category.popular = "Main Attributes";
ORYX.I18N.PropertyWindow.Category.characteristicnr = "Cost &amp; Resource Analysis";
ORYX.I18N.PropertyWindow.Category.others = "More Attributes";
ORYX.I18N.PropertyWindow.Category.meta = "Custom Attributes";
if(!ORYX.I18N.PropertyWindow.ListView) ORYX.I18N.PropertyWindow.ListView = {};
ORYX.I18N.PropertyWindow.ListView.title = "Edit: ";
ORYX.I18N.PropertyWindow.ListView.dataViewLabel = "Already existing entries.";
ORYX.I18N.PropertyWindow.ListView.dataViewEmptyText = "No list entries.";
ORYX.I18N.PropertyWindow.ListView.addEntryLabel = "Add a new entry";
ORYX.I18N.PropertyWindow.ListView.buttonAdd = "Add";
ORYX.I18N.PropertyWindow.ListView.save = "Save";
ORYX.I18N.PropertyWindow.ListView.cancel = "Cancel";
if(!Signavio.I18N.Buttons) Signavio.I18N.Buttons = {};
Signavio.I18N.Buttons.save = "Save";
Signavio.I18N.Buttons.cancel = "Cancel";
Signavio.I18N.Buttons.remove = "Remove";
if(!Signavio.I18N.btn) {Signavio.I18N.btn = {};}
Signavio.I18N.btn.btnEdit = "Edit";
Signavio.I18N.btn.btnRemove = "Remove";
Signavio.I18N.btn.moveUp = "Move up";
Signavio.I18N.btn.moveDown = "Move down";
if(!Signavio.I18N.field) {Signavio.I18N.field = {};}
Signavio.I18N.field.Url = "URL";
Signavio.I18N.field.UrlLabel = "Label";

File diff suppressed because it is too large Load Diff

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1,133 @@
/*
* 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
*/
var KISBPM = KISBPM || {};
/** Inspired by https://github.com/krasimir/EventBus/blob/master/src/EventBus.js */
KISBPM.eventBus = {
/** Event fired when the editor is loaded and ready */
EVENT_TYPE_EDITOR_READY: 'event-type-editor-ready',
/** Event fired when a selection is made on the canvas. */
EVENT_TYPE_SELECTION_CHANGE: 'event-type-selection-change',
/** Event fired when a toolbar button has been clicked. */
EVENT_TYPE_TOOLBAR_BUTTON_CLICKED: 'event-type-toolbar-button-clicked',
/** Event fired when a stencil item is dropped on the canvas. */
EVENT_TYPE_ITEM_DROPPED: 'event-type-item-dropped',
/** Event fired when a property value is changed. */
EVENT_TYPE_PROPERTY_VALUE_CHANGED: 'event-type-property-value-changed',
/** Event fired on double click in canvas. */
EVENT_TYPE_DOUBLE_CLICK: 'event-type-double-click',
/** Event fired on a mouse out */
EVENT_TYPE_MOUSE_OUT: 'event-type-mouse-out',
/** Event fired on a mouse over */
EVENT_TYPE_MOUSE_OVER: 'event-type-mouse-over',
/** Event fired when a model is saved. */
EVENT_TYPE_MODEL_SAVED: 'event-type-model-saved',
/** Event fired when the quick menu buttons should be hidden. */
EVENT_TYPE_HIDE_SHAPE_BUTTONS: 'event-type-hide-shape-buttons',
/** A mapping for storing the listeners*/
listeners: {},
/** The Oryx editor, which is stored locally to send events to */
editor: null,
/**
* Add an event listener to the event bus, listening to the event with the provided type.
* Type and callback are mandatory parameters.
*
* Provide scope parameter if it is important that the callback is executed
* within a specific scope.
*/
addListener: function (type, callback, scope) {
// Add to the listeners map
if (typeof this.listeners[type] !== "undefined") {
this.listeners[type].push({scope: scope, callback: callback});
} else {
this.listeners[type] = [
{scope: scope, callback: callback}
];
}
},
/**
* Removes the provided event listener.
*/
removeListener: function (type, callback, scope) {
if (typeof this.listeners[type] != "undefined") {
var numOfCallbacks = this.listeners[type].length;
var newArray = [];
for (var i = 0; i < numOfCallbacks; i++) {
var listener = this.listeners[type][i];
if (listener.scope === scope && listener.callback === callback) {
// Do nothing, this is the listener and doesn't need to survive
} else {
newArray.push(listener);
}
}
this.listeners[type] = newArray;
}
},
hasListener:function(type, callback, scope) {
if(typeof this.listeners[type] != "undefined") {
var numOfCallbacks = this.listeners[type].length;
if(callback === undefined && scope === undefined){
return numOfCallbacks > 0;
}
for(var i=0; i<numOfCallbacks; i++) {
var listener = this.listeners[type][i];
if(listener.scope == scope && listener.callback == callback) {
return true;
}
}
}
return false;
},
/**
* Dispatch an event to all event listeners registered to that specific type.
*/
dispatch:function(type, event) {
if(typeof this.listeners[type] != "undefined") {
var numOfCallbacks = this.listeners[type].length;
for(var i=0; i<numOfCallbacks; i++) {
var listener = this.listeners[type][i];
if(listener && listener.callback) {
listener.callback.apply(listener.scope, [event]);
}
}
}
},
dispatchOryxEvent: function(event, uiObject) {
KISBPM.eventBus.editor.handleEvents(event, uiObject);
}
};

View File

@ -0,0 +1,43 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="activitimodelerregular" horiz-adv-x="2048" >
<font-face units-per-em="2048" ascent="1638" descent="-410" />
<missing-glyph horiz-adv-x="500" />
<glyph horiz-adv-x="0" />
<glyph unicode="&#xd;" />
<glyph unicode="a" d="M0 128q0 -34 23 -57t57 -23h1840q22 0 40 11t29 29t11 40v760v640q0 14 -7 31t-17 27l-440 440q-10 8 -26 15t-30 7h-1400h-1h-3h-4q-30 -2 -51 -26t-21 -54v-1840zM160 208v1680h160v-520q0 -32 16 -60t44 -44t60 -16h800q32 0 60 16t44 44t16 60v520h88l392 -392v-608 v-680h-160v600q0 34 -23 57t-57 23h-1200h-4h-4q-30 -2 -51 -26t-21 -54v-600h-160zM480 208v520h1040v-520h-1040zM960 1448v400q0 16 12 28t28 12h160q16 0 28 -12t12 -28v-400q0 -10 -5 -20t-15 -15t-20 -5h-160q-10 0 -20 5t-15 15t-5 20z" />
<glyph unicode="b" d="M80 128l522 264l-258 258zM472 780l260 -260l914 916l-258 258zM1518 1828l262 -262l62 66q28 28 28 65t-28 65l-128 128q-10 10 -21 16t-23 9t-24 3q-34 0 -62 -28z" />
<glyph unicode="c" d="M41 1513q11 -69 55 -135q82 -126 244 -205q138 -67 267 -67q23 0 45 2q70 6 128 36q22 -8 41 -15l38 -14t35 -13t26 -10q0 -2 1 -8t1 -8v-14v-16v-2v-10v-12v-10l-1 -6t-1 -8q-14 -6 -34 -14t-56 -20t-52 -18q-56 28 -126 34q-24 3 -48 3q-51 0 -105 -12 q-79 -17 -159 -55q-162 -78 -244 -204q-60 -91 -60 -175q0 -53 24 -103q32 -64 96 -100t144 -44q23 -2 46 -2q130 0 266 66q160 78 244 206q59 89 59 171q0 44 -17 87q28 26 49 45t35 33q458 -296 826 -486q26 -14 54 -4t49 25t37 33q24 30 27 73v8q0 38 -25 69 q-232 200 -542 430q146 106 280 214t262 216q14 16 21 37q5 16 5 32v9q-2 20 -10 39t-18 33q-54 63 -108 63l-12 -1q-8 0 -20 -6q-368 -190 -826 -486q-10 8 -24 22t-28 26t-32 28q16 40 16 81v9q-2 46 -16 88t-42 82q-84 128 -244 206q-136 66 -266 66h-8t-38 -4 q-80 -6 -144 -42t-96 -102q-22 -53 -22 -104q0 -18 3 -37zM233 1535q-2 10 -2 17q0 12 5 18q2 2 5 6t7 8t9 7t12 6t14 5t17 4t22 4q13 1 25 1q87 0 183 -47q112 -52 164 -132q27 -41 27 -71q0 -13 -5 -23q-8 -14 -28 -26t-58 -14q-15 -2 -30 -1q-83 0 -178 45 q-110 54 -164 136q-20 32 -25 57zM236 518q-5 11 -5 23q0 30 27 71q54 80 164 134q82 40 164 46q24 2 44 0q38 -4 58 -15t28 -25q2 -8 3 -16t0 -20t-7 -27t-18 -31q-52 -80 -164 -134q-93 -46 -177 -45q-16 0 -31 1q-70 6 -86 38zM1074 1056q0 28 20 48t48 20t48 -20t20 -48 q0 -18 -9 -34t-25 -25t-34 -9q-28 0 -48 20t-20 48z" />
<glyph unicode="d" d="M80 668q0 -40 30 -70t70 -30h638v-340q0 -26 14 -49t37 -37t49 -14h902q40 0 70 30t30 70v1200q0 40 -30 70t-70 30h-462q-16 0 -32 -8q-10 -6 -12 -8q-6 -4 -22 -18q-18 -16 -58 -54q-8 -6 -27 -25l-25 -25v478q0 40 -30 70t-70 30h-462q-18 0 -32 -8q-10 -6 -12 -8 q-6 -4 -22 -18q-18 -16 -58 -54q-84 -78 -168 -160q-82 -82 -160 -166q-40 -42 -54 -60q-14 -14 -18 -22q-4 -6 -8 -10q-8 -16 -8 -34v-760zM200 688v660h420h80v500h362v-576q-80 -78 -154 -158q-40 -42 -56 -60q-12 -14 -16 -22q-6 -6 -8 -10q-10 -16 -10 -34v-300h-618z M252 1468l2 2v2q60 62 160 162t162 158l2 2l2 2v-328h-328zM938 248v660h420h80v500h362v-1160h-862zM990 1028l1 1l3 3q58 62 158 162t162 158l2 2l2 2v-328h-328z" />
<glyph unicode="e" d="M80 528q0 -50 35 -85t85 -35h618v-180q0 -26 14 -49t37 -37t49 -14h902q40 0 70 30t30 70v1200q0 40 -30 70t-70 30h-380v320q0 50 -35 85t-85 35h-1120q-50 0 -85 -35t-35 -85v-1320zM360 1768v40q0 16 12 28t28 12h720q16 0 28 -12t12 -28v-40q0 -16 -12 -28t-28 -12 h-720q-16 0 -28 12t-12 28zM938 248v660h420h80v500h362v-1160h-862zM990 1028l1 1l3 3q58 62 158 162t162 158l2 2l2 2v-328h-328z" />
<glyph unicode="f" d="M280 1518q0 -10 5 -20t15 -15t20 -5h80v-1026q0 -72 49 -123t119 -51h864q70 0 119 51t49 123v1026h80q16 0 28 12t12 28v40q0 10 -5 20t-15 15t-20 5h-276q0 2 -2 2l-200 200q-6 8 -19 13t-23 5h-320h-4h-2q-22 -2 -36 -18l-200 -200q-2 0 -2 -2h-276q-10 0 -20 -5 t-15 -15t-5 -20v-40zM520 452v1026h960v-1026q0 -24 -14 -39t-34 -15h-864q-10 0 -19 4t-15 11t-10 17t-4 22zM640 618q0 -24 18 -42t42 -18h40q24 0 42 18t18 42v640q0 24 -18 42t-42 18h-40q-24 0 -42 -18t-18 -42v-640zM764 1598l100 100h272l100 -100h-472zM920 618 q0 -24 18 -42t42 -18h40q24 0 42 18t18 42v640q0 24 -18 42t-42 18h-40q-24 0 -42 -18t-18 -42v-640zM1200 618q0 -24 18 -42t42 -18h40q24 0 42 18t18 42v640q0 24 -18 42t-42 18h-40q-24 0 -42 -18t-18 -42v-640z" />
<glyph unicode="g" d="M240 1188q0 -24 18 -42t42 -18h442q40 0 54 36q6 14 6 26q0 22 -18 40l-144 144q92 108 230 152q74 24 149 24q65 0 131 -18q202 -54 305 -233q68 -117 68 -244q0 -67 -19 -136q-54 -201 -233 -305q-118 -68 -245 -68q-66 0 -134 18q-128 34 -224 130l-172 -168 q142 -142 334 -192q96 -26 192 -26t191 26q191 52 331 191t192 333q24 100 24 199q0 17 -1 35q-5 116 -49 224t-113 196t-169 154t-216 98q-94 24 -192 24h-28q-150 -6 -285 -70t-235 -174l-130 130q-20 20 -48 16q-22 -2 -38 -20t-16 -40v-442z" />
<glyph unicode="h" d="M264 857q-26 96 -26 192.5t26 191.5q52 191 191 331t333 192q18 4 37 8t37 7t37 5t37 3t36 1h36q150 -6 285 -70t235 -174l130 130q20 20 48 16q22 -2 38 -20t16 -40v-442q0 -24 -18 -42t-42 -18h-442q-40 0 -54 36q-6 14 -6 26q0 22 18 40l144 144q-92 108 -230 152 q-74 24 -149 24q-65 0 -131 -18q-202 -54 -305 -233q-68 -117 -68 -244q0 -67 19 -136q54 -201 233 -305q118 -68 245 -68q66 0 134 18q128 34 224 130l172 -168q-142 -142 -334 -192q-96 -26 -192 -26t-191 26q-191 52 -331 191t-192 332z" />
<glyph unicode="i" d="M80 1344q0 -56 40 -96t96 -40h184l-40 120h-144q-16 0 -16 16v264v186q0 14 16 14h104h344q16 0 16 -14v-190l120 -36v226q0 54 -40 94t-96 40h-448q-56 0 -96 -40t-40 -94v-450zM412 1522l106 -356q4 -16 23 -19t29 9l68 94l156 -156q18 -18 42 -18t40 16l6 8 q16 16 16 40t-18 40l-156 156l92 66q12 10 9 29t-19 23l-356 106h-8h-6q-14 -2 -21 -14q-4 -8 -4 -15q0 -5 1 -9zM1063 931q-1 -6 -1 -13q0 -9 2 -17q4 -15 16 -25l156 -156l-92 -66q-12 -10 -9 -29t19 -23l356 -106h4h4h6q14 2 21 14t3 24l-106 356q-4 16 -23 19t-29 -9 l-68 -94l-156 156q-18 18 -42 18h-5q-21 0 -35 -16l-6 -8q-12 -10 -15 -25zM1160 264q0 -56 40 -96t96 -40h448q56 0 96 40t40 96v448q0 36 -18 68t-49 50t-69 18h-184l40 -120h144q16 0 16 -16v-264v-184q0 -16 -16 -16h-104h-344q-16 0 -16 16v188l-120 36v-224z" />
<glyph unicode="j" d="M120 306q0 -56 41 -97t97 -41h1484q38 0 70 19t50 51t18 68v1484q0 58 -40 98t-98 40h-1484q-58 0 -98 -40t-40 -98v-1484zM240 306v1484q0 18 18 18h1484q18 0 18 -18v-1484q0 -18 -18 -18h-1484q-18 0 -18 18zM322 1676l140 -480q6 -22 32 -26t40 14l90 126l162 -162 q16 -16 36 -21t40 -1t36 20l8 8q22 22 22 54t-24 56l-162 162l122 88q18 14 14 40t-26 32l-480 140q-8 4 -11 4t-9 -2q-18 -4 -27 -20q-5 -10 -5 -19q0 -7 2 -13zM1098 830l162 -162l-122 -88q-18 -12 -14 -38t24 -32l482 -142q7 -3 13 -3l7 1q16 4 26 20q6 10 6 20 q0 6 -2 12l-142 480q-6 22 -32 26t-38 -14l-90 -126l-164 162q-22 24 -55 25h-3q-31 0 -52 -21l-10 -10q-21 -21 -21 -51q0 -34 25 -59z" />
<glyph unicode="k" d="M120 1148q0 -200 99 -370t269 -269t370 -99q230 0 420 132l6 -6l208 -208l112 -112q20 -20 54 -34t62 -14q66 0 113 47t47 113q0 28 -14 61t-34 53l-114 112l-206 208q-8 8 -16 14q102 172 102 372q0 150 -59 287t-158 236t-236 157t-287 58t-286 -58t-235 -157 t-158 -236t-59 -287zM358 1148q0 208 146 355t354 147q138 0 253 -67t182 -183t67 -252q0 -208 -147 -355t-355 -147t-354 147t-146 355zM518 1088q0 -16 12 -28t28 -12h200v-200q0 -16 12 -28t28 -12h120q18 0 29 12t11 28v200h200q18 0 29 12t11 28v120q0 16 -11 28 t-29 12h-200v200q0 16 -11 28t-29 12h-120q-16 0 -28 -12t-12 -28v-200h-200q-16 0 -28 -12t-12 -28v-120z" />
<glyph unicode="l" d="M120 1148q0 -200 99 -370t269 -269t370 -99q230 0 420 132l6 -6l208 -208l112 -112q48 -48 114 -48t114 46q22 22 35 52t13 62q0 66 -48 114l-114 112l-206 208q-8 8 -16 14q102 172 102 372q0 150 -59 287t-158 236t-236 157t-287 58t-286 -58t-235 -157t-158 -236 t-59 -287zM358 1148q0 208 146 355t354 147q138 0 253 -67t182 -183t67 -252q0 -208 -147 -355t-355 -147t-354 147t-146 355zM518 1088q0 -16 12 -28t28 -12h600q18 0 29 12t11 28v120q0 16 -11 28t-29 12h-600q-16 0 -28 -12t-12 -28v-120z" />
<glyph unicode="m" d="M120 1146q0 -200 99 -370t269 -269t370 -99q230 0 420 132l6 -6l208 -208l112 -112q46 -46 115 -46t114 44t45 113t-46 115l-114 112l-206 208q-8 6 -16 14q102 172 102 372t-99 370t-269 269t-371 99t-371 -99t-269 -269t-99 -370zM358 1146q0 208 146 355t354 147 q138 0 253 -67t182 -183t67 -252q0 -208 -147 -355t-355 -147t-354 147t-146 355zM638 1246q142 22 192 44h8v-524h160v760h-160q-10 -54 -38 -87t-67 -48t-95 -21v-124z" />
<glyph unicode="n" d="M200 510q0 -108 77 -185t184 -77t184 77t77 185q0 26 -5 51t-15 48t-24 44t-31 39t-39 32l72 406h2q98 0 168 69t72 167l386 108q16 -32 41 -59t54 -46t65 -30t74 -11q106 0 183 77t77 184t-77 184t-183 77q-64 0 -120 -29t-92 -79t-46 -112l-414 -114q-72 94 -188 94 q-100 0 -170 -71t-70 -169q0 -112 86 -184l-74 -416q-52 -2 -99 -23t-81 -56t-54 -83t-20 -98zM362 510q0 42 29 70t71 28t70 -28t28 -70t-28 -71t-70 -29t-71 29t-29 71zM992 658q0 -20 14 -34t36 -14h240v-252q0 -20 14 -34t34 -14h142q14 0 25 6t18 17t7 25v252h240 q20 0 34 14t14 34v142q0 20 -14 35t-34 15h-240v244q0 20 -15 35t-35 15h-142q-20 0 -34 -15t-14 -35v-244h-240q-22 0 -36 -15t-14 -35v-142zM1442 1589q0 27 13 50t36 36t50 13t50 -13t36 -36t13 -50t-13 -50t-36 -36t-50 -13t-50 13t-36 36t-13 50z" />
<glyph unicode="o" d="M200 510q0 -108 77 -185t184 -77t184 77t77 185q0 26 -5 51t-15 48t-24 44t-31 39t-39 32l72 406h2q98 0 168 69t72 167l386 108q16 -32 41 -59t54 -46t65 -30t74 -11q106 0 183 77t77 184t-77 184t-183 77q-64 0 -120 -29t-92 -79t-46 -112l-414 -114q-72 94 -188 94 q-100 0 -170 -71t-70 -169q0 -112 86 -184l-74 -416q-52 -2 -99 -23t-81 -56t-54 -83t-20 -98zM362 510q0 42 29 70t71 28t70 -28t28 -70t-28 -71t-70 -29t-71 29t-29 71zM992 658q0 -20 14 -34t36 -14h720q20 0 34 14t14 34v142q0 20 -14 35t-34 15h-720q-22 0 -36 -15 t-14 -35v-142zM1442 1589q0 27 13 50t36 36t50 13t50 -13t36 -36t13 -50t-13 -50t-36 -36t-50 -13t-50 13t-36 36t-13 50z" />
<glyph unicode="p" d="M200 1008q0 -16 12 -28t28 -12h160v-240q0 -34 23 -57t57 -23h240q34 0 57 23t23 57v240h240v-520q0 -66 47 -113t113 -47h240q66 0 113 47t47 113v520h160q16 0 28 12t12 28v80q0 16 -12 28t-28 12h-160v520q0 66 -47 113t-113 47h-240q-66 0 -113 -47t-47 -113v-520 h-240v240q0 34 -23 57t-57 23h-240q-34 0 -57 -23t-23 -57v-240h-160q-16 0 -28 -12t-12 -28v-80zM1200 448v1200h240v-1200h-240z" />
<glyph unicode="q" d="M240 608q0 -66 47 -113t113 -47h520v-160q0 -16 12 -28t28 -12h80q16 0 28 12t12 28v160h520q66 0 113 47t47 113v240q0 66 -47 113t-113 47h-520v240h240q34 0 57 23t23 57v240q0 34 -23 57t-57 23h-240v160q0 16 -12 28t-28 12h-80q-16 0 -28 -12t-12 -28v-160h-240 q-34 0 -57 -23t-23 -57v-240q0 -34 23 -57t57 -23h240v-240h-520q-66 0 -113 -47t-47 -113v-240zM400 608v240h1200v-240h-1200z" />
<glyph unicode="&#x2000;" horiz-adv-x="1024" />
<glyph unicode="&#x2001;" />
<glyph unicode="&#x2002;" horiz-adv-x="1024" />
<glyph unicode="&#x2003;" />
<glyph unicode="&#x2004;" horiz-adv-x="682" />
<glyph unicode="&#x2005;" horiz-adv-x="512" />
<glyph unicode="&#x2006;" horiz-adv-x="341" />
<glyph unicode="&#x2007;" horiz-adv-x="341" />
<glyph unicode="&#x2008;" horiz-adv-x="256" />
<glyph unicode="&#x2009;" horiz-adv-x="409" />
<glyph unicode="&#x200a;" horiz-adv-x="113" />
<glyph unicode="&#x202f;" horiz-adv-x="409" />
<glyph unicode="&#x205f;" horiz-adv-x="512" />
<glyph unicode="&#x25fc;" horiz-adv-x="1000" d="M0 0z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 11 KiB

View File

@ -0,0 +1,229 @@
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd" >
<svg xmlns="http://www.w3.org/2000/svg">
<metadata></metadata>
<defs>
<font id="glyphicons_halflingsregular" horiz-adv-x="1200" >
<font-face units-per-em="1200" ascent="960" descent="-240" />
<missing-glyph horiz-adv-x="500" />
<glyph />
<glyph />
<glyph unicode="&#xd;" />
<glyph unicode=" " />
<glyph unicode="*" d="M100 500v200h259l-183 183l141 141l183 -183v259h200v-259l183 183l141 -141l-183 -183h259v-200h-259l183 -183l-141 -141l-183 183v-259h-200v259l-183 -183l-141 141l183 183h-259z" />
<glyph unicode="+" d="M0 400v300h400v400h300v-400h400v-300h-400v-400h-300v400h-400z" />
<glyph unicode="&#xa0;" />
<glyph unicode="&#x2000;" horiz-adv-x="652" />
<glyph unicode="&#x2001;" horiz-adv-x="1304" />
<glyph unicode="&#x2002;" horiz-adv-x="652" />
<glyph unicode="&#x2003;" horiz-adv-x="1304" />
<glyph unicode="&#x2004;" horiz-adv-x="434" />
<glyph unicode="&#x2005;" horiz-adv-x="326" />
<glyph unicode="&#x2006;" horiz-adv-x="217" />
<glyph unicode="&#x2007;" horiz-adv-x="217" />
<glyph unicode="&#x2008;" horiz-adv-x="163" />
<glyph unicode="&#x2009;" horiz-adv-x="260" />
<glyph unicode="&#x200a;" horiz-adv-x="72" />
<glyph unicode="&#x202f;" horiz-adv-x="260" />
<glyph unicode="&#x205f;" horiz-adv-x="326" />
<glyph unicode="&#x20ac;" d="M100 500l100 100h113q0 47 5 100h-218l100 100h135q37 167 112 257q117 141 297 141q242 0 354 -189q60 -103 66 -209h-181q0 55 -25.5 99t-63.5 68t-75 36.5t-67 12.5q-24 0 -52.5 -10t-62.5 -32t-65.5 -67t-50.5 -107h379l-100 -100h-300q-6 -46 -6 -100h406l-100 -100 h-300q9 -74 33 -132t52.5 -91t62 -54.5t59 -29t46.5 -7.5q29 0 66 13t75 37t63.5 67.5t25.5 96.5h174q-31 -172 -128 -278q-107 -117 -274 -117q-205 0 -324 158q-36 46 -69 131.5t-45 205.5h-217z" />
<glyph unicode="&#x2212;" d="M200 400h900v300h-900v-300z" />
<glyph unicode="&#x2601;" d="M-14 494q0 -80 56.5 -137t135.5 -57h750q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5z" />
<glyph unicode="&#x2709;" d="M0 100l400 400l200 -200l200 200l400 -400h-1200zM0 300v600l300 -300zM0 1100l600 -603l600 603h-1200zM900 600l300 300v-600z" />
<glyph unicode="&#x270f;" d="M-13 -13l333 112l-223 223zM187 403l214 -214l614 614l-214 214zM887 1103l214 -214l99 92q13 13 13 32.5t-13 33.5l-153 153q-15 13 -33 13t-33 -13z" />
<glyph unicode="&#xe000;" horiz-adv-x="500" d="M0 0z" />
<glyph unicode="&#xe001;" d="M0 1200h1200l-500 -550v-550h300v-100h-800v100h300v550z" />
<glyph unicode="&#xe002;" d="M14 84q18 -55 86 -75.5t147 5.5q65 21 109 69t44 90v606l600 155v-521q-64 16 -138 -7q-79 -26 -122.5 -83t-25.5 -111q17 -55 85.5 -75.5t147.5 4.5q70 23 111.5 63.5t41.5 95.5v881q0 10 -7 15.5t-17 2.5l-752 -193q-10 -3 -17 -12.5t-7 -19.5v-689q-64 17 -138 -7 q-79 -25 -122.5 -82t-25.5 -112z" />
<glyph unicode="&#xe003;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233z" />
<glyph unicode="&#xe005;" d="M100 784q0 64 28 123t73 100.5t104.5 64t119 20.5t120 -38.5t104.5 -104.5q48 69 109.5 105t121.5 38t118.5 -20.5t102.5 -64t71 -100.5t27 -123q0 -57 -33.5 -117.5t-94 -124.5t-126.5 -127.5t-150 -152.5t-146 -174q-62 85 -145.5 174t-149.5 152.5t-126.5 127.5 t-94 124.5t-33.5 117.5z" />
<glyph unicode="&#xe006;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1z" />
<glyph unicode="&#xe007;" d="M-72 800h479l146 400h2l146 -400h472l-382 -278l145 -449l-384 275l-382 -275l146 447zM168 71l2 1zM237 700l196 -142l-73 -226l192 140l195 -141l-74 229l193 140h-235l-77 211l-78 -211h-239z" />
<glyph unicode="&#xe008;" d="M0 0v143l400 257v100q-37 0 -68.5 74.5t-31.5 125.5v200q0 124 88 212t212 88t212 -88t88 -212v-200q0 -51 -31.5 -125.5t-68.5 -74.5v-100l400 -257v-143h-1200z" />
<glyph unicode="&#xe009;" d="M0 0v1100h1200v-1100h-1200zM100 100h100v100h-100v-100zM100 300h100v100h-100v-100zM100 500h100v100h-100v-100zM100 700h100v100h-100v-100zM100 900h100v100h-100v-100zM300 100h600v400h-600v-400zM300 600h600v400h-600v-400zM1000 100h100v100h-100v-100z M1000 300h100v100h-100v-100zM1000 500h100v100h-100v-100zM1000 700h100v100h-100v-100zM1000 900h100v100h-100v-100z" />
<glyph unicode="&#xe010;" d="M0 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM0 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400 q-21 0 -35.5 14.5t-14.5 35.5zM600 50v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5zM600 650v400q0 21 14.5 35.5t35.5 14.5h400q21 0 35.5 -14.5t14.5 -35.5v-400 q0 -21 -14.5 -35.5t-35.5 -14.5h-400q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe011;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200 q-21 0 -35.5 14.5t-14.5 35.5zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 450v200q0 21 14.5 35.5t35.5 14.5h200 q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM800 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe012;" d="M0 50v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM0 450q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v200q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5 t-14.5 -35.5v-200zM0 850v200q0 21 14.5 35.5t35.5 14.5h200q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5zM400 50v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5 t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 450v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5zM400 850v200q0 21 14.5 35.5t35.5 14.5h700q21 0 35.5 -14.5t14.5 -35.5 v-200q0 -21 -14.5 -35.5t-35.5 -14.5h-700q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe013;" d="M29 454l419 -420l818 820l-212 212l-607 -607l-206 207z" />
<glyph unicode="&#xe014;" d="M106 318l282 282l-282 282l212 212l282 -282l282 282l212 -212l-282 -282l282 -282l-212 -212l-282 282l-282 -282z" />
<glyph unicode="&#xe015;" d="M23 693q0 200 142 342t342 142t342 -142t142 -342q0 -142 -78 -261l300 -300q7 -8 7 -18t-7 -18l-109 -109q-8 -7 -18 -7t-18 7l-300 300q-119 -78 -261 -78q-200 0 -342 142t-142 342zM176 693q0 -136 97 -233t234 -97t233.5 96.5t96.5 233.5t-96.5 233.5t-233.5 96.5 t-234 -97t-97 -233zM300 600v200h100v100h200v-100h100v-200h-100v-100h-200v100h-100z" />
<glyph unicode="&#xe016;" d="M23 694q0 200 142 342t342 142t342 -142t142 -342q0 -141 -78 -262l300 -299q7 -7 7 -18t-7 -18l-109 -109q-8 -8 -18 -8t-18 8l-300 299q-120 -77 -261 -77q-200 0 -342 142t-142 342zM176 694q0 -136 97 -233t234 -97t233.5 97t96.5 233t-96.5 233t-233.5 97t-234 -97 t-97 -233zM300 601h400v200h-400v-200z" />
<glyph unicode="&#xe017;" d="M23 600q0 183 105 331t272 210v-166q-103 -55 -165 -155t-62 -220q0 -177 125 -302t302 -125t302 125t125 302q0 120 -62 220t-165 155v166q167 -62 272 -210t105 -331q0 -118 -45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5 zM500 750q0 -21 14.5 -35.5t35.5 -14.5h100q21 0 35.5 14.5t14.5 35.5v400q0 21 -14.5 35.5t-35.5 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-400z" />
<glyph unicode="&#xe018;" d="M100 1h200v300h-200v-300zM400 1v500h200v-500h-200zM700 1v800h200v-800h-200zM1000 1v1200h200v-1200h-200z" />
<glyph unicode="&#xe019;" d="M26 601q0 -33 6 -74l151 -38l2 -6q14 -49 38 -93l3 -5l-80 -134q45 -59 105 -105l133 81l5 -3q45 -26 94 -39l5 -2l38 -151q40 -5 74 -5q27 0 74 5l38 151l6 2q46 13 93 39l5 3l134 -81q56 44 104 105l-80 134l3 5q24 44 39 93l1 6l152 38q5 40 5 74q0 28 -5 73l-152 38 l-1 6q-16 51 -39 93l-3 5l80 134q-44 58 -104 105l-134 -81l-5 3q-45 25 -93 39l-6 1l-38 152q-40 5 -74 5q-27 0 -74 -5l-38 -152l-5 -1q-50 -14 -94 -39l-5 -3l-133 81q-59 -47 -105 -105l80 -134l-3 -5q-25 -47 -38 -93l-2 -6l-151 -38q-6 -48 -6 -73zM385 601 q0 88 63 151t152 63t152 -63t63 -151q0 -89 -63 -152t-152 -63t-152 63t-63 152z" />
<glyph unicode="&#xe020;" d="M100 1025v50q0 10 7.5 17.5t17.5 7.5h275v100q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5v-100h275q10 0 17.5 -7.5t7.5 -17.5v-50q0 -11 -7 -18t-18 -7h-1050q-11 0 -18 7t-7 18zM200 100v800h900v-800q0 -41 -29.5 -71t-70.5 -30h-700q-41 0 -70.5 30 t-29.5 71zM300 100h100v700h-100v-700zM500 100h100v700h-100v-700zM500 1100h300v100h-300v-100zM700 100h100v700h-100v-700zM900 100h100v700h-100v-700z" />
<glyph unicode="&#xe021;" d="M1 601l656 644l644 -644h-200v-600h-300v400h-300v-400h-300v600h-200z" />
<glyph unicode="&#xe022;" d="M100 25v1150q0 11 7 18t18 7h475v-500h400v-675q0 -11 -7 -18t-18 -7h-850q-11 0 -18 7t-7 18zM700 800v300l300 -300h-300z" />
<glyph unicode="&#xe023;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 500v400h100 v-300h200v-100h-300z" />
<glyph unicode="&#xe024;" d="M-100 0l431 1200h209l-21 -300h162l-20 300h208l431 -1200h-538l-41 400h-242l-40 -400h-539zM488 500h224l-27 300h-170z" />
<glyph unicode="&#xe025;" d="M0 0v400h490l-290 300h200v500h300v-500h200l-290 -300h490v-400h-1100zM813 200h175v100h-175v-100z" />
<glyph unicode="&#xe026;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM188 600q0 -170 121 -291t291 -121t291 121t121 291t-121 291t-291 121 t-291 -121t-121 -291zM350 600h150v300h200v-300h150l-250 -300z" />
<glyph unicode="&#xe027;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM350 600l250 300 l250 -300h-150v-300h-200v300h-150z" />
<glyph unicode="&#xe028;" d="M0 25v475l200 700h800q199 -700 200 -700v-475q0 -11 -7 -18t-18 -7h-1150q-11 0 -18 7t-7 18zM200 500h200l50 -200h300l50 200h200l-97 500h-606z" />
<glyph unicode="&#xe029;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM500 397v401 l297 -200z" />
<glyph unicode="&#xe030;" d="M23 600q0 -118 45.5 -224.5t123 -184t184 -123t224.5 -45.5t224.5 45.5t184 123t123 184t45.5 224.5h-150q0 -177 -125 -302t-302 -125t-302 125t-125 302t125 302t302 125q136 0 246 -81l-146 -146h400v400l-145 -145q-157 122 -355 122q-118 0 -224.5 -45.5t-184 -123 t-123 -184t-45.5 -224.5z" />
<glyph unicode="&#xe031;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5q198 0 355 -122l145 145v-400h-400l147 147q-112 80 -247 80q-177 0 -302 -125t-125 -302h-150zM100 0v400h400l-147 -147q112 -80 247 -80q177 0 302 125t125 302h150q0 -118 -45.5 -224.5t-123 -184t-184 -123 t-224.5 -45.5q-198 0 -355 122z" />
<glyph unicode="&#xe032;" d="M100 0h1100v1200h-1100v-1200zM200 100v900h900v-900h-900zM300 200v100h100v-100h-100zM300 400v100h100v-100h-100zM300 600v100h100v-100h-100zM300 800v100h100v-100h-100zM500 200h500v100h-500v-100zM500 400v100h500v-100h-500zM500 600v100h500v-100h-500z M500 800v100h500v-100h-500z" />
<glyph unicode="&#xe033;" d="M0 100v600q0 41 29.5 70.5t70.5 29.5h100v200q0 82 59 141t141 59h300q82 0 141 -59t59 -141v-200h100q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-900q-41 0 -70.5 29.5t-29.5 70.5zM400 800h300v150q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-150z" />
<glyph unicode="&#xe034;" d="M100 0v1100h100v-1100h-100zM300 400q60 60 127.5 84t127.5 17.5t122 -23t119 -30t110 -11t103 42t91 120.5v500q-40 -81 -101.5 -115.5t-127.5 -29.5t-138 25t-139.5 40t-125.5 25t-103 -29.5t-65 -115.5v-500z" />
<glyph unicode="&#xe035;" d="M0 275q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 127 70.5 231.5t184.5 161.5t245 57t245 -57t184.5 -161.5t70.5 -231.5v-300q0 -11 7 -18t18 -7h50q11 0 18 7t7 18v300q0 116 -49.5 227t-131 192.5t-192.5 131t-227 49.5t-227 -49.5t-192.5 -131t-131 -192.5 t-49.5 -227v-300zM200 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14zM800 20v460q0 8 6 14t14 6h160q8 0 14 -6t6 -14v-460q0 -8 -6 -14t-14 -6h-160q-8 0 -14 6t-6 14z" />
<glyph unicode="&#xe036;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM688 459l141 141l-141 141l71 71l141 -141l141 141l71 -71l-141 -141l141 -141l-71 -71l-141 141l-141 -141z" />
<glyph unicode="&#xe037;" d="M0 400h300l300 -200v800l-300 -200h-300v-400zM700 857l69 53q111 -135 111 -310q0 -169 -106 -302l-67 54q86 110 86 248q0 146 -93 257z" />
<glyph unicode="&#xe038;" d="M0 401v400h300l300 200v-800l-300 200h-300zM702 858l69 53q111 -135 111 -310q0 -170 -106 -303l-67 55q86 110 86 248q0 145 -93 257zM889 951l7 -8q123 -151 123 -344q0 -189 -119 -339l-7 -8l81 -66l6 8q142 178 142 405q0 230 -144 408l-6 8z" />
<glyph unicode="&#xe039;" d="M0 0h500v500h-200v100h-100v-100h-200v-500zM0 600h100v100h400v100h100v100h-100v300h-500v-600zM100 100v300h300v-300h-300zM100 800v300h300v-300h-300zM200 200v100h100v-100h-100zM200 900h100v100h-100v-100zM500 500v100h300v-300h200v-100h-100v-100h-200v100 h-100v100h100v200h-200zM600 0v100h100v-100h-100zM600 1000h100v-300h200v-300h300v200h-200v100h200v500h-600v-200zM800 800v300h300v-300h-300zM900 0v100h300v-100h-300zM900 900v100h100v-100h-100zM1100 200v100h100v-100h-100z" />
<glyph unicode="&#xe040;" d="M0 200h100v1000h-100v-1000zM100 0v100h300v-100h-300zM200 200v1000h100v-1000h-100zM500 0v91h100v-91h-100zM500 200v1000h200v-1000h-200zM700 0v91h100v-91h-100zM800 200v1000h100v-1000h-100zM900 0v91h200v-91h-200zM1000 200v1000h200v-1000h-200z" />
<glyph unicode="&#xe041;" d="M1 700v475q0 10 7.5 17.5t17.5 7.5h474l700 -700l-500 -500zM148 953q0 -42 29 -71q30 -30 71.5 -30t71.5 30q29 29 29 71t-29 71q-30 30 -71.5 30t-71.5 -30q-29 -29 -29 -71z" />
<glyph unicode="&#xe042;" d="M2 700v475q0 11 7 18t18 7h474l700 -700l-500 -500zM148 953q0 -42 30 -71q29 -30 71 -30t71 30q30 29 30 71t-30 71q-29 30 -71 30t-71 -30q-30 -29 -30 -71zM701 1200h100l700 -700l-500 -500l-50 50l450 450z" />
<glyph unicode="&#xe043;" d="M100 0v1025l175 175h925v-1000l-100 -100v1000h-750l-100 -100h750v-1000h-900z" />
<glyph unicode="&#xe044;" d="M200 0l450 444l450 -443v1150q0 20 -14.5 35t-35.5 15h-800q-21 0 -35.5 -15t-14.5 -35v-1151z" />
<glyph unicode="&#xe045;" d="M0 100v700h200l100 -200h600l100 200h200v-700h-200v200h-800v-200h-200zM253 829l40 -124h592l62 124l-94 346q-2 11 -10 18t-18 7h-450q-10 0 -18 -7t-10 -18zM281 24l38 152q2 10 11.5 17t19.5 7h500q10 0 19.5 -7t11.5 -17l38 -152q2 -10 -3.5 -17t-15.5 -7h-600 q-10 0 -15.5 7t-3.5 17z" />
<glyph unicode="&#xe046;" d="M0 200q0 -41 29.5 -70.5t70.5 -29.5h1000q41 0 70.5 29.5t29.5 70.5v600q0 41 -29.5 70.5t-70.5 29.5h-150q-4 8 -11.5 21.5t-33 48t-53 61t-69 48t-83.5 21.5h-200q-41 0 -82 -20.5t-70 -50t-52 -59t-34 -50.5l-12 -20h-150q-41 0 -70.5 -29.5t-29.5 -70.5v-600z M356 500q0 100 72 172t172 72t172 -72t72 -172t-72 -172t-172 -72t-172 72t-72 172zM494 500q0 -44 31 -75t75 -31t75 31t31 75t-31 75t-75 31t-75 -31t-31 -75zM900 700v100h100v-100h-100z" />
<glyph unicode="&#xe047;" d="M53 0h365v66q-41 0 -72 11t-49 38t1 71l92 234h391l82 -222q16 -45 -5.5 -88.5t-74.5 -43.5v-66h417v66q-34 1 -74 43q-18 19 -33 42t-21 37l-6 13l-385 998h-93l-399 -1006q-24 -48 -52 -75q-12 -12 -33 -25t-36 -20l-15 -7v-66zM416 521l178 457l46 -140l116 -317h-340 z" />
<glyph unicode="&#xe048;" d="M100 0v89q41 7 70.5 32.5t29.5 65.5v827q0 28 -1 39.5t-5.5 26t-15.5 21t-29 14t-49 14.5v70h471q120 0 213 -88t93 -228q0 -55 -11.5 -101.5t-28 -74t-33.5 -47.5t-28 -28l-12 -7q8 -3 21.5 -9t48 -31.5t60.5 -58t47.5 -91.5t21.5 -129q0 -84 -59 -156.5t-142 -111 t-162 -38.5h-500zM400 200h161q89 0 153 48.5t64 132.5q0 90 -62.5 154.5t-156.5 64.5h-159v-400zM400 700h139q76 0 130 61.5t54 138.5q0 82 -84 130.5t-239 48.5v-379z" />
<glyph unicode="&#xe049;" d="M200 0v57q77 7 134.5 40.5t65.5 80.5l173 849q10 56 -10 74t-91 37q-6 1 -10.5 2.5t-9.5 2.5v57h425l2 -57q-33 -8 -62 -25.5t-46 -37t-29.5 -38t-17.5 -30.5l-5 -12l-128 -825q-10 -52 14 -82t95 -36v-57h-500z" />
<glyph unicode="&#xe050;" d="M-75 200h75v800h-75l125 167l125 -167h-75v-800h75l-125 -167zM300 900v300h150h700h150v-300h-50q0 29 -8 48.5t-18.5 30t-33.5 15t-39.5 5.5t-50.5 1h-200v-850l100 -50v-100h-400v100l100 50v850h-200q-34 0 -50.5 -1t-40 -5.5t-33.5 -15t-18.5 -30t-8.5 -48.5h-49z " />
<glyph unicode="&#xe051;" d="M33 51l167 125v-75h800v75l167 -125l-167 -125v75h-800v-75zM100 901v300h150h700h150v-300h-50q0 29 -8 48.5t-18 30t-33.5 15t-40 5.5t-50.5 1h-200v-650l100 -50v-100h-400v100l100 50v650h-200q-34 0 -50.5 -1t-39.5 -5.5t-33.5 -15t-18.5 -30t-8 -48.5h-50z" />
<glyph unicode="&#xe052;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 350q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM0 650q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1000q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 950q0 -20 14.5 -35t35.5 -15h600q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-600q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
<glyph unicode="&#xe053;" d="M0 50q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM0 650q0 -20 14.5 -35t35.5 -15h1100q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5 v-100zM200 350q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM200 950q0 -20 14.5 -35t35.5 -15h700q21 0 35.5 15t14.5 35v100q0 21 -14.5 35.5t-35.5 14.5h-700q-21 0 -35.5 -14.5 t-14.5 -35.5v-100z" />
<glyph unicode="&#xe054;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM100 650v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1000q-21 0 -35.5 15 t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM500 950v100q0 21 14.5 35.5t35.5 14.5h600q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-600 q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe055;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h1100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-1100 q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe056;" d="M0 50v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 350v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM0 650v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15t-14.5 35zM0 950v100q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-100q-21 0 -35.5 15 t-14.5 35zM300 50v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 350v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800 q-21 0 -35.5 15t-14.5 35zM300 650v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15h-800q-21 0 -35.5 15t-14.5 35zM300 950v100q0 21 14.5 35.5t35.5 14.5h800q21 0 35.5 -14.5t14.5 -35.5v-100q0 -20 -14.5 -35t-35.5 -15 h-800q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe057;" d="M-101 500v100h201v75l166 -125l-166 -125v75h-201zM300 0h100v1100h-100v-1100zM500 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35 v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 650q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM500 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100 q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100z" />
<glyph unicode="&#xe058;" d="M1 50q0 -20 14.5 -35t35.5 -15h600q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-600q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 350q0 -20 14.5 -35t35.5 -15h300q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-300q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 650 q0 -20 14.5 -35t35.5 -15h500q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-500q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM1 950q0 -20 14.5 -35t35.5 -15h100q20 0 35 15t15 35v100q0 21 -15 35.5t-35 14.5h-100q-21 0 -35.5 -14.5t-14.5 -35.5v-100zM801 0v1100h100v-1100 h-100zM934 550l167 -125v75h200v100h-200v75z" />
<glyph unicode="&#xe059;" d="M0 275v650q0 31 22 53t53 22h750q31 0 53 -22t22 -53v-650q0 -31 -22 -53t-53 -22h-750q-31 0 -53 22t-22 53zM900 600l300 300v-600z" />
<glyph unicode="&#xe060;" d="M0 44v1012q0 18 13 31t31 13h1112q19 0 31.5 -13t12.5 -31v-1012q0 -18 -12.5 -31t-31.5 -13h-1112q-18 0 -31 13t-13 31zM100 263l247 182l298 -131l-74 156l293 318l236 -288v500h-1000v-737zM208 750q0 56 39 95t95 39t95 -39t39 -95t-39 -95t-95 -39t-95 39t-39 95z " />
<glyph unicode="&#xe062;" d="M148 745q0 124 60.5 231.5t165 172t226.5 64.5q123 0 227 -63t164.5 -169.5t60.5 -229.5t-73 -272q-73 -114 -166.5 -237t-150.5 -189l-57 -66q-10 9 -27 26t-66.5 70.5t-96 109t-104 135.5t-100.5 155q-63 139 -63 262zM342 772q0 -107 75.5 -182.5t181.5 -75.5 q107 0 182.5 75.5t75.5 182.5t-75.5 182t-182.5 75t-182 -75.5t-75 -181.5z" />
<glyph unicode="&#xe063;" d="M1 600q0 122 47.5 233t127.5 191t191 127.5t233 47.5t233 -47.5t191 -127.5t127.5 -191t47.5 -233t-47.5 -233t-127.5 -191t-191 -127.5t-233 -47.5t-233 47.5t-191 127.5t-127.5 191t-47.5 233zM173 600q0 -177 125.5 -302t301.5 -125v854q-176 0 -301.5 -125 t-125.5 -302z" />
<glyph unicode="&#xe064;" d="M117 406q0 94 34 186t88.5 172.5t112 159t115 177t87.5 194.5q21 -71 57.5 -142.5t76 -130.5t83 -118.5t82 -117t70 -116t50 -125.5t18.5 -136q0 -89 -39 -165.5t-102 -126.5t-140 -79.5t-156 -33.5q-114 6 -211.5 53t-161.5 138.5t-64 210.5zM243 414q14 -82 59.5 -136 t136.5 -80l16 98q-7 6 -18 17t-34 48t-33 77q-15 73 -14 143.5t10 122.5l9 51q-92 -110 -119.5 -185t-12.5 -156z" />
<glyph unicode="&#xe065;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5q366 -6 397 -14l-186 -186h-311q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v125l200 200v-225q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM436 341l161 50l412 412l-114 113l-405 -405zM995 1015l113 -113l113 113l-21 85l-92 28z" />
<glyph unicode="&#xe066;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h261l2 -80q-133 -32 -218 -120h-145q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5l200 153v-53q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5 zM423 524q30 38 81.5 64t103 35.5t99 14t77.5 3.5l29 -1v-209l360 324l-359 318v-216q-7 0 -19 -1t-48 -8t-69.5 -18.5t-76.5 -37t-76.5 -59t-62 -88t-39.5 -121.5z" />
<glyph unicode="&#xe067;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q60 0 127 -23l-178 -177h-349q-41 0 -70.5 -29.5t-29.5 -70.5v-500q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v69l200 200v-169q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5 t-117.5 282.5zM342 632l283 -284l566 567l-136 137l-430 -431l-147 147z" />
<glyph unicode="&#xe068;" d="M0 603l300 296v-198h200v200h-200l300 300l295 -300h-195v-200h200v198l300 -296l-300 -300v198h-200v-200h195l-295 -300l-300 300h200v200h-200v-198z" />
<glyph unicode="&#xe069;" d="M200 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-1100l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe070;" d="M0 50v1000q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-437l500 487v-487l500 487v-1100l-500 488v-488l-500 488v-438q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5z" />
<glyph unicode="&#xe071;" d="M136 550l564 550v-487l500 487v-1100l-500 488v-488z" />
<glyph unicode="&#xe072;" d="M200 0l900 550l-900 550v-1100z" />
<glyph unicode="&#xe073;" d="M200 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200q-21 0 -35.5 -14.5t-14.5 -35.5v-800zM600 150q0 -21 14.5 -35.5t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v800q0 21 -14.5 35.5t-35.5 14.5h-200 q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
<glyph unicode="&#xe074;" d="M200 150q0 -20 14.5 -35t35.5 -15h800q21 0 35.5 15t14.5 35v800q0 21 -14.5 35.5t-35.5 14.5h-800q-21 0 -35.5 -14.5t-14.5 -35.5v-800z" />
<glyph unicode="&#xe075;" d="M0 0v1100l500 -487v487l564 -550l-564 -550v488z" />
<glyph unicode="&#xe076;" d="M0 0v1100l500 -487v487l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438l-500 -488v488z" />
<glyph unicode="&#xe077;" d="M300 0v1100l500 -487v437q0 21 14.5 35.5t35.5 14.5h100q21 0 35.5 -14.5t14.5 -35.5v-1000q0 -21 -14.5 -35.5t-35.5 -14.5h-100q-21 0 -35.5 14.5t-14.5 35.5v438z" />
<glyph unicode="&#xe078;" d="M100 250v100q0 21 14.5 35.5t35.5 14.5h1000q21 0 35.5 -14.5t14.5 -35.5v-100q0 -21 -14.5 -35.5t-35.5 -14.5h-1000q-21 0 -35.5 14.5t-14.5 35.5zM100 500h1100l-550 564z" />
<glyph unicode="&#xe079;" d="M185 599l592 -592l240 240l-353 353l353 353l-240 240z" />
<glyph unicode="&#xe080;" d="M272 194l353 353l-353 353l241 240l572 -571l21 -22l-1 -1v-1l-592 -591z" />
<glyph unicode="&#xe081;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h200v-200h200v200h200v200h-200v200h-200v-200h-200v-200z" />
<glyph unicode="&#xe082;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM300 500h600v200h-600v-200z" />
<glyph unicode="&#xe083;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM246 459l213 -213l141 142l141 -142l213 213l-142 141l142 141l-213 212l-141 -141l-141 142l-212 -213l141 -141z" />
<glyph unicode="&#xe084;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -299.5t-217.5 -217.5t-299.5 -80t-299.5 80t-217.5 217.5t-80 299.5zM270 551l276 -277l411 411l-175 174l-236 -236l-102 102z" />
<glyph unicode="&#xe085;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM363 700h144q4 0 11.5 -1t11 -1t6.5 3t3 9t1 11t3.5 8.5t3.5 6t5.5 4t6.5 2.5t9 1.5t9 0.5h11.5h12.5q19 0 30 -10t11 -26 q0 -22 -4 -28t-27 -22q-5 -1 -12.5 -3t-27 -13.5t-34 -27t-26.5 -46t-11 -68.5h200q5 3 14 8t31.5 25.5t39.5 45.5t31 69t14 94q0 51 -17.5 89t-42 58t-58.5 32t-58.5 15t-51.5 3q-105 0 -172 -56t-67 -183zM500 300h200v100h-200v-100z" />
<glyph unicode="&#xe086;" d="M3 600q0 162 80 299.5t217.5 217.5t299.5 80t299.5 -80t217.5 -217.5t80 -299.5t-80 -300t-217.5 -218t-299.5 -80t-299.5 80t-217.5 218t-80 300zM400 300h400v100h-100v300h-300v-100h100v-200h-100v-100zM500 800h200v100h-200v-100z" />
<glyph unicode="&#xe087;" d="M0 500v200h194q15 60 36 104.5t55.5 86t88 69t126.5 40.5v200h200v-200q54 -20 113 -60t112.5 -105.5t71.5 -134.5h203v-200h-203q-25 -102 -116.5 -186t-180.5 -117v-197h-200v197q-140 27 -208 102.5t-98 200.5h-194zM290 500q24 -73 79.5 -127.5t130.5 -78.5v206h200 v-206q149 48 201 206h-201v200h200q-25 74 -76 127.5t-124 76.5v-204h-200v203q-75 -24 -130 -77.5t-79 -125.5h209v-200h-210z" />
<glyph unicode="&#xe088;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM356 465l135 135 l-135 135l109 109l135 -135l135 135l109 -109l-135 -135l135 -135l-109 -109l-135 135l-135 -135z" />
<glyph unicode="&#xe089;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM322 537l141 141 l87 -87l204 205l142 -142l-346 -345z" />
<glyph unicode="&#xe090;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -115 62 -215l568 567q-100 62 -216 62q-171 0 -292.5 -121.5t-121.5 -292.5zM391 245q97 -59 209 -59q171 0 292.5 121.5t121.5 292.5 q0 112 -59 209z" />
<glyph unicode="&#xe091;" d="M0 547l600 453v-300h600v-300h-600v-301z" />
<glyph unicode="&#xe092;" d="M0 400v300h600v300l600 -453l-600 -448v301h-600z" />
<glyph unicode="&#xe093;" d="M204 600l450 600l444 -600h-298v-600h-300v600h-296z" />
<glyph unicode="&#xe094;" d="M104 600h296v600h300v-600h298l-449 -600z" />
<glyph unicode="&#xe095;" d="M0 200q6 132 41 238.5t103.5 193t184 138t271.5 59.5v271l600 -453l-600 -448v301q-95 -2 -183 -20t-170 -52t-147 -92.5t-100 -135.5z" />
<glyph unicode="&#xe096;" d="M0 0v400l129 -129l294 294l142 -142l-294 -294l129 -129h-400zM635 777l142 -142l294 294l129 -129v400h-400l129 -129z" />
<glyph unicode="&#xe097;" d="M34 176l295 295l-129 129h400v-400l-129 130l-295 -295zM600 600v400l129 -129l295 295l142 -141l-295 -295l129 -130h-400z" />
<glyph unicode="&#xe101;" d="M23 600q0 118 45.5 224.5t123 184t184 123t224.5 45.5t224.5 -45.5t184 -123t123 -184t45.5 -224.5t-45.5 -224.5t-123 -184t-184 -123t-224.5 -45.5t-224.5 45.5t-184 123t-123 184t-45.5 224.5zM456 851l58 -302q4 -20 21.5 -34.5t37.5 -14.5h54q20 0 37.5 14.5 t21.5 34.5l58 302q4 20 -8 34.5t-33 14.5h-207q-20 0 -32 -14.5t-8 -34.5zM500 300h200v100h-200v-100z" />
<glyph unicode="&#xe102;" d="M0 800h100v-200h400v300h200v-300h400v200h100v100h-111v6t-1 15t-3 18l-34 172q-11 39 -41.5 63t-69.5 24q-32 0 -61 -17l-239 -144q-22 -13 -40 -35q-19 24 -40 36l-238 144q-33 18 -62 18q-39 0 -69.5 -23t-40.5 -61l-35 -177q-2 -8 -3 -18t-1 -15v-6h-111v-100z M100 0h400v400h-400v-400zM200 900q-3 0 14 48t35 96l18 47l214 -191h-281zM700 0v400h400v-400h-400zM731 900l202 197q5 -12 12 -32.5t23 -64t25 -72t7 -28.5h-269z" />
<glyph unicode="&#xe103;" d="M0 -22v143l216 193q-9 53 -13 83t-5.5 94t9 113t38.5 114t74 124q47 60 99.5 102.5t103 68t127.5 48t145.5 37.5t184.5 43.5t220 58.5q0 -189 -22 -343t-59 -258t-89 -181.5t-108.5 -120t-122 -68t-125.5 -30t-121.5 -1.5t-107.5 12.5t-87.5 17t-56.5 7.5l-99 -55z M238.5 300.5q19.5 -6.5 86.5 76.5q55 66 367 234q70 38 118.5 69.5t102 79t99 111.5t86.5 148q22 50 24 60t-6 19q-7 5 -17 5t-26.5 -14.5t-33.5 -39.5q-35 -51 -113.5 -108.5t-139.5 -89.5l-61 -32q-369 -197 -458 -401q-48 -111 -28.5 -117.5z" />
<glyph unicode="&#xe104;" d="M111 408q0 -33 5 -63q9 -56 44 -119.5t105 -108.5q31 -21 64 -16t62 23.5t57 49.5t48 61.5t35 60.5q32 66 39 184.5t-13 157.5q79 -80 122 -164t26 -184q-5 -33 -20.5 -69.5t-37.5 -80.5q-10 -19 -14.5 -29t-12 -26t-9 -23.5t-3 -19t2.5 -15.5t11 -9.5t19.5 -5t30.5 2.5 t42 8q57 20 91 34t87.5 44.5t87 64t65.5 88.5t47 122q38 172 -44.5 341.5t-246.5 278.5q22 -44 43 -129q39 -159 -32 -154q-15 2 -33 9q-79 33 -120.5 100t-44 175.5t48.5 257.5q-13 -8 -34 -23.5t-72.5 -66.5t-88.5 -105.5t-60 -138t-8 -166.5q2 -12 8 -41.5t8 -43t6 -39.5 t3.5 -39.5t-1 -33.5t-6 -31.5t-13.5 -24t-21 -20.5t-31 -12q-38 -10 -67 13t-40.5 61.5t-15 81.5t10.5 75q-52 -46 -83.5 -101t-39 -107t-7.5 -85z" />
<glyph unicode="&#xe105;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5t145.5 -23.5t132.5 -59t116.5 -83.5t97 -90t74.5 -85.5t49 -63.5t20 -30l26 -40l-26 -40q-6 -10 -20 -30t-49 -63.5t-74.5 -85.5t-97 -90t-116.5 -83.5t-132.5 -59t-145.5 -23.5 t-145.5 23.5t-132.5 59t-116.5 83.5t-97 90t-74.5 85.5t-49 63.5t-20 30zM120 600q7 -10 40.5 -58t56 -78.5t68 -77.5t87.5 -75t103 -49.5t125 -21.5t123.5 20t100.5 45.5t85.5 71.5t66.5 75.5t58 81.5t47 66q-1 1 -28.5 37.5t-42 55t-43.5 53t-57.5 63.5t-58.5 54 q49 -74 49 -163q0 -124 -88 -212t-212 -88t-212 88t-88 212q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l105 105q-37 24 -75 72t-57 84l-20 36z" />
<glyph unicode="&#xe106;" d="M-61 600l26 40q6 10 20 30t49 63.5t74.5 85.5t97 90t116.5 83.5t132.5 59t145.5 23.5q61 0 121 -17l37 142h148l-314 -1200h-148l37 143q-82 21 -165 71.5t-140 102t-109.5 112t-72 88.5t-29.5 43zM120 600q210 -282 393 -336l37 141q-107 18 -178.5 101.5t-71.5 193.5 q0 85 46 158q-102 -87 -226 -258zM377 656q49 -124 154 -191l47 47l23 87q-30 28 -59 69t-44 68l-14 26zM780 161l38 145q22 15 44.5 34t46 44t40.5 44t41 50.5t33.5 43.5t33 44t24.5 34q-97 127 -140 175l39 146q67 -54 131.5 -125.5t87.5 -103.5t36 -52l26 -40l-26 -40 q-7 -12 -25.5 -38t-63.5 -79.5t-95.5 -102.5t-124 -100t-146.5 -79z" />
<glyph unicode="&#xe107;" d="M-97.5 34q13.5 -34 50.5 -34h1294q37 0 50.5 35.5t-7.5 67.5l-642 1056q-20 33 -48 36t-48 -29l-642 -1066q-21 -32 -7.5 -66zM155 200l445 723l445 -723h-345v100h-200v-100h-345zM500 600l100 -300l100 300v100h-200v-100z" />
<glyph unicode="&#xe108;" d="M100 262v41q0 20 11 44.5t26 38.5l363 325v339q0 62 44 106t106 44t106 -44t44 -106v-339l363 -325q15 -14 26 -38.5t11 -44.5v-41q0 -20 -12 -26.5t-29 5.5l-359 249v-263q100 -91 100 -113v-64q0 -21 -13 -29t-32 1l-94 78h-222l-94 -78q-19 -9 -32 -1t-13 29v64 q0 22 100 113v263l-359 -249q-17 -12 -29 -5.5t-12 26.5z" />
<glyph unicode="&#xe109;" d="M0 50q0 -20 14.5 -35t35.5 -15h1000q21 0 35.5 15t14.5 35v750h-1100v-750zM0 900h1100v150q0 21 -14.5 35.5t-35.5 14.5h-150v100h-100v-100h-500v100h-100v-100h-150q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 100v100h100v-100h-100zM100 300v100h100v-100h-100z M100 500v100h100v-100h-100zM300 100v100h100v-100h-100zM300 300v100h100v-100h-100zM300 500v100h100v-100h-100zM500 100v100h100v-100h-100zM500 300v100h100v-100h-100zM500 500v100h100v-100h-100zM700 100v100h100v-100h-100zM700 300v100h100v-100h-100zM700 500 v100h100v-100h-100zM900 100v100h100v-100h-100zM900 300v100h100v-100h-100zM900 500v100h100v-100h-100z" />
<glyph unicode="&#xe110;" d="M0 200v200h259l600 600h241v198l300 -295l-300 -300v197h-159l-600 -600h-341zM0 800h259l122 -122l141 142l-181 180h-341v-200zM678 381l141 142l122 -123h159v198l300 -295l-300 -300v197h-241z" />
<glyph unicode="&#xe111;" d="M0 400v600q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-600q0 -41 -29.5 -70.5t-70.5 -29.5h-596l-304 -300v300h-100q-41 0 -70.5 29.5t-29.5 70.5z" />
<glyph unicode="&#xe112;" d="M100 600v200h300v-250q0 -113 6 -145q17 -92 102 -117q39 -11 92 -11q37 0 66.5 5.5t50 15.5t36 24t24 31.5t14 37.5t7 42t2.5 45t0 47v25v250h300v-200q0 -42 -3 -83t-15 -104t-31.5 -116t-58 -109.5t-89 -96.5t-129 -65.5t-174.5 -25.5t-174.5 25.5t-129 65.5t-89 96.5 t-58 109.5t-31.5 116t-15 104t-3 83zM100 900v300h300v-300h-300zM800 900v300h300v-300h-300z" />
<glyph unicode="&#xe113;" d="M-30 411l227 -227l352 353l353 -353l226 227l-578 579z" />
<glyph unicode="&#xe114;" d="M70 797l580 -579l578 579l-226 227l-353 -353l-352 353z" />
<glyph unicode="&#xe115;" d="M-198 700l299 283l300 -283h-203v-400h385l215 -200h-800v600h-196zM402 1000l215 -200h381v-400h-198l299 -283l299 283h-200v600h-796z" />
<glyph unicode="&#xe116;" d="M18 939q-5 24 10 42q14 19 39 19h896l38 162q5 17 18.5 27.5t30.5 10.5h94q20 0 35 -14.5t15 -35.5t-15 -35.5t-35 -14.5h-54l-201 -961q-2 -4 -6 -10.5t-19 -17.5t-33 -11h-31v-50q0 -20 -14.5 -35t-35.5 -15t-35.5 15t-14.5 35v50h-300v-50q0 -20 -14.5 -35t-35.5 -15 t-35.5 15t-14.5 35v50h-50q-21 0 -35.5 15t-14.5 35q0 21 14.5 35.5t35.5 14.5h535l48 200h-633q-32 0 -54.5 21t-27.5 43z" />
<glyph unicode="&#xe117;" d="M0 0v800h1200v-800h-1200zM0 900v100h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-100h-1200z" />
<glyph unicode="&#xe118;" d="M1 0l300 700h1200l-300 -700h-1200zM1 400v600h200q0 41 29.5 70.5t70.5 29.5h300q41 0 70.5 -29.5t29.5 -70.5h500v-200h-1000z" />
<glyph unicode="&#xe119;" d="M302 300h198v600h-198l298 300l298 -300h-198v-600h198l-298 -300z" />
<glyph unicode="&#xe120;" d="M0 600l300 298v-198h600v198l300 -298l-300 -297v197h-600v-197z" />
<glyph unicode="&#xe121;" d="M0 100v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM31 400l172 739q5 22 23 41.5t38 19.5h672q19 0 37.5 -22.5t23.5 -45.5l172 -732h-1138zM800 100h100v100h-100v-100z M1000 100h100v100h-100v-100z" />
<glyph unicode="&#xe122;" d="M-101 600v50q0 24 25 49t50 38l25 13v-250l-11 5.5t-24 14t-30 21.5t-24 27.5t-11 31.5zM99 500v250v5q0 13 0.5 18.5t2.5 13t8 10.5t15 3h200l675 250v-850l-675 200h-38l47 -276q2 -12 -3 -17.5t-11 -6t-21 -0.5h-8h-83q-20 0 -34.5 14t-18.5 35q-56 337 -56 351z M1100 200v850q0 21 14.5 35.5t35.5 14.5q20 0 35 -14.5t15 -35.5v-850q0 -20 -15 -35t-35 -15q-21 0 -35.5 15t-14.5 35z" />
<glyph unicode="&#xe123;" d="M74 350q0 21 13.5 35.5t33.5 14.5h17l118 173l63 327q15 77 76 140t144 83l-18 32q-6 19 3 32t29 13h94q20 0 29 -10.5t3 -29.5l-18 -37q83 -19 144 -82.5t76 -140.5l63 -327l118 -173h17q20 0 33.5 -14.5t13.5 -35.5q0 -20 -13 -40t-31 -27q-22 -9 -63 -23t-167.5 -37 t-251.5 -23t-245.5 20.5t-178.5 41.5l-58 20q-18 7 -31 27.5t-13 40.5zM497 110q12 -49 40 -79.5t63 -30.5t63 30.5t39 79.5q-48 -6 -102 -6t-103 6z" />
<glyph unicode="&#xe124;" d="M21 445l233 -45l-78 -224l224 78l45 -233l155 179l155 -179l45 233l224 -78l-78 224l234 45l-180 155l180 156l-234 44l78 225l-224 -78l-45 233l-155 -180l-155 180l-45 -233l-224 78l78 -225l-233 -44l179 -156z" />
<glyph unicode="&#xe125;" d="M0 200h200v600h-200v-600zM300 275q0 -75 100 -75h61q123 -100 139 -100h250q46 0 83 57l238 344q29 31 29 74v100q0 44 -30.5 84.5t-69.5 40.5h-328q28 118 28 125v150q0 44 -30.5 84.5t-69.5 40.5h-50q-27 0 -51 -20t-38 -48l-96 -198l-145 -196q-20 -26 -20 -63v-400z M400 300v375l150 212l100 213h50v-175l-50 -225h450v-125l-250 -375h-214l-136 100h-100z" />
<glyph unicode="&#xe126;" d="M0 400v600h200v-600h-200zM300 525v400q0 75 100 75h61q123 100 139 100h250q46 0 83 -57l238 -344q29 -31 29 -74v-100q0 -44 -30.5 -84.5t-69.5 -40.5h-328q28 -118 28 -125v-150q0 -44 -30.5 -84.5t-69.5 -40.5h-50q-27 0 -51 20t-38 48l-96 198l-145 196 q-20 26 -20 63zM400 525l150 -212l100 -213h50v175l-50 225h450v125l-250 375h-214l-136 -100h-100v-375z" />
<glyph unicode="&#xe127;" d="M8 200v600h200v-600h-200zM308 275v525q0 17 14 35.5t28 28.5l14 9l362 230q14 6 25 6q17 0 29 -12l109 -112q14 -14 14 -34q0 -18 -11 -32l-85 -121h302q85 0 138.5 -38t53.5 -110t-54.5 -111t-138.5 -39h-107l-130 -339q-7 -22 -20.5 -41.5t-28.5 -19.5h-341 q-7 0 -90 81t-83 94zM408 289l100 -89h293l131 339q6 21 19.5 41t28.5 20h203q16 0 25 15t9 36q0 20 -9 34.5t-25 14.5h-457h-6.5h-7.5t-6.5 0.5t-6 1t-5 1.5t-5.5 2.5t-4 4t-4 5.5q-5 12 -5 20q0 14 10 27l147 183l-86 83l-339 -236v-503z" />
<glyph unicode="&#xe128;" d="M-101 651q0 72 54 110t139 37h302l-85 121q-11 16 -11 32q0 21 14 34l109 113q13 12 29 12q11 0 25 -6l365 -230q7 -4 16.5 -10.5t26 -26t16.5 -36.5v-526q0 -13 -85.5 -93.5t-93.5 -80.5h-342q-15 0 -28.5 20t-19.5 41l-131 339h-106q-84 0 -139 39t-55 111zM-1 601h222 q15 0 28.5 -20.5t19.5 -40.5l131 -339h293l106 89v502l-342 237l-87 -83l145 -184q10 -11 10 -26q0 -11 -5 -20q-1 -3 -3.5 -5.5l-4 -4t-5 -2.5t-5.5 -1.5t-6.5 -1t-6.5 -0.5h-7.5h-6.5h-476v-100zM999 201v600h200v-600h-200z" />
<glyph unicode="&#xe129;" d="M97 719l230 -363q4 -6 10.5 -15.5t26 -25t36.5 -15.5h525q13 0 94 83t81 90v342q0 15 -20 28.5t-41 19.5l-339 131v106q0 84 -39 139t-111 55t-110 -53.5t-38 -138.5v-302l-121 84q-15 12 -33.5 11.5t-32.5 -13.5l-112 -110q-22 -22 -6 -53zM172 739l83 86l183 -146 q22 -18 47 -5q3 1 5.5 3.5l4 4t2.5 5t1.5 5.5t1 6.5t0.5 6v7.5v7v456q0 22 25 31t50 -0.5t25 -30.5v-202q0 -16 20 -29.5t41 -19.5l339 -130v-294l-89 -100h-503zM400 0v200h600v-200h-600z" />
<glyph unicode="&#xe130;" d="M1 585q-15 -31 7 -53l112 -110q13 -13 32 -13.5t34 10.5l121 85l-1 -302q0 -84 38.5 -138t110.5 -54t111 55t39 139v106l339 131q20 6 40.5 19.5t20.5 28.5v342q0 7 -81 90t-94 83h-525q-17 0 -35.5 -14t-28.5 -28l-10 -15zM76 565l237 339h503l89 -100v-294l-340 -130 q-20 -6 -40 -20t-20 -29v-202q0 -22 -25 -31t-50 0t-25 31v456v14.5t-1.5 11.5t-5 12t-9.5 7q-24 13 -46 -5l-184 -146zM305 1104v200h600v-200h-600z" />
<glyph unicode="&#xe131;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q162 0 299.5 -80t217.5 -218t80 -300t-80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 500h300l-2 -194l402 294l-402 298v-197h-298v-201z" />
<glyph unicode="&#xe132;" d="M0 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t231.5 47.5q122 0 232.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-218 -217.5t-300 -80t-299.5 80t-217.5 217.5t-80 299.5zM200 600l400 -294v194h302v201h-300v197z" />
<glyph unicode="&#xe133;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600h200v-300h200v300h200l-300 400z" />
<glyph unicode="&#xe134;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM300 600l300 -400l300 400h-200v300h-200v-300h-200z" />
<glyph unicode="&#xe135;" d="M5 597q0 122 47.5 232.5t127.5 190.5t190.5 127.5t232.5 47.5q121 0 231.5 -47.5t190.5 -127.5t127.5 -190.5t47.5 -232.5q0 -162 -80 -299.5t-217.5 -217.5t-299.5 -80t-300 80t-218 217.5t-80 299.5zM254 780q-8 -34 5.5 -93t7.5 -87q0 -9 17 -44t16 -60q12 0 23 -5.5 t23 -15t20 -13.5q20 -10 108 -42q22 -8 53 -31.5t59.5 -38.5t57.5 -11q8 -18 -15 -55.5t-20 -57.5q12 -21 22.5 -34.5t28 -27t36.5 -17.5q0 -6 -3 -15.5t-3.5 -14.5t4.5 -17q101 -2 221 111q31 30 47 48t34 49t21 62q-14 9 -37.5 9.5t-35.5 7.5q-14 7 -49 15t-52 19 q-9 0 -39.5 -0.5t-46.5 -1.5t-39 -6.5t-39 -16.5q-50 -35 -66 -12q-4 2 -3.5 25.5t0.5 25.5q-6 13 -26.5 17t-24.5 7q2 22 -2 41t-16.5 28t-38.5 -20q-23 -25 -42 4q-19 28 -8 58q8 16 22 22q6 -1 26 -1.5t33.5 -4.5t19.5 -13q12 -19 32 -37.5t34 -27.5l14 -8q0 3 9.5 39.5 t5.5 57.5q-4 23 14.5 44.5t22.5 31.5q5 14 10 35t8.5 31t15.5 22.5t34 21.5q-6 18 10 37q8 0 23.5 -1.5t24.5 -1.5t20.5 4.5t20.5 15.5q-10 23 -30.5 42.5t-38 30t-49 26.5t-43.5 23q11 41 1 44q31 -13 58.5 -14.5t39.5 3.5l11 4q6 36 -17 53.5t-64 28.5t-56 23 q-19 -3 -37 0q-15 -12 -36.5 -21t-34.5 -12t-44 -8t-39 -6q-15 -3 -46 0t-45 -3q-20 -6 -51.5 -25.5t-34.5 -34.5q-3 -11 6.5 -22.5t8.5 -18.5q-3 -34 -27.5 -91t-29.5 -79zM518 915q3 12 16 30.5t16 25.5q10 -10 18.5 -10t14 6t14.5 14.5t16 12.5q0 -18 8 -42.5t16.5 -44 t9.5 -23.5q-6 1 -39 5t-53.5 10t-36.5 16z" />
<glyph unicode="&#xe136;" d="M0 164.5q0 21.5 15 37.5l600 599q-33 101 6 201.5t135 154.5q164 92 306 -9l-259 -138l145 -232l251 126q13 -175 -151 -267q-123 -70 -253 -23l-596 -596q-15 -16 -36.5 -16t-36.5 16l-111 110q-15 15 -15 36.5z" />
<glyph unicode="&#xe137;" horiz-adv-x="1220" d="M0 196v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 596v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000 q-41 0 -70.5 29.5t-29.5 70.5zM0 996v100q0 41 29.5 70.5t70.5 29.5h1000q41 0 70.5 -29.5t29.5 -70.5v-100q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM600 596h500v100h-500v-100zM800 196h300v100h-300v-100zM900 996h200v100h-200v-100z" />
<glyph unicode="&#xe138;" d="M100 1100v100h1000v-100h-1000zM150 1000h900l-350 -500v-300l-200 -200v500z" />
<glyph unicode="&#xe139;" d="M0 200v200h1200v-200q0 -41 -29.5 -70.5t-70.5 -29.5h-1000q-41 0 -70.5 29.5t-29.5 70.5zM0 500v400q0 41 29.5 70.5t70.5 29.5h300v100q0 41 29.5 70.5t70.5 29.5h200q41 0 70.5 -29.5t29.5 -70.5v-100h300q41 0 70.5 -29.5t29.5 -70.5v-400h-500v100h-200v-100h-500z M500 1000h200v100h-200v-100z" />
<glyph unicode="&#xe140;" d="M0 0v400l129 -129l200 200l142 -142l-200 -200l129 -129h-400zM0 800l129 129l200 -200l142 142l-200 200l129 129h-400v-400zM729 329l142 142l200 -200l129 129v-400h-400l129 129zM729 871l200 200l-129 129h400v-400l-129 129l-200 -200z" />
<glyph unicode="&#xe141;" d="M0 596q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 596q0 -172 121.5 -293t292.5 -121t292.5 121t121.5 293q0 171 -121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM291 655 q0 23 15.5 38.5t38.5 15.5t39 -16t16 -38q0 -23 -16 -39t-39 -16q-22 0 -38 16t-16 39zM400 850q0 22 16 38.5t39 16.5q22 0 38 -16t16 -39t-16 -39t-38 -16q-23 0 -39 16.5t-16 38.5zM513 609q0 32 21 56.5t52 29.5l122 126l1 1q-9 14 -9 28q0 22 16 38.5t39 16.5 q22 0 38 -16t16 -39t-16 -39t-38 -16q-16 0 -29 10l-55 -145q17 -22 17 -51q0 -36 -25.5 -61.5t-61.5 -25.5q-37 0 -62.5 25.5t-25.5 61.5zM800 655q0 22 16 38t39 16t38.5 -15.5t15.5 -38.5t-16 -39t-38 -16q-23 0 -39 16t-16 39z" />
<glyph unicode="&#xe142;" d="M-40 375q-13 -95 35 -173q35 -57 94 -89t129 -32q63 0 119 28q33 16 65 40.5t52.5 45.5t59.5 64q40 44 57 61l394 394q35 35 47 84t-3 96q-27 87 -117 104q-20 2 -29 2q-46 0 -79.5 -17t-67.5 -51l-388 -396l-7 -7l69 -67l377 373q20 22 39 38q23 23 50 23q38 0 53 -36 q16 -39 -20 -75l-547 -547q-52 -52 -125 -52q-55 0 -100 33t-54 96q-5 35 2.5 66t31.5 63t42 50t56 54q24 21 44 41l348 348q52 52 82.5 79.5t84 54t107.5 26.5q25 0 48 -4q95 -17 154 -94.5t51 -175.5q-7 -101 -98 -192l-252 -249l-253 -256l7 -7l69 -60l517 511 q67 67 95 157t11 183q-16 87 -67 154t-130 103q-69 33 -152 33q-107 0 -197 -55q-40 -24 -111 -95l-512 -512q-68 -68 -81 -163z" />
<glyph unicode="&#xe143;" d="M79 784q0 131 99 229.5t230 98.5q144 0 242 -129q103 129 245 129q130 0 227 -98.5t97 -229.5q0 -46 -17.5 -91t-61 -99t-77 -89.5t-104.5 -105.5q-197 -191 -293 -322l-17 -23l-16 23q-43 58 -100 122.5t-92 99.5t-101 100l-84.5 84.5t-68 74t-60 78t-33.5 70.5t-15 78z M250 784q0 -27 30.5 -70t61.5 -75.5t95 -94.5l22 -22q93 -90 190 -201q82 92 195 203l12 12q64 62 97.5 97t64.5 79t31 72q0 71 -48 119.5t-106 48.5q-73 0 -131 -83l-118 -171l-114 174q-51 80 -124 80q-59 0 -108.5 -49.5t-49.5 -118.5z" />
<glyph unicode="&#xe144;" d="M57 353q0 -94 66 -160l141 -141q66 -66 159 -66q95 0 159 66l283 283q66 66 66 159t-66 159l-141 141q-12 12 -19 17l-105 -105l212 -212l-389 -389l-247 248l95 95l-18 18q-46 45 -75 101l-55 -55q-66 -66 -66 -159zM269 706q0 -93 66 -159l141 -141l19 -17l105 105 l-212 212l389 389l247 -247l-95 -96l18 -18q46 -46 77 -99l29 29q35 35 62.5 88t27.5 96q0 93 -66 159l-141 141q-66 66 -159 66q-95 0 -159 -66l-283 -283q-66 -64 -66 -159z" />
<glyph unicode="&#xe145;" d="M200 100v953q0 21 30 46t81 48t129 38t163 15t162 -15t127 -38t79 -48t29 -46v-953q0 -41 -29.5 -70.5t-70.5 -29.5h-600q-41 0 -70.5 29.5t-29.5 70.5zM300 300h600v700h-600v-700zM496 150q0 -43 30.5 -73.5t73.5 -30.5t73.5 30.5t30.5 73.5t-30.5 73.5t-73.5 30.5 t-73.5 -30.5t-30.5 -73.5z" />
<glyph unicode="&#xe146;" d="M0 0l303 380l207 208l-210 212h300l267 279l-35 36q-15 14 -15 35t15 35q14 15 35 15t35 -15l283 -282q15 -15 15 -36t-15 -35q-14 -15 -35 -15t-35 15l-36 35l-279 -267v-300l-212 210l-208 -207z" />
<glyph unicode="&#xe148;" d="M295 433h139q5 -77 48.5 -126.5t117.5 -64.5v335l-27 7q-46 14 -79 26.5t-72 36t-62.5 52t-40 72.5t-16.5 99q0 92 44 159.5t109 101t144 40.5v78h100v-79q38 -4 72.5 -13.5t75.5 -31.5t71 -53.5t51.5 -84t24.5 -118.5h-159q-8 72 -35 109.5t-101 50.5v-307l64 -14 q34 -7 64 -16.5t70 -31.5t67.5 -52t47.5 -80.5t20 -112.5q0 -139 -89 -224t-244 -96v-77h-100v78q-152 17 -237 104q-40 40 -52.5 93.5t-15.5 139.5zM466 889q0 -29 8 -51t16.5 -34t29.5 -22.5t31 -13.5t38 -10q7 -2 11 -3v274q-61 -8 -97.5 -37.5t-36.5 -102.5zM700 237 q170 18 170 151q0 64 -44 99.5t-126 60.5v-311z" />
<glyph unicode="&#xe149;" d="M100 600v100h166q-24 49 -44 104q-10 26 -14.5 55.5t-3 72.5t25 90t68.5 87q97 88 263 88q129 0 230 -89t101 -208h-153q0 52 -34 89.5t-74 51.5t-76 14q-37 0 -79 -14.5t-62 -35.5q-41 -44 -41 -101q0 -11 2.5 -24.5t5.5 -24t9.5 -26.5t10.5 -25t14 -27.5t14 -25.5 t15.5 -27t13.5 -24h242v-100h-197q8 -50 -2.5 -115t-31.5 -94q-41 -59 -99 -113q35 11 84 18t70 7q32 1 102 -16t104 -17q76 0 136 30l50 -147q-41 -25 -80.5 -36.5t-59 -13t-61.5 -1.5q-23 0 -128 33t-155 29q-39 -4 -82 -17t-66 -25l-24 -11l-55 145l16.5 11t15.5 10 t13.5 9.5t14.5 12t14.5 14t17.5 18.5q48 55 54 126.5t-30 142.5h-221z" />
<glyph unicode="&#xe150;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM602 900l298 300l298 -300h-198v-900h-200v900h-198z" />
<glyph unicode="&#xe151;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v200h100v-100h200v-100h-300zM700 400v100h300v-200h-99v-100h-100v100h99v100h-200zM700 700v500h300v-500h-100v100h-100v-100h-100zM801 900h100v200h-100v-200z" />
<glyph unicode="&#xe152;" d="M2 300h198v900h200v-900h198l-298 -300zM700 0v500h300v-500h-100v100h-100v-100h-100zM700 700v200h100v-100h200v-100h-300zM700 1100v100h300v-200h-99v-100h-100v100h99v100h-200zM801 200h100v200h-100v-200z" />
<glyph unicode="&#xe153;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 100v400h300v-500h-100v100h-200zM800 1100v100h200v-500h-100v400h-100zM901 200h100v200h-100v-200z" />
<glyph unicode="&#xe154;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM800 400v100h200v-500h-100v400h-100zM800 800v400h300v-500h-100v100h-200zM901 900h100v200h-100v-200z" />
<glyph unicode="&#xe155;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h500v-200h-500zM700 400v200h400v-200h-400zM700 700v200h300v-200h-300zM700 1000v200h200v-200h-200z" />
<glyph unicode="&#xe156;" d="M2 300l298 -300l298 300h-198v900h-200v-900h-198zM700 100v200h200v-200h-200zM700 400v200h300v-200h-300zM700 700v200h400v-200h-400zM700 1000v200h500v-200h-500z" />
<glyph unicode="&#xe157;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q162 0 281 -118.5t119 -281.5v-300q0 -165 -118.5 -282.5t-281.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500z" />
<glyph unicode="&#xe158;" d="M0 400v300q0 163 119 281.5t281 118.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-163 0 -281.5 117.5t-118.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM400 300l333 250l-333 250v-500z" />
<glyph unicode="&#xe159;" d="M0 400v300q0 163 117.5 281.5t282.5 118.5h300q163 0 281.5 -119t118.5 -281v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-300q-165 0 -282.5 117.5t-117.5 282.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 700l250 -333l250 333h-500z" />
<glyph unicode="&#xe160;" d="M0 400v300q0 165 117.5 282.5t282.5 117.5h300q165 0 282.5 -117.5t117.5 -282.5v-300q0 -162 -118.5 -281t-281.5 -119h-300q-165 0 -282.5 118.5t-117.5 281.5zM200 300q0 -41 29.5 -70.5t70.5 -29.5h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5 h-500q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM300 400h500l-250 333z" />
<glyph unicode="&#xe161;" d="M0 400v300h300v200l400 -350l-400 -350v200h-300zM500 0v200h500q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-500v200h400q165 0 282.5 -117.5t117.5 -282.5v-300q0 -165 -117.5 -282.5t-282.5 -117.5h-400z" />
<glyph unicode="&#xe162;" d="M216 519q10 -19 32 -19h302q-155 -438 -160 -458q-5 -21 4 -32l9 -8l9 -1q13 0 26 16l538 630q15 19 6 36q-8 18 -32 16h-300q1 4 78 219.5t79 227.5q2 17 -6 27l-8 8h-9q-16 0 -25 -15q-4 -5 -98.5 -111.5t-228 -257t-209.5 -238.5q-17 -19 -7 -40z" />
<glyph unicode="&#xe163;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q47 0 100 15v185h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h500v185q-14 4 -114 7.5t-193 5.5l-93 2q-165 0 -282.5 -117.5t-117.5 -282.5v-300zM600 400v300h300v200l400 -350l-400 -350v200h-300z " />
<glyph unicode="&#xe164;" d="M0 400q0 -165 117.5 -282.5t282.5 -117.5h300q163 0 281.5 117.5t118.5 282.5v98l-78 73l-122 -123v-148q0 -41 -29.5 -70.5t-70.5 -29.5h-500q-41 0 -70.5 29.5t-29.5 70.5v500q0 41 29.5 70.5t70.5 29.5h156l118 122l-74 78h-100q-165 0 -282.5 -117.5t-117.5 -282.5 v-300zM496 709l353 342l-149 149h500v-500l-149 149l-342 -353z" />
<glyph unicode="&#xe165;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM406 600 q0 80 57 137t137 57t137 -57t57 -137t-57 -137t-137 -57t-137 57t-57 137z" />
<glyph unicode="&#xe166;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 800l445 -500l450 500h-295v400h-300v-400h-300zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe167;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 700h300v-300h300v300h295l-445 500zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe168;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 705l305 -305l596 596l-154 155l-442 -442l-150 151zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe169;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM100 988l97 -98l212 213l-97 97zM200 401h700v699l-250 -239l-149 149l-212 -212l149 -149zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe170;" d="M0 0v275q0 11 7 18t18 7h1048q11 0 19 -7.5t8 -17.5v-275h-1100zM200 612l212 -212l98 97l-213 212zM300 1200l239 -250l-149 -149l212 -212l149 148l248 -237v700h-699zM900 150h100v50h-100v-50z" />
<glyph unicode="&#xe171;" d="M23 415l1177 784v-1079l-475 272l-310 -393v416h-392zM494 210l672 938l-672 -712v-226z" />
<glyph unicode="&#xe172;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-850q0 -21 -15 -35.5t-35 -14.5h-150v400h-700v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200z" />
<glyph unicode="&#xe173;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-218l-276 -275l-120 120l-126 -127h-378v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM581 306l123 123l120 -120l353 352l123 -123l-475 -476zM600 1000h100v200h-100v-200z" />
<glyph unicode="&#xe174;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-269l-103 -103l-170 170l-298 -298h-329v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 1000h100v200h-100v-200zM700 133l170 170l-170 170l127 127l170 -170l170 170l127 -128l-170 -169l170 -170 l-127 -127l-170 170l-170 -170z" />
<glyph unicode="&#xe175;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-300h-400v-200h-500v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300l300 -300l300 300h-200v300h-200v-300h-200zM600 1000v200h100v-200h-100z" />
<glyph unicode="&#xe176;" d="M0 150v1000q0 20 14.5 35t35.5 15h250v-300h500v300h100l200 -200v-402l-200 200l-298 -298h-402v-400h-150q-21 0 -35.5 14.5t-14.5 35.5zM600 300h200v-300h200v300h200l-300 300zM600 1000v200h100v-200h-100z" />
<glyph unicode="&#xe177;" d="M0 250q0 -21 14.5 -35.5t35.5 -14.5h1100q21 0 35.5 14.5t14.5 35.5v550h-1200v-550zM0 900h1200v150q0 21 -14.5 35.5t-35.5 14.5h-1100q-21 0 -35.5 -14.5t-14.5 -35.5v-150zM100 300v200h400v-200h-400z" />
<glyph unicode="&#xe178;" d="M0 400l300 298v-198h400v-200h-400v-198zM100 800v200h100v-200h-100zM300 800v200h100v-200h-100zM500 800v200h400v198l300 -298l-300 -298v198h-400zM800 300v200h100v-200h-100zM1000 300h100v200h-100v-200z" />
<glyph unicode="&#xe179;" d="M100 700v400l50 100l50 -100v-300h100v300l50 100l50 -100v-300h100v300l50 100l50 -100v-400l-100 -203v-447q0 -21 -14.5 -35.5t-35.5 -14.5h-200q-21 0 -35.5 14.5t-14.5 35.5v447zM800 597q0 -29 10.5 -55.5t25 -43t29 -28.5t25.5 -18l10 -5v-397q0 -21 14.5 -35.5 t35.5 -14.5h200q21 0 35.5 14.5t14.5 35.5v1106q0 31 -18 40.5t-44 -7.5l-276 -117q-25 -16 -43.5 -50.5t-18.5 -65.5v-359z" />
<glyph unicode="&#xe180;" d="M100 0h400v56q-75 0 -87.5 6t-12.5 44v394h500v-394q0 -38 -12.5 -44t-87.5 -6v-56h400v56q-4 0 -11 0.5t-24 3t-30 7t-24 15t-11 24.5v888q0 22 25 34.5t50 13.5l25 2v56h-400v-56q75 0 87.5 -6t12.5 -44v-394h-500v394q0 38 12.5 44t87.5 6v56h-400v-56q4 0 11 -0.5 t24 -3t30 -7t24 -15t11 -24.5v-888q0 -22 -25 -34.5t-50 -13.5l-25 -2v-56z" />
<glyph unicode="&#xe181;" d="M0 300q0 -41 29.5 -70.5t70.5 -29.5h300q41 0 70.5 29.5t29.5 70.5v500q0 41 -29.5 70.5t-70.5 29.5h-300q-41 0 -70.5 -29.5t-29.5 -70.5v-500zM100 100h400l200 200h105l295 98v-298h-425l-100 -100h-375zM100 300v200h300v-200h-300zM100 600v200h300v-200h-300z M100 1000h400l200 -200v-98l295 98h105v200h-425l-100 100h-375zM700 402v163l400 133v-163z" />
<glyph unicode="&#xe182;" d="M16.5 974.5q0.5 -21.5 16 -90t46.5 -140t104 -177.5t175 -208q103 -103 207.5 -176t180 -103.5t137 -47t92.5 -16.5l31 1l163 162q16 17 13 40.5t-22 37.5l-192 136q-19 14 -45 12t-42 -19l-119 -118q-143 103 -267 227q-126 126 -227 268l118 118q17 17 20 41.5 t-11 44.5l-139 194q-14 19 -36.5 22t-40.5 -14l-162 -162q-1 -11 -0.5 -32.5z" />
<glyph unicode="&#xe183;" d="M0 50v212q0 20 10.5 45.5t24.5 39.5l365 303v50q0 4 1 10.5t12 22.5t30 28.5t60 23t97 10.5t97 -10t60 -23.5t30 -27.5t12 -24l1 -10v-50l365 -303q14 -14 24.5 -39.5t10.5 -45.5v-212q0 -21 -15 -35.5t-35 -14.5h-1100q-21 0 -35.5 14.5t-14.5 35.5zM0 712 q0 -21 14.5 -33.5t34.5 -8.5l202 33q20 4 34.5 21t14.5 38v146q141 24 300 24t300 -24v-146q0 -21 14.5 -38t34.5 -21l202 -33q20 -4 34.5 8.5t14.5 33.5v200q-6 8 -19 20.5t-63 45t-112 57t-171 45t-235 20.5q-92 0 -175 -10.5t-141.5 -27t-108.5 -36.5t-81.5 -40 t-53.5 -36.5t-31 -27.5l-9 -10v-200z" />
<glyph unicode="&#xe184;" d="M100 0v100h1100v-100h-1100zM175 200h950l-125 150v250l100 100v400h-100v-200h-100v200h-200v-200h-100v200h-200v-200h-100v200h-100v-400l100 -100v-250z" />
<glyph unicode="&#xe185;" d="M100 0h300v400q0 41 -29.5 70.5t-70.5 29.5h-100q-41 0 -70.5 -29.5t-29.5 -70.5v-400zM500 0v1000q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-1000h-300zM900 0v700q0 41 29.5 70.5t70.5 29.5h100q41 0 70.5 -29.5t29.5 -70.5v-700h-300z" />
<glyph unicode="&#xe186;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
<glyph unicode="&#xe187;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h100v200h100v-200h100v500h-100v-200h-100v200h-100v-500zM600 300h200v100h100v300h-100v100h-200v-500 zM700 400v300h100v-300h-100z" />
<glyph unicode="&#xe188;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v100h-200v300h200v100h-300v-500zM600 300h300v100h-200v300h200v100h-300v-500z" />
<glyph unicode="&#xe189;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 550l300 -150v300zM600 400l300 150l-300 150v-300z" />
<glyph unicode="&#xe190;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300v500h700v-500h-700zM300 400h130q41 0 68 42t27 107t-28.5 108t-66.5 43h-130v-300zM575 549 q0 -65 27 -107t68 -42h130v300h-130q-38 0 -66.5 -43t-28.5 -108z" />
<glyph unicode="&#xe191;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v300h-200v100h200v100h-300v-300h200v-100h-200v-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
<glyph unicode="&#xe192;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 300h300v400h-200v100h-100v-500zM301 400v200h100v-200h-100zM601 300h100v100h-100v-100zM700 700h100 v-400h100v500h-200v-100z" />
<glyph unicode="&#xe193;" d="M-100 300v500q0 124 88 212t212 88h700q124 0 212 -88t88 -212v-500q0 -124 -88 -212t-212 -88h-700q-124 0 -212 88t-88 212zM100 200h900v700h-900v-700zM200 700v100h300v-300h-99v-100h-100v100h99v200h-200zM201 300v100h100v-100h-100zM601 300v100h100v-100h-100z M700 700v100h200v-500h-100v400h-100z" />
<glyph unicode="&#xe194;" d="M4 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM186 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 500v200 l100 100h300v-100h-300v-200h300v-100h-300z" />
<glyph unicode="&#xe195;" d="M0 600q0 162 80 299t217 217t299 80t299 -80t217 -217t80 -299t-80 -299t-217 -217t-299 -80t-299 80t-217 217t-80 299zM182 600q0 -171 121.5 -292.5t292.5 -121.5t292.5 121.5t121.5 292.5t-121.5 292.5t-292.5 121.5t-292.5 -121.5t-121.5 -292.5zM400 400v400h300 l100 -100v-100h-100v100h-200v-100h200v-100h-200v-100h-100zM700 400v100h100v-100h-100z" />
<glyph unicode="&#xe197;" d="M-14 494q0 -80 56.5 -137t135.5 -57h222v300h400v-300h128q120 0 205 86t85 208q0 120 -85 206.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200h200v300h200v-300 h200l-300 -300z" />
<glyph unicode="&#xe198;" d="M-14 494q0 -80 56.5 -137t135.5 -57h8l414 414l403 -403q94 26 154.5 104t60.5 178q0 121 -85 207.5t-205 86.5q-46 0 -90 -14q-44 97 -134.5 156.5t-200.5 59.5q-152 0 -260 -107.5t-108 -260.5q0 -25 2 -37q-66 -14 -108.5 -67.5t-42.5 -122.5zM300 200l300 300 l300 -300h-200v-300h-200v300h-200z" />
<glyph unicode="&#xe199;" d="M100 200h400v-155l-75 -45h350l-75 45v155h400l-270 300h170l-270 300h170l-300 333l-300 -333h170l-270 -300h170z" />
<glyph unicode="&#xe200;" d="M121 700q0 -53 28.5 -97t75.5 -65q-4 -16 -4 -38q0 -74 52.5 -126.5t126.5 -52.5q56 0 100 30v-306l-75 -45h350l-75 45v306q46 -30 100 -30q74 0 126.5 52.5t52.5 126.5q0 24 -9 55q50 32 79.5 83t29.5 112q0 90 -61.5 155.5t-150.5 71.5q-26 89 -99.5 145.5 t-167.5 56.5q-116 0 -197.5 -81.5t-81.5 -197.5q0 -4 1 -12t1 -11q-14 2 -23 2q-74 0 -126.5 -52.5t-52.5 -126.5z" />
</font>
</defs></svg>

After

Width:  |  Height:  |  Size: 61 KiB

View File

@ -0,0 +1,31 @@
/*
* 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';
angular.module('activitiModeler')
.controller('HeaderController', ['$rootScope', '$scope', '$http', '$timeout', function ($rootScope, $scope, $http, $timeout) {
// Add reference to global header-config
$scope.headerConfig = KISBPM.HEADER_CONFIG;
// TODO: generate setting-menu items
// TODO: generate user-menu items
}]);

View File

@ -0,0 +1,291 @@
{
"HEADER.BRAND" : "Activiti Editor",
"HEADER.BRAND_TAGLINE" : "powered by Alfresco",
"PAGE.HEADER" : "Orchestration Details",
"ACTION.OK" : "Ok",
"ACTION.SAVE" : "Save",
"ACTION.SAVE-AND-CLOSE" : "Save and close editor",
"ACTION.SEND" : "Send",
"ACTION.CANCEL" : "Cancel",
"ACTION.SELECT" : "Select",
"ACTION.ADD" : "Add",
"ACTION.REMOVE" : "Remove",
"ACTION.MOVE.UP" : "Move entry up",
"ACTION.MOVE.DOWN" : "Move entry down",
"MAIN_NAVIGATION_ORCHESTRATIONS" : "Orchestrations",
"MAIN_NAVIGATION_DISPATCH_RULES" : "Dispatch Rules",
"MAIN_NAVIGATION_ASSET_GROUPS" : "Assert Groups",
"MAIN_NAVIGATION_SOLUTIONS" : "Solutions",
"TOOLBAR.ACTION.CLOSE" : "Close the editor and go back to the overview page",
"TOOLBAR.ACTION.SAVE" : "Save the model",
"TOOLBAR.ACTION.VALIDATE": "Validate the model",
"TOOLBAR.ACTION.CUT" : "Cut (select one or more elements in your business process)",
"TOOLBAR.ACTION.COPY" : "Copy (select one or more elements in your business process)",
"TOOLBAR.ACTION.PASTE" : "Paste",
"TOOLBAR.ACTION.DELETE" : "Delete the selected element",
"TOOLBAR.ACTION.UNDO" : "Undo",
"TOOLBAR.ACTION.REDO" : "Redo",
"TOOLBAR.ACTION.ZOOMIN" : "Zoom in",
"TOOLBAR.ACTION.ZOOMOUT" : "Zoom out",
"TOOLBAR.ACTION.ZOOMACTUAL" : "Zoom to actual size",
"TOOLBAR.ACTION.ZOOMFIT" : "Zoom to fit",
"TOOLBAR.ACTION.MOVE" : "Move",
"TOOLBAR.ACTION.IMPORT" : "Import",
"TOOLBAR.ACTION.EXPORT" : "Export",
"TOOLBAR.ACTION.BENDPOINT.ADD" : "Add bend-point to the selected sequence flow",
"TOOLBAR.ACTION.BENDPOINT.REMOVE" : "Remove bend-point from the selected sequence flow",
"TOOLBAR.ACTION.ALIGNHORIZONTAL" : "Align model horizontal",
"TOOLBAR.ACTION.ALIGNVERTICAL" : "Align model vertical",
"TOOLBAR.ACTION.SAMESIZE" : "Same size",
"TOOLBAR.ACTION.HELP": "Start the guided tour",
"TOOLBAR.ACTION.FEEDBACK": "Provide feedback",
"KICKSTART.PROCESS_TOOLBAR.ACTION.SAVE" : "Save the model",
"KICKSTART.PROCESS_TOOLBAR.ACTION.VALIDATE": "Validate the model",
"KICKSTART.PROCESS_TOOLBAR.ACTION.HELP": "Start the guided tour",
"KICKSTART.PROCESS_TOOLBAR.ACTION.FEEDBACK": "Provide feedback",
"FORM_TOOLBAR.ACTION.SAVE" : "Save the model",
"FORM_TOOLBAR.ACTION.VALIDATE": "Validate the model",
"FORM_TOOLBAR.ACTION.HELP": "Start the guided tour",
"FORM_TOOLBAR.ACTION.FEEDBACK": "Provide feedback",
"APP_DEFINITION_TOOLBAR.ACTION.SAVE" : "Save the app definition",
"APP_DEFINITION_TOOLBAR.ACTION.VALIDATE" : "Validate the app definition",
"APP_DEFINITION_TOOLBAR.ACTION.HELP" : "Start the guided tour",
"APP_DEFINITION_TOOLBAR.ACTION.FEEDBACK" : "Provide feedback",
"BUTTON.ACTION.DELETE.TOOLTIP": "Delete the element from the model",
"BUTTON.ACTION.MORPH.TOOLTIP": "Change the element type",
"ELEMENT.AUTHOR" : "Author",
"ELEMENT.DATE_CREATED" : "Date created",
"ELEMENT.SELECTED_EMPTY_TITLE" : "(No name)",
"PROPERTY.REMOVED" : "removed",
"PROPERTY.EMPTY" : "No value",
"PROPERTY.PROPERTY.EDIT.TITLE" : "Change value for \"{{title}}\"",
"PROPERTY.FEEDBACK.TITLE" : "Please fill-in your feedback",
"PROPERTY.ASSIGNMENT.TITLE" : "Assignment",
"PROPERTY.ASSIGNMENT.TYPE" : "Type",
"PROPERTY.ASSIGNMENT.TYPE.IDENTITYSTORE" : "Identity store",
"PROPERTY.ASSIGNMENT.TYPE.STATIC" : "Static values",
"PROPERTY.ASSIGNMENT.ASSIGNEE" : "Assignee",
"PROPERTY.ASSIGNMENT.MATCHING" : "Use &uparrow; and &downarrow; to select and press Enter to confirm or use the mouse",
"PROPERTY.ASSIGNMENT.ASSIGNEE_PLACEHOLDER" : "Enter an assignee",
"PROPERTY.ASSIGNMENT.EMPTY" : "No assignment selected",
"PROPERTY.ASSIGNMENT.ASSIGNEE_DISPLAY" : "Assignee {{assignee}}",
"PROPERTY.ASSIGNMENT.CANDIDATE_USERS_DISPLAY" : "{{length}} Candidate users",
"PROPERTY.ASSIGNMENT.CANDIDATE_USERS" : "Candidate users",
"PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS_DISPLAY" : "{{length}} Candidate groups",
"PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS" : "Candidate groups",
"PROPERTY.ASSIGNMENT.USER_IDM_DISPLAY": "User {{firstName}} {{lastName}}",
"PROPERTY.ASSIGNMENT.USER_IDM_EMAIL_DISPLAY": "User {{email}}",
"PROPERTY.ASSIGNMENT.IDM_EMPTY" : "Process initiator",
"PROPERTY.ASSIGNMENT.IDM.TYPE" : "Assignment",
"PROPERTY.ASSIGNMENT.IDM.NO_CANDIDATE_USERS" : "No candidate users selected...",
"PROPERTY.ASSIGNMENT.IDM.NO_CANDIDATE_GROUPS" : "No candidate groups selected...",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.INITIATOR" : "Assigned to process initiator",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.USER" : "Assigned to single user",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.USERS" : "Candidate users",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.GROUPS" : "Candidate groups",
"PROPERTY.ASSIGNMENT.EMAIL.HELP" : "Type an email address and press Enter to continue",
"PROPERTY.EXECUTIONLISTENERS.DISPLAY" : "{{length}} execution listeners",
"PROPERTY.EXECUTIONLISTENERS.EMPTY" : "No execution listeners configured",
"PROPERTY.EXECUTIONLISTENERS.EVENT" : "Event",
"PROPERTY.EXECUTIONLISTENERS.CLASS" : "Class",
"PROPERTY.EXECUTIONLISTENERS.CLASS.PLACEHOLDER" : "Enter a classname",
"PROPERTY.EXECUTIONLISTENERS.EXPRESSION" : "Expression",
"PROPERTY.EXECUTIONLISTENERS.EXPRESSION.PLACEHOLDER" : "Enter an expression",
"PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION" : "Delegate expression",
"PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "Enter a delegate expression",
"PROPERTY.EXECUTIONLISTENERS.UNSELECTED" : "No execution listener selected",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME" : "Name",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME.PLACEHOLDER" : "Enter a name",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION" : "Expression",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER" : "Enter an expression",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE" : "String value",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER" : "Enter a string value",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING" : "String",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING.PLACEHOLDER" : "Enter a string",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.IMPLEMENTATION" : "Implementation",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.EMPTY" : "No Field selected",
"PROPERTY.FIELDS" : "{{length}} fields",
"PROPERTY.FIELDS.EMPTY" : "No fields selected",
"PROPERTY.FIELDS.NAME" : "Name",
"PROPERTY.FIELDS.NAME.PLACEHOLDER" : "Enter a name",
"PROPERTY.FIELDS.EXPRESSION" : "Expression",
"PROPERTY.FIELDS.EXPRESSION.PLACEHOLDER" : "Enter an expression",
"PROPERTY.FIELDS.STRINGVALUE" : "String value",
"PROPERTY.FIELDS.STRINGVALUE.PLACEHOLDER" : "Enter a string value",
"PROPERTY.FIELDS.STRING" : "String",
"PROPERTY.FIELDS.STRING.PLACEHOLDER" : "Enter a string",
"PROPERTY.FIELDS.IMPLEMENTATION" : "Implementation",
"PROPERTY.FIELDS.UNSELECTED" : "No Field selected",
"PROPERTY.FORMPROPERTIES.VALUE" : "{{length}} form properties",
"PROPERTY.FORMPROPERTIES.EMPTY" : "No form properties selected",
"PROPERTY.FORMPROPERTIES.ID" : "Id",
"PROPERTY.FORMPROPERTIES.ID.PLACEHOLDER" : "Enter an id",
"PROPERTY.FORMPROPERTIES.NAME" : "Name",
"PROPERTY.FORMPROPERTIES.NAME.PLACEHOLDER" : "Enter a name",
"PROPERTY.FORMPROPERTIES.TYPE" : "Type",
"PROPERTY.FORMPROPERTIES.DATEPATTERN" : "Date pattern",
"PROPERTY.FORMPROPERTIES.DATEPATTERN.PLACEHOLDER" : "Enter date pattern",
"PROPERTY.FORMPROPERTIES.VALUES" : "Values",
"PROPERTY.FORMPROPERTIES.ENUMVALUES.EMPTY" : "No enum value selected",
"PROPERTY.FORMPROPERTIES.VALUES.ID" : "Id",
"PROPERTY.FORMPROPERTIES.VALUES.NAME" : "Name",
"PROPERTY.FORMPROPERTIES.VALUES.ID.PLACEHOLDER" : "Enter id of a value",
"PROPERTY.FORMPROPERTIES.VALUES.NAME.PLACEHOLDER" : "Enter name of a value",
"PROPERTY.FORMPROPERTIES.EXPRESSION" : "Expression",
"PROPERTY.FORMPROPERTIES.EXPRESSION.PLACEHOLDER" : "Enter an expression",
"PROPERTY.FORMPROPERTIES.VARIABLE" : "Variable",
"PROPERTY.FORMPROPERTIES.VARIABLE.PLACEHOLDER" : "Enter a variable",
"PROPERTY.FORMPROPERTIES.REQUIRED" : "Required",
"PROPERTY.FORMPROPERTIES.READABLE" : "Readable",
"PROPERTY.FORMPROPERTIES.WRITABLE" : "Writable",
"PROPERTY.INPARAMETERS.VALUE" : "{{length}} in-parameters",
"PROPERTY.INPARAMETERS.EMPTY" : "No in-parameters configured",
"PROPERTY.OUTPARAMETERS.VALUE" : "{{length}} out-parameters",
"PROPERTY.OUTPARAMETERS.EMPTY" : "No out-parameters configured",
"PROPERTY.PARAMETER.SOURCE" : "Source",
"PROPERTY.PARAMETER.SOURCE.PLACEHOLDER" : "Enter a source",
"PROPERTY.PARAMETER.SOURCEEXPRESSION" : "Source expression",
"PROPERTY.PARAMETER.SOURCEEXPRESSION.PLACEHOLDER" : "Enter a source expression",
"PROPERTY.PARAMETER.TARGET" : "Target",
"PROPERTY.PARAMETER.TARGET.PLACEHOLDER" : "Enter a target",
"PROPERTY.PARAMETER.EMPTY" : "No parameter selected",
"PROPERTY.SUBPROCESSREFERENCE.EMPTY" : "No reference selected",
"PROPERTY.SUBPROCESSREFERENCE.TITLE" : "Collapsed subprocess reference",
"PROPERTY.SUBPROCESSREFERENCE.ERROR.SUBPROCESS" : "There was an error loading the subprocesses. Try again later",
"PROPERTY.SUBPROCESSREFERENCE.FOLDER.ROOT" : "Folders",
"PROPERTY.SUBPROCESSREFERENCE.FOLDER.LOADING" : "Loading folders...",
"PROPERTY.SUBPROCESSREFERENCE.FOLDER.EMPTY" : "This folder contains no sub-folders",
"PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.LOADING" : "Loading subprocesses...",
"PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.EMPTY" : "This folder contains no subprocesses",
"PROPERTY.FORMREFERENCE.EMPTY" : "No reference selected",
"PROPERTY.FORMREFERENCE.TITLE" : "Form reference",
"PROPERTY.FORMREFERENCE.ERROR.FORM" : "There was an error loading the forms. Try again later",
"PROPERTY.FORMREFERENCE.FOLDER.ROOT" : "Folders",
"PROPERTY.FORMREFERENCE.FOLDER.LOADING" : "Loading folders...",
"PROPERTY.FORMREFERENCE.FOLDER.EMPTY" : "This folder contains no sub-folders",
"PROPERTY.FORMREFERENCE.FORM.LOADING" : "Loading forms...",
"PROPERTY.FORMREFERENCE.FORM.EMPTY" : "This folder contains no forms",
"PROPERTY.TASKLISTENERS.VALUE" : "{{length}} task listeners",
"PROPERTY.TASKLISTENERS.EMPTY" : "No task listeners configured",
"PROPERTY.TASKLISTENERS.EVENT" : "Event",
"PROPERTY.TASKLISTENERS.CLASS" : "Class",
"PROPERTY.TASKLISTENERS.CLASS.PLACEHOLDER" : "Enter a classname",
"PROPERTY.TASKLISTENERS.EXPRESSION" : "Expression",
"PROPERTY.TASKLISTENERS.EXPRESSION.PLACEHOLDER" : "Enter an expression",
"PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION" : "Delegate expression",
"PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "Enter a delegate expression",
"PROPERTY.TASKLISTENERS.UNSELECTED" : "No task listener selected",
"PROPERTY.TASKLISTENERS.FIELDS.NAME" : "Name",
"PROPERTY.TASKLISTENERS.FIELDS.NAME.PLACEHOLDER" : "Enter a name",
"PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION" : "Expression",
"PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER" : "Enter an expression",
"PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE" : "String value",
"PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER" : "Enter a string value",
"PROPERTY.TASKLISTENERS.FIELDS.STRING" : "String",
"PROPERTY.TASKLISTENERS.FIELDS.STRING.PLACEHOLDER" : "Enter a string",
"PROPERTY.TASKLISTENERS.FIELDS.IMPLEMENTATION" : "Implementation",
"PROPERTY.TASKLISTENERS.FIELDS.EMPTY" : "No Field selected",
"PROPERTY.EVENTLISTENERS.DISPLAY" : "{{length}} event listeners",
"PROPERTY.EVENTLISTENERS.EMPTY" : "No event listeners configured",
"PROPERTY.EVENTLISTENERS.EVENTS": "Events",
"PROPERTY.EVENTLISTENERS.RETHROW": "Rethrow event?",
"PROPERTY.EVENTLISTENERS.CLASS" : "Class",
"PROPERTY.EVENTLISTENERS.CLASS.PLACEHOLDER" : "Enter a classname",
"PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION" : "Delegate expression",
"PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "Enter a delegate expression",
"PROPERTY.EVENTLISTENERS.ENTITYTYPE" : "Entity type",
"PROPERTY.EVENTLISTENERS.ENTITYTYPE.PLACEHOLDER" : "Enter an entity type",
"PROPERTY.EVENTLISTENERS.RETHROWTYPE": "Rethrow event type",
"PROPERTY.EVENTLISTENERS.ERRORCODE" : "Error code",
"PROPERTY.EVENTLISTENERS.ERRORCODE.PLACEHOLDER" : "Enter an error code",
"PROPERTY.EVENTLISTENERS.MESSAGENAME" : "Message name",
"PROPERTY.EVENTLISTENERS.MESSAGENAME.PLACEHOLDER" : "Enter a message name",
"PROPERTY.EVENTLISTENERS.SIGNALNAME" : "Signal name",
"PROPERTY.EVENTLISTENERS.SIGNALNAME.PLACEHOLDER" : "Enter a signal name",
"PROPERTY.EVENTLISTENERS.UNSELECTED" : "No event listener selected",
"PROPERTY.SIGNALDEFINITIONS.DISPLAY" : "{{length}} signal definitions",
"PROPERTY.SIGNALDEFINITIONS.EMPTY" : "No signal definitions configured",
"PROPERTY.SIGNALDEFINITIONS.SCOPE-GLOBAL": "Global",
"PROPERTY.SIGNALDEFINITIONS.SCOPE-PROCESSINSTANCE": "Process Instance",
"PROPERTY.SIGNALDEFINITIONS.ID" : "Id",
"PROPERTY.SIGNALDEFINITIONS.NAME" : "Name",
"PROPERTY.SIGNALDEFINITIONS.SCOPE" : "Scope",
"PROPERTY.MESSAGEDEFINITIONS.DISPLAY" : "{{length}} message definitions",
"PROPERTY.MESSAGEDEFINITIONS.EMPTY" : "No message definitions configured",
"PROPERTY.MESSAGEDEFINITIONS.ID" : "Id",
"PROPERTY.MESSAGEDEFINITIONS.NAME" : "Name",
"PROPERTY.SEQUENCEFLOW.ORDER.EMPTY" : "No sequence flow order determined",
"PROPERTY.SEQUENCEFLOW.ORDER.NOT.EMPTY" : "Sequence flow order set",
"PROPERTY.SEQUENCEFLOW.ORDER.NO.OUTGOING.SEQUENCEFLOW.FOUND" : "No outgoing sequence flow found.",
"PROPERTY.SEQUENCEFLOW.ORDER.DESCRIPTION" : "Set the order in which the sequence flow need to be evaluated:",
"PROPERTY.SEQUENCEFLOW.ORDER.SEQUENCEFLOW.VALUE" : "Sequence flow to {{targetType}} {{targetTitle}}",
"PROPERTY.SEQUENCEFLOW.CONDITION.TITLE" : "Sequence flow condition",
"PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.TITLE" : "Condition type",
"PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.VARIABLE" : "Select variables",
"PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.STATIC" : "Static value",
"PROPERTY.SEQUENCEFLOW.CONDITION.STATIC" : "Condition expression",
"PROPERTY.SEQUENCEFLOW.CONDITION.STATIC_PLACEHOLDER" : "Fill-in expression value",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.TYPE" : "Variable type",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-CONDITION" : "No condition",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.FORM-FIELD" : "Form field",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.FORM-OUTCOME" : "Form outcome",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-FIELD" : "Select field",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-FIELDS-AVAILABLE" : "No fields available",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-FORM" : "Select form",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-FORMS-AVAILABLE" : "No forms available",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-OPERATOR" : "Select operator",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.EQUALS" : "Equals",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NOTEQUALS" : "Not equals",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.LESSTHAN" : "Less than",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.GREATERTHAN" : "Greater than",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-OUTCOME" : "Select outcome",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-OUTCOMES-AVAILABLE" : "No outcomes available",
"PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY" : "No condition",
"MODEL.SAVE.TITLE" : "Save model",
"MODEL.NAME" : "Name",
"MODEL.DESCRIPTION" : "Description",
"MODEL.SAVE.NEWVERSION" : "Save this as a new version? This means you can always go back to a previous version",
"MODEL.SAVE.COMMENT" : "Comment",
"MODEL.SAVE.SAVING" : "Saving model",
"MODEL.LASTMODIFIEDDATE" : "Last saved",
"MODEL.SAVE.ERROR": "Unexpected error: could not save model",
"EVENT_TYPE.ACTIVITY.COMPENSATE.TOOLTIP": "An activity is about to be executed as a compensation for another activity. The event targets the activity that is about to be executed for compensation",
"EVENT_TYPE.ACTIVITY.COMPLETED.TOOLTIP": "An activity has been completed successfully",
"EVENT_TYPE.ACTIVITY.ERROR.RECEIVED.TOOLTIP": "An activity has received an error event. Dispatched before the actual error has been received by the activity",
"EVENT_TYPE.MEMBERSHIP.CREATED.TOOLTIP": "A new membership has been created",
"EVENT_TYPE.MEMBERSHIP.DELETED.TOOLTIP": "A single membership has been deleted",
"EVENT_TYPE.MEMBERSHIPS.DELETED.TOOLTIP": "All memberships in the related group have been deleted. No individual events will be dispatched due to possible performance reasons",
"EVENT_TYPE.TASK.ASSIGNED.TOOLTIP": "A task as been assigned. This is thrown alongside with an ENTITY_UPDATED event",
"EVENT_TYPE.TASK.COMPLETED.TOOLTIP": "A task has been completed. Dispatched before the task entity is deleted",
"EVENT_TYPE.UNCAUGHT.BPMNERROR.TOOLTIP": "When a BPMN Error was thrown, but was not caught within in the process",
"EVENT_TYPE.VARIABLE.CREATED.TOOLTIP": "A new variable has been created",
"EVENT_TYPE.VARIABLE.DELETED.TOOLTIP": "An existing variable has been deleted",
"EVENT_TYPE.VARIABLE.UPDATED.TOOLTIP": "An existing variable has been updated"
}

View File

@ -0,0 +1,286 @@
{
"HEADER.BRAND" : "Activiti编辑",
"HEADER.BRAND_TAGLINE" : "powered by Alfresco",
"PAGE.HEADER" : "Orchestration Details",
"ACTION.OK" : "确认",
"ACTION.SAVE" : "保存",
"ACTION.SAVE-AND-CLOSE" : "保存并关闭",
"ACTION.SEND" : "发送",
"ACTION.CANCEL" : "取消",
"ACTION.SELECT" : "选择",
"ACTION.ADD" : "添加",
"ACTION.REMOVE" : "清除",
"ACTION.MOVE.UP" : "上移",
"ACTION.MOVE.DOWN" : "下移",
"MAIN_NAVIGATION_ORCHESTRATIONS" : "业务流程",
"MAIN_NAVIGATION_DISPATCH_RULES" : "调度规则",
"MAIN_NAVIGATION_ASSET_GROUPS" : "审批组",
"MAIN_NAVIGATION_SOLUTIONS" : "解决",
"TOOLBAR.ACTION.CLOSE" : "Close the editor and go back to the overview page",
"TOOLBAR.ACTION.SAVE" : "保存",
"TOOLBAR.ACTION.VALIDATE": "校验",
"TOOLBAR.ACTION.CUT" : "剪切",
"TOOLBAR.ACTION.COPY" : "复制",
"TOOLBAR.ACTION.PASTE" : "粘贴",
"TOOLBAR.ACTION.DELETE" : "删除",
"TOOLBAR.ACTION.UNDO" : "撤销",
"TOOLBAR.ACTION.REDO" : "重复",
"TOOLBAR.ACTION.ZOOMIN" : "放大",
"TOOLBAR.ACTION.ZOOMOUT" : "缩小",
"TOOLBAR.ACTION.ZOOMACTUAL" : "实际大小 ",
"TOOLBAR.ACTION.ZOOMFIT" : "适应屏幕",
"TOOLBAR.ACTION.MOVE" : "移动",
"TOOLBAR.ACTION.IMPORT" : "导入",
"TOOLBAR.ACTION.EXPORT" : "导出",
"TOOLBAR.ACTION.BENDPOINT.ADD" : "为选定的流程连线添加弯曲点",
"TOOLBAR.ACTION.BENDPOINT.REMOVE" : "为选定的流程连线删除弯曲点",
"TOOLBAR.ACTION.ALIGNHORIZONTAL" : "水平对齐",
"TOOLBAR.ACTION.ALIGNVERTICAL" : "垂直对齐",
"TOOLBAR.ACTION.SAMESIZE" : "Same size",
"TOOLBAR.ACTION.HELP": "Start the guided tour",
"TOOLBAR.ACTION.FEEDBACK": "Provide feedback",
"KICKSTART.PROCESS_TOOLBAR.ACTION.SAVE" : "保存",
"KICKSTART.PROCESS_TOOLBAR.ACTION.VALIDATE": "校验模型",
"KICKSTART.PROCESS_TOOLBAR.ACTION.HELP": "预览",
"KICKSTART.PROCESS_TOOLBAR.ACTION.FEEDBACK": "反馈",
"FORM_TOOLBAR.ACTION.SAVE" : "保存",
"FORM_TOOLBAR.ACTION.VALIDATE": "校验模型",
"FORM_TOOLBAR.ACTION.HELP": "预览",
"FORM_TOOLBAR.ACTION.FEEDBACK": "反馈",
"APP_DEFINITION_TOOLBAR.ACTION.SAVE" : "保存",
"APP_DEFINITION_TOOLBAR.ACTION.VALIDATE" : "校验模型",
"APP_DEFINITION_TOOLBAR.ACTION.HELP" : "预览",
"APP_DEFINITION_TOOLBAR.ACTION.FEEDBACK" : "反馈",
"BUTTON.ACTION.DELETE.TOOLTIP": "从模型中删除元素",
"BUTTON.ACTION.MORPH.TOOLTIP": "更改元素类型",
"ELEMENT.AUTHOR" : "作者",
"ELEMENT.DATE_CREATED" : "创建日期",
"ELEMENT.SELECTED_EMPTY_TITLE" : "(输入名称)",
"PROPERTY.REMOVED" : "清除",
"PROPERTY.EMPTY" : "",
"PROPERTY.PROPERTY.EDIT.TITLE" : "修改 \"{{title}}\"",
"PROPERTY.FEEDBACK.TITLE" : "请填写您的反馈意见",
"PROPERTY.ASSIGNMENT.TITLE" : "指派",
"PROPERTY.ASSIGNMENT.TYPE" : "类型",
"PROPERTY.ASSIGNMENT.TYPE.IDENTITYSTORE" : "Identity store",
"PROPERTY.ASSIGNMENT.TYPE.STATIC" : "静态值",
"PROPERTY.ASSIGNMENT.ASSIGNEE" : "代理人",
"PROPERTY.ASSIGNMENT.MATCHING" : "使用上下方向键选择并按回车键确认或使用鼠标",
"PROPERTY.ASSIGNMENT.ASSIGNEE_PLACEHOLDER" : "请输入代理人",
"PROPERTY.ASSIGNMENT.EMPTY" : "无代理人",
"PROPERTY.ASSIGNMENT.ASSIGNEE_DISPLAY" : "代理人 {{assignee}}",
"PROPERTY.ASSIGNMENT.CANDIDATE_USERS_DISPLAY" : "{{length}}候选人",
"PROPERTY.ASSIGNMENT.CANDIDATE_USERS" : "候选人",
"PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS_DISPLAY" : "{{length}}候选组",
"PROPERTY.ASSIGNMENT.CANDIDATE_GROUPS" : "候选组",
"PROPERTY.ASSIGNMENT.USER_IDM_DISPLAY": "用户{{firstName}} {{lastName}}",
"PROPERTY.ASSIGNMENT.USER_IDM_EMAIL_DISPLAY": "用户{{email}}",
"PROPERTY.ASSIGNMENT.IDM_EMPTY" : "发起人",
"PROPERTY.ASSIGNMENT.IDM.TYPE" : "任务",
"PROPERTY.ASSIGNMENT.IDM.NO_CANDIDATE_USERS" : "没有选择候选人...",
"PROPERTY.ASSIGNMENT.IDM.NO_CANDIDATE_GROUPS" : "没有选择候选组...",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.INITIATOR" : "分派给发起人",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.USER" : "分派给一个用户",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.USERS" : "候选人s",
"PROPERTY.ASSIGNMENT.IDM.DROPDOWN.GROUPS" : "候选组",
"PROPERTY.ASSIGNMENT.EMAIL.HELP" : "键入一个电子邮件地址,然后按回车键继续 ",
"PROPERTY.EXECUTIONLISTENERS.DISPLAY" : "{{length}}执行监听",
"PROPERTY.EXECUTIONLISTENERS.EMPTY" : "没有配置执行监听",
"PROPERTY.EXECUTIONLISTENERS.EVENT" : "事件",
"PROPERTY.EXECUTIONLISTENERS.CLASS" : "类",
"PROPERTY.EXECUTIONLISTENERS.CLASS.PLACEHOLDER" : "输入类名",
"PROPERTY.EXECUTIONLISTENERS.EXPRESSION" : "表达式",
"PROPERTY.EXECUTIONLISTENERS.EXPRESSION.PLACEHOLDER" : "输入表达式",
"PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION" : "委托表达式",
"PROPERTY.EXECUTIONLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "输入委托表达式",
"PROPERTY.EXECUTIONLISTENERS.UNSELECTED" : "没有配置执行监听",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME" : "名称",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.NAME.PLACEHOLDER" : "输入名称",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION" : "表达式",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER" : "输入表达式",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE" : "字符串",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER" : "输入字符串",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING" : "字符串",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.STRING.PLACEHOLDER" : "输入字符串",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.IMPLEMENTATION" : "实现类",
"PROPERTY.EXECUTIONLISTENERS.FIELDS.EMPTY" : "没有选择字段",
"PROPERTY.FIELDS" : "{{length}}字段",
"PROPERTY.FIELDS.EMPTY" : "没有选择字段",
"PROPERTY.FIELDS.NAME" : "名称",
"PROPERTY.FIELDS.NAME.PLACEHOLDER" : "输入名称",
"PROPERTY.FIELDS.EXPRESSION" : "表达式",
"PROPERTY.FIELDS.EXPRESSION.PLACEHOLDER" : "输入表达式",
"PROPERTY.FIELDS.STRINGVALUE" : "字符串",
"PROPERTY.FIELDS.STRINGVALUE.PLACEHOLDER" : "输入字符串",
"PROPERTY.FIELDS.STRING" : "字符串",
"PROPERTY.FIELDS.STRING.PLACEHOLDER" : "输入字符串",
"PROPERTY.FIELDS.IMPLEMENTATION" : "实现类",
"PROPERTY.FIELDS.UNSELECTED" : "没有选择字段",
"PROPERTY.FORMPROPERTIES.VALUE" : "{{length}}表单属性",
"PROPERTY.FORMPROPERTIES.EMPTY" : "没有配置表单",
"PROPERTY.FORMPROPERTIES.ID" : "活动编号",
"PROPERTY.FORMPROPERTIES.ID.PLACEHOLDER" : "输入活动编号",
"PROPERTY.FORMPROPERTIES.NAME" : "名称",
"PROPERTY.FORMPROPERTIES.NAME.PLACEHOLDER" : "输入名称",
"PROPERTY.FORMPROPERTIES.TYPE" : "类型",
"PROPERTY.FORMPROPERTIES.DATEPATTERN" : "时间选择框",
"PROPERTY.FORMPROPERTIES.DATEPATTERN.PLACEHOLDER" : "输入日期",
"PROPERTY.FORMPROPERTIES.VALUES" : "值",
"PROPERTY.FORMPROPERTIES.EXPRESSION" : "表达式",
"PROPERTY.FORMPROPERTIES.EXPRESSION.PLACEHOLDER" : "输入表达式",
"PROPERTY.FORMPROPERTIES.VARIABLE" : "变量",
"PROPERTY.FORMPROPERTIES.VARIABLE.PLACEHOLDER" : "输入变量",
"PROPERTY.FORMPROPERTIES.REQUIRED" : "必输",
"PROPERTY.FORMPROPERTIES.READABLE" : "可读",
"PROPERTY.FORMPROPERTIES.WRITABLE" : "可写",
"PROPERTY.INPARAMETERS.VALUE" : "{{length}}输入参数",
"PROPERTY.INPARAMETERS.EMPTY" : "没有配置输入参数",
"PROPERTY.OUTPARAMETERS.VALUE" : "{{length}}返回参数",
"PROPERTY.OUTPARAMETERS.EMPTY" : "没有配置返回参数",
"PROPERTY.PARAMETER.SOURCE" : "源",
"PROPERTY.PARAMETER.SOURCE.PLACEHOLDER" : "输入源",
"PROPERTY.PARAMETER.SOURCEEXPRESSION" : "源表达式",
"PROPERTY.PARAMETER.SOURCEEXPRESSION.PLACEHOLDER" : "输入源表达式",
"PROPERTY.PARAMETER.TARGET" : "目标",
"PROPERTY.PARAMETER.TARGET.PLACEHOLDER" : "输入目标",
"PROPERTY.PARAMETER.EMPTY" : "没有选择参数",
"PROPERTY.SUBPROCESSREFERENCE.EMPTY" : "没有引用子流程",
"PROPERTY.SUBPROCESSREFERENCE.TITLE" : "引用错误的子流程",
"PROPERTY.SUBPROCESSREFERENCE.ERROR.SUBPROCESS" : "子流程加载错误.请稍后再试",
"PROPERTY.SUBPROCESSREFERENCE.FOLDER.ROOT" : "文件夹",
"PROPERTY.SUBPROCESSREFERENCE.FOLDER.LOADING" : "文件夹加载中...",
"PROPERTY.SUBPROCESSREFERENCE.FOLDER.EMPTY" : "文件夹未包含子文件夹",
"PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.LOADING" : "子流程加载中...",
"PROPERTY.SUBPROCESSREFERENCE.SUBPROCESS.EMPTY" : "文件夹包含子文件夹",
"PROPERTY.FORMREFERENCE.EMPTY" : "没有引用表单",
"PROPERTY.FORMREFERENCE.TITLE" : "表单引用",
"PROPERTY.FORMREFERENCE.ERROR.FORM" : "表单加载错误.请稍后再试!",
"PROPERTY.FORMREFERENCE.FOLDER.ROOT" : "文件夹",
"PROPERTY.FORMREFERENCE.FOLDER.LOADING" : "文件夹加载中...",
"PROPERTY.FORMREFERENCE.FOLDER.EMPTY" : "文件夹未包含子文件夹",
"PROPERTY.FORMREFERENCE.FORM.LOADING" : "表单加载中...",
"PROPERTY.FORMREFERENCE.FORM.EMPTY" : "文件夹包含子文件夹",
"PROPERTY.TASKLISTENERS.VALUE" : "{{length}}任务监听",
"PROPERTY.TASKLISTENERS.EMPTY" : "未配置任务监听",
"PROPERTY.TASKLISTENERS.EVENT" : "事件",
"PROPERTY.TASKLISTENERS.CLASS" : "类",
"PROPERTY.TASKLISTENERS.CLASS.PLACEHOLDER" : "输入类名",
"PROPERTY.TASKLISTENERS.EXPRESSION" : "表达式",
"PROPERTY.TASKLISTENERS.EXPRESSION.PLACEHOLDER" : "请输入表达式",
"PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION" : "委托表达式",
"PROPERTY.TASKLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "请输入委托表达式",
"PROPERTY.TASKLISTENERS.UNSELECTED" : "没有选择任务监听",
"PROPERTY.TASKLISTENERS.FIELDS.NAME" : "名称",
"PROPERTY.TASKLISTENERS.FIELDS.NAME.PLACEHOLDER" : "请输入名称",
"PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION" : "表达式",
"PROPERTY.TASKLISTENERS.FIELDS.EXPRESSION.PLACEHOLDER" : "请输入表达式",
"PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE" : "字符串",
"PROPERTY.TASKLISTENERS.FIELDS.STRINGVALUE.PLACEHOLDER" : "请输入字符串",
"PROPERTY.TASKLISTENERS.FIELDS.STRING" : "字符串",
"PROPERTY.TASKLISTENERS.FIELDS.STRING.PLACEHOLDER" : "请输入字符串",
"PROPERTY.TASKLISTENERS.FIELDS.IMPLEMENTATION" : "执行",
"PROPERTY.TASKLISTENERS.FIELDS.EMPTY" : "未选择字段",
"PROPERTY.EVENTLISTENERS.DISPLAY" : "{{length}}事件监听",
"PROPERTY.EVENTLISTENERS.EMPTY" : "未配置事件监听",
"PROPERTY.EVENTLISTENERS.EVENTS": "事件",
"PROPERTY.EVENTLISTENERS.RETHROW": "抛出事件?",
"PROPERTY.EVENTLISTENERS.CLASS" : "类",
"PROPERTY.EVENTLISTENERS.CLASS.PLACEHOLDER" : "输入类名",
"PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION" : "委托表达式",
"PROPERTY.EVENTLISTENERS.DELEGATEEXPRESSION.PLACEHOLDER" : "请输入委托表达式",
"PROPERTY.EVENTLISTENERS.ENTITYTYPE" : "类型",
"PROPERTY.EVENTLISTENERS.ENTITYTYPE.PLACEHOLDER" : "请输入类型",
"PROPERTY.EVENTLISTENERS.RETHROWTYPE": "抛出事件类型",
"PROPERTY.EVENTLISTENERS.ERRORCODE" : "错误代码",
"PROPERTY.EVENTLISTENERS.ERRORCODE.PLACEHOLDER" : "请输入错误代码",
"PROPERTY.EVENTLISTENERS.MESSAGENAME" : "消息名称",
"PROPERTY.EVENTLISTENERS.MESSAGENAME.PLACEHOLDER" : "请输入消息名称",
"PROPERTY.EVENTLISTENERS.SIGNALNAME" : "信号名称",
"PROPERTY.EVENTLISTENERS.SIGNALNAME.PLACEHOLDER" : "请输入信号名称",
"PROPERTY.EVENTLISTENERS.UNSELECTED" : "没有选择事件监听",
"PROPERTY.SIGNALDEFINITIONS.DISPLAY" : "{{length}}信号定义",
"PROPERTY.SIGNALDEFINITIONS.EMPTY" : "没有配置信号定义",
"PROPERTY.SIGNALDEFINITIONS.SCOPE-GLOBAL": "全局",
"PROPERTY.SIGNALDEFINITIONS.SCOPE-PROCESSINSTANCE": "流程初始化",
"PROPERTY.SIGNALDEFINITIONS.ID" : "编号",
"PROPERTY.SIGNALDEFINITIONS.NAME" : "名称",
"PROPERTY.SIGNALDEFINITIONS.SCOPE" : "Scope",
"PROPERTY.MESSAGEDEFINITIONS.DISPLAY" : "{{length}}消息定义",
"PROPERTY.MESSAGEDEFINITIONS.EMPTY" : "没有配置消息定义",
"PROPERTY.MESSAGEDEFINITIONS.ID" : "编号",
"PROPERTY.MESSAGEDEFINITIONS.NAME" : "名称",
"PROPERTY.SEQUENCEFLOW.ORDER.EMPTY" : "没有确定顺序流排序",
"PROPERTY.SEQUENCEFLOW.ORDER.NOT.EMPTY" : "顺序流排序",
"PROPERTY.SEQUENCEFLOW.ORDER.NO.OUTGOING.SEQUENCEFLOW.FOUND" : "没有输出顺序流.",
"PROPERTY.SEQUENCEFLOW.ORDER.DESCRIPTION" : "不能设置已经被使用的编号:",
"PROPERTY.SEQUENCEFLOW.ORDER.SEQUENCEFLOW.VALUE" : "顺序流{{targetType}} {{targetTitle}}",
"PROPERTY.SEQUENCEFLOW.CONDITION.TITLE" : "条件",
"PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.TITLE" : "条件类型",
"PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.VARIABLE" : "选择的变量",
"PROPERTY.SEQUENCEFLOW.CONDITION.TYPE.STATIC" : "静态值",
"PROPERTY.SEQUENCEFLOW.CONDITION.STATIC" : "条件表达式",
"PROPERTY.SEQUENCEFLOW.CONDITION.STATIC_PLACEHOLDER" : "输入表达式值",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.TYPE" : "变量类型",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-CONDITION" : "没有条件",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.FORM-FIELD" : "表单字段",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.FORM-OUTCOME" : "表单输出",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-FIELD" : "选择的字段",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-FIELDS-AVAILABLE" : "没有字段变量",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-FORM" : "选择表单",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-FORMS-AVAILABLE" : "没有表单变量",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-OPERATOR" : "选择操作",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.EQUALS" : "等于",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NOTEQUALS" : "不等于",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.LESSTHAN" : "小于",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.GREATERTHAN" : "大于",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.SELECT-OUTCOME" : "选择输出",
"PROPERTY.SEQUENCEFLOW.CONDITION.VARIABLE.NO-OUTCOMES-AVAILABLE" : "没有输出变量",
"PROPERTY.SEQUENCEFLOW.CONDITION.NO-CONDITION-DISPLAY" : "没有条件",
"MODEL.SAVE.TITLE" : "保存模型",
"MODEL.NAME" : "名称",
"MODEL.DESCRIPTION" : "描述",
"MODEL.SAVE.NEWVERSION" : "保存为新版本? 这样你可以随时回到以前的版本",
"MODEL.SAVE.COMMENT" : "注释",
"MODEL.SAVE.SAVING" : "保存",
"MODEL.LASTMODIFIEDDATE" : "上次保存时间",
"MODEL.SAVE.ERROR": "未知错误:保存失败!",
"EVENT_TYPE.ACTIVITY.COMPENSATE.TOOLTIP": "一个活动被另外一个活动替代执行",
"EVENT_TYPE.ACTIVITY.COMPLETED.TOOLTIP": "一个活动被成功的执行",
"EVENT_TYPE.ACTIVITY.ERROR.RECEIVED.TOOLTIP": "在收到活动错误之前,活动已收到错误事件",
"EVENT_TYPE.MEMBERSHIP.CREATED.TOOLTIP": "一个唯一的成员被创建",
"EVENT_TYPE.MEMBERSHIP.DELETED.TOOLTIP": "一个唯一的成员被删除",
"EVENT_TYPE.MEMBERSHIPS.DELETED.TOOLTIP": "所有成员都被删除.可能是由于没有事件被分配",
"EVENT_TYPE.TASK.ASSIGNED.TOOLTIP": "在ENTITY_UPDATED事件抛出时任务已经被分配",
"EVENT_TYPE.TASK.COMPLETED.TOOLTIP": "在任务实体删除前任务已经被完成",
"EVENT_TYPE.UNCAUGHT.BPMNERROR.TOOLTIP": "一个BPMN被抛出,但没有捕获",
"EVENT_TYPE.VARIABLE.CREATED.TOOLTIP": "一个变量被创建",
"EVENT_TYPE.VARIABLE.DELETED.TOOLTIP": "一个变量被删除",
"EVENT_TYPE.VARIABLE.UPDATED.TOOLTIP": "一个变量被更新"
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 492 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 469 B

Some files were not shown because too many files have changed in this diff Show More