mirror of
http://git.pig4cloud.com/pig/pigx.git
synced 2026-11-11 13:19:01 +08:00
✨ 添加新特性。 租户ID
This commit is contained in:
1 parent
668c62bc73
commit
4de4f6c349
5 files changed
+200
-277
No files matched your search
@@ -1,104 +0,0 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||
<definitions xmlns="http://www.omg.org/spec/BPMN/20100524/MODEL" xmlns:activiti="http://activiti.org/bpmn" xmlns:bpmndi="http://www.omg.org/spec/BPMN/20100524/DI" xmlns:omgdc="http://www.omg.org/spec/DD/20100524/DC" xmlns:omgdi="http://www.omg.org/spec/DD/20100524/DI" xmlns:tns="http://www.activiti.org/testm1510735932336" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" expressionLanguage="http://www.w3.org/1999/XPath" id="m1510735932336" name="" targetNamespace="http://www.activiti.org/testm1510735932336" typeLanguage="http://www.w3.org/2001/XMLSchema">
|
||||
<process id="helloworld" isClosed="false" isExecutable="true" name="helloworld" processType="None">
|
||||
<startEvent id="_2" name="StartEvent"/>
|
||||
<endEvent id="_3" name="EndEvent"/>
|
||||
<userTask activiti:assignee="${approve}" activiti:exclusive="true" id="approve" name="经理审批"/>
|
||||
<exclusiveGateway gatewayDirection="Unspecified" id="_5" name="ExclusiveGateway"/>
|
||||
<sequenceFlow id="_6" sourceRef="approve" targetRef="_5"/>
|
||||
<sequenceFlow id="_7" name="通过" sourceRef="_5" targetRef="_3">
|
||||
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${pass}]]></conditionExpression>
|
||||
</sequenceFlow>
|
||||
<userTask activiti:assignee="${apply}" activiti:exclusive="true" id="application" name="提交申请"/>
|
||||
<sequenceFlow id="_9" sourceRef="_2" targetRef="application"/>
|
||||
<sequenceFlow id="_10" sourceRef="application" targetRef="approve"/>
|
||||
<userTask activiti:assignee="${apply}" activiti:exclusive="true" id="modify" name="修改申请"/>
|
||||
<sequenceFlow id="_12" name="不通过" sourceRef="_5" targetRef="modify">
|
||||
<conditionExpression xsi:type="tFormalExpression"><![CDATA[${!pass}]]></conditionExpression>
|
||||
</sequenceFlow>
|
||||
<sequenceFlow id="_13" sourceRef="modify" targetRef="approve"/>
|
||||
</process>
|
||||
<bpmndi:BPMNDiagram documentation="background=#3C3F41;count=1;horizontalcount=1;orientation=0;width=842.4;height=1195.2;imageableWidth=832.4;imageableHeight=1185.2;imageableX=5.0;imageableY=5.0" id="Diagram-_1" name="New Diagram">
|
||||
<bpmndi:BPMNPlane bpmnElement="helloworld">
|
||||
<bpmndi:BPMNShape bpmnElement="_2" id="Shape-_2">
|
||||
<omgdc:Bounds height="32.0" width="32.0" x="15.0" y="60.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="_3" id="Shape-_3">
|
||||
<omgdc:Bounds height="32.0" width="32.0" x="630.0" y="63.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="approve" id="Shape-approve">
|
||||
<omgdc:Bounds height="55.0" width="85.0" x="315.0" y="50.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="_5" id="Shape-_5" isMarkerVisible="false">
|
||||
<omgdc:Bounds height="32.0" width="32.0" x="505.0" y="60.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="32.0" width="32.0" x="0.0" y="0.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="application" id="Shape-application">
|
||||
<omgdc:Bounds height="55.0" width="85.0" x="145.0" y="60.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNShape bpmnElement="modify" id="Shape-modify">
|
||||
<omgdc:Bounds height="55.0" width="85.0" x="315.0" y="150.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="55.0" width="85.0" x="0.0" y="0.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNShape>
|
||||
<bpmndi:BPMNEdge bpmnElement="_13" id="BPMNEdge__13" sourceElement="modify" targetElement="approve">
|
||||
<omgdi:waypoint x="357.5" y="150.0"/>
|
||||
<omgdi:waypoint x="357.5" y="105.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="-1.0" width="-1.0" x="-1.0" y="-1.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="_12" id="BPMNEdge__12" sourceElement="_5" targetElement="modify">
|
||||
<omgdi:waypoint x="525.0" y="88.0"/>
|
||||
<omgdi:waypoint x="525.0" y="177.0"/>
|
||||
<omgdi:waypoint x="400.0" y="177.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="-1.0" width="-1.0" x="-1.0" y="-1.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="_6" id="BPMNEdge__6" sourceElement="approve" targetElement="_5">
|
||||
<omgdi:waypoint x="400.0" y="77.5"/>
|
||||
<omgdi:waypoint x="505.0" y="76.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="-1.0" width="-1.0" x="-1.0" y="-1.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="_7" id="BPMNEdge__7" sourceElement="_5" targetElement="_3">
|
||||
<omgdi:waypoint x="537.0" y="76.0"/>
|
||||
<omgdi:waypoint x="630.0" y="79.0"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="-1.0" width="-1.0" x="-1.0" y="-1.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="_9" id="BPMNEdge__9" sourceElement="_2" targetElement="application">
|
||||
<omgdi:waypoint x="47.0" y="76.0"/>
|
||||
<omgdi:waypoint x="145.0" y="87.5"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="-1.0" width="-1.0" x="-1.0" y="-1.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
<bpmndi:BPMNEdge bpmnElement="_10" id="BPMNEdge__10" sourceElement="application" targetElement="approve">
|
||||
<omgdi:waypoint x="230.0" y="87.5"/>
|
||||
<omgdi:waypoint x="315.0" y="77.5"/>
|
||||
<bpmndi:BPMNLabel>
|
||||
<omgdc:Bounds height="-1.0" width="-1.0" x="-1.0" y="-1.0"/>
|
||||
</bpmndi:BPMNLabel>
|
||||
</bpmndi:BPMNEdge>
|
||||
</bpmndi:BPMNPlane>
|
||||
</bpmndi:BPMNDiagram>
|
||||
</definitions>
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 31 KiB |
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* 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
|
||||
@@ -24,7 +24,7 @@ var activitiModeler = angular.module('activitiModeler', [
|
||||
'ngSanitize',
|
||||
'ngRoute',
|
||||
'ngDragDrop',
|
||||
'mgcrea.ngStrap',
|
||||
'mgcrea.ngStrap',
|
||||
'ngGrid',
|
||||
'ngAnimate',
|
||||
'pascalprecht.translate',
|
||||
@@ -41,7 +41,7 @@ activitiModeler
|
||||
angular.extend($selectProvider.defaults, {
|
||||
caretHtml: ' <i class="icon icon-caret-down"></i>'
|
||||
});
|
||||
|
||||
|
||||
// Initialize angular-translate
|
||||
$translateProvider.useStaticFilesLoader({
|
||||
prefix: './editor-app/i18n/',
|
||||
@@ -52,23 +52,23 @@ activitiModeler
|
||||
|
||||
// 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();
|
||||
|
||||
/**
|
||||
@@ -84,8 +84,8 @@ activitiModeler
|
||||
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
|
||||
@@ -94,10 +94,19 @@ activitiModeler
|
||||
|
||||
/* Helper method to fetch model from server (always needed) */
|
||||
function fetchModel(modelId) {
|
||||
var tenantId = 1
|
||||
if (sessionStorage.getItem('tenantId')) {
|
||||
tenantId = sessionStorage.getItem('tenantId')
|
||||
}
|
||||
|
||||
var modelUrl = KISBPM.URL.getModel(modelId);
|
||||
|
||||
$http({method: 'GET', url: modelUrl}).
|
||||
$http({method: 'GET',
|
||||
url: modelUrl,
|
||||
headers: {
|
||||
'TENANT_ID': tenantId
|
||||
}
|
||||
}).
|
||||
success(function (data, status, headers, config) {
|
||||
$rootScope.editor = new ORYX.Editor(data);
|
||||
$rootScope.modelData = angular.fromJson(data);
|
||||
@@ -128,7 +137,7 @@ activitiModeler
|
||||
$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';
|
||||
@@ -160,7 +169,7 @@ activitiModeler
|
||||
jQuery('.Oryx_button').each(function(i, obj) {
|
||||
handleDisplayProperty(obj);
|
||||
});
|
||||
|
||||
|
||||
jQuery('.resizer_southeast').each(function(i, obj) {
|
||||
handleDisplayProperty(obj);
|
||||
});
|
||||
@@ -178,21 +187,21 @@ activitiModeler
|
||||
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() {
|
||||
@@ -201,7 +210,7 @@ activitiModeler
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
updateWindowSize();
|
||||
|
||||
// Hook in resizing of main panels when window resizes
|
||||
@@ -219,18 +228,18 @@ activitiModeler
|
||||
|| 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;
|
||||
@@ -317,10 +326,10 @@ activitiModeler
|
||||
$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;
|
||||
}
|
||||
});
|
||||
@@ -348,7 +357,7 @@ activitiModeler
|
||||
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)
|
||||
@@ -362,12 +371,12 @@ activitiModeler
|
||||
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();
|
||||
@@ -384,7 +393,7 @@ activitiModeler
|
||||
$rootScope.alerts.current = undefined;
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$rootScope.addAlert = function(message, type) {
|
||||
var newAlert = {message: message, type: type};
|
||||
if (!$rootScope.alerts.timeout) {
|
||||
@@ -395,7 +404,7 @@ activitiModeler
|
||||
$rootScope.alerts.queue.push(newAlert);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$rootScope.dismissAlert = function() {
|
||||
if (!$rootScope.alerts.timeout) {
|
||||
$rootScope.alerts.current = undefined;
|
||||
@@ -405,7 +414,7 @@ activitiModeler
|
||||
$rootScope.showAlert($rootScope.alerts);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$rootScope.addAlertPromise = function(promise, type) {
|
||||
if (promise) {
|
||||
promise.then(function(data) {
|
||||
@@ -413,7 +422,7 @@ activitiModeler
|
||||
});
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
}
|
||||
])
|
||||
|
||||
|
||||
+11
-3
@@ -377,12 +377,20 @@ var SaveModelCtrl = [ '$rootScope', '$scope', '$http', '$route', '$location',
|
||||
description: $scope.saveDialog.description
|
||||
};
|
||||
|
||||
var tenantId = 1
|
||||
if (sessionStorage.getItem('tenantId')) {
|
||||
tenantId = sessionStorage.getItem('tenantId')
|
||||
}
|
||||
|
||||
// Update
|
||||
$http({ method: 'PUT',
|
||||
$http({ method: 'PUT',
|
||||
data: params,
|
||||
ignoreErrors: true,
|
||||
headers: {'Accept': 'application/json',
|
||||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'},
|
||||
headers: {
|
||||
'Accept': 'application/json',
|
||||
'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8',
|
||||
'TENANT_ID': tenantId
|
||||
},
|
||||
transformRequest: function (obj) {
|
||||
var str = [];
|
||||
for (var p in obj) {
|
||||
|
||||
+147
-137
@@ -1,7 +1,7 @@
|
||||
/*
|
||||
* 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
|
||||
@@ -33,10 +33,10 @@ angular.module('activitiModeler')
|
||||
jQuery(window).trigger('resize');
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
// Code that is dependent on an initialised Editor is wrapped in a promise for the editor
|
||||
$scope.editorFactory.promise.then(function () {
|
||||
|
||||
|
||||
/* Build stencil item list */
|
||||
|
||||
// Build simple json representation of stencil set
|
||||
@@ -62,31 +62,41 @@ angular.module('activitiModeler')
|
||||
/*
|
||||
StencilSet items
|
||||
*/
|
||||
$http({method: 'GET', url: KISBPM.URL.getStencilSet()}).success(function (data, status, headers, config) {
|
||||
var tenantId = 1
|
||||
if (sessionStorage.getItem('tenantId')) {
|
||||
tenantId = sessionStorage.getItem('tenantId')
|
||||
}
|
||||
|
||||
var quickMenuDefinition = ['UserTask', 'EndNoneEvent', 'ExclusiveGateway',
|
||||
$http({method: 'GET',
|
||||
url: KISBPM.URL.getStencilSet(),
|
||||
headers: {
|
||||
'TENANT_ID': tenantId
|
||||
}
|
||||
}).success(function (data, status, headers, config) {
|
||||
|
||||
var quickMenuDefinition = ['UserTask', 'EndNoneEvent', 'ExclusiveGateway',
|
||||
'CatchTimerEvent', 'ThrowNoneEvent', 'TextAnnotation',
|
||||
'SequenceFlow', 'Association'];
|
||||
var ignoreForPaletteDefinition = ['SequenceFlow', 'MessageFlow', 'Association', 'DataAssociation', 'DataStore', 'SendTask'];
|
||||
var quickMenuItems = [];
|
||||
|
||||
|
||||
var morphRoles = [];
|
||||
for (var i = 0; i < data.rules.morphingRules.length; i++)
|
||||
for (var i = 0; i < data.rules.morphingRules.length; i++)
|
||||
{
|
||||
var role = data.rules.morphingRules[i].role;
|
||||
var roleItem = {'role': role, 'morphOptions': []};
|
||||
morphRoles.push(roleItem);
|
||||
}
|
||||
|
||||
|
||||
// Check all received items
|
||||
for (var stencilIndex = 0; stencilIndex < data.stencils.length; stencilIndex++)
|
||||
for (var stencilIndex = 0; stencilIndex < data.stencils.length; stencilIndex++)
|
||||
{
|
||||
// Check if the root group is the 'diagram' group. If so, this item should not be shown.
|
||||
var currentGroupName = data.stencils[stencilIndex].groups[0];
|
||||
if (currentGroupName === 'Diagram' || currentGroupName === 'Form') {
|
||||
continue; // go to next item
|
||||
}
|
||||
|
||||
|
||||
var removed = false;
|
||||
if (data.stencils[stencilIndex].removed) {
|
||||
removed = true;
|
||||
@@ -119,7 +129,7 @@ angular.module('activitiModeler')
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// Construct the stencil item
|
||||
var stencilItem = {'id': data.stencils[stencilIndex].id,
|
||||
'name': data.stencils[stencilIndex].title,
|
||||
@@ -132,22 +142,22 @@ angular.module('activitiModeler')
|
||||
'canConnect': false,
|
||||
'canConnectTo': false,
|
||||
'canConnectAssociation': false};
|
||||
|
||||
|
||||
if (data.stencils[stencilIndex].customIconId && data.stencils[stencilIndex].customIconId > 0) {
|
||||
stencilItem.customIcon = true;
|
||||
stencilItem.icon = data.stencils[stencilIndex].customIconId;
|
||||
}
|
||||
|
||||
|
||||
if (!removed) {
|
||||
if (quickMenuDefinition.indexOf(stencilItem.id) >= 0) {
|
||||
quickMenuItems[quickMenuDefinition.indexOf(stencilItem.id)] = stencilItem;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (stencilItem.id === 'TextAnnotation' || stencilItem.id === 'BoundaryCompensationEvent') {
|
||||
stencilItem.canConnectAssociation = true;
|
||||
}
|
||||
|
||||
|
||||
for (var i = 0; i < data.stencils[stencilIndex].roles.length; i++) {
|
||||
var stencilRole = data.stencils[stencilIndex].roles[i];
|
||||
if (stencilRole === 'sequence_start') {
|
||||
@@ -155,7 +165,7 @@ angular.module('activitiModeler')
|
||||
} else if (stencilRole === 'sequence_end') {
|
||||
stencilItem.canConnectTo = true;
|
||||
}
|
||||
|
||||
|
||||
for (var j = 0; j < morphRoles.length; j++) {
|
||||
if (stencilRole === morphRoles[j].role) {
|
||||
if (!removed) {
|
||||
@@ -181,38 +191,38 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
for (var i = 0; i < stencilItemGroups.length; i++)
|
||||
|
||||
for (var i = 0; i < stencilItemGroups.length; i++)
|
||||
{
|
||||
if (stencilItemGroups[i].paletteItems && stencilItemGroups[i].paletteItems.length == 0)
|
||||
{
|
||||
stencilItemGroups[i].visible = false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$scope.stencilItemGroups = stencilItemGroups;
|
||||
|
||||
var containmentRules = [];
|
||||
for (var i = 0; i < data.rules.containmentRules.length; i++)
|
||||
for (var i = 0; i < data.rules.containmentRules.length; i++)
|
||||
{
|
||||
var rule = data.rules.containmentRules[i];
|
||||
containmentRules.push(rule);
|
||||
}
|
||||
$scope.containmentRules = containmentRules;
|
||||
|
||||
|
||||
// remove quick menu items which are not available anymore due to custom pallette
|
||||
var availableQuickMenuItems = [];
|
||||
for (var i = 0; i < quickMenuItems.length; i++)
|
||||
for (var i = 0; i < quickMenuItems.length; i++)
|
||||
{
|
||||
if (quickMenuItems[i]) {
|
||||
availableQuickMenuItems[availableQuickMenuItems.length] = quickMenuItems[i];
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$scope.quickMenuItems = availableQuickMenuItems;
|
||||
$scope.morphRoles = morphRoles;
|
||||
}).
|
||||
|
||||
|
||||
error(function (data, status, headers, config) {
|
||||
console.log('Something went wrong when fetching stencil items:' + JSON.stringify(data));
|
||||
});
|
||||
@@ -231,13 +241,13 @@ angular.module('activitiModeler')
|
||||
|
||||
var selectedShape = shapes.first();
|
||||
var stencil = selectedShape.getStencil();
|
||||
|
||||
|
||||
if ($rootScope.selectedElementBeforeScrolling && stencil.id().indexOf('BPMNDiagram') !== -1)
|
||||
{
|
||||
// ignore canvas event because of empty selection when scrolling stops
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
if ($rootScope.selectedElementBeforeScrolling && $rootScope.selectedElementBeforeScrolling.getId() === selectedShape.getId())
|
||||
{
|
||||
$rootScope.selectedElementBeforeScrolling = null;
|
||||
@@ -246,7 +256,7 @@ angular.module('activitiModeler')
|
||||
|
||||
// Store previous selection
|
||||
$scope.previousSelectedShape = $scope.selectedShape;
|
||||
|
||||
|
||||
// Only do something if another element is selected (Oryx fires this event multiple times)
|
||||
if ($scope.selectedShape !== undefined && $scope.selectedShape.getId() === selectedShape.getId()) {
|
||||
if ($rootScope.forceSelectionRefresh) {
|
||||
@@ -291,7 +301,7 @@ angular.module('activitiModeler')
|
||||
if (selectedShape.properties[key] === 'true') {
|
||||
selectedShape.properties[key] = true;
|
||||
}
|
||||
|
||||
|
||||
if (KISBPM.CONFIG.showRemovedProperties == false && property.isHidden())
|
||||
{
|
||||
continue;
|
||||
@@ -305,7 +315,7 @@ angular.module('activitiModeler')
|
||||
'hidden': property.isHidden(),
|
||||
'value': selectedShape.properties[key]
|
||||
};
|
||||
|
||||
|
||||
if ((currentProperty.type === 'complex' || currentProperty.type === 'multiplecomplex') && currentProperty.value && currentProperty.value.length > 0) {
|
||||
try {
|
||||
currentProperty.value = JSON.parse(currentProperty.value);
|
||||
@@ -352,23 +362,23 @@ angular.module('activitiModeler')
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$scope.editor.registerOnEvent(ORYX.CONFIG.EVENT_SELECTION_CHANGED, function (event) {
|
||||
|
||||
|
||||
KISBPM.eventBus.dispatch(KISBPM.eventBus.EVENT_TYPE_HIDE_SHAPE_BUTTONS);
|
||||
var shapes = event.elements;
|
||||
|
||||
|
||||
if (shapes && shapes.length == 1) {
|
||||
|
||||
var selectedShape = shapes.first();
|
||||
|
||||
|
||||
var a = $scope.editor.getCanvas().node.getScreenCTM();
|
||||
|
||||
|
||||
var absoluteXY = selectedShape.absoluteXY();
|
||||
|
||||
|
||||
absoluteXY.x *= a.a;
|
||||
absoluteXY.y *= a.d;
|
||||
|
||||
|
||||
var additionalIEZoom = 1;
|
||||
if (!isNaN(screen.logicalXDPI) && !isNaN(screen.systemXDPI)) {
|
||||
var ua = navigator.userAgent;
|
||||
@@ -380,16 +390,16 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (additionalIEZoom === 1) {
|
||||
absoluteXY.y = absoluteXY.y - jQuery("#canvasSection").offset().top + 5;
|
||||
absoluteXY.x = absoluteXY.x - jQuery("#canvasSection").offset().left;
|
||||
|
||||
|
||||
} else {
|
||||
var canvasOffsetLeft = jQuery("#canvasSection").offset().left;
|
||||
var canvasScrollLeft = jQuery("#canvasSection").scrollLeft();
|
||||
var canvasScrollTop = jQuery("#canvasSection").scrollTop();
|
||||
|
||||
|
||||
var offset = a.e - (canvasOffsetLeft * additionalIEZoom);
|
||||
var additionaloffset = 0;
|
||||
if (offset > 10) {
|
||||
@@ -398,10 +408,10 @@ angular.module('activitiModeler')
|
||||
absoluteXY.y = absoluteXY.y - (jQuery("#canvasSection").offset().top * additionalIEZoom) + 5 + ((canvasScrollTop * additionalIEZoom) - canvasScrollTop);
|
||||
absoluteXY.x = absoluteXY.x - (canvasOffsetLeft * additionalIEZoom) + additionaloffset + ((canvasScrollLeft * additionalIEZoom) - canvasScrollLeft);
|
||||
}
|
||||
|
||||
|
||||
var bounds = new ORYX.Core.Bounds(a.e + absoluteXY.x, a.f + absoluteXY.y, a.e + absoluteXY.x + a.a*selectedShape.bounds.width(), a.f + absoluteXY.y + a.d*selectedShape.bounds.height());
|
||||
var shapeXY = bounds.upperLeft();
|
||||
|
||||
|
||||
var stencilItem = $scope.getStencilItemById(selectedShape.getStencil().idWithoutNs());
|
||||
var morphShapes = [];
|
||||
if (stencilItem && stencilItem.morphRole)
|
||||
@@ -414,12 +424,12 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var x = shapeXY.x;
|
||||
if (bounds.width() < 48) {
|
||||
x -= 24;
|
||||
}
|
||||
|
||||
|
||||
if (morphShapes && morphShapes.length > 0) {
|
||||
// In case the element is not wide enough, start the 2 bottom-buttons more to the left
|
||||
// to prevent overflow in the right-menu
|
||||
@@ -428,12 +438,12 @@ angular.module('activitiModeler')
|
||||
morphButton.style.left = x + 24 +'px';
|
||||
morphButton.style.top = (shapeXY.y+bounds.height() + 2) + 'px';
|
||||
}
|
||||
|
||||
|
||||
var deleteButton = document.getElementById('delete-button');
|
||||
deleteButton.style.display = "block";
|
||||
deleteButton.style.left = x + 'px';
|
||||
deleteButton.style.top = (shapeXY.y+bounds.height() + 2) + 'px';
|
||||
|
||||
|
||||
if (stencilItem && (stencilItem.canConnect || stencilItem.canConnectAssociation)) {
|
||||
var quickButtonCounter = 0;
|
||||
var quickButtonX = shapeXY.x+bounds.width() + 5;
|
||||
@@ -445,7 +455,7 @@ angular.module('activitiModeler')
|
||||
quickButtonX = shapeXY.x+bounds.width() + 5;
|
||||
quickButtonY += 24;
|
||||
quickButtonCounter = 1;
|
||||
|
||||
|
||||
} else if (quickButtonCounter > 1) {
|
||||
quickButtonX += 24;
|
||||
}
|
||||
@@ -457,7 +467,7 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
if (!$rootScope.stencilInitialized) {
|
||||
KISBPM.eventBus.addListener(KISBPM.eventBus.EVENT_TYPE_HIDE_SHAPE_BUTTONS, function (event) {
|
||||
jQuery('.Oryx_button').each(function(i, obj) {
|
||||
@@ -481,13 +491,13 @@ angular.module('activitiModeler')
|
||||
|| event.property.value.length == 0);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
$rootScope.stencilInitialized = true;
|
||||
}
|
||||
|
||||
|
||||
$scope.morphShape = function() {
|
||||
$scope.safeApply(function () {
|
||||
|
||||
|
||||
var shapes = $rootScope.editor.getSelection();
|
||||
if (shapes && shapes.length == 1)
|
||||
{
|
||||
@@ -517,19 +527,19 @@ angular.module('activitiModeler')
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
|
||||
$scope.deleteShape = function() {
|
||||
KISBPM.TOOLBAR.ACTIONS.deleteItem({'$scope': $scope});
|
||||
};
|
||||
|
||||
|
||||
$scope.quickAddItem = function(newItemId) {
|
||||
$scope.safeApply(function () {
|
||||
|
||||
|
||||
var shapes = $rootScope.editor.getSelection();
|
||||
if (shapes && shapes.length == 1)
|
||||
{
|
||||
$rootScope.currentSelectedShape = shapes.first();
|
||||
|
||||
|
||||
var containedStencil = undefined;
|
||||
var stencilSets = $scope.editor.getStencilSets().values();
|
||||
for (var i = 0; i < stencilSets.length; i++)
|
||||
@@ -545,21 +555,21 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!containedStencil) return;
|
||||
|
||||
|
||||
var option = {type: $scope.currentSelectedShape.getStencil().namespace() + newItemId, namespace: $scope.currentSelectedShape.getStencil().namespace()};
|
||||
option['connectedShape'] = $rootScope.currentSelectedShape;
|
||||
option['parent'] = $rootScope.currentSelectedShape.parent;
|
||||
option['containedStencil'] = containedStencil;
|
||||
|
||||
|
||||
var args = { sourceShape: $rootScope.currentSelectedShape, targetStencil: containedStencil };
|
||||
var targetStencil = $scope.editor.getRules().connectMorph(args);
|
||||
if (!targetStencil){ return; }// Check if there can be a target shape
|
||||
option['connectingType'] = targetStencil.id();
|
||||
|
||||
var command = new KISBPM.CreateCommand(option, undefined, undefined, $scope.editor);
|
||||
|
||||
|
||||
$scope.editor.executeCommands([command]);
|
||||
}
|
||||
});
|
||||
@@ -714,7 +724,7 @@ angular.module('activitiModeler')
|
||||
*/
|
||||
|
||||
$scope.dropCallback = function (event, ui) {
|
||||
|
||||
|
||||
$scope.editor.handleEvents({
|
||||
type: ORYX.CONFIG.EVENT_HIGHLIGHT_HIDE,
|
||||
highlightId: "shapeRepo.attached"
|
||||
@@ -723,20 +733,20 @@ angular.module('activitiModeler')
|
||||
type: ORYX.CONFIG.EVENT_HIGHLIGHT_HIDE,
|
||||
highlightId: "shapeRepo.added"
|
||||
});
|
||||
|
||||
|
||||
$scope.editor.handleEvents({
|
||||
type: ORYX.CONFIG.EVENT_HIGHLIGHT_HIDE,
|
||||
highlightId: "shapeMenu"
|
||||
});
|
||||
|
||||
|
||||
KISBPM.eventBus.dispatch(KISBPM.eventBus.EVENT_TYPE_HIDE_SHAPE_BUTTONS);
|
||||
|
||||
if ($scope.dragCanContain) {
|
||||
|
||||
var item = $scope.getStencilItemById(ui.draggable[0].id);
|
||||
|
||||
|
||||
var pos = {x: event.pageX, y: event.pageY};
|
||||
|
||||
|
||||
var additionalIEZoom = 1;
|
||||
if (!isNaN(screen.logicalXDPI) && !isNaN(screen.systemXDPI)) {
|
||||
var ua = navigator.userAgent;
|
||||
@@ -748,7 +758,7 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var screenCTM = $scope.editor.getCanvas().node.getScreenCTM();
|
||||
|
||||
// Correcting the UpperLeft-Offset
|
||||
@@ -757,11 +767,11 @@ angular.module('activitiModeler')
|
||||
// Correcting the Zoom-Factor
|
||||
pos.x /= screenCTM.a;
|
||||
pos.y /= screenCTM.d;
|
||||
|
||||
|
||||
// Correcting the ScrollOffset
|
||||
pos.x -= document.documentElement.scrollLeft;
|
||||
pos.y -= document.documentElement.scrollTop;
|
||||
|
||||
|
||||
var parentAbs = $scope.dragCurrentParent.absoluteXY();
|
||||
pos.x -= parentAbs.x;
|
||||
pos.y -= parentAbs.y;
|
||||
@@ -810,26 +820,26 @@ angular.module('activitiModeler')
|
||||
option.connectedShape = currentSelectedShape;
|
||||
option.parent = $scope.dragCurrentParent;
|
||||
option.containedStencil = containedStencil;
|
||||
|
||||
// If the ctrl key is not pressed,
|
||||
// snapp the new shape to the center
|
||||
|
||||
// If the ctrl key is not pressed,
|
||||
// snapp the new shape to the center
|
||||
// if it is near to the center of the other shape
|
||||
if (!event.ctrlKey){
|
||||
// Get the center of the shape
|
||||
var cShape = currentSelectedShape.bounds.center();
|
||||
// Snapp +-20 Pixel horizontal to the center
|
||||
// Snapp +-20 Pixel horizontal to the center
|
||||
if (20 > Math.abs(cShape.x - pos.x)){
|
||||
pos.x = cShape.x;
|
||||
}
|
||||
// Snapp +-20 Pixel vertical to the center
|
||||
// Snapp +-20 Pixel vertical to the center
|
||||
if (20 > Math.abs(cShape.y - pos.y)){
|
||||
pos.y = cShape.y;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
option.position = pos;
|
||||
|
||||
if (containedStencil.idWithoutNs() !== 'SequenceFlow' && containedStencil.idWithoutNs() !== 'Association' &&
|
||||
|
||||
if (containedStencil.idWithoutNs() !== 'SequenceFlow' && containedStencil.idWithoutNs() !== 'Association' &&
|
||||
containedStencil.idWithoutNs() !== 'MessageFlow' && containedStencil.idWithoutNs() !== 'DataAssociation')
|
||||
{
|
||||
var args = { sourceShape: currentSelectedShape, targetStencil: containedStencil };
|
||||
@@ -837,9 +847,9 @@ angular.module('activitiModeler')
|
||||
if (!targetStencil){ return; }// Check if there can be a target shape
|
||||
option.connectingType = targetStencil.id();
|
||||
}
|
||||
|
||||
|
||||
var command = new KISBPM.CreateCommand(option, $scope.dropTargetElement, pos, $scope.editor);
|
||||
|
||||
|
||||
$scope.editor.executeCommands([command]);
|
||||
}
|
||||
}
|
||||
@@ -951,18 +961,18 @@ angular.module('activitiModeler')
|
||||
ui.helper.addClass('stencil-item-dragged');
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$scope.startDragCallbackQuickMenu = function (event, ui) {
|
||||
$scope.dragModeOver = false;
|
||||
$scope.quickMenu = true;
|
||||
};
|
||||
|
||||
|
||||
$scope.dragCallback = function (event, ui) {
|
||||
|
||||
|
||||
if ($scope.dragModeOver != false) {
|
||||
|
||||
|
||||
var coord = $scope.editor.eventCoordinatesXY(event.pageX, event.pageY);
|
||||
|
||||
|
||||
var additionalIEZoom = 1;
|
||||
if (!isNaN(screen.logicalXDPI) && !isNaN(screen.systemXDPI)) {
|
||||
var ua = navigator.userAgent;
|
||||
@@ -974,14 +984,14 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (additionalIEZoom !== 1) {
|
||||
coord.x = coord.x / additionalIEZoom;
|
||||
coord.y = coord.y / additionalIEZoom;
|
||||
}
|
||||
|
||||
|
||||
var aShapes = $scope.editor.getCanvas().getAbstractShapesAtPosition(coord);
|
||||
|
||||
|
||||
if (aShapes.length <= 0) {
|
||||
if (event.helper) {
|
||||
$scope.dragCanContain = false;
|
||||
@@ -1011,23 +1021,23 @@ angular.module('activitiModeler')
|
||||
});
|
||||
return false;
|
||||
}
|
||||
else
|
||||
else
|
||||
{
|
||||
var item = $scope.getStencilItemById(event.target.id);
|
||||
|
||||
|
||||
var parentCandidate = aShapes.reverse().find(function (candidate) {
|
||||
return (candidate instanceof ORYX.Core.Canvas
|
||||
|| candidate instanceof ORYX.Core.Node
|
||||
|| candidate instanceof ORYX.Core.Edge);
|
||||
});
|
||||
|
||||
|
||||
if (!parentCandidate) {
|
||||
$scope.dragCanContain = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
if (item.type === "node") {
|
||||
|
||||
|
||||
// check if the draggable is a boundary event and the parent an Activity
|
||||
var _canContain = false;
|
||||
var parentStencilId = parentCandidate.getStencil().id();
|
||||
@@ -1049,7 +1059,7 @@ angular.module('activitiModeler')
|
||||
_canContain = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (_canContain)
|
||||
{
|
||||
$scope.editor.handleEvents({
|
||||
@@ -1101,11 +1111,11 @@ angular.module('activitiModeler')
|
||||
$scope.dragCurrentParentId = parentCandidate.id;
|
||||
$scope.dragCurrentParentStencil = parentStencilId;
|
||||
$scope.dragCanContain = _canContain;
|
||||
|
||||
} else {
|
||||
|
||||
} else {
|
||||
var canvasCandidate = $scope.editor.getCanvas();
|
||||
var canConnect = false;
|
||||
|
||||
|
||||
var targetStencil = $scope.getStencilItemById(parentCandidate.getStencil().idWithoutNs());
|
||||
if (targetStencil) {
|
||||
var associationConnect = false;
|
||||
@@ -1114,18 +1124,18 @@ angular.module('activitiModeler')
|
||||
} else if (stencil.idWithoutNs() === 'DataAssociation' && curCan.getStencil().idWithoutNs() === 'DataStore') {
|
||||
associationConnect = true;
|
||||
}
|
||||
|
||||
|
||||
if (targetStencil.canConnectTo || associationConnect) {
|
||||
canConnect = true;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//Edge
|
||||
$scope.dragCurrentParent = canvasCandidate;
|
||||
$scope.dragCurrentParentId = canvasCandidate.id;
|
||||
$scope.dragCurrentParentStencil = canvasCandidate.getStencil().id();
|
||||
$scope.dragCanContain = canConnect;
|
||||
|
||||
|
||||
// Show Highlight
|
||||
$scope.editor.handleEvents({
|
||||
type: ORYX.CONFIG.EVENT_HIGHLIGHT_SHOW,
|
||||
@@ -1142,12 +1152,12 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
$scope.dragCallbackQuickMenu = function (event, ui) {
|
||||
|
||||
|
||||
if ($scope.dragModeOver != false) {
|
||||
var coord = $scope.editor.eventCoordinatesXY(event.pageX, event.pageY);
|
||||
|
||||
|
||||
var additionalIEZoom = 1;
|
||||
if (!isNaN(screen.logicalXDPI) && !isNaN(screen.systemXDPI)) {
|
||||
var ua = navigator.userAgent;
|
||||
@@ -1159,14 +1169,14 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (additionalIEZoom !== 1) {
|
||||
coord.x = coord.x / additionalIEZoom;
|
||||
coord.y = coord.y / additionalIEZoom;
|
||||
}
|
||||
|
||||
|
||||
var aShapes = $scope.editor.getCanvas().getAbstractShapesAtPosition(coord);
|
||||
|
||||
|
||||
if (aShapes.length <= 0) {
|
||||
if (event.helper) {
|
||||
$scope.dragCanContain = false;
|
||||
@@ -1177,7 +1187,7 @@ angular.module('activitiModeler')
|
||||
if (aShapes[0] instanceof ORYX.Core.Canvas) {
|
||||
$scope.editor.getCanvas().setHightlightStateBasedOnX(coord.x);
|
||||
}
|
||||
|
||||
|
||||
var stencil = undefined;
|
||||
var stencilSets = $scope.editor.getStencilSets().values();
|
||||
for (var i = 0; i < stencilSets.length; i++)
|
||||
@@ -1192,7 +1202,7 @@ angular.module('activitiModeler')
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (!stencil)
|
||||
{
|
||||
var edges = stencilSet.edges();
|
||||
@@ -1206,15 +1216,15 @@ angular.module('activitiModeler')
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
var candidate = aShapes.last();
|
||||
|
||||
|
||||
var isValid = false;
|
||||
if (stencil.type() === "node")
|
||||
if (stencil.type() === "node")
|
||||
{
|
||||
//check containment rules
|
||||
var canContain = $scope.editor.getRules().canContain({containingShape:candidate, containedStencil:stencil});
|
||||
|
||||
|
||||
var parentCandidate = aShapes.reverse().find(function (candidate) {
|
||||
return (candidate instanceof ORYX.Core.Canvas
|
||||
|| candidate instanceof ORYX.Core.Node
|
||||
@@ -1225,28 +1235,28 @@ angular.module('activitiModeler')
|
||||
$scope.dragCanContain = false;
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
$scope.dragCurrentParent = parentCandidate;
|
||||
$scope.dragCurrentParentId = parentCandidate.id;
|
||||
$scope.dragCurrentParentStencil = parentCandidate.getStencil().id();
|
||||
$scope.dragCanContain = canContain;
|
||||
$scope.dropTargetElement = parentCandidate;
|
||||
isValid = canContain;
|
||||
|
||||
|
||||
} else { //Edge
|
||||
|
||||
|
||||
var shapes = $scope.editor.getSelection();
|
||||
if (shapes && shapes.length == 1)
|
||||
{
|
||||
var currentSelectedShape = shapes.first();
|
||||
var curCan = candidate;
|
||||
var canConnect = false;
|
||||
|
||||
|
||||
var targetStencil = $scope.getStencilItemById(curCan.getStencil().idWithoutNs());
|
||||
if (targetStencil)
|
||||
{
|
||||
var associationConnect = false;
|
||||
if (stencil.idWithoutNs() === 'Association' && (curCan.getStencil().idWithoutNs() === 'TextAnnotation' || curCan.getStencil().idWithoutNs() === 'BoundaryCompensationEvent'))
|
||||
if (stencil.idWithoutNs() === 'Association' && (curCan.getStencil().idWithoutNs() === 'TextAnnotation' || curCan.getStencil().idWithoutNs() === 'BoundaryCompensationEvent'))
|
||||
{
|
||||
associationConnect = true;
|
||||
}
|
||||
@@ -1254,7 +1264,7 @@ angular.module('activitiModeler')
|
||||
{
|
||||
associationConnect = true;
|
||||
}
|
||||
|
||||
|
||||
if (targetStencil.canConnectTo || associationConnect)
|
||||
{
|
||||
while (!canConnect && curCan && !(curCan instanceof ORYX.Core.Canvas))
|
||||
@@ -1262,28 +1272,28 @@ angular.module('activitiModeler')
|
||||
candidate = curCan;
|
||||
//check connection rules
|
||||
canConnect = $scope.editor.getRules().canConnect({
|
||||
sourceShape: currentSelectedShape,
|
||||
edgeStencil: stencil,
|
||||
sourceShape: currentSelectedShape,
|
||||
edgeStencil: stencil,
|
||||
targetShape: curCan
|
||||
});
|
||||
});
|
||||
curCan = curCan.parent;
|
||||
}
|
||||
}
|
||||
}
|
||||
var parentCandidate = $scope.editor.getCanvas();
|
||||
|
||||
|
||||
isValid = canConnect;
|
||||
$scope.dragCurrentParent = parentCandidate;
|
||||
$scope.dragCurrentParentId = parentCandidate.id;
|
||||
$scope.dragCurrentParentStencil = parentCandidate.getStencil().id();
|
||||
$scope.dragCanContain = canConnect;
|
||||
$scope.dropTargetElement = candidate;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$scope.editor.handleEvents({
|
||||
type: ORYX.CONFIG.EVENT_HIGHLIGHT_SHOW,
|
||||
type: ORYX.CONFIG.EVENT_HIGHLIGHT_SHOW,
|
||||
highlightId:'shapeMenu',
|
||||
elements: [candidate],
|
||||
color: isValid ? ORYX.CONFIG.SELECTION_VALID_COLOR : ORYX.CONFIG.SELECTION_INVALID_COLOR
|
||||
@@ -1316,9 +1326,9 @@ KISBPM.CreateCommand = ORYX.Core.Command.extend({
|
||||
this.parent = option.parent;
|
||||
this.currentReference = currentReference;
|
||||
this.shapeOptions = option.shapeOptions;
|
||||
},
|
||||
},
|
||||
execute: function(){
|
||||
|
||||
|
||||
if (this.shape) {
|
||||
if (this.shape instanceof ORYX.Core.Node) {
|
||||
this.parent.add(this.shape);
|
||||
@@ -1329,9 +1339,9 @@ KISBPM.CreateCommand = ORYX.Core.Command.extend({
|
||||
this.edge.dockers.last().setDockedShape(this.shape);
|
||||
this.edge.dockers.last().setReferencePoint(this.targetRefPos);
|
||||
}
|
||||
|
||||
|
||||
this.facade.setSelection([this.shape]);
|
||||
|
||||
|
||||
} else if (this.shape instanceof ORYX.Core.Edge) {
|
||||
this.facade.getCanvas().add(this.shape);
|
||||
this.shape.dockers.first().setDockedShape(this.connectedShape);
|
||||
@@ -1342,14 +1352,14 @@ KISBPM.CreateCommand = ORYX.Core.Command.extend({
|
||||
this.shape = this.facade.createShape(this.option);
|
||||
this.edge = (!(this.shape instanceof ORYX.Core.Edge)) ? this.shape.getIncomingShapes().first() : undefined;
|
||||
}
|
||||
|
||||
|
||||
if (this.currentReference && this.position) {
|
||||
|
||||
|
||||
if (this.shape instanceof ORYX.Core.Edge) {
|
||||
|
||||
|
||||
if (!(this.currentReference instanceof ORYX.Core.Canvas)) {
|
||||
this.shape.dockers.last().setDockedShape(this.currentReference);
|
||||
|
||||
|
||||
if (this.currentReference.getStencil().idWithoutNs() === 'TextAnnotation')
|
||||
{
|
||||
var midpoint = {};
|
||||
@@ -1367,7 +1377,7 @@ KISBPM.CreateCommand = ORYX.Core.Command.extend({
|
||||
}
|
||||
this.sourceRefPos = this.shape.dockers.first().referencePoint;
|
||||
this.targetRefPos = this.shape.dockers.last().referencePoint;
|
||||
|
||||
|
||||
} else if (this.edge){
|
||||
this.sourceRefPos = this.edge.dockers.first().referencePoint;
|
||||
this.targetRefPos = this.edge.dockers.last().referencePoint;
|
||||
@@ -1377,7 +1387,7 @@ KISBPM.CreateCommand = ORYX.Core.Command.extend({
|
||||
var connectedShape = this.connectedShape;
|
||||
var bc = connectedShape.bounds;
|
||||
var bs = this.shape.bounds;
|
||||
|
||||
|
||||
var pos = bc.center();
|
||||
if(containedStencil.defaultAlign()==="north") {
|
||||
pos.y -= (bc.height() / 2) + ORYX.CONFIG.SHAPEMENU_CREATE_OFFSET + (bs.height()/2);
|
||||
@@ -1400,26 +1410,26 @@ KISBPM.CreateCommand = ORYX.Core.Command.extend({
|
||||
} else {
|
||||
pos.x += (bc.width() / 2) + ORYX.CONFIG.SHAPEMENU_CREATE_OFFSET + (bs.width()/2);
|
||||
}
|
||||
|
||||
|
||||
// Move shape to the new position
|
||||
this.shape.bounds.centerMoveTo(pos);
|
||||
|
||||
|
||||
// Move all dockers of a node to the position
|
||||
if (this.shape instanceof ORYX.Core.Node){
|
||||
(this.shape.dockers||[]).each(function(docker){
|
||||
docker.bounds.centerMoveTo(pos);
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
//this.shape.update();
|
||||
this.position = pos;
|
||||
|
||||
|
||||
if (this.edge){
|
||||
this.sourceRefPos = this.edge.dockers.first().referencePoint;
|
||||
this.targetRefPos = this.edge.dockers.last().referencePoint;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
this.facade.getCanvas().update();
|
||||
this.facade.updateSelection();
|
||||
|
||||
|
||||
Reference in new issue
Block a user