(function(){
let MenuTpl =
'
'
;
window.ESX_MENU = {};
ESX_MENU.ResourceName = 'esx_menu_list';
ESX_MENU.opened = {};
ESX_MENU.focus = [];
ESX_MENU.data = {};
ESX_MENU.open = function(namespace, name, data) {
if (typeof ESX_MENU.opened[namespace] == 'undefined') {
ESX_MENU.opened[namespace] = {};
}
if (typeof ESX_MENU.opened[namespace][name] != 'undefined') {
ESX_MENU.close(namespace, name);
}
data._namespace = namespace;
data._name = name;
ESX_MENU.opened[namespace][name] = data;
ESX_MENU.focus.push({
namespace: namespace,
name : name
});
ESX_MENU.render();
};
ESX_MENU.close = function(namespace, name) {
delete ESX_MENU.opened[namespace][name];
for (let i=0; i' + matches[k][1] + '');
}
view.rows[i].cols.push({data: data, content: col});
}
}
let menu = $(Mustache.render(MenuTpl, view));
menu.find('button[data-namespace][data-name]').click(function() {
ESX_MENU.submit($(this).data('namespace'), $(this).data('name'), {
data : ESX_MENU.data[$(this).data('namespace')][$(this).data('name')][parseInt($(this).data('id'))],
value: $(this).data('value')
});
});
menu.hide();
menuContainer.appendChild(menu[0]);
}
}
if (typeof focused != 'undefined') {
$('#menu_' + focused.namespace + '_' + focused.name).show();
}
$(menuContainer).show();
};
ESX_MENU.submit = function(namespace, name, data){
$.post('http://' + ESX_MENU.ResourceName + '/menu_submit', JSON.stringify({
_namespace: namespace,
_name : name,
data : data.data,
value : data.value
}));
};
ESX_MENU.cancel = function(namespace, name){
$.post('http://' + ESX_MENU.ResourceName + '/menu_cancel', JSON.stringify({
_namespace: namespace,
_name : name
}));
};
ESX_MENU.getFocused = function(){
return ESX_MENU.focus[ESX_MENU.focus.length - 1];
};
window.onData = (data) => {
switch(data.action){
case 'openMenu' : {
ESX_MENU.open(data.namespace, data.name, data.data);
break;
}
case 'closeMenu' : {
ESX_MENU.close(data.namespace, data.name);
break;
}
}
};
window.onload = function(e){
window.addEventListener('message', (event) => {
onData(event.data);
});
};
document.onkeyup = function(data) {
if(data.which == 27) {
let focused = ESX_MENU.getFocused();
ESX_MENU.cancel(focused.namespace, focused.name);
}
};
})();