mirror of
https://github.com/esx-framework/esx_core.git
synced 2026-08-31 19:01:35 +00:00
Added back removed NUI chunking code
This commit is contained in:
+20
-54
@@ -11,45 +11,41 @@ Citizen.CreateThread(function()
|
||||
|
||||
local openMenu = function(namespace, name, data)
|
||||
SendNUIMessage({
|
||||
action = 'openMenu',
|
||||
action = 'openMenu',
|
||||
namespace = namespace,
|
||||
name = name,
|
||||
data = data
|
||||
name = name,
|
||||
data = data
|
||||
})
|
||||
end
|
||||
|
||||
local closeMenu = function(namespace, name)
|
||||
SendNUIMessage({
|
||||
action = 'closeMenu',
|
||||
action = 'closeMenu',
|
||||
namespace = namespace,
|
||||
name = name,
|
||||
data = data
|
||||
name = name,
|
||||
data = data
|
||||
})
|
||||
end
|
||||
|
||||
ESX.UI.Menu.RegisterType(MenuType, openMenu, closeMenu)
|
||||
|
||||
RegisterNUICallback('menu_submit', function(data, cb)
|
||||
AddEventHandler('esx_menu_default:message:menu_submit', function(data)
|
||||
local menu = ESX.UI.Menu.GetOpened(MenuType, data._namespace, data._name)
|
||||
|
||||
if menu.submit then
|
||||
|
||||
if menu.submit ~= nil then
|
||||
menu.submit(data, menu)
|
||||
end
|
||||
|
||||
cb('OK')
|
||||
end)
|
||||
|
||||
RegisterNUICallback('menu_cancel', function(data, cb)
|
||||
AddEventHandler('esx_menu_default:message:menu_cancel', function(data)
|
||||
local menu = ESX.UI.Menu.GetOpened(MenuType, data._namespace, data._name)
|
||||
|
||||
if menu.cancel then
|
||||
|
||||
if menu.cancel ~= nil then
|
||||
menu.cancel(data, menu)
|
||||
end
|
||||
|
||||
cb('OK')
|
||||
end)
|
||||
|
||||
RegisterNUICallback('menu_change', function(data, cb)
|
||||
AddEventHandler('esx_menu_default:message:menu_change', function(data)
|
||||
local menu = ESX.UI.Menu.GetOpened(MenuType, data._namespace, data._name)
|
||||
|
||||
for i=1, #data.elements, 1 do
|
||||
@@ -60,76 +56,46 @@ Citizen.CreateThread(function()
|
||||
else
|
||||
menu.setElement(i, 'selected', false)
|
||||
end
|
||||
|
||||
end
|
||||
|
||||
if menu.change then
|
||||
if menu.change ~= nil then
|
||||
menu.change(data, menu)
|
||||
end
|
||||
|
||||
cb('OK')
|
||||
end)
|
||||
|
||||
Citizen.CreateThread(function()
|
||||
while true do
|
||||
|
||||
Citizen.Wait(10)
|
||||
|
||||
if IsControlPressed(0, 18) and IsInputDisabled(0) and (GetGameTimer() - GUI.Time) > 150 then
|
||||
SendNUIMessage({
|
||||
action = 'controlPressed',
|
||||
control = 'ENTER'
|
||||
})
|
||||
|
||||
SendNUIMessage({action = 'controlPressed', control = 'ENTER'})
|
||||
GUI.Time = GetGameTimer()
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 177) and IsInputDisabled(0) and (GetGameTimer() - GUI.Time) > 150 then
|
||||
SendNUIMessage({
|
||||
action = 'controlPressed',
|
||||
control = 'BACKSPACE'
|
||||
})
|
||||
|
||||
SendNUIMessage({action = 'controlPressed', control = 'BACKSPACE'})
|
||||
GUI.Time = GetGameTimer()
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 27) and IsInputDisabled(0) and (GetGameTimer() - GUI.Time) > 200 then
|
||||
SendNUIMessage({
|
||||
action = 'controlPressed',
|
||||
control = 'TOP'
|
||||
})
|
||||
|
||||
SendNUIMessage({action = 'controlPressed', control = 'TOP'})
|
||||
GUI.Time = GetGameTimer()
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 173) and IsInputDisabled(0) and (GetGameTimer() - GUI.Time) > 200 then
|
||||
SendNUIMessage({
|
||||
action = 'controlPressed',
|
||||
control = 'DOWN'
|
||||
})
|
||||
|
||||
SendNUIMessage({action = 'controlPressed', control = 'DOWN'})
|
||||
GUI.Time = GetGameTimer()
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 174) and IsInputDisabled(0) and (GetGameTimer() - GUI.Time) > 150 then
|
||||
SendNUIMessage({
|
||||
action = 'controlPressed',
|
||||
control = 'LEFT'
|
||||
})
|
||||
|
||||
SendNUIMessage({action = 'controlPressed', control = 'LEFT'})
|
||||
GUI.Time = GetGameTimer()
|
||||
end
|
||||
|
||||
if IsControlPressed(0, 175) and IsInputDisabled(0) and (GetGameTimer() - GUI.Time) > 150 then
|
||||
SendNUIMessage({
|
||||
action = 'controlPressed',
|
||||
control = 'RIGHT'
|
||||
})
|
||||
|
||||
SendNUIMessage({action = 'controlPressed', control = 'RIGHT'})
|
||||
GUI.Time = GetGameTimer()
|
||||
end
|
||||
|
||||
end
|
||||
end)
|
||||
|
||||
end)
|
||||
|
||||
+1
-1
@@ -91,4 +91,4 @@
|
||||
|
||||
.menu .menu-items .menu-item.selected {
|
||||
background-color: #d0d0d0;
|
||||
}
|
||||
}
|
||||
|
||||
+44
-62
@@ -1,9 +1,8 @@
|
||||
(function(){
|
||||
|
||||
let MenuTpl =
|
||||
'<div id="menu_{{_namespace}}_{{_name}}" class="menu{{#align}} align-{{align}}{{/align}}">' +
|
||||
'<div class="head"><span>{{{title}}}</span></div>' +
|
||||
'<div class="menu-items">' +
|
||||
'<div class="menu-items">' +
|
||||
'{{#elements}}' +
|
||||
'<div class="menu-item {{#selected}}selected{{/selected}}">' +
|
||||
'{{{label}}}{{#isSlider}} : <{{{sliderLabel}}}>{{/isSlider}}' +
|
||||
@@ -14,14 +13,13 @@
|
||||
'</div>'
|
||||
;
|
||||
|
||||
window.ESX_MENU = {};
|
||||
window.ESX_MENU = {};
|
||||
ESX_MENU.ResourceName = 'esx_menu_default';
|
||||
ESX_MENU.opened = {};
|
||||
ESX_MENU.focus = [];
|
||||
ESX_MENU.pos = {};
|
||||
ESX_MENU.opened = {};
|
||||
ESX_MENU.focus = [];
|
||||
ESX_MENU.pos = {};
|
||||
|
||||
ESX_MENU.open = function(namespace, name, data) {
|
||||
|
||||
if (typeof ESX_MENU.opened[namespace] == 'undefined') {
|
||||
ESX_MENU.opened[namespace] = {};
|
||||
}
|
||||
@@ -40,17 +38,17 @@
|
||||
}
|
||||
}
|
||||
|
||||
data._index = ESX_MENU.focus.length;
|
||||
data._index = ESX_MENU.focus.length;
|
||||
data._namespace = namespace;
|
||||
data._name = name;
|
||||
data._name = name;
|
||||
|
||||
for (let i=0; i<data.elements.length; i++) {
|
||||
data.elements[i]._namespace = namespace;
|
||||
data.elements[i]._name = name;
|
||||
data.elements[i]._name = name;
|
||||
}
|
||||
|
||||
ESX_MENU.opened[namespace][name] = data;
|
||||
ESX_MENU.pos [namespace][name] = 0;
|
||||
ESX_MENU.pos[namespace][name] = 0;
|
||||
|
||||
for (let i=0; i<data.elements.length; i++) {
|
||||
if (data.elements[i].selected) {
|
||||
@@ -62,15 +60,14 @@
|
||||
|
||||
ESX_MENU.focus.push({
|
||||
namespace: namespace,
|
||||
name : name
|
||||
name: name
|
||||
});
|
||||
|
||||
|
||||
ESX_MENU.render();
|
||||
$('#menu_' + namespace + '_' + name).find('.menu-item.selected')[0].scrollIntoView();
|
||||
};
|
||||
|
||||
ESX_MENU.close = function(namespace, name) {
|
||||
|
||||
delete ESX_MENU.opened[namespace][name];
|
||||
|
||||
for (let i=0; i<ESX_MENU.focus.length; i++) {
|
||||
@@ -81,37 +78,33 @@
|
||||
}
|
||||
|
||||
ESX_MENU.render();
|
||||
|
||||
};
|
||||
|
||||
ESX_MENU.render = function() {
|
||||
|
||||
let menuContainer = document.getElementById('menus');
|
||||
let focused = ESX_MENU.getFocused();
|
||||
let menuContainer = document.getElementById('menus');
|
||||
let focused = ESX_MENU.getFocused();
|
||||
menuContainer.innerHTML = '';
|
||||
|
||||
$(menuContainer).hide();
|
||||
|
||||
for (let namespace in ESX_MENU.opened) {
|
||||
for (let name in ESX_MENU.opened[namespace]) {
|
||||
|
||||
let menuData = ESX_MENU.opened[namespace][name];
|
||||
let view = JSON.parse(JSON.stringify(menuData));
|
||||
let view = JSON.parse(JSON.stringify(menuData));
|
||||
|
||||
for (let i=0; i<menuData.elements.length; i++) {
|
||||
let element = view.elements[i];
|
||||
|
||||
switch (element.type) {
|
||||
case 'default' : break;
|
||||
case 'default': break;
|
||||
|
||||
case 'slider' : {
|
||||
element.isSlider = true;
|
||||
case 'slider': {
|
||||
element.isSlider = true;
|
||||
element.sliderLabel = (typeof element.options == 'undefined') ? element.value : element.options[element.value];
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
default : break;
|
||||
default: break;
|
||||
}
|
||||
|
||||
if (i == ESX_MENU.pos[namespace][name]) {
|
||||
@@ -134,28 +127,28 @@
|
||||
};
|
||||
|
||||
ESX_MENU.submit = function(namespace, name, data) {
|
||||
$.post('http://' + ESX_MENU.ResourceName + '/menu_submit', JSON.stringify({
|
||||
SendMessage(ESX_MENU.ResourceName, 'menu_submit', {
|
||||
_namespace: namespace,
|
||||
_name : name,
|
||||
current : data,
|
||||
elements : ESX_MENU.opened[namespace][name].elements
|
||||
}));
|
||||
_name: name,
|
||||
current: data,
|
||||
elements: ESX_MENU.opened[namespace][name].elements
|
||||
});
|
||||
};
|
||||
|
||||
ESX_MENU.cancel = function(namespace, name) {
|
||||
$.post('http://' + ESX_MENU.ResourceName + '/menu_cancel', JSON.stringify({
|
||||
SendMessage(ESX_MENU.ResourceName, 'menu_cancel', {
|
||||
_namespace: namespace,
|
||||
_name : name
|
||||
}));
|
||||
_name: name
|
||||
});
|
||||
};
|
||||
|
||||
ESX_MENU.change = function(namespace, name, data) {
|
||||
$.post('http://' + ESX_MENU.ResourceName + '/menu_change', JSON.stringify({
|
||||
SendMessage(ESX_MENU.ResourceName, 'menu_change', {
|
||||
_namespace: namespace,
|
||||
_name : name,
|
||||
current : data,
|
||||
elements : ESX_MENU.opened[namespace][name].elements
|
||||
}));
|
||||
_name: name,
|
||||
current: data,
|
||||
elements: ESX_MENU.opened[namespace][name].elements
|
||||
});
|
||||
};
|
||||
|
||||
ESX_MENU.getFocused = function() {
|
||||
@@ -163,7 +156,6 @@
|
||||
};
|
||||
|
||||
window.onData = (data) => {
|
||||
|
||||
switch (data.action) {
|
||||
|
||||
case 'openMenu': {
|
||||
@@ -177,16 +169,15 @@
|
||||
}
|
||||
|
||||
case 'controlPressed': {
|
||||
|
||||
switch (data.control) {
|
||||
|
||||
case 'ENTER': {
|
||||
let focused = ESX_MENU.getFocused();
|
||||
|
||||
if (typeof focused != 'undefined') {
|
||||
let menu = ESX_MENU.opened[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let elem = menu.elements[pos];
|
||||
let menu = ESX_MENU.opened[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let elem = menu.elements[pos];
|
||||
|
||||
if (menu.elements.length > 0) {
|
||||
ESX_MENU.submit(focused.namespace, focused.name, elem);
|
||||
@@ -207,13 +198,11 @@
|
||||
}
|
||||
|
||||
case 'TOP': {
|
||||
|
||||
let focused = ESX_MENU.getFocused();
|
||||
|
||||
if (typeof focused != 'undefined') {
|
||||
|
||||
let menu = ESX_MENU.opened[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
|
||||
if (pos > 0) {
|
||||
ESX_MENU.pos[focused.namespace][focused.name]--;
|
||||
@@ -238,16 +227,14 @@
|
||||
}
|
||||
|
||||
break;
|
||||
|
||||
}
|
||||
|
||||
case 'DOWN' : {
|
||||
|
||||
case 'DOWN': {
|
||||
let focused = ESX_MENU.getFocused();
|
||||
|
||||
if (typeof focused != 'undefined') {
|
||||
let menu = ESX_MENU.opened[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let menu = ESX_MENU.opened[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let length = menu.elements.length;
|
||||
|
||||
if (pos < length - 1) {
|
||||
@@ -275,13 +262,12 @@
|
||||
break;
|
||||
}
|
||||
|
||||
case 'LEFT' : {
|
||||
|
||||
case 'LEFT': {
|
||||
let focused = ESX_MENU.getFocused();
|
||||
|
||||
if (typeof focused != 'undefined') {
|
||||
let menu = ESX_MENU.opened[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let elem = menu.elements[pos];
|
||||
|
||||
switch(elem.type) {
|
||||
@@ -308,13 +294,12 @@
|
||||
break;
|
||||
}
|
||||
|
||||
case 'RIGHT' : {
|
||||
|
||||
case 'RIGHT': {
|
||||
let focused = ESX_MENU.getFocused();
|
||||
|
||||
if (typeof focused != 'undefined') {
|
||||
let menu = ESX_MENU.opened[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let pos = ESX_MENU.pos[focused.namespace][focused.name];
|
||||
let elem = menu.elements[pos];
|
||||
|
||||
switch(elem.type) {
|
||||
@@ -344,15 +329,12 @@
|
||||
break;
|
||||
}
|
||||
|
||||
default : break;
|
||||
|
||||
default: break;
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
};
|
||||
|
||||
window.onload = function(e){
|
||||
@@ -361,4 +343,4 @@
|
||||
});
|
||||
};
|
||||
|
||||
})();
|
||||
})();
|
||||
|
||||
+6
-5
@@ -1,16 +1,17 @@
|
||||
<html>
|
||||
|
||||
<head>
|
||||
<link rel="stylesheet" href="css/app.css" />
|
||||
<meta charset="utf-8">
|
||||
<link rel="stylesheet" href="nui://esx_menu_default/html/css/app.css">
|
||||
</head>
|
||||
|
||||
<body>
|
||||
<div id="menus"></div>
|
||||
|
||||
<script src="nui://game/ui/jquery.js"></script>
|
||||
<script src="nui://game/ui/jquery.js" type="text/javascript"></script>
|
||||
<script src="nui://es_extended/html/js/wrapper.js"></script>
|
||||
<script src="js/mustache.min.js"></script>
|
||||
<script src="js/app.js"></script>
|
||||
<script src="nui://esx_menu_default/html/js/mustache.min.js" type="text/javascript"></script>
|
||||
<script src="nui://esx_menu_default/html/js/app.js" type="text/javascript"></script>
|
||||
</body>
|
||||
|
||||
</html>
|
||||
</html>
|
||||
|
||||
Reference in New Issue
Block a user