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) {