feat(modeling): use BPMN in Color for color setting
Additionally to custom bpmn.io properties, `modeling#setColor` will use [BPMN in Color properties](https://github.com/bpmn-miwg/bpmn-in-color).
This commit is contained in:
parent
4251e31af2
commit
439bc4ead0
|
@ -52,10 +52,13 @@ export default function BpmnCopyPaste(bpmnFactory, eventBus, moddleCopy) {
|
||||||
|
|
||||||
descriptor.di = {};
|
descriptor.di = {};
|
||||||
|
|
||||||
// fill and stroke will be set to DI
|
// colors will be set to DI
|
||||||
copyProperties(businessObject.di, descriptor.di, [
|
copyProperties(businessObject.di, descriptor.di, [
|
||||||
'fill',
|
'fill',
|
||||||
'stroke'
|
'stroke',
|
||||||
|
'background-color',
|
||||||
|
'border-color',
|
||||||
|
'color'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
copyProperties(businessObject.di, descriptor, 'isExpanded');
|
copyProperties(businessObject.di, descriptor, 'isExpanded');
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
import {
|
import {
|
||||||
assign,
|
assign,
|
||||||
forEach
|
forEach,
|
||||||
|
isString,
|
||||||
|
pick
|
||||||
} from 'min-dash';
|
} from 'min-dash';
|
||||||
|
|
||||||
|
|
||||||
|
@ -12,6 +14,24 @@ var DEFAULT_COLORS = {
|
||||||
|
|
||||||
export default function SetColorHandler(commandStack) {
|
export default function SetColorHandler(commandStack) {
|
||||||
this._commandStack = commandStack;
|
this._commandStack = commandStack;
|
||||||
|
|
||||||
|
this._normalizeColor = function(color) {
|
||||||
|
|
||||||
|
// Remove color for falsy values.
|
||||||
|
if (!color) {
|
||||||
|
return undefined;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isString(color)) {
|
||||||
|
var hexColor = colorToHex(color);
|
||||||
|
|
||||||
|
if (hexColor) {
|
||||||
|
return hexColor;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
throw new Error('invalid color value: ' + color);
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
SetColorHandler.$inject = [
|
SetColorHandler.$inject = [
|
||||||
|
@ -28,21 +48,76 @@ SetColorHandler.prototype.postExecute = function(context) {
|
||||||
var di = {};
|
var di = {};
|
||||||
|
|
||||||
if ('fill' in colors) {
|
if ('fill' in colors) {
|
||||||
assign(di, { fill: colors.fill });
|
assign(di, {
|
||||||
|
'background-color': this._normalizeColor(colors.fill) });
|
||||||
}
|
}
|
||||||
|
|
||||||
if ('stroke' in colors) {
|
if ('stroke' in colors) {
|
||||||
assign(di, { stroke: colors.stroke });
|
assign(di, {
|
||||||
|
'border-color': this._normalizeColor(colors.stroke) });
|
||||||
}
|
}
|
||||||
|
|
||||||
forEach(elements, function(element) {
|
forEach(elements, function(element) {
|
||||||
|
var assignedDi = isConnection(element) ? pick(di, [ 'border-color' ]) : di;
|
||||||
|
|
||||||
|
// TODO @barmac: remove once we drop bpmn.io properties
|
||||||
|
ensureLegacySupport(assignedDi);
|
||||||
|
|
||||||
self._commandStack.execute('element.updateProperties', {
|
self._commandStack.execute('element.updateProperties', {
|
||||||
element: element,
|
element: element,
|
||||||
properties: {
|
properties: {
|
||||||
di: di
|
di: assignedDi
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Convert color from rgb(a)/hsl to hex. Returns `null` for unknown color names and for colors
|
||||||
|
* with alpha less than 1.0. This depends on `<canvas>` serialization of the `context.fillStyle`.
|
||||||
|
* Cf. https://html.spec.whatwg.org/multipage/canvas.html#dom-context-2d-fillstyle
|
||||||
|
*
|
||||||
|
* @example
|
||||||
|
* ```js
|
||||||
|
* var color = 'fuchsia';
|
||||||
|
* console.log(colorToHex(color));
|
||||||
|
* // "#ff00ff"
|
||||||
|
* color = 'rgba(1,2,3,0.4)';
|
||||||
|
* console.log(colorToHex(color));
|
||||||
|
* // null
|
||||||
|
* ```
|
||||||
|
*
|
||||||
|
* @param {string} color
|
||||||
|
* @returns {string|null}
|
||||||
|
*/
|
||||||
|
function colorToHex(color) {
|
||||||
|
var context = document.createElement('canvas').getContext('2d');
|
||||||
|
|
||||||
|
// (0) Start with transparent to account for browser default values.
|
||||||
|
context.fillStyle = 'transparent';
|
||||||
|
|
||||||
|
// (1) Assign color so that it's serialized.
|
||||||
|
context.fillStyle = color;
|
||||||
|
|
||||||
|
// (2) Return null for non-hex serialization result.
|
||||||
|
return /^#[0-9a-fA-F]{6}$/.test(context.fillStyle) ? context.fillStyle : null;
|
||||||
|
}
|
||||||
|
|
||||||
|
function isConnection(element) {
|
||||||
|
return !!element.waypoints;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Add legacy properties if required.
|
||||||
|
* @param {{ 'border-color': string?, 'background-color': string? }} di
|
||||||
|
*/
|
||||||
|
function ensureLegacySupport(di) {
|
||||||
|
if ('border-color' in di) {
|
||||||
|
di.stroke = di['border-color'];
|
||||||
|
}
|
||||||
|
|
||||||
|
if ('background-color' in di) {
|
||||||
|
di.fill = di['background-color'];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -264,10 +264,13 @@ export default function BpmnReplace(
|
||||||
|
|
||||||
newElement.di = {};
|
newElement.di = {};
|
||||||
|
|
||||||
// fill and stroke will be set to DI
|
// colors will be set to DI
|
||||||
copyProperties(oldBusinessObject.di, newElement.di, [
|
copyProperties(oldBusinessObject.di, newElement.di, [
|
||||||
'fill',
|
'fill',
|
||||||
'stroke'
|
'stroke',
|
||||||
|
'background-color',
|
||||||
|
'border-color',
|
||||||
|
'color'
|
||||||
]);
|
]);
|
||||||
|
|
||||||
newElement = replace.replaceElement(element, newElement, hints);
|
newElement = replace.replaceElement(element, newElement, hints);
|
||||||
|
|
|
@ -354,8 +354,8 @@ describe('features/copy-paste', function() {
|
||||||
// given
|
// given
|
||||||
var task = elementRegistry.get('Task_1'),
|
var task = elementRegistry.get('Task_1'),
|
||||||
rootElement = canvas.getRootElement(),
|
rootElement = canvas.getRootElement(),
|
||||||
fill = 'red',
|
fill = '#ff0000',
|
||||||
stroke = 'green';
|
stroke = '#00ff00';
|
||||||
|
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
@ -378,6 +378,10 @@ describe('features/copy-paste', function() {
|
||||||
|
|
||||||
var taskBo = getBusinessObject(task);
|
var taskBo = getBusinessObject(task);
|
||||||
|
|
||||||
|
expect(taskBo.di.get('background-color')).to.equal(fill);
|
||||||
|
expect(taskBo.di.get('border-color')).to.equal(stroke);
|
||||||
|
|
||||||
|
// TODO @barmac: remove when we drop bpmn.io properties
|
||||||
expect(taskBo.di.fill).to.equal(fill);
|
expect(taskBo.di.fill).to.equal(fill);
|
||||||
expect(taskBo.di.stroke).to.equal(stroke);
|
expect(taskBo.di.stroke).to.equal(stroke);
|
||||||
})
|
})
|
||||||
|
|
|
@ -6,6 +6,8 @@ import {
|
||||||
import modelingModule from 'lib/features/modeling';
|
import modelingModule from 'lib/features/modeling';
|
||||||
import coreModule from 'lib/core';
|
import coreModule from 'lib/core';
|
||||||
|
|
||||||
|
var FUCHSIA_HEX = '#ff00ff',
|
||||||
|
YELLOW_HEX = '#ffff00';
|
||||||
|
|
||||||
describe('features/modeling - set color', function() {
|
describe('features/modeling - set color', function() {
|
||||||
|
|
||||||
|
@ -30,7 +32,7 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor(taskShape, { fill: 'FUCHSIA' });
|
modeling.setColor(taskShape, { fill: 'FUCHSIA' });
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
@ -44,7 +46,7 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor(taskShape);
|
modeling.setColor(taskShape);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
@ -59,8 +61,8 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor(taskShape, { fill: 'YELLOW' });
|
modeling.setColor(taskShape, { fill: 'YELLOW' });
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).to.equal('YELLOW');
|
expect(taskShape.businessObject.di.get('background-color')).to.equal(YELLOW_HEX);
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('YELLOW');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(YELLOW_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -76,8 +78,8 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor(taskShape, { fill: undefined });
|
modeling.setColor(taskShape, { fill: undefined });
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('YELLOW');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(YELLOW_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -93,8 +95,8 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor(taskShape);
|
modeling.setColor(taskShape);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -108,8 +110,8 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor(taskShape, { stroke: 'FUCHSIA' });
|
modeling.setColor(taskShape, { stroke: 'FUCHSIA' });
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
@ -123,8 +125,8 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor(taskShape);
|
modeling.setColor(taskShape);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
@ -139,10 +141,10 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor([ taskShape, startEventShape ], { fill: 'FUCHSIA' });
|
modeling.setColor([ taskShape, startEventShape ], { fill: 'FUCHSIA' });
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(startEventShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(startEventShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.stroke).not.to.exist;
|
expect(startEventShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -159,8 +161,8 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor([ taskShape, startEventShape ]);
|
modeling.setColor([ taskShape, startEventShape ]);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.fill).not.to.exist;
|
expect(startEventShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -179,10 +181,10 @@ describe('features/modeling - set color', function() {
|
||||||
], { stroke: 'FUCHSIA' });
|
], { stroke: 'FUCHSIA' });
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(startEventShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(startEventShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.fill).not.to.exist;
|
expect(startEventShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -202,11 +204,53 @@ describe('features/modeling - set color', function() {
|
||||||
modeling.setColor([ taskShape, startEventShape ]);
|
modeling.setColor([ taskShape, startEventShape ]);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.stroke).not.to.exist;
|
expect(startEventShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
|
it('should not set background-color on BPMNEdge', inject(function(elementRegistry, modeling) {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var sequenceFlow = elementRegistry.get('SequenceFlow_1');
|
||||||
|
|
||||||
|
// when
|
||||||
|
modeling.setColor(sequenceFlow, { fill: 'FUCHSIA' });
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(sequenceFlow.businessObject.di.get('background-color')).not.to.exist;
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
it('should throw for an invalid color', inject(function(elementRegistry, modeling) {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var sequenceFlow = elementRegistry.get('SequenceFlow_1');
|
||||||
|
|
||||||
|
// when
|
||||||
|
function setColor() {
|
||||||
|
modeling.setColor(sequenceFlow, { fill: 'INVALID_COLOR' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(setColor).to.throw(/^invalid color value/);
|
||||||
|
}));
|
||||||
|
|
||||||
|
|
||||||
|
it('should throw for a color with alpha', inject(function(elementRegistry, modeling) {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var sequenceFlow = elementRegistry.get('SequenceFlow_1');
|
||||||
|
|
||||||
|
// when
|
||||||
|
function setColor() {
|
||||||
|
modeling.setColor(sequenceFlow, { fill: 'rgba(0, 255, 0, 0.5)' });
|
||||||
|
}
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(setColor).to.throw(/^invalid color value/);
|
||||||
|
}));
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
@ -223,7 +267,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -240,7 +284,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -256,7 +300,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -273,7 +317,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -290,8 +334,8 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.fill).not.to.exist;
|
expect(startEventShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -309,8 +353,8 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(startEventShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(startEventShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -330,8 +374,8 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.stroke).not.to.exist;
|
expect(startEventShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -349,8 +393,8 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.undo();
|
commandStack.undo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(startEventShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(startEventShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -371,7 +415,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -389,7 +433,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -406,7 +450,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -424,7 +468,7 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -442,8 +486,8 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(startEventShape.businessObject.di.fill).to.equal('FUCHSIA');
|
expect(startEventShape.businessObject.di.get('background-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -462,8 +506,8 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.fill).not.to.exist;
|
expect(taskShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.fill).not.to.exist;
|
expect(startEventShape.businessObject.di.get('background-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -481,8 +525,8 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(taskShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
expect(startEventShape.businessObject.di.stroke).to.equal('FUCHSIA');
|
expect(startEventShape.businessObject.di.get('border-color')).to.equal(FUCHSIA_HEX);
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@ -504,11 +548,48 @@ describe('features/modeling - set color', function() {
|
||||||
commandStack.redo();
|
commandStack.redo();
|
||||||
|
|
||||||
// then
|
// then
|
||||||
expect(taskShape.businessObject.di.stroke).not.to.exist;
|
expect(taskShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
expect(startEventShape.businessObject.di.stroke).not.to.exist;
|
expect(startEventShape.businessObject.di.get('border-color')).not.to.exist;
|
||||||
}
|
}
|
||||||
));
|
));
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
// TODO @barmac: remove once we drop bpmn.io properties
|
||||||
|
describe('legacy', function() {
|
||||||
|
|
||||||
|
it('should set both BPMN in Color and bpmn.io properties on BPMNShape', inject(
|
||||||
|
function(elementRegistry, modeling) {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var taskShape = elementRegistry.get('Task_1');
|
||||||
|
|
||||||
|
// when
|
||||||
|
modeling.setColor(taskShape, { stroke: '#abcdef', fill: '#fedcba' });
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(taskShape.businessObject.di.get('border-color')).to.eql('#abcdef');
|
||||||
|
expect(taskShape.businessObject.di.get('stroke')).to.eql('#abcdef');
|
||||||
|
expect(taskShape.businessObject.di.get('background-color')).to.eql('#fedcba');
|
||||||
|
expect(taskShape.businessObject.di.get('fill')).to.eql('#fedcba');
|
||||||
|
}
|
||||||
|
));
|
||||||
|
|
||||||
|
|
||||||
|
it('should set both BPMN in Color and bpmn.io properties on BPMNEdge', inject(
|
||||||
|
function(elementRegistry, modeling) {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var sequenceFlow = elementRegistry.get('SequenceFlow_1');
|
||||||
|
|
||||||
|
// when
|
||||||
|
modeling.setColor(sequenceFlow, { stroke: '#abcdef' });
|
||||||
|
|
||||||
|
// then
|
||||||
|
expect(sequenceFlow.businessObject.di.get('border-color')).to.eql('#abcdef');
|
||||||
|
expect(sequenceFlow.businessObject.di.get('stroke')).to.eql('#abcdef');
|
||||||
|
}
|
||||||
|
));
|
||||||
|
});
|
||||||
});
|
});
|
||||||
|
|
|
@ -1631,8 +1631,8 @@ describe('features/replace - bpmn replace', function() {
|
||||||
var newElementData = {
|
var newElementData = {
|
||||||
type: 'bpmn:UserTask'
|
type: 'bpmn:UserTask'
|
||||||
},
|
},
|
||||||
fill = 'red',
|
fill = '#ff0000',
|
||||||
stroke = 'green';
|
stroke = '#00ff00';
|
||||||
|
|
||||||
modeling.setColor(task, { fill: fill, stroke: stroke });
|
modeling.setColor(task, { fill: fill, stroke: stroke });
|
||||||
|
|
||||||
|
@ -1642,6 +1642,10 @@ describe('features/replace - bpmn replace', function() {
|
||||||
// then
|
// then
|
||||||
var businessObject = newElement.businessObject;
|
var businessObject = newElement.businessObject;
|
||||||
|
|
||||||
|
expect(businessObject.di.get('background-color')).to.equal(fill);
|
||||||
|
expect(businessObject.di.get('border-color')).to.equal(stroke);
|
||||||
|
|
||||||
|
// TODO @barmac: remove when we drop bpmn.io properties
|
||||||
expect(businessObject.di.fill).to.equal(fill);
|
expect(businessObject.di.fill).to.equal(fill);
|
||||||
expect(businessObject.di.stroke).to.equal(stroke);
|
expect(businessObject.di.stroke).to.equal(stroke);
|
||||||
}));
|
}));
|
||||||
|
|
Loading…
Reference in New Issue