Compare commits

...
Author SHA1 Message Date
braginini 5da13a8226 Add user/no user filter for peers 2026-03-20 15:49:59 +01:00
2 changed files with 77 additions and 23 deletions

No files matched your search

+1 -19
View File
@@ -168,7 +168,6 @@
"integrity": "sha512-CGOfOJqWjg2qW/Mb6zNsDm+u5vFQ8DxXfbM09z69p5Z6+mE1ikP2jUXw+j42Pf1XTYED2Rni5f95npYeuwMDQA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@babel/code-frame": "^7.29.0",
"@babel/generator": "^7.29.0",
@@ -3031,7 +3030,6 @@
"resolved": "https://registry.npmjs.org/@types/react/-/react-19.2.10.tgz",
"integrity": "sha512-WPigyYuGhgZ/cTPRXB2EwUw+XvsRA3GqHlsP4qteqrnnjDrApbS7MxcGr/hke5iUoeB7E/gQtrs9I37zAJ0Vjw==",
"license": "MIT",
"peer": true,
"dependencies": {
"csstype": "^3.2.2"
}
@@ -3041,7 +3039,6 @@
"resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-19.2.3.tgz",
"integrity": "sha512-jp2L/eY6fn+KgVVQAOqYItbF0VY/YApe5Mz2F0aykSO8gx31bYCZyvSeYxCHKvzHG5eZjc+zyaS5BrBWya2+kQ==",
"license": "MIT",
"peer": true,
"peerDependencies": {
"@types/react": "^19.2.0"
}
@@ -3100,7 +3097,6 @@
"integrity": "sha512-BtE0k6cjwjLZoZixN0t5AKP0kSzlGu7FctRXYuPAm//aaiZhmfq1JwdYpYr1brzEspYyFeF+8XF5j2VK6oalrA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@typescript-eslint/scope-manager": "8.54.0",
"@typescript-eslint/types": "8.54.0",
@@ -3607,8 +3603,7 @@
"version": "5.5.0",
"resolved": "https://registry.npmjs.org/@xterm/xterm/-/xterm-5.5.0.tgz",
"integrity": "sha512-hqJHYaQb5OptNunnyAnkHyM8aCjZ1MEIDTQu1iIbbTD/xops91NB5yq1ZK/dC2JDbVWtF23zUtl9JE2NqwT87A==",
"license": "MIT",
"peer": true
"license": "MIT"
},
"node_modules/@xyflow/react": {
"version": "12.10.0",
@@ -3647,7 +3642,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.15.0.tgz",
"integrity": "sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==",
"license": "MIT",
"peer": true,
"bin": {
"acorn": "bin/acorn"
},
@@ -4065,7 +4059,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"baseline-browser-mapping": "^2.9.0",
"caniuse-lite": "^1.0.30001759",
@@ -4694,7 +4687,6 @@
"resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz",
"integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==",
"license": "ISC",
"peer": true,
"engines": {
"node": ">=12"
}
@@ -5223,7 +5215,6 @@
"resolved": "https://registry.npmjs.org/eslint/-/eslint-9.39.2.tgz",
"integrity": "sha512-LEyamqS7W5HB3ujJyvi0HQK/dtVINZvd5mAAp9eT5S/ujByGjiZLCzPcHVzuXbpJDJF/cxwHlfceVUDZ2lnSTw==",
"license": "MIT",
"peer": true,
"dependencies": {
"@eslint-community/eslint-utils": "^4.8.0",
"@eslint-community/regexpp": "^4.12.1",
@@ -5421,7 +5412,6 @@
"integrity": "sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==",
"dev": true,
"license": "MIT",
"peer": true,
"dependencies": {
"@rtsao/scc": "^1.1.0",
"array-includes": "^3.1.9",
@@ -6715,7 +6705,6 @@
"resolved": "https://registry.npmjs.org/jiti/-/jiti-1.21.7.tgz",
"integrity": "sha512-/imKNG4EbWNrVjoNC/1H5/9GFy+tqjGBHCaSsN+P2RnPqjsLmv6UD3Ej+Kj8nBWaRAwyk7kK5ZUc+OEatnTR3A==",
"license": "MIT",
"peer": true,
"bin": {
"jiti": "bin/jiti.js"
}
@@ -7470,7 +7459,6 @@
}
],
"license": "MIT",
"peer": true,
"dependencies": {
"nanoid": "^3.3.11",
"picocolors": "^1.1.1",
@@ -7678,7 +7666,6 @@
"resolved": "https://registry.npmjs.org/react/-/react-19.2.4.tgz",
"integrity": "sha512-9nfp2hYpCwOjAN+8TZFGhtWEwgvWHXqESH8qT89AT/lWklpLON22Lc8pEtnpsZz7VmawabSU0gCjnj8aC0euHQ==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=0.10.0"
}
@@ -7719,7 +7706,6 @@
"resolved": "https://registry.npmjs.org/react-dom/-/react-dom-19.2.4.tgz",
"integrity": "sha512-AXJdLo8kgMbimY95O2aKQqsz2iWi9jMgKJhRBAxECE4IFxfcazB2LmzloIoibJI3C12IlY20+KFaLv+71bUJeQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"scheduler": "^0.27.0"
},
@@ -8614,7 +8600,6 @@
"resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.4.19.tgz",
"integrity": "sha512-3ofp+LL8E+pK/JuPLPggVAIaEuhvIz4qNcf3nA1Xn2o/7fb7s/TYpHhwGDv1ZU3PkBluUVaF8PyCHcm48cKLWQ==",
"license": "MIT",
"peer": true,
"dependencies": {
"@alloc/quick-lru": "^5.2.0",
"arg": "^5.0.2",
@@ -8781,7 +8766,6 @@
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.3.tgz",
"integrity": "sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==",
"license": "MIT",
"peer": true,
"engines": {
"node": ">=12"
},
@@ -8947,7 +8931,6 @@
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.9.3.tgz",
"integrity": "sha512-jl1vZzPDinLr9eUt3J/t7V6FgNEw9QjvBPdysz9KfQDD41fQrC2Y4vKQdiaUpFT4bXlb1RHhLpp8wtm6M5TgSw==",
"license": "Apache-2.0",
"peer": true,
"bin": {
"tsc": "bin/tsc",
"tsserver": "bin/tsserver"
@@ -9275,7 +9258,6 @@
"integrity": "sha512-rftlrkhHZOcjDwkGlnUtZZkvaPHCsDATp4pGpuOOMDaTdDDXF91wuVDJoWoPsKX/3YPQ5fHuF3STjcYyKr+Qhg==",
"dev": true,
"license": "MIT",
"peer": true,
"funding": {
"url": "https://github.com/sponsors/colinhacks"
}
+76 -4
View File
@@ -97,6 +97,10 @@ const PeersTableColumns: ColumnDef<Peer>[] = [
accessorKey: "ip",
sortingFn: "text",
},
{
id: "has_user",
accessorFn: (peer) => !!peer.user_id,
},
{
id: "user_name",
accessorFn: (peer) => (peer.user ? peer.user?.name : "Unknown"),
@@ -314,6 +318,7 @@ export default function PeersTable({
group_name_strings: false,
group_names: false,
ip: false,
has_user: false,
serial: false,
user_name: false,
user_email: false,
@@ -336,6 +341,9 @@ export default function PeersTable({
let groupFilters = table
.getColumn("group_names")
?.getFilterValue();
let hasUserFilter = table
.getColumn("has_user")
?.getFilterValue();
table.setColumnFilters([
{
id: "connected",
@@ -350,8 +358,8 @@ export default function PeersTable({
value: groupFilters ?? [],
},
{
id: "group_names",
value: groupFilters ?? [],
id: "has_user",
value: hasUserFilter,
},
]);
resetSelectedRows();
@@ -370,6 +378,9 @@ export default function PeersTable({
let groupFilters = table
.getColumn("group_names")
?.getFilterValue();
let hasUserFilter = table
.getColumn("has_user")
?.getFilterValue();
table.setColumnFilters([
{
id: "connected",
@@ -384,8 +395,8 @@ export default function PeersTable({
value: groupFilters ?? [],
},
{
id: "group_names",
value: groupFilters ?? [],
id: "has_user",
value: hasUserFilter,
},
]);
resetSelectedRows();
@@ -405,6 +416,9 @@ export default function PeersTable({
let groupFilters = table
.getColumn("group_names")
?.getFilterValue();
let hasUserFilter = table
.getColumn("has_user")
?.getFilterValue();
table.setColumnFilters([
{
id: "connected",
@@ -418,6 +432,10 @@ export default function PeersTable({
id: "group_names",
value: groupFilters ?? [],
},
{
id: "has_user",
value: hasUserFilter,
},
]);
resetSelectedRows();
}}
@@ -442,6 +460,9 @@ export default function PeersTable({
undefined
? true
: undefined;
let hasUserFilter = table
.getColumn("has_user")
?.getFilterValue();
table.setColumnFilters([
{
@@ -452,6 +473,10 @@ export default function PeersTable({
id: "approval_required",
value: current,
},
{
id: "has_user",
value: hasUserFilter,
},
]);
resetSelectedRows();
@@ -468,6 +493,53 @@ export default function PeersTable({
</Button>
)}
{!isUser && (
<ButtonGroup disabled={peers?.length == 0}>
<ButtonGroup.Button
disabled={peers?.length == 0}
onClick={() => {
table.setPageIndex(0);
const current =
table.getColumn("has_user")?.getFilterValue();
table
.getColumn("has_user")
?.setFilterValue(
current === true ? undefined : true,
);
resetSelectedRows();
}}
variant={
table.getColumn("has_user")?.getFilterValue() === true
? "tertiary"
: "secondary"
}
>
With Users
</ButtonGroup.Button>
<ButtonGroup.Button
disabled={peers?.length == 0}
onClick={() => {
table.setPageIndex(0);
const current =
table.getColumn("has_user")?.getFilterValue();
table
.getColumn("has_user")
?.setFilterValue(
current === false ? undefined : false,
);
resetSelectedRows();
}}
variant={
table.getColumn("has_user")?.getFilterValue() === false
? "tertiary"
: "secondary"
}
>
No Users
</ButtonGroup.Button>
</ButtonGroup>
)}
<DataTableRowsPerPage table={table} disabled={peers?.length == 0} />
{!isUser && (