-
Notifications
You must be signed in to change notification settings - Fork 11
/
Copy pathutils.ts
33 lines (29 loc) · 1.17 KB
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
import {getDefaultNodePath} from '../../containers/Node/NodePages';
import {getVDiskPagePath} from '../../routes';
import type {TVDiskStateInfo, TVSlotId} from '../../types/api/vdisk';
import {valueIsDefined} from '../../utils';
import {stringifyVdiskId} from '../../utils/dataFormatters/dataFormatters';
import {isFullVDiskData} from '../../utils/disks/helpers';
export function getVDiskLink(data: TVDiskStateInfo | TVSlotId, database?: string) {
let vDiskPath: string | undefined;
const isFullData = isFullVDiskData(data);
const VDiskSlotId = isFullData ? data.VDiskSlotId : data.VSlotId;
if (
valueIsDefined(VDiskSlotId) &&
valueIsDefined(data.PDiskId) &&
valueIsDefined(data.NodeId)
) {
vDiskPath = getVDiskPagePath(VDiskSlotId, data.PDiskId, data.NodeId, {database});
} else if (valueIsDefined(data.NodeId) && isFullVDiskData(data)) {
vDiskPath = getDefaultNodePath(
data.NodeId,
{
pdiskId: data.PDiskId?.toString(),
vdiskId: stringifyVdiskId(data.VDiskId),
database,
},
'structure',
);
}
return vDiskPath;
}