mirror of
https://github.com/wanderer-industries/wanderer
synced 2025-12-12 02:35:42 +00:00
feat(Map): Revision of sorting from also adding ability to sort all columns
Fixes #2
This commit is contained in:
@@ -4,3 +4,15 @@
|
|||||||
font-size: 12px !important;
|
font-size: 12px !important;
|
||||||
line-height: 8px;
|
line-height: 8px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.Table {
|
||||||
|
:global {
|
||||||
|
.p-sortable-column > .p-column-header-content > span:last-child {
|
||||||
|
transform: scale(0.7);
|
||||||
|
|
||||||
|
& > svg {
|
||||||
|
margin-left: 4px;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
@@ -25,6 +25,7 @@ import {
|
|||||||
renderName,
|
renderName,
|
||||||
renderTimeLeft,
|
renderTimeLeft,
|
||||||
} from '@/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/renders';
|
} from '@/hooks/Mapper/components/mapInterface/widgets/SystemSignatures/renders';
|
||||||
|
// import { PrimeIcons } from 'primereact/api';
|
||||||
|
|
||||||
interface SystemSignaturesContentProps {
|
interface SystemSignaturesContentProps {
|
||||||
systemId: string;
|
systemId: string;
|
||||||
@@ -50,7 +51,7 @@ export const SystemSignaturesContent = ({ systemId, settings }: SystemSignatures
|
|||||||
const handleResize = useCallback(() => {
|
const handleResize = useCallback(() => {
|
||||||
if (tableRef.current) {
|
if (tableRef.current) {
|
||||||
const tableWidth = tableRef.current.offsetWidth;
|
const tableWidth = tableRef.current.offsetWidth;
|
||||||
const otherColumnsWidth = 265;
|
const otherColumnsWidth = 276;
|
||||||
const availableWidth = tableWidth - otherColumnsWidth;
|
const availableWidth = tableWidth - otherColumnsWidth;
|
||||||
setNameColumnWidth(`${availableWidth}px`);
|
setNameColumnWidth(`${availableWidth}px`);
|
||||||
}
|
}
|
||||||
@@ -159,6 +160,16 @@ export const SystemSignaturesContent = ({ systemId, settings }: SystemSignatures
|
|||||||
setHoveredSig(null);
|
setHoveredSig(null);
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
|
// const renderToolbar = (/*row: SystemSignature*/) => {
|
||||||
|
// return (
|
||||||
|
// <div className="flex justify-end items-center gap-2">
|
||||||
|
// <span className={clsx(PrimeIcons.PENCIL, 'text-[10px]')}></span>
|
||||||
|
// </div>
|
||||||
|
// );
|
||||||
|
// };
|
||||||
|
|
||||||
|
const headerClasses = clsx(classes.HeaderRow, 'text-[12px] py-[3px]');
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<div ref={tableRef} className="h-full">
|
<div ref={tableRef} className="h-full">
|
||||||
{filteredSignatures.length === 0 ? (
|
{filteredSignatures.length === 0 ? (
|
||||||
@@ -168,19 +179,21 @@ export const SystemSignaturesContent = ({ systemId, settings }: SystemSignatures
|
|||||||
) : (
|
) : (
|
||||||
<>
|
<>
|
||||||
<DataTable
|
<DataTable
|
||||||
|
className={classes.Table}
|
||||||
value={filteredSignatures}
|
value={filteredSignatures}
|
||||||
size="small"
|
size="small"
|
||||||
selectionMode="multiple"
|
selectionMode="multiple"
|
||||||
selection={selectedSignatures}
|
selection={selectedSignatures}
|
||||||
|
metaKeySelection
|
||||||
onSelectionChange={e => setSelectedSignatures(e.value)}
|
onSelectionChange={e => setSelectedSignatures(e.value)}
|
||||||
dataKey="eve_id"
|
dataKey="eve_id"
|
||||||
tableClassName="w-full select-none"
|
tableClassName="w-full select-none"
|
||||||
resizableColumns
|
resizableColumns={false}
|
||||||
rowHover
|
rowHover
|
||||||
selectAll
|
selectAll
|
||||||
sortField="eve_id"
|
sortField="eve_id"
|
||||||
onRowMouseEnter={handleEnterRow}
|
onRowMouseEnter={compact || medium ? handleEnterRow : undefined}
|
||||||
onRowMouseLeave={handleLeaveRow}
|
onRowMouseLeave={compact || medium ? handleLeaveRow : undefined}
|
||||||
rowClassName={row => {
|
rowClassName={row => {
|
||||||
if (selectedSignatures.some(x => x.eve_id === row.eve_id)) {
|
if (selectedSignatures.some(x => x.eve_id === row.eve_id)) {
|
||||||
return clsx(classes.TableRowCompact, 'bg-amber-500/50 hover:bg-amber-500/70 transition duration-200');
|
return clsx(classes.TableRowCompact, 'bg-amber-500/50 hover:bg-amber-500/70 transition duration-200');
|
||||||
@@ -196,47 +209,55 @@ export const SystemSignaturesContent = ({ systemId, settings }: SystemSignatures
|
|||||||
>
|
>
|
||||||
<Column
|
<Column
|
||||||
bodyClassName="p-0 px-1"
|
bodyClassName="p-0 px-1"
|
||||||
|
headerClassName={headerClasses}
|
||||||
field="group"
|
field="group"
|
||||||
body={renderIcon}
|
body={renderIcon}
|
||||||
style={{ maxWidth: 26, minWidth: 26, width: 26 }}
|
style={{ maxWidth: 26, minWidth: 26, width: 26 }}
|
||||||
headerStyle={{ fontSize: "14px", padding: "0.25rem" }}
|
|
||||||
></Column>
|
></Column>
|
||||||
|
|
||||||
<Column
|
<Column
|
||||||
field="eve_id"
|
field="eve_id"
|
||||||
header="Id"
|
header="Id"
|
||||||
|
headerClassName={headerClasses}
|
||||||
bodyClassName="text-ellipsis overflow-hidden whitespace-nowrap"
|
bodyClassName="text-ellipsis overflow-hidden whitespace-nowrap"
|
||||||
style={{ maxWidth: 72, minWidth: 72, width: 72 }}
|
style={{ maxWidth: 72, minWidth: 72, width: 72 }}
|
||||||
headerStyle={{ fontSize: "14px", padding: "0.25rem" }}
|
|
||||||
sortable
|
sortable
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="group"
|
field="group"
|
||||||
header="Group"
|
header="Group"
|
||||||
|
headerClassName={headerClasses}
|
||||||
bodyClassName="text-ellipsis overflow-hidden whitespace-nowrap"
|
bodyClassName="text-ellipsis overflow-hidden whitespace-nowrap"
|
||||||
hidden={compact}
|
hidden={compact}
|
||||||
headerStyle={{ fontSize: "14px", padding: "0.25rem" }}
|
|
||||||
sortable
|
sortable
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="name"
|
field="name"
|
||||||
header="Name"
|
header="Name"
|
||||||
|
headerClassName={headerClasses}
|
||||||
bodyClassName="text-ellipsis overflow-hidden whitespace-nowrap"
|
bodyClassName="text-ellipsis overflow-hidden whitespace-nowrap"
|
||||||
body={renderName}
|
body={renderName}
|
||||||
style={{ maxWidth: nameColumnWidth }}
|
style={{ maxWidth: nameColumnWidth }}
|
||||||
hidden={compact || medium}
|
hidden={compact || medium}
|
||||||
headerStyle={{ fontSize: "14px", padding: "0.25rem" }}
|
|
||||||
sortable
|
sortable
|
||||||
></Column>
|
></Column>
|
||||||
<Column
|
<Column
|
||||||
field="updated_at"
|
field="updated_at"
|
||||||
header="Updated"
|
header="Updated"
|
||||||
dataType="date"
|
dataType="date"
|
||||||
|
headerClassName={headerClasses}
|
||||||
bodyClassName="w-[80px] text-ellipsis overflow-hidden whitespace-nowrap"
|
bodyClassName="w-[80px] text-ellipsis overflow-hidden whitespace-nowrap"
|
||||||
body={renderTimeLeft}
|
body={renderTimeLeft}
|
||||||
headerStyle={{ fontSize: "14px", padding: "0.25rem" }}
|
|
||||||
sortable
|
sortable
|
||||||
></Column>
|
></Column>
|
||||||
|
|
||||||
|
{/*<Column*/}
|
||||||
|
{/* bodyClassName="p-0 pl-1 pr-2"*/}
|
||||||
|
{/* field="group"*/}
|
||||||
|
{/* body={renderToolbar}*/}
|
||||||
|
{/* headerClassName={headerClasses}*/}
|
||||||
|
{/* style={{ maxWidth: 26, minWidth: 26, width: 26 }}*/}
|
||||||
|
{/*></Column>*/}
|
||||||
</DataTable>
|
</DataTable>
|
||||||
</>
|
</>
|
||||||
)}
|
)}
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ import { TimeLeft } from '@/hooks/Mapper/components/ui-kit';
|
|||||||
|
|
||||||
export const renderTimeLeft = (row: SystemSignature) => {
|
export const renderTimeLeft = (row: SystemSignature) => {
|
||||||
return (
|
return (
|
||||||
<div className="flex justify-end w-full items-center">
|
<div className="flex w-full items-center">
|
||||||
<TimeLeft cDate={row.updated_at ? new Date(row.updated_at) : undefined} />
|
<TimeLeft cDate={row.updated_at ? new Date(row.updated_at) : undefined} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
|
|||||||
Reference in New Issue
Block a user