Skip to content

Commit

Permalink
Merge pull request #1470 from vantoan8x/click_event_support_keypath_f…
Browse files Browse the repository at this point in the history
…unction

Chart Node click event support key-path value for function callback
  • Loading branch information
knsv authored Jun 14, 2020
2 parents 18d2a7f + 28dcc78 commit bb8efad
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 4 deletions.
2 changes: 1 addition & 1 deletion src/diagrams/class/classDb.js
Original file line number Diff line number Diff line change
Expand Up @@ -217,7 +217,7 @@ const setClickFunc = function(domId, functionName, tooltip) {
elem.addEventListener(
'click',
function() {
window[functionName](elemId);
utils.runFunc(functionName, elemId);
},
false
);
Expand Down
2 changes: 1 addition & 1 deletion src/diagrams/flowchart/flowDb.js
Original file line number Diff line number Diff line change
Expand Up @@ -232,7 +232,7 @@ const setClickFun = function(_id, functionName) {
elem.addEventListener(
'click',
function() {
window[functionName](id);
utils.runFunc(functionName, id);
},
false
);
Expand Down
3 changes: 2 additions & 1 deletion src/diagrams/gantt/ganttDb.js
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ import moment from 'moment-mini';
import { sanitizeUrl } from '@braintree/sanitize-url';
import { logger } from '../../logger';
import { getConfig } from '../../config';
import utils from '../../utils';

const config = getConfig();
let dateFormat = '';
Expand Down Expand Up @@ -520,7 +521,7 @@ const setClickFun = function(id, functionName, functionArgs) {
let rawTask = findTaskById(id);
if (typeof rawTask !== 'undefined') {
pushFun(id, () => {
window[functionName](...argList);
utils.runFunc(functionName, ...argList);
});
}
};
Expand Down
18 changes: 17 additions & 1 deletion src/utils.js
Original file line number Diff line number Diff line change
Expand Up @@ -127,6 +127,21 @@ export const formatUrl = (linkStr, config) => {
}
};

export const runFunc = (functionName, ...params) => {
var arrPaths = functionName.split('.');

var len = arrPaths.length - 1;
var fnName = arrPaths[len];

var obj = window;
for (var i = 0; i < len; i++) {
obj = obj[arrPaths[i]];
if (!obj) return;
}

obj[fnName](...params);
};

const distance = (p1, p2) =>
p1 && p2 ? Math.sqrt(Math.pow(p2.x - p1.x, 2) + Math.pow(p2.y - p1.y, 2)) : 0;

Expand Down Expand Up @@ -262,5 +277,6 @@ export default {
calcCardinalityPosition,
formatUrl,
getStylesFromArray,
generateId
generateId,
runFunc
};

0 comments on commit bb8efad

Please sign in to comment.