this.stopResizeLink();
},
+ createLinkDrag: function () {
+ var link = this.duplicateLinkClick({width: 0, height: 0});
+ $(link).addClass('pendingCreate');
+ this.startResizeLink('se');
+ },
+
startResizeLink: function (corner) {
this.resizeLinkPos = {x: this.linkeditor.mx, y: this.linkeditor.my, corner: corner};
- $(".link.selected").each(function () {
- $(this).data('drag-orig-left', parseFloat($(this).attr('fb-left')));
- $(this).data('drag-orig-top', parseFloat($(this).attr('fb-top')));
- $(this).data('drag-orig-width', parseFloat($(this).attr('fb-width')));
- $(this).data('drag-orig-height', parseFloat($(this).attr('fb-height')));
- });
+ this.setDragOrigValues();
},
stopResizeLink: function () {
+ var $this = this;
this.moveResizeLink();
+ $('.pendingCreate').each(function () {
+ $this.deleteLink($(this), true);
+ });
this.resizeLinkPos = null;
},
}
}
+ if (newWidth < 0) {
+ newWidth *= -1;
+ newLeft -= newWidth;
+ }
+ if (newHeight < 0) {
+ newHeight *= -1;
+ newTop -= newHeight;
+ }
+
$(this).attr('fb-left', newLeft)
.attr('fb-top', newTop)
.attr('fb-width', newWidth)
.attr('fb-height', newHeight)
.attr('fb-update', '1');
+ if ($(this).hasClass('pendingCreate') && newWidth > 2 && newHeight > 2) {
+ $(this).removeClass('pendingCreate');
+ }
+
$this.updateLinkData($(this).attr('fb-uid'), {
top: newTop, left: newLeft, width: newWidth, height: newHeight
});
startDragLink: function () {
this.dragLinkPos = {x: this.linkeditor.mx, y: this.linkeditor.my};
+ this.setDragOrigValues();
+ },
+
+ setDragOrigValues: function () {
$(".link.selected").each(function () {
$(this).data('drag-orig-left', parseFloat($(this).attr('fb-left')));
$(this).data('drag-orig-top', parseFloat($(this).attr('fb-top')));
},
offsetSelectedLinks: function (dim, value) {
+ var $this = this;
$('.link.selected').each(function () {
let v = parseFloat($(this).attr('fb-' + dim));
- $(this).attr('fb-' + dim, v + value).attr('fb-update', '1');
+ let newValue = v + value;
+ let data = {};
+ data[dim] = newValue;
+ $(this).attr('fb-' + dim, newValue).attr('fb-update', '1');
+ $this.updateLinkData($(this).attr('fb-uid'), data);
});
this.linkeditor.updateFBElements();
},
});
},
- duplicateLinkClick: function () {
+ duplicateLinkClick: function (overwriteData) {
var data = this.lastSelectedLinkData;
var pos = this.linkeditor.globalToFluidbook(this.linkeditor.mx, this.linkeditor.my, this.linkeditor.single);
data.left = pos.x;
data.top = pos.y;
data.page = this.linkeditor.currentPage;
+ if (overwriteData !== undefined) {
+ $.extend(data, overwriteData);
+ }
delete data.uid;
let link = this.addLink(data);
this.deselectAllLinks();
this.selectLink($(link));
+ return $(link);
},
deleteSelection: function () {
+ var $this = this;
$(".link.selected").each(function () {
- delete LINKS[$(this).attr('fb-uid')];
- $(this).remove();
+ $this.deleteLink(this, false);
});
this.linkeditor.hasChanged();
},
+ deleteLink: function (link, triggerChange) {
+ if (triggerChange === undefined) {
+ triggerChange = true;
+ }
+ delete LINKS[$(link).attr('fb-uid')];
+ $(link).remove();
+ if (triggerChange === true) {
+ this.linkeditor.hasChanged();
+ }
+ },
+
selectAll: function () {
let $this = this;
$('.link').each(function () {