MCPcopy Create free account
hub / github.com/DHTMLX/scheduler / makeEventable

Function makeEventable

codebase/sources/dhtmlxscheduler.es.js:1985–2043  ·  view source on GitHub ↗
(obj)

Source from the content-addressed store, hash-verified

1983 return eventStorage;
1984};
1985function makeEventable(obj) {
1986 const eventHost = new EventHost();
1987 obj.attachEvent = function(eventName, handler, settings) {
1988 eventName = "ev_" + eventName.toLowerCase();
1989 if (!eventHost.listeners[eventName]) {
1990 eventHost.listeners[eventName] = createEventStorage(this);
1991 }
1992 if (settings && settings.thisObject) {
1993 handler = handler.bind(settings.thisObject);
1994 }
1995 const innerId = eventHost.listeners[eventName].addEvent(handler, settings);
1996 let handlerId = eventName + ":" + innerId;
1997 if (settings && settings.id) {
1998 handlerId = settings.id;
1999 }
2000 return handlerId;
2001 };
2002 obj.attachAll = function(callback) {
2003 this.attachEvent("listen_all", callback);
2004 };
2005 obj.callEvent = function(name, eventArguments) {
2006 if (eventHost._silent_mode)
2007 return true;
2008 const handlerName = "ev_" + name.toLowerCase();
2009 const listeners = eventHost.listeners;
2010 if (listeners["ev_listen_all"]) {
2011 listeners["ev_listen_all"].apply(this, [name].concat(eventArguments));
2012 }
2013 if (listeners[handlerName])
2014 return listeners[handlerName].apply(this, eventArguments);
2015 return true;
2016 };
2017 obj.checkEvent = function(name) {
2018 const listeners = eventHost.listeners;
2019 return !!listeners["ev_" + name.toLowerCase()];
2020 };
2021 obj.detachEvent = function(id) {
2022 if (id) {
2023 let listeners = eventHost.listeners;
2024 for (const i in listeners) {
2025 listeners[i].removeEvent(id);
2026 }
2027 const list = id.split(":");
2028 listeners = eventHost.listeners;
2029 if (list.length === 2) {
2030 const eventName = list[0];
2031 const eventId = list[1];
2032 if (listeners[eventName]) {
2033 listeners[eventName].removeEvent(eventId);
2034 }
2035 }
2036 }
2037 };
2038 obj.detachAllEvents = function() {
2039 for (const name in eventHost.listeners) {
2040 eventHost.listeners[name].clear();
2041 }
2042 };

Callers 3

extend$jFunction · 0.70
DataProcessorFunction · 0.70
constructorMethod · 0.70

Calls 4

createEventStorageFunction · 0.70
bindMethod · 0.65
addEventMethod · 0.65
attachEventMethod · 0.65

Tested by

no test coverage detected