mirror of
https://github.com/portainer/portainer.git
synced 2025-07-22 23:09:41 +02:00
* port services from ee * fix external link * post review improvements * remove applications-ports-datatable * minor post review updates * add services help url * post review update * more post review updates * post review updates * rename index to component * fix external ip display and sorting * fix external apps tag * fix ingress screen time format * use uid for row id. Prevent blank link * fix some missing bits ported from EE * match ee * fix display of show system resources * remove icon next to service type
41 lines
1 KiB
TypeScript
41 lines
1 KiB
TypeScript
import { CellProps, Column } from 'react-table';
|
|
|
|
import { Service } from '../../types';
|
|
|
|
export const clusterIP: Column<Service> = {
|
|
Header: 'Cluster IP',
|
|
accessor: 'ClusterIPs',
|
|
id: 'clusterIP',
|
|
Cell: ({ value: clusterIPs }: CellProps<Service, Service['ClusterIPs']>) => {
|
|
if (!clusterIPs?.length) {
|
|
return '-';
|
|
}
|
|
return clusterIPs.map((ip) => <div key={ip}>{ip}</div>);
|
|
},
|
|
disableFilters: true,
|
|
canHide: true,
|
|
sortType: (rowA, rowB) => {
|
|
const a = rowA.original.ClusterIPs;
|
|
const b = rowB.original.ClusterIPs;
|
|
|
|
const ipA = a?.[0];
|
|
const ipB = b?.[0];
|
|
|
|
// no ip's at top, followed by 'None', then ordered by ip
|
|
if (!ipA) return 1;
|
|
if (!ipB) return -1;
|
|
if (ipA === ipB) return 0;
|
|
if (ipA === 'None') return 1;
|
|
if (ipB === 'None') return -1;
|
|
|
|
// natural sort of the ip
|
|
return ipA.localeCompare(
|
|
ipB,
|
|
navigator.languages[0] || navigator.language,
|
|
{
|
|
numeric: true,
|
|
ignorePunctuation: true,
|
|
}
|
|
);
|
|
},
|
|
};
|