ui(admin): show alias in allocation dropdown; fixes #3434

This commit is contained in:
Matthew Penner 2021-09-16 16:54:02 -06:00
parent 9b7cea5d04
commit 34da772db7
No known key found for this signature in database
GPG Key ID: 030E4AB751DC756F
2 changed files with 14 additions and 4 deletions

View File

@ -12,19 +12,29 @@ export interface Allocation {
relations: {
server?: Server;
}
getDisplayText (): string;
}
export const rawDataToAllocation = ({ attributes }: FractalResponseData): Allocation => ({
id: attributes.id,
ip: attributes.ip,
port: attributes.port,
alias: attributes.ip_alias || null,
alias: attributes.alias || null,
serverId: attributes.server_id,
assigned: attributes.assigned,
relations: {
server: attributes.relationships?.server?.object === 'server' ? rawDataToServer(attributes.relationships.server as FractalResponseData) : undefined,
},
// TODO: If IP is an IPv6, wrap IP in [].
getDisplayText (): string {
if (attributes.alias !== null) {
return `${attributes.ip}:${attributes.port} (${attributes.alias})`;
}
return `${attributes.ip}:${attributes.port}`;
},
});
export interface Filters {

View File

@ -99,7 +99,7 @@ export function ServerAllocationsContainer ({ server }: { server: Server }) {
const loadOptions = async (inputValue: string, callback: (options: Option[]) => void) => {
const allocations = await getAllocations(server.nodeId, { ip: inputValue, server_id: '0' });
callback(allocations.map(a => {
return { value: a.id.toString(), label: a.ip + ':' + a.port };
return { value: a.id.toString(), label: a.getDisplayText() };
}));
};
@ -114,7 +114,7 @@ export function ServerAllocationsContainer ({ server }: { server: Server }) {
name={'allocationId'}
>
{server.relations?.allocations?.map(a => (
<option key={a.id} value={a.id}>{a.ip}:{a.port}</option>
<option key={a.id} value={a.id}>{a.getDisplayText()}</option>
))}
</Select>
</div>
@ -133,7 +133,7 @@ export function ServerAllocationsContainer ({ server }: { server: Server }) {
name={'removeAllocations'}
label={'Remove Allocations'}
options={server.relations?.allocations?.map(a => {
return { value: a.id.toString(), label: a.ip + ':' + a.port };
return { value: a.id.toString(), label: a.getDisplayText() };
}) || []}
isMulti
isSearchable