diff --git a/js/app/map/map.js b/js/app/map/map.js
index cfd6461b..89f50941 100644
--- a/js/app/map/map.js
+++ b/js/app/map/map.js
@@ -748,7 +748,7 @@ define([
}
}.bind(connection);
- connectionCanvas.singleDoubleClick(single, () => {});
+ Util.singleDoubleClick(connectionCanvas, single, () => {});
};
/**
@@ -1505,7 +1505,7 @@ define([
* @param systemData
* @param connectedSystem
*/
- let drawSystem = function(map, systemData, connectedSystem){
+ let drawSystem = (map, systemData, connectedSystem) => {
// check if systemData is valid
if(isValidSystem(systemData)){
@@ -1551,7 +1551,7 @@ define([
* @param requestData
* @param context
*/
- let saveSystem = function(requestData, context){
+ let saveSystem = (requestData, context) => {
$.ajax({
type: 'POST',
url: Init.path.saveSystem,
@@ -2190,7 +2190,7 @@ define([
* @param map
* @param system
*/
- let setSystemObserver = function(map, system){
+ let setSystemObserver = (map, system) => {
system = $(system);
// get map container
@@ -2481,7 +2481,6 @@ define([
};
let single = function(e){
-
// check if click was performed on "popover" (x-editable)
let popoverClick = false;
if( $(e.target).parents('.popover').length ){
@@ -2510,7 +2509,7 @@ define([
};
- system.singleDoubleClick(single, double);
+ Util.singleDoubleClick(system, single, double);
};
/**
diff --git a/js/app/util.js b/js/app/util.js
index 29228a76..0dc72175 100644
--- a/js/app/util.js
+++ b/js/app/util.js
@@ -744,38 +744,6 @@ define([
});
};
- /**
- * wrapper function for onClick() || onDblClick() events in order to distinguish between this two types of events
- * @param singleClickCallback
- * @param doubleClickCallback
- * @param timeout
- * @returns {any|JQuery|*}
- */
- $.fn.singleDoubleClick = function(singleClickCallback, doubleClickCallback, timeout) {
- return this.each(function(){
- let clicks = 0, self = this;
-
- // prevent default behaviour (e.g. open -tag link)
- $(this).off('click').on('click', function(e){
- e.preventDefault();
- });
-
- $(this).off('mouseup').on('mouseup', function(e){
- clicks++;
- if (clicks === 1) {
- setTimeout(function(){
- if(clicks === 1) {
- singleClickCallback.call(self, e);
- } else {
- doubleClickCallback.call(self, e);
- }
- clicks = 0;
- }, timeout || Init.timer.DBL_CLICK);
- }
- });
- });
- };
-
/**
* highlight jquery elements
* add/remove css class for keyframe animation
@@ -2378,6 +2346,68 @@ define([
return dateString + ' ' + timeString;
};
+ /**
+ * check an element for attached event by name
+ * -> e.g. eventName = 'click.myNamespace'
+ * @param element
+ * @param eventName
+ * @returns {boolean}
+ */
+ let hasEvent = (element, eventName) => {
+ let exists = false;
+ let parts = eventName.split('.');
+ let name = parts[0];
+ let namespace = parts.length === 2 ? parts[1] : false;
+ let events = $._data( element[0], 'events')[name];
+ if(events){
+ if(namespace){
+ // seach events by namespace
+ for(let event of events){
+ if(event.namespace === namespace){
+ exists = true;
+ break;
+ }
+ }
+ }else{
+ // at least ONE event of the given name found
+ exists = true;
+ }
+ }
+ return exists;
+ };
+
+ /**
+ * wrapper function for onClick() || onDblClick() events in order to distinguish between this two types of events
+ * @param element
+ * @param singleClickCallback
+ * @param doubleClickCallback
+ * @param timeout
+ */
+ let singleDoubleClick = (element, singleClickCallback, doubleClickCallback, timeout) => {
+ let eventName = 'mouseup.singleDouble';
+ if(!hasEvent(element, eventName)){
+ let clicks = 0;
+ // prevent default behaviour (e.g. open -tag link)
+ element.off('click').on('click', function(e){
+ e.preventDefault();
+ });
+
+ element.off(eventName).on(eventName, function(e){
+ clicks++;
+ if (clicks === 1) {
+ setTimeout(element => {
+ if(clicks === 1) {
+ singleClickCallback.call(element, e);
+ } else {
+ doubleClickCallback.call(element, e);
+ }
+ clicks = 0;
+ }, timeout || Init.timer.DBL_CLICK, this);
+ }
+ });
+ }
+ };
+
/**
* get deep json object value if exists
* -> e.g. key = 'first.last.third' string
@@ -2566,6 +2596,7 @@ define([
getLocalStorage: getLocalStorage,
clearSessionStorage: clearSessionStorage,
getBrowserTabId: getBrowserTabId,
+ singleDoubleClick: singleDoubleClick,
getObjVal: getObjVal,
redirect: redirect,
logout: logout,
diff --git a/public/js/v1.3.5/app/map/map.js b/public/js/v1.3.5/app/map/map.js
index cfd6461b..89f50941 100644
--- a/public/js/v1.3.5/app/map/map.js
+++ b/public/js/v1.3.5/app/map/map.js
@@ -748,7 +748,7 @@ define([
}
}.bind(connection);
- connectionCanvas.singleDoubleClick(single, () => {});
+ Util.singleDoubleClick(connectionCanvas, single, () => {});
};
/**
@@ -1505,7 +1505,7 @@ define([
* @param systemData
* @param connectedSystem
*/
- let drawSystem = function(map, systemData, connectedSystem){
+ let drawSystem = (map, systemData, connectedSystem) => {
// check if systemData is valid
if(isValidSystem(systemData)){
@@ -1551,7 +1551,7 @@ define([
* @param requestData
* @param context
*/
- let saveSystem = function(requestData, context){
+ let saveSystem = (requestData, context) => {
$.ajax({
type: 'POST',
url: Init.path.saveSystem,
@@ -2190,7 +2190,7 @@ define([
* @param map
* @param system
*/
- let setSystemObserver = function(map, system){
+ let setSystemObserver = (map, system) => {
system = $(system);
// get map container
@@ -2481,7 +2481,6 @@ define([
};
let single = function(e){
-
// check if click was performed on "popover" (x-editable)
let popoverClick = false;
if( $(e.target).parents('.popover').length ){
@@ -2510,7 +2509,7 @@ define([
};
- system.singleDoubleClick(single, double);
+ Util.singleDoubleClick(system, single, double);
};
/**
diff --git a/public/js/v1.3.5/app/util.js b/public/js/v1.3.5/app/util.js
index 29228a76..0dc72175 100644
--- a/public/js/v1.3.5/app/util.js
+++ b/public/js/v1.3.5/app/util.js
@@ -744,38 +744,6 @@ define([
});
};
- /**
- * wrapper function for onClick() || onDblClick() events in order to distinguish between this two types of events
- * @param singleClickCallback
- * @param doubleClickCallback
- * @param timeout
- * @returns {any|JQuery|*}
- */
- $.fn.singleDoubleClick = function(singleClickCallback, doubleClickCallback, timeout) {
- return this.each(function(){
- let clicks = 0, self = this;
-
- // prevent default behaviour (e.g. open -tag link)
- $(this).off('click').on('click', function(e){
- e.preventDefault();
- });
-
- $(this).off('mouseup').on('mouseup', function(e){
- clicks++;
- if (clicks === 1) {
- setTimeout(function(){
- if(clicks === 1) {
- singleClickCallback.call(self, e);
- } else {
- doubleClickCallback.call(self, e);
- }
- clicks = 0;
- }, timeout || Init.timer.DBL_CLICK);
- }
- });
- });
- };
-
/**
* highlight jquery elements
* add/remove css class for keyframe animation
@@ -2378,6 +2346,68 @@ define([
return dateString + ' ' + timeString;
};
+ /**
+ * check an element for attached event by name
+ * -> e.g. eventName = 'click.myNamespace'
+ * @param element
+ * @param eventName
+ * @returns {boolean}
+ */
+ let hasEvent = (element, eventName) => {
+ let exists = false;
+ let parts = eventName.split('.');
+ let name = parts[0];
+ let namespace = parts.length === 2 ? parts[1] : false;
+ let events = $._data( element[0], 'events')[name];
+ if(events){
+ if(namespace){
+ // seach events by namespace
+ for(let event of events){
+ if(event.namespace === namespace){
+ exists = true;
+ break;
+ }
+ }
+ }else{
+ // at least ONE event of the given name found
+ exists = true;
+ }
+ }
+ return exists;
+ };
+
+ /**
+ * wrapper function for onClick() || onDblClick() events in order to distinguish between this two types of events
+ * @param element
+ * @param singleClickCallback
+ * @param doubleClickCallback
+ * @param timeout
+ */
+ let singleDoubleClick = (element, singleClickCallback, doubleClickCallback, timeout) => {
+ let eventName = 'mouseup.singleDouble';
+ if(!hasEvent(element, eventName)){
+ let clicks = 0;
+ // prevent default behaviour (e.g. open -tag link)
+ element.off('click').on('click', function(e){
+ e.preventDefault();
+ });
+
+ element.off(eventName).on(eventName, function(e){
+ clicks++;
+ if (clicks === 1) {
+ setTimeout(element => {
+ if(clicks === 1) {
+ singleClickCallback.call(element, e);
+ } else {
+ doubleClickCallback.call(element, e);
+ }
+ clicks = 0;
+ }, timeout || Init.timer.DBL_CLICK, this);
+ }
+ });
+ }
+ };
+
/**
* get deep json object value if exists
* -> e.g. key = 'first.last.third' string
@@ -2566,6 +2596,7 @@ define([
getLocalStorage: getLocalStorage,
clearSessionStorage: clearSessionStorage,
getBrowserTabId: getBrowserTabId,
+ singleDoubleClick: singleDoubleClick,
getObjVal: getObjVal,
redirect: redirect,
logout: logout,