diff --git a/lib/Modeler.js b/lib/Modeler.js index 27f026f0..f5a624be 100644 --- a/lib/Modeler.js +++ b/lib/Modeler.js @@ -4,6 +4,25 @@ var Diagram = require('diagram-js'); var Viewer = require('./Viewer'); +var initialDiagram = + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + '' + + ''; /** * @class @@ -18,7 +37,12 @@ function Modeler(options) { Modeler.prototype = Object.create(Viewer.prototype); -// modules that comprise the bpmn modeler +Modeler.prototype.createDiagram = function(done) { + return this.importXML(initialDiagram, done); +}; + + +// modules the modeler is composed of Modeler.prototype._modules = Modeler.prototype._modules.concat([ // TODO (nre): buggy in conjunction with zoomscroll / move canvas // require('diagram-js/lib/features/move'), @@ -27,4 +51,5 @@ Modeler.prototype._modules = Modeler.prototype._modules.concat([ require('./features/movecanvas') ]); + module.exports = Modeler; diff --git a/lib/Viewer.js b/lib/Viewer.js index dbb22dd7..1a5e222b 100644 --- a/lib/Viewer.js +++ b/lib/Viewer.js @@ -164,22 +164,19 @@ Viewer.prototype.importDefinitions = util.failSafeAsync(function(definitions, do this.clear(); } - diagram = this.createDiagram(this.options.modules); - - this.initDiagram(diagram); - + this.diagram = diagram = this._createDiagram(this.options.modules); this.definitions = definitions; + this._init(diagram); + Importer.importBpmnDiagram(diagram, definitions, done); }); -Viewer.prototype.initDiagram = function(diagram) { - this.diagram = diagram; - +Viewer.prototype._init = function(diagram) { initListeners(diagram, this.__listeners || []); }; -Viewer.prototype.createDiagram = function(modules) { +Viewer.prototype._createDiagram = function(modules) { modules = [].concat(modules || this.getModules()); @@ -194,10 +191,14 @@ Viewer.prototype.createDiagram = function(modules) { }); }; + Viewer.prototype.getModules = function() { return this._modules; }; +/** + * Remove all drawn elements from the viewer + */ Viewer.prototype.clear = function() { var diagram = this.diagram; @@ -206,6 +207,12 @@ Viewer.prototype.clear = function() { } }; +/** + * Register an event listener on the viewer + * + * @param {String} event + * @param {Function} handler + */ Viewer.prototype.on = function(event, handler) { var diagram = this.diagram, listeners = this.__listeners = this.__listeners || []; @@ -218,7 +225,7 @@ Viewer.prototype.on = function(event, handler) { } }; -// modules that comprise the bpmn viewer +// modules the viewer is composed of Viewer.prototype._modules = [ require('./core'), require('diagram-js/lib/features/selection') diff --git a/resources/initial.bpmn b/resources/initial.bpmn new file mode 100644 index 00000000..825ad318 --- /dev/null +++ b/resources/initial.bpmn @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/test/spec/browser/ModelerSpec.js b/test/spec/browser/ModelerSpec.js index 9fd232e8..1d3ba842 100644 --- a/test/spec/browser/ModelerSpec.js +++ b/test/spec/browser/ModelerSpec.js @@ -48,9 +48,9 @@ describe('modeler', function() { var xml = 'invalid stuff'; - var renderer = new Modeler({ container: container }); + var modeler = new Modeler({ container: container }); - renderer.importXML(xml, function(err) { + modeler.importXML(xml, function(err) { expect(err).toBeDefined(); @@ -59,6 +59,12 @@ describe('modeler', function() { }); + it('should create new diagram', function(done) { + var modeler = new Modeler({ container: container }); + modeler.createDiagram(done); + }); + + describe('dependency injection', function() { it('should be available via di as ', function(done) {