diff --git a/src/logger/index.ts b/src/logger/index.ts
index 03bf776..999d035 100644
--- a/src/logger/index.ts
+++ b/src/logger/index.ts
@@ -48,12 +48,14 @@ RegisterCommand(
true
);
-onNet(`oxmysql:fetchResource`, (resource: string) => {
- if (typeof resource !== 'string') return;
+onNet(`oxmysql:fetchResource`, (data: {resource: string, pageIndex: number}) => {
+ if (typeof data.resource !== 'string') return;
- const queries = logStorage[resource];
+ const queries = logStorage[data.resource].slice(data.pageIndex * 12, data.pageIndex + 12)
+
+ const pageCount = Math.ceil(logStorage[data.resource].length / 12)
if (!queries) return;
- emitNet(`oxmysql:loadResource`, source, queries);
+ emitNet(`oxmysql:loadResource`, source, {queries, pageCount});
});
diff --git a/ui.lua b/ui.lua
index 9763d9a..6746059 100644
--- a/ui.lua
+++ b/ui.lua
@@ -1,12 +1,8 @@
RegisterNetEvent('oxmysql:openUi', function(data)
SendNUIMessage({
- action = 'init',
+ action = 'openUI',
data = data
})
- SendNUIMessage({
- action = 'setVisible',
- data = true
- })
SetNuiFocus(true, true)
end)
@@ -15,8 +11,8 @@ RegisterNUICallback('exit', function(_, cb)
SetNuiFocus(false, false)
end)
-RegisterNUICallback('fetchResource', function(resource, cb)
- TriggerServerEvent('oxmysql:fetchResource', resource)
+RegisterNUICallback('fetchResource', function(data, cb)
+ TriggerServerEvent('oxmysql:fetchResource', data)
cb(true)
end)
diff --git a/ui/src/components/App.tsx b/ui/src/components/App.tsx
index 19ea523..2b49da5 100644
--- a/ui/src/components/App.tsx
+++ b/ui/src/components/App.tsx
@@ -23,27 +23,24 @@ const App: React.FC = () => {
return (
- {visible && (
-
-
-
-
-
-
- } />
-
-
-
- )}
+
+
+
+
+
+
+ } />
+
+
+
);
};
diff --git a/ui/src/components/NavBars/LeftBar.tsx b/ui/src/components/NavBars/LeftBar.tsx
index 79f0f29..cd831c9 100644
--- a/ui/src/components/NavBars/LeftBar.tsx
+++ b/ui/src/components/NavBars/LeftBar.tsx
@@ -19,7 +19,7 @@ const LeftBar: React.FC = () => {
const [initData, setInitData] = useState({ resources: [''], totalQueries: 0, totalTime: 0 });
- useNuiEvent('init', (data) => {
+ useNuiEvent('openUI', (data) => {
setInitData(data);
});
diff --git a/ui/src/components/NavBars/RightBar.tsx b/ui/src/components/NavBars/RightBar.tsx
index 77d1194..f1414c8 100644
--- a/ui/src/components/NavBars/RightBar.tsx
+++ b/ui/src/components/NavBars/RightBar.tsx
@@ -8,7 +8,9 @@ const RightBar: React.FC = () => {
// Debug data defined in LeftBar.tsx
- useNuiEvent('init', (data) => setInitData(data));
+ useNuiEvent('openUI', (data) => {
+ setInitData(data);
+ });
return (
diff --git a/ui/src/components/Resource.tsx b/ui/src/components/Resource.tsx
index 3a23877..4c8f8b4 100644
--- a/ui/src/components/Resource.tsx
+++ b/ui/src/components/Resource.tsx
@@ -25,6 +25,11 @@ interface TableData {
executionTime: number;
}
+interface NuiData {
+ queries: QueryData[];
+ pageCount: number;
+}
+
const Resource: React.FC = () => {
let { resource } = useParams();
const [resourceData, setResourceData] = useState([
@@ -34,24 +39,11 @@ const Resource: React.FC = () => {
executionTime: 0,
},
]);
+ const [totalPages, setTotalPages] = useState(1);
- useEffect(() => {
- fetchNui('fetchResource', resource);
- debugData([
- {
- action: 'loadResource',
- data: [
- { query: 'SELECT * FROM `users`', executionTime: 5 },
- { query: 'SELECT * FROM `owned_vehicles`', executionTime: 2 },
- { query: 'SELECT * FROM `properties`', executionTime: 7 },
- { query: 'SELECT * FROM `phone_messages`', executionTime: 13 },
- ],
- },
- ]);
- }, [resource]);
-
- useNuiEvent('loadResource', (data) => {
- setResourceData(data);
+ useNuiEvent('loadResource', (data) => {
+ setResourceData(data.queries);
+ setTotalPages(data.pageCount);
});
const data = useMemo(() => resourceData, [resourceData]);
@@ -84,9 +76,30 @@ const Resource: React.FC = () => {
previousPage,
state: { pageIndex },
prepareRow,
- } = useTable({ columns, data, initialState: { pageSize: 12 } }, useSortBy, usePagination);
+ } = useTable(
+ { columns, data, initialState: { pageSize: 12 }, manualPagination: true, pageCount: totalPages },
+ useSortBy,
+ usePagination
+ );
+
+ useEffect(() => {
+ fetchNui('fetchResource', { resource, pageIndex });
+ debugData([
+ {
+ action: 'loadResource',
+ data: {
+ pageCount: 1,
+ queries: [
+ { query: 'SELECT * FROM `users`', executionTime: 5 },
+ { query: 'SELECT * FROM `owned_vehicles`', executionTime: 2 },
+ { query: 'SELECT * FROM `properties`', executionTime: 7 },
+ { query: 'SELECT * FROM `phone_messages`', executionTime: 13 },
+ ],
+ },
+ },
+ ]);
+ }, [resource, pageIndex]);
- // Todo: pagination
return (
<>
diff --git a/ui/src/index.tsx b/ui/src/index.tsx
index 053e1ac..c49521d 100644
--- a/ui/src/index.tsx
+++ b/ui/src/index.tsx
@@ -1,10 +1,10 @@
import React from 'react';
import ReactDOM from 'react-dom';
-import { BrowserRouter } from "react-router-dom";
+import { BrowserRouter } from 'react-router-dom';
import './index.css';
import App from './components/App';
-import { VisibilityProvider } from "./providers/VisibilityProvider";
-import { ChakraProvider } from '@chakra-ui/react'
+import { VisibilityProvider } from './providers/VisibilityProvider';
+import { ChakraProvider } from '@chakra-ui/react';
ReactDOM.render(
diff --git a/ui/src/providers/VisibilityProvider.tsx b/ui/src/providers/VisibilityProvider.tsx
index 53d23e7..b8de6c0 100644
--- a/ui/src/providers/VisibilityProvider.tsx
+++ b/ui/src/providers/VisibilityProvider.tsx
@@ -14,7 +14,7 @@ interface VisibilityProviderValue {
export const VisibilityProvider: React.FC = ({ children }) => {
const [visible, setVisible] = useState(false);
- useNuiEvent('setVisible', setVisible);
+ useNuiEvent('openUI', setVisible);
// Handle pressing escape/backspace
useEffect(() => {