mirror of
https://github.com/fosrl/pangolin.git
synced 2026-03-07 03:06:40 +00:00
add datasize helper and add correct sorting to sitestable
This commit is contained in:
@@ -27,6 +27,7 @@ import { formatAxiosError } from "@app/lib/api";
|
|||||||
import { createApiClient } from "@app/lib/api";
|
import { createApiClient } from "@app/lib/api";
|
||||||
import { useEnvContext } from "@app/hooks/useEnvContext";
|
import { useEnvContext } from "@app/hooks/useEnvContext";
|
||||||
import CreateSiteFormModal from "./CreateSiteModal";
|
import CreateSiteFormModal from "./CreateSiteModal";
|
||||||
|
import { parseDataSize } from '@app/lib/dataSize';
|
||||||
|
|
||||||
export type SiteRow = {
|
export type SiteRow = {
|
||||||
id: number;
|
id: number;
|
||||||
@@ -197,7 +198,12 @@ export default function SitesTable({ sites, orgId }: SitesTableProps) {
|
|||||||
<ArrowUpDown className="ml-2 h-4 w-4" />
|
<ArrowUpDown className="ml-2 h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
|
sortingFn: (rowA, rowB) => {
|
||||||
|
const a = parseDataSize(rowA.original.mbIn);
|
||||||
|
const b = parseDataSize(rowB.original.mbIn);
|
||||||
|
return a > b ? 1 : a < b ? -1 : 0;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
accessorKey: "mbOut",
|
accessorKey: "mbOut",
|
||||||
@@ -213,7 +219,12 @@ export default function SitesTable({ sites, orgId }: SitesTableProps) {
|
|||||||
<ArrowUpDown className="ml-2 h-4 w-4" />
|
<ArrowUpDown className="ml-2 h-4 w-4" />
|
||||||
</Button>
|
</Button>
|
||||||
);
|
);
|
||||||
}
|
},
|
||||||
|
sortingFn: (rowA, rowB) => {
|
||||||
|
const a = parseDataSize(rowA.original.mbOut);
|
||||||
|
const b = parseDataSize(rowB.original.mbOut);
|
||||||
|
return a > b ? 1 : a < b ? -1 : 0;
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
accessorKey: "type",
|
accessorKey: "type",
|
||||||
|
|||||||
11
src/lib/dataSize.ts
Normal file
11
src/lib/dataSize.ts
Normal file
@@ -0,0 +1,11 @@
|
|||||||
|
export function parseDataSize(sizeStr: string): number {
|
||||||
|
if (!sizeStr) return 0;
|
||||||
|
const match = sizeStr.trim().toUpperCase().match(/^([\d.]+)\s*([KMGT]?B)$/);
|
||||||
|
if (!match) return 0;
|
||||||
|
const [, numStr, unit] = match;
|
||||||
|
const num = parseFloat(numStr) || 0;
|
||||||
|
const multipliers: Record<string, number> = {
|
||||||
|
B: 1, KB: 1024, MB: 1024**2, GB: 1024**3, TB: 1024**4,
|
||||||
|
};
|
||||||
|
return num * (multipliers[unit] || 1);
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user