OO interface growing
This commit is contained in:
@@ -44,7 +44,33 @@ window.rkt_event_info = function(e, id, evt) {
|
||||
return obj;
|
||||
};
|
||||
|
||||
window.rkt_bind_evt_ids = function(win_nr, selector, event_kind) {
|
||||
window.rkt_bounds = new Map();
|
||||
|
||||
window.rkt_get_evt_handler = function(event_kind, el_id, selector, win_nr)
|
||||
{
|
||||
let handler_key = "h-" + event_kind + "-" + el_id + "-" + selector + "-" + win_nr;
|
||||
if (window.rkt_bounds.has(handler_key)) {
|
||||
return window.rkt_bounds.get(handler_key);
|
||||
} else {
|
||||
let handler = {
|
||||
handleEvent: function(e) {
|
||||
let obj = {evt: event_kind, id: el_id, selector: selector, window: win_nr,
|
||||
js_evt: window.rkt_event_info(event_kind, el_id, e) };
|
||||
window.rkt_put_evt(obj);
|
||||
}
|
||||
};
|
||||
window.rkt_bounds.set(handler_key, handler);
|
||||
return handler;
|
||||
}
|
||||
}
|
||||
|
||||
window.rkt_rm_evt_handler = function(event_kind, el_id, selector, win_nr)
|
||||
{
|
||||
let handler_key = "h-" + event_kind + "-" + el_id + "-" + selector + "-" + win_nr;
|
||||
window.rkt_bounds.delete(handler_key);
|
||||
}
|
||||
|
||||
window.rkt_bind_evt_ids = function(win_nr, selector, event_kinds) {
|
||||
try {
|
||||
let nodelist = document.querySelectorAll(selector);
|
||||
if (nodelist === undefined || nodelist === null) {
|
||||
@@ -57,15 +83,48 @@ window.rkt_bind_evt_ids = function(win_nr, selector, event_kind) {
|
||||
let el_type = el.getAttribute('type');
|
||||
if (el_type === null) { el_type = ''; }
|
||||
if (el_id !== null) {
|
||||
el.addEventListener(event_kind,
|
||||
function(e) {
|
||||
let obj = {evt: event_kind, id: el_id, selector: selector, window: win_nr,
|
||||
js_evt: window.rkt_event_info(event_kind, el_id, e) };
|
||||
window.rkt_put_evt(obj);
|
||||
}
|
||||
);
|
||||
let info = [ el_id, el_tag, el_type ];
|
||||
ids.push(info);
|
||||
if (event_kinds.length > 0) {
|
||||
let i;
|
||||
for(i = 0; i < event_kinds.length; i++) {
|
||||
let event_kind = event_kinds[i];
|
||||
el.addEventListener(event_kind, window.rkt_get_evt_handler(event_kind, el_id, selector, win_nr));
|
||||
}
|
||||
let info = [ el_id, el_tag, el_type ];
|
||||
ids.push(info);
|
||||
}
|
||||
}
|
||||
});
|
||||
return ids;
|
||||
} catch(e) {
|
||||
return [];
|
||||
}
|
||||
};
|
||||
|
||||
window.rkt_unbind_evt_ids = function(win_nr, selector, event_kinds) {
|
||||
console.log("unbind: " + selector);
|
||||
console.log(event_kinds);
|
||||
try {
|
||||
let nodelist = document.querySelectorAll(selector);
|
||||
if (nodelist === undefined || nodelist === null) {
|
||||
return [];
|
||||
}
|
||||
let ids = [];
|
||||
nodelist.forEach(function(el) {
|
||||
let el_id = el.getAttribute('id');
|
||||
let el_tag = el.nodeName;
|
||||
let el_type = el.getAttribute('type');
|
||||
if (el_type === null) { el_type = ''; }
|
||||
if (el_id !== null) {
|
||||
if (event_kinds.length > 0) {
|
||||
let i;
|
||||
for(i = 0; i < event_kinds.length; i++) {
|
||||
let event_kind = event_kinds[i];
|
||||
el.removeEventListener(event_kind, window.rkt_get_evt_handler(event_kind, el_id, selector, win_nr));
|
||||
window.rkt_rm_evt_handler(event_kind, el_id, selector, win_nr);
|
||||
}
|
||||
let info = [ el_id, el_tag, el_type ];
|
||||
ids.push(info);
|
||||
}
|
||||
}
|
||||
});
|
||||
return ids;
|
||||
|
||||
Reference in New Issue
Block a user