Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
22 changes: 22 additions & 0 deletions libs/i18n/locales/en/translation.json
Original file line number Diff line number Diff line change
Expand Up @@ -1107,5 +1107,27 @@
"Out-of-date": "Out-of-date",
"Updating": "Updating",
"Up-to-date": "Up-to-date",
"Masked": "Masked",
"Enabled runtime": "Enabled runtime",
"Masked runtime": "Masked runtime",
"Linked": "Linked",
"Linked runtime": "Linked runtime",
"Generated": "Generated",
"Transient": "Transient",
"Indirect": "Indirect",
"Bad": "Bad",
"Empty": "Empty",
"Loaded": "Loaded",
"Not found": "Not found",
"Bad setting": "Bad setting",
"Merged": "Merged",
"Stub": "Stub",
"Active": "Active",
"Inactive": "Inactive",
"Activating": "Activating",
"Deactivating": "Deactivating",
"Reloading": "Reloading",
"Refreshing": "Refreshing",
"Maintenance": "Maintenance",
"{{ count }} devices matching the labels were selected._zero": "There are no devices matching these labels."
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,11 @@ import { DatabaseIcon } from '@patternfly/react-icons/dist/js/icons/database-ico
import { NetworkIcon } from '@patternfly/react-icons/dist/js/icons/network-icon';
import { ConnectedIcon } from '@patternfly/react-icons/dist/js/icons/connected-icon';
import { useTranslation } from '../../../hooks/useTranslation';
import {
getSystemdActiveStateLabel,
getSystemdEnableStateLabel,
getSystemdLoadStateLabel,
} from '../../../utils/status/systemd';

const unitTypeIconMap: Record<string, React.ComponentType<{ className?: string }>> = {
service: CogIcon,
Expand Down Expand Up @@ -45,17 +50,17 @@ const SystemdUnitRow = ({ unitStatus }: { unitStatus: SystemdUnitStatus }) => {
</Td>
<Td dataLabel={t('Enable')}>
<Label color="blue" variant="outline">
{unitStatus.enableState}
{getSystemdEnableStateLabel(unitStatus.enableState, t)}
</Label>
</Td>
<Td dataLabel={t('Load state')}>
<Label color="blue" variant="outline">
{unitStatus.loadState}
{getSystemdLoadStateLabel(unitStatus.loadState, t)}
</Label>
</Td>
<Td dataLabel={t('Status')}>
<Label color="blue" variant="outline">
{unitStatus.activeState} {unitStatus.subState && `(${unitStatus.subState})`}
{getSystemdActiveStateLabel(unitStatus.activeState, t)} {unitStatus.subState && `(${unitStatus.subState})`}
</Label>
</Td>
</Tr>
Expand Down
88 changes: 88 additions & 0 deletions libs/ui-components/src/utils/status/systemd.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
import { TFunction } from 'react-i18next';

import { SystemdActiveStateType, SystemdEnableStateType, SystemdLoadStateType } from '@flightctl/types';

export const getSystemdEnableStateLabel = (enableState: SystemdEnableStateType, t: TFunction): string => {
switch (enableState) {
case SystemdEnableStateType.SystemdEnableStateEnabled:
return t('Enabled');
case SystemdEnableStateType.SystemdEnableStateDisabled:
return t('Disabled');
case SystemdEnableStateType.SystemdEnableStateStatic:
return t('Static');
case SystemdEnableStateType.SystemdEnableStateMasked:
return t('Masked');
case SystemdEnableStateType.SystemdEnableStateEnabledRuntime:
return t('Enabled runtime');
case SystemdEnableStateType.SystemdEnableStateMaskedRuntime:
return t('Masked runtime');
case SystemdEnableStateType.SystemdEnableStateLinked:
return t('Linked');
case SystemdEnableStateType.SystemdEnableStateLinkedRuntime:
return t('Linked runtime');
case SystemdEnableStateType.SystemdEnableStateGenerated:
return t('Generated');
case SystemdEnableStateType.SystemdEnableStateTransient:
return t('Transient');
case SystemdEnableStateType.SystemdEnableStateIndirect:
return t('Indirect');
case SystemdEnableStateType.SystemdEnableStateAlias:
return t('Alias');
case SystemdEnableStateType.SystemdEnableStateBad:
return t('Bad');
case SystemdEnableStateType.SystemdEnableStateUnknown:
return t('Unknown');
case SystemdEnableStateType.SystemdEnableStateEmpty:
return t('Empty');
default:
return enableState;
}
};

export const getSystemdLoadStateLabel = (loadState: SystemdLoadStateType, t: TFunction): string => {
switch (loadState) {
case SystemdLoadStateType.SystemdLoadStateLoaded:
return t('Loaded');
case SystemdLoadStateType.SystemdLoadStateNotFound:
return t('Not found');
case SystemdLoadStateType.SystemdLoadStateError:
return t('Error');
case SystemdLoadStateType.SystemdLoadStateBadSetting:
return t('Bad setting');
case SystemdLoadStateType.SystemdLoadStateMasked:
return t('Masked');
case SystemdLoadStateType.SystemdLoadStateMerged:
return t('Merged');
case SystemdLoadStateType.SystemdLoadStateStub:
return t('Stub');
case SystemdLoadStateType.SystemdLoadStateUnknown:
return t('Unknown');
default:
return loadState;
}
};

export const getSystemdActiveStateLabel = (activeState: SystemdActiveStateType, t: TFunction): string => {
switch (activeState) {
case SystemdActiveStateType.SystemdActiveStateActive:
return t('Active');
case SystemdActiveStateType.SystemdActiveStateInactive:
return t('Inactive');
case SystemdActiveStateType.SystemdActiveStateFailed:
return t('Failed');
case SystemdActiveStateType.SystemdActiveStateActivating:
return t('Activating');
case SystemdActiveStateType.SystemdActiveStateDeactivating:
return t('Deactivating');
case SystemdActiveStateType.SystemdActiveStateReloading:
return t('Reloading');
case SystemdActiveStateType.SystemdActiveStateRefreshing:
return t('Refreshing');
case SystemdActiveStateType.SystemdActiveStateMaintenance:
return t('Maintenance');
case SystemdActiveStateType.SystemdActiveStateUnknown:
return t('Unknown');
default:
return activeState;
}
};