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

Function makeEventable

codebase/sources/dhtmlxscheduler.js:1989–2047  ·  view source on GitHub ↗
(obj)

Source from the content-addressed store, hash-verified

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

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