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
|
||||
this.on('import.parse.complete', function(event) {
|
||||
if (!event.error) {
|
||||
this._collectIds(event.definitions, event.context);
|
||||
this._collectIds(event.definitions, event.elementsById);
|
||||
}
|
||||
}, this);
|
||||
|
||||
|
@ -59,7 +59,7 @@ BaseModeler.prototype._createModdle = function(options) {
|
|||
* @param {ModdleElement} definitions
|
||||
* @param {Context} context
|
||||
*/
|
||||
BaseModeler.prototype._collectIds = function(definitions, context) {
|
||||
BaseModeler.prototype._collectIds = function(definitions, elementsById) {
|
||||
|
||||
var moddle = definitions.$model,
|
||||
ids = moddle.ids,
|
||||
|
@ -68,7 +68,7 @@ BaseModeler.prototype._collectIds = function(definitions, context) {
|
|||
// remove references from previous import
|
||||
ids.clear();
|
||||
|
||||
for (id in context.elementsById) {
|
||||
ids.claim(id, context.elementsById[id]);
|
||||
for (id in elementsById) {
|
||||
ids.claim(id, elementsById[id]);
|
||||
}
|
||||
};
|
|
@ -110,6 +110,31 @@ BaseViewer.prototype.importXML = wrapForCompatibility(function importXML(xml, bp
|
|||
|
||||
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) {
|
||||
|
||||
// hook in pre-parse listeners +
|
||||
|
@ -122,19 +147,15 @@ BaseViewer.prototype.importXML = wrapForCompatibility(function importXML(xml, bp
|
|||
var parseWarnings = result.warnings;
|
||||
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,
|
||||
references: references,
|
||||
warnings: parseWarnings
|
||||
};
|
||||
|
||||
// hook in post parse listeners +
|
||||
// allow definitions manipulation
|
||||
definitions = self._emit('import.parse.complete', {
|
||||
error: null,
|
||||
definitions: definitions,
|
||||
context: context
|
||||
}) || definitions;
|
||||
})) || definitions;
|
||||
|
||||
self.importDefinitions(definitions, bpmnDiagram).then(function(result) {
|
||||
var allWarnings = [].concat(parseWarnings, result.warnings || []);
|
||||
|
|
|
@ -635,7 +635,7 @@ describe('Viewer', function() {
|
|||
// then
|
||||
expect(events).to.eql([
|
||||
[ '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.complete', [ 'error', 'warnings' ] ],
|
||||
[ 'import.done', [ 'error', 'warnings' ] ]
|
||||
|
@ -1673,7 +1673,7 @@ describe('Viewer', function() {
|
|||
// then
|
||||
expect(events).to.eql([
|
||||
[ '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.complete', [ '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…
Reference in New Issue