' + details;
// attach an overlay to a node
/** viewerOld.get('overlays').add(i, 'diff', {
position: {
bottom: -5,
left: 0
},
html: detailsOld
});**/
$('#changeDetailsOld_' + i).toggle();
viewerNew.get('elementRegistry').getGraphicsByElement(i).click (function (event) {
$('#changeDetailsNew_' + i).toggle();
});
var detailsNew = '
' + details;
// attach an overlay to a node
/** viewerNew.get('overlays').add(i, 'diff', {
position: {
bottom: -5,
left: 0
},
html: detailsNew
});**/
$('#changeDetailsNew_' + i).toggle();
});
// create Table Overview of Changes
showChangesOverview (result, viewerOld, viewerNew);
}
//loadDiagram('left', { url: '../resources/pizza-collaboration/old.bpmn' });
//loadDiagram('right', { url: '../resources/pizza-collaboration/new.bpmn' });
function openDiagram(xml, side) {
loadDiagram(side, { xml: xml });
}
function openFile(file, target, done) {
var reader = new FileReader();
reader.onload = function(e) {
var xml = e.target.result;
done(xml, target);
};
reader.readAsText(file);
}
$('.drop-zone').each(function() {
var node = this,
element = $(node);
element.append('
');
function removeMarker() {
$('.drop-zone').removeClass('dropping');
}
function handleFileSelect(e) {
e.stopPropagation();
e.preventDefault();
var files = e.dataTransfer.files;
openFile(files[0], element.attr('target'), openDiagram);
removeMarker();
}
function handleDragOver(e) {
removeMarker();
e.stopPropagation();
e.preventDefault();
element.addClass('dropping');
e.dataTransfer.dropEffect = 'copy';
}
function handleDragLeave(e) {
removeMarker();
}
node.addEventListener('dragover', handleDragOver, false);
node.ownerDocument.body.addEventListener('dragover', handleDragLeave, false);
node.addEventListener('drop', handleFileSelect, false);
});
$('.file').on('change', function(e) {
openFile(e.target.files[0], $(this).attr('target'), openDiagram);
});
function addMarker(viewer, elementId, className, symbol) {
var overlays = viewer.get('overlays');
try {
// attach an overlay to a node
overlays.add(elementId, 'diff', {
position: {
top: -12,
right: 12
},
html: '
' + symbol + ''
});
} catch (e) {
// fuck you, haha
}
}
function highlight(viewer, elementId, marker) {
viewer.get('canvas').addMarker(elementId, marker);
}
function unhighlight(viewer, elementId, marker) {
viewer.get('canvas').removeMarker(elementId, marker);
}
$('#changes-overview .show-hide-toggle').click(function () {
$('#changes-overview').toggleClass('collapsed');
});
function showChangesOverview (result, viewerOld, viewerNew) {
$('#changes-overview table').remove();
var changesTable = $(
'
');
var count = 0;
function addRow(element, type, label) {
var html =
'
' +
'' + (count++) + ' | ' + (element.name || '') + ' | ' +
'' + element.$type.replace('bpmn:', '') + ' | ' +
'' + label + ' | ' +
'
';
var row = $(html).data({
changed: type,
element: element.id
}).addClass(type).appendTo(changesTable);
}
$.each(result._removed, function(i, obj) {
addRow(obj, 'removed', '刪除');
});
$.each(result._added, function(i, obj) {
addRow(obj, 'added', '新增');
});
$.each(result._changed, function(i, obj) {
addRow(obj.model, 'changed', '修改');
});
$.each(result._layoutChanged, function(i, obj) {
addRow(obj, 'layout-changed', '布局调整');
});
changesTable.appendTo('#changes-overview .changes');
var HIGHLIGHT_CLS = 'highlight';
$('#changes-overview tr.entry').each(function() {
var row = $(this);
var id = row.data('element');
var changed = row.data('changed');
row.hover(function() {
if (changed == 'removed') {
highlight(viewerOld, id, HIGHLIGHT_CLS);
} else if (changed == 'added') {
highlight(viewerNew, id, HIGHLIGHT_CLS);
} else {
highlight(viewerOld, id, HIGHLIGHT_CLS);
highlight(viewerNew, id, HIGHLIGHT_CLS);
}
}, function() {
if (changed == 'removed') {
unhighlight(viewerOld, id, HIGHLIGHT_CLS);
} else if (changed == 'added') {
unhighlight(viewerNew, id, HIGHLIGHT_CLS);
} else {
unhighlight(viewerOld, id, HIGHLIGHT_CLS);
unhighlight(viewerNew, id, HIGHLIGHT_CLS);
}
});
row.click(function() {
var containerWidth = $('.di-container').width();
var containerHeight = $('.di-container').height();
var viewer = (changed == 'removed' ? viewerOld : viewerNew);
var element = viewer.get('elementRegistry').getById(id);
var x, y;
if (element.waypoints) {
x = element.waypoints[0].x;
y = element.waypoints[0].y;
} else {
x = element.x + element.width / 2;
y = element.y + element.height / 2;
}
console.log(222);
viewer.get('canvas').viewbox({
x: x - (containerWidth / 2),
y: y - ((containerHeight / 2) - 100),
width: containerWidth,
height: containerHeight
});
});
});
}
/**})();**/