Example #1
0
viewer.on('element.click', function(event) {
  var element = event.element,
      moddle = viewer.get('moddle'),

      // the underlaying BPMN 2.0 element
      businessObject = element.businessObject,
      analysis,
      score,
      message;

  // do not allow on root element
  if (!element.parent) {
    return;
  }

  // we can access extension attribute properties
  score = businessObject.suitable;

  analysis = getExtension(businessObject, 'qa:AnalysisDetails');

  // right click
  if (event.originalEvent.ctrlKey) {
    var result = parseFloat(window.prompt('assign a new suitability score to ' + businessObject.id), 10);

    if (isNaN(result)) {
      return;
    }

    businessObject.suitable = result;

    if (!analysis) {
      analysis = moddle.create('qa:AnalysisDetails');
      businessObject.extensionElements = businessObject.extensionElements || moddle.create('bpmn:ExtensionElements');
      businessObject.extensionElements.get('values').push(analysis);
    }

    analysis.lastChecked = new Date().toString();
  } else {

    if (isNaN(score)) {
      message = 'No suitability score yet, CTRL+Click to assign one';
    } else {
      message = 'Diagram element has a suitability score of ' + score;
    }

    if (analysis) {
      message += '\n Last analyzed at ' + analysis.lastChecked;
    }

    window.alert(message);
  }
});
Example #2
0
  viewer.saveXML(function(err, xml) {

    var encodedData = err ? '' : encodeURIComponent(xml);

    $download.attr({
      'href': encodedData ? 'data:application/bpmn20-xml;charset=UTF-8,' + encodedData : '',
    });

    if (err) {
      console.log('failed to serialize BPMN 2.0 xml', err);
    }
  });
}

viewer.on('comments.updated', serialize);
viewer.on('commandStack.changed', serialize);

viewer.on('canvas.click', function() {
  viewer.get('comments').collapseAll();
});


// file open handling

var $file = $('[data-open-file]');

function readFile(file, done) {

  if (!file) {
    return done(new Error('no file chosen'));