mirror of
https://github.com/sartography/bpmn-js.git
synced 2025-01-11 17:44:12 +00:00
feat(lib): deprecate import.parse.complete <context> payload
The <import.parse.complete> event is now invoked with { error, definitions, elementsById, references, warnings } The old payload is deprecated: { error, definitions, context: { elementsById, references, warnings } }
This commit is contained in:
parent
04ca31fac9
commit
157aec6ed6
@ -24,7 +24,7 @@ export default function BaseModeler(options) {
|
|||||||
// hook ID collection into the modeler
|
// hook ID collection into the modeler
|
||||||
this.on('import.parse.complete', function(event) {
|
this.on('import.parse.complete', function(event) {
|
||||||
if (!event.error) {
|
if (!event.error) {
|
||||||
this._collectIds(event.definitions, event.context);
|
this._collectIds(event.definitions, event.elementsById);
|
||||||
}
|
}
|
||||||
}, this);
|
}, this);
|
||||||
|
|
||||||
@ -59,7 +59,7 @@ BaseModeler.prototype._createModdle = function(options) {
|
|||||||
* @param {ModdleElement} definitions
|
* @param {ModdleElement} definitions
|
||||||
* @param {Context} context
|
* @param {Context} context
|
||||||
*/
|
*/
|
||||||
BaseModeler.prototype._collectIds = function(definitions, context) {
|
BaseModeler.prototype._collectIds = function(definitions, elementsById) {
|
||||||
|
|
||||||
var moddle = definitions.$model,
|
var moddle = definitions.$model,
|
||||||
ids = moddle.ids,
|
ids = moddle.ids,
|
||||||
@ -68,7 +68,7 @@ BaseModeler.prototype._collectIds = function(definitions, context) {
|
|||||||
// remove references from previous import
|
// remove references from previous import
|
||||||
ids.clear();
|
ids.clear();
|
||||||
|
|
||||||
for (id in context.elementsById) {
|
for (id in elementsById) {
|
||||||
ids.claim(id, context.elementsById[id]);
|
ids.claim(id, elementsById[id]);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
@ -110,6 +110,31 @@ BaseViewer.prototype.importXML = wrapForCompatibility(function importXML(xml, bp
|
|||||||
|
|
||||||
var self = this;
|
var self = this;
|
||||||
|
|
||||||
|
function ParseCompleteEvent(data) {
|
||||||
|
|
||||||
|
var event = self.get('eventBus').createEvent(data);
|
||||||
|
|
||||||
|
// TODO(nikku): remove with future bpmn-js version
|
||||||
|
Object.defineProperty(event, 'context', {
|
||||||
|
enumerable: true,
|
||||||
|
get: function() {
|
||||||
|
|
||||||
|
console.warn(new Error(
|
||||||
|
'import.parse.complete <context> is deprecated ' +
|
||||||
|
'and will be removed in future library versions'
|
||||||
|
));
|
||||||
|
|
||||||
|
return {
|
||||||
|
warnings: data.warnings,
|
||||||
|
references: data.references,
|
||||||
|
elementsById: data.elementsById
|
||||||
|
};
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
return event;
|
||||||
|
}
|
||||||
|
|
||||||
return new Promise(function(resolve, reject) {
|
return new Promise(function(resolve, reject) {
|
||||||
|
|
||||||
// hook in pre-parse listeners +
|
// hook in pre-parse listeners +
|
||||||
@ -122,19 +147,15 @@ BaseViewer.prototype.importXML = wrapForCompatibility(function importXML(xml, bp
|
|||||||
var parseWarnings = result.warnings;
|
var parseWarnings = result.warnings;
|
||||||
var elementsById = result.elementsById;
|
var elementsById = result.elementsById;
|
||||||
|
|
||||||
var context = {
|
// hook in post parse listeners +
|
||||||
|
// allow definitions manipulation
|
||||||
|
definitions = self._emit('import.parse.complete', ParseCompleteEvent({
|
||||||
|
error: null,
|
||||||
|
definitions: definitions,
|
||||||
elementsById: elementsById,
|
elementsById: elementsById,
|
||||||
references: references,
|
references: references,
|
||||||
warnings: parseWarnings
|
warnings: parseWarnings
|
||||||
};
|
})) || definitions;
|
||||||
|
|
||||||
// hook in post parse listeners +
|
|
||||||
// allow definitions manipulation
|
|
||||||
definitions = self._emit('import.parse.complete', {
|
|
||||||
error: null,
|
|
||||||
definitions: definitions,
|
|
||||||
context: context
|
|
||||||
}) || definitions;
|
|
||||||
|
|
||||||
self.importDefinitions(definitions, bpmnDiagram).then(function(result) {
|
self.importDefinitions(definitions, bpmnDiagram).then(function(result) {
|
||||||
var allWarnings = [].concat(parseWarnings, result.warnings || []);
|
var allWarnings = [].concat(parseWarnings, result.warnings || []);
|
||||||
|
@ -635,7 +635,7 @@ describe('Viewer', function() {
|
|||||||
// then
|
// then
|
||||||
expect(events).to.eql([
|
expect(events).to.eql([
|
||||||
[ 'import.parse.start', [ 'xml' ] ],
|
[ 'import.parse.start', [ 'xml' ] ],
|
||||||
[ 'import.parse.complete', ['error', 'definitions', 'context' ] ],
|
[ 'import.parse.complete', [ 'error', 'definitions', 'elementsById', 'references', 'warnings', 'context' ] ],
|
||||||
[ 'import.render.start', [ 'definitions' ] ],
|
[ 'import.render.start', [ 'definitions' ] ],
|
||||||
[ 'import.render.complete', [ 'error', 'warnings' ] ],
|
[ 'import.render.complete', [ 'error', 'warnings' ] ],
|
||||||
[ 'import.done', [ 'error', 'warnings' ] ]
|
[ 'import.done', [ 'error', 'warnings' ] ]
|
||||||
@ -1673,7 +1673,7 @@ describe('Viewer', function() {
|
|||||||
// then
|
// then
|
||||||
expect(events).to.eql([
|
expect(events).to.eql([
|
||||||
[ 'import.parse.start', [ 'xml' ] ],
|
[ 'import.parse.start', [ 'xml' ] ],
|
||||||
[ 'import.parse.complete', ['error', 'definitions', 'context' ] ],
|
[ 'import.parse.complete', ['error', 'definitions', 'elementsById', 'references', 'warnings', 'context' ] ],
|
||||||
[ 'import.render.start', [ 'definitions' ] ],
|
[ 'import.render.start', [ 'definitions' ] ],
|
||||||
[ 'import.render.complete', [ 'error', 'warnings' ] ],
|
[ 'import.render.complete', [ 'error', 'warnings' ] ],
|
||||||
[ 'import.done', [ 'error', 'warnings' ] ]
|
[ 'import.done', [ 'error', 'warnings' ] ]
|
||||||
@ -1683,6 +1683,32 @@ describe('Viewer', function() {
|
|||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
it('should emit <import.parse.complete> event', function() {
|
||||||
|
|
||||||
|
// given
|
||||||
|
var viewer = new Viewer({ container: container });
|
||||||
|
|
||||||
|
var xml = require('../fixtures/bpmn/simple.bpmn');
|
||||||
|
|
||||||
|
viewer.on([
|
||||||
|
'import.parse.complete'
|
||||||
|
], function(event) {
|
||||||
|
|
||||||
|
// then
|
||||||
|
var context = event.context;
|
||||||
|
|
||||||
|
expect(context).to.exist;
|
||||||
|
|
||||||
|
expect(context.warnings).to.equal(event.warnings);
|
||||||
|
expect(context.elementsById).to.equal(event.elementsById);
|
||||||
|
expect(context.references).to.equal(event.references);
|
||||||
|
});
|
||||||
|
|
||||||
|
// when
|
||||||
|
return viewer.importXML(xml);
|
||||||
|
});
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user