All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.orienteer.wicketbpmnio.component.bpmnmodeler.js Maven / Gradle / Ivy

The newest version!
var propertiesPanelModule = require('bpmn-js-properties-panel'),
    propertiesProviderModule = require('bpmn-js-properties-panel/lib/provider/camunda'),
    camundaModdleDescriptor = require('camunda-bpmn-moddle/resources/camunda'),
    BpmnModeler = require('bpmn-js/lib/Modeler'),
    localization = require('./localization');

var emptyXml = ""+
""+
"  "+
"  "+
"    "+
"      "+
"        "+
"      "+
"    "+
"  "+
"";

window.installBpmnModeler = function(componentId, xmlComponentId, locale) {

    localization.initLocale(locale);

    var customTranslate = {
        translate: ['value', localization.translate]
    };

    var bpmnModeler = new BpmnModeler({
        container: '#' + componentId + ' .canvas',
        propertiesPanel: {
            parent: '#' + componentId + ' .properties-panel'
        },
        additionalModules: [
            propertiesPanelModule,
            propertiesProviderModule,
            customTranslate
        ],
        moddleExtensions: {
            camunda: camundaModdleDescriptor
        }
    });

    function openDiagram(xml) {
        bpmnModeler.importXML(xml?xml:emptyXml, function(err) {
            if (err) {
            	alert(err);
            } else {
            	bpmnModeler.get('canvas').zoom('fit-viewport');
            }
        });
    };

    // function saveSVG(done) {
    //   bpmnModeler.saveSVG(done);
    // };
    //
    // function saveDiagram(done) {
    //
    //   bpmnModeler.saveXML({ format: true }, function(err, xml) {
    //     done(err, xml);
    //   });
    // };

    function registerFileDrop(container, callback) {

      function handleFileSelect(e) {
        e.stopPropagation();
        e.preventDefault();

        var files = e.dataTransfer.files,
            file = files[0],
            reader = new FileReader();

        reader.onload = function(e) {
          var xml = e.target.result;
          callback(xml);
        };

        reader.readAsText(file);
      };

      function handleDragOver(e) {
        e.stopPropagation();
        e.preventDefault();
        e.dataTransfer.dropEffect = 'copy';
      }

      container.get(0).addEventListener('dragover', handleDragOver, false);
      container.get(0).addEventListener('drop', handleFileSelect, false);
    };

    if (!window.FileList || !window.FileReader) {
      window.alert(
        'Looks like you use an older browser that does not support drag and drop. ' +
        'Try using Chrome, Firefox or the Internet Explorer > 10.');
    } else {
      registerFileDrop($('#' + componentId + ' .canvas'), openDiagram);
    }
    
    function saveDiagram(done) {

      bpmnModeler.saveXML({ format: true }, function(err, xml) {
        done(err, xml);
      });
    };


//    $(document).on('ready', function() {
    $(function(){

        $('#'+componentId+' .buttons a').click(function(e) {
            if (!$(this).is('.active')) {
              e.preventDefault();
              e.stopPropagation();
            }
        });


        var debounce = require('lodash/function/debounce');

        var exportArtifacts = debounce(function() {

            saveDiagram(function(err, xml) {
                $('#' + xmlComponentId).val(xml);
            });
        }, 500);

        bpmnModeler.on('commandStack.changed', exportArtifacts);
        openDiagram($('#' + xmlComponentId).val());
    }); 

};




© 2015 - 2025 Weber Informatics LLC | Privacy Policy