Browse Source

Fixes #2285 onUpdate event (#2304)

codeClimate
yotamberk 8 years ago
committed by Alexander Wunschik
parent
commit
a29aae98b0
2 changed files with 56 additions and 37 deletions
  1. +20
    -8
      lib/timeline/component/ItemSet.js
  2. +36
    -29
      lib/timeline/component/item/Item.js

+ 20
- 8
lib/timeline/component/ItemSet.js View File

@ -1789,22 +1789,19 @@ ItemSet.prototype._onMouseOut = function (event) {
}); });
}; };
/** /**
* Handle creation and updates of an item on double tap
* Handle updates of an item on double tap
* @param event * @param event
* @private * @private
*/ */
ItemSet.prototype._onAddItem = function (event) {
ItemSet.prototype._onUpdateItem = function (item) {
if (!this.options.selectable) return; if (!this.options.selectable) return;
if (!this.options.editable.add) return; if (!this.options.editable.add) return;
var me = this; var me = this;
var snap = this.options.snap || null;
var item = this.itemFromTarget(event);
if (item) { if (item) {
// update item
// execute async handler to update the item (or cancel it) // execute async handler to update the item (or cancel it)
var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset var itemData = me.itemsData.get(item.id); // get a clone of the data from the dataset
this.options.onUpdate(itemData, function (itemData) { this.options.onUpdate(itemData, function (itemData) {
@ -1813,7 +1810,22 @@ ItemSet.prototype._onAddItem = function (event) {
} }
}); });
} }
else {
}
/**
* Handle creation of an item on double tap
* @param event
* @private
*/
ItemSet.prototype._onAddItem = function (event) {
if (!this.options.selectable) return;
if (!this.options.editable.add) return;
var me = this;
var snap = this.options.snap || null;
var item = this.itemFromTarget(event);
if (!item) {
// add item // add item
if (this.options.rtl) { if (this.options.rtl) {
var xAbs = util.getAbsoluteRight(this.dom.frame); var xAbs = util.getAbsoluteRight(this.dom.frame);

+ 36
- 29
lib/timeline/component/item/Item.js View File

@ -140,6 +140,42 @@ Item.prototype.repositionY = function() {
// should be implemented by the item // should be implemented by the item
}; };
/**
* Repaint a drag area on the center of the item when the item is selected
* @protected
*/
Item.prototype._repaintDragCenter = function () {
if (this.selected && this.options.editable.updateTime && !this.dom.dragCenter) {
var me = this;
// create and show drag area
var dragCenter = document.createElement('div');
dragCenter.className = 'vis-drag-center';
dragCenter.dragCenterItem = this;
new Hammer(dragCenter).on('doubletap', function (event) {
event.stopPropagation();
me.parent.itemSet._onUpdateItem(me);
});
if (this.dom.box) {
this.dom.box.appendChild(dragCenter);
}
else if (this.dom.point) {
this.dom.point.appendChild(dragCenter);
}
this.dom.dragCenter = dragCenter;
}
else if (!this.selected && this.dom.dragCenter) {
// delete drag area
if (this.dom.dragCenter.parentNode) {
this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter);
}
this.dom.dragCenter = null;
}
};
/** /**
* Repaint a delete button on the top right of the item when the item is selected * Repaint a delete button on the top right of the item when the item is selected
* @param {HTMLElement} anchor * @param {HTMLElement} anchor
@ -401,33 +437,4 @@ Item.prototype.getWidthRight = function () {
return 0; return 0;
}; };
/**
* Repaint a drag area on the center of the item when the item is selected
* @protected
*/
Item.prototype._repaintDragCenter = function () {
if (this.selected && this.options.editable.updateTime && !this.dom.dragCenter) {
// create and show drag area
var dragCenter = document.createElement('div');
dragCenter.className = 'vis-drag-center';
dragCenter.dragCenterItem = this;
if (this.dom.box) {
this.dom.box.appendChild(dragCenter);
}
else if (this.dom.point) {
this.dom.point.appendChild(dragCenter);
}
this.dom.dragCenter = dragCenter;
}
else if (!this.selected && this.dom.dragCenter) {
// delete drag area
if (this.dom.dragCenter.parentNode) {
this.dom.dragCenter.parentNode.removeChild(this.dom.dragCenter);
}
this.dom.dragCenter = null;
}
};
module.exports = Item; module.exports = Item;

Loading…
Cancel
Save