Sentence cased text everywhere (#3166)

* Sentence cased text everywhere

Follows Weave Cloud's direction of sentence case on most things.

* More space between sorter caret and label

* Use full topology name for table header
This commit is contained in:
Roland Schilter
2018-05-17 17:30:38 -07:00
committed by GitHub
parent 2e8c9961fc
commit f012c23ca1
14 changed files with 66 additions and 83 deletions

View File

@@ -43,8 +43,8 @@ var (
ID: "pseudo",
Default: "hide",
Options: []APITopologyOption{
{Value: "show", Label: "Show Unmanaged", filter: nil, filterPseudo: false},
{Value: "hide", Label: "Hide Unmanaged", filter: render.IsNotPseudo, filterPseudo: true},
{Value: "show", Label: "Show unmanaged", filter: nil, filterPseudo: false},
{Value: "hide", Label: "Hide unmanaged", filter: render.IsNotPseudo, filterPseudo: true},
},
}
)
@@ -151,8 +151,8 @@ func MakeRegistry() *Registry {
Default: "application",
Options: []APITopologyOption{
{Value: "all", Label: "All", filter: nil, filterPseudo: false},
{Value: "system", Label: "System Containers", filter: render.IsSystem, filterPseudo: false},
{Value: "application", Label: "Application Containers", filter: render.IsApplication, filterPseudo: false}},
{Value: "system", Label: "System containers", filter: render.IsSystem, filterPseudo: false},
{Value: "application", Label: "Application containers", filter: render.IsApplication, filterPseudo: false}},
},
{
ID: "stopped",
@@ -167,8 +167,8 @@ func MakeRegistry() *Registry {
ID: "pseudo",
Default: "hide",
Options: []APITopologyOption{
{Value: "show", Label: "Show Uncontained", filter: nil, filterPseudo: false},
{Value: "hide", Label: "Hide Uncontained", filter: render.IsNotPseudo, filterPseudo: true},
{Value: "show", Label: "Show uncontained", filter: nil, filterPseudo: false},
{Value: "hide", Label: "Hide uncontained", filter: render.IsNotPseudo, filterPseudo: true},
},
},
}
@@ -178,8 +178,8 @@ func MakeRegistry() *Registry {
ID: "unconnected",
Default: "hide",
Options: []APITopologyOption{
{Value: "show", Label: "Show Unconnected", filter: nil, filterPseudo: false},
{Value: "hide", Label: "Hide Unconnected", filter: render.IsConnected, filterPseudo: false},
{Value: "show", Label: "Show unconnected", filter: nil, filterPseudo: false},
{Value: "hide", Label: "Hide unconnected", filter: render.IsConnected, filterPseudo: false},
},
},
}
@@ -236,7 +236,7 @@ func MakeRegistry() *Registry {
id: kubeControllersID,
parent: podsID,
renderer: render.KubeControllerRenderer,
Name: "controllers",
Name: "Controllers",
Options: []APITopologyOptionGroup{unmanagedFilter},
HideIfEmpty: true,
},
@@ -244,7 +244,7 @@ func MakeRegistry() *Registry {
id: servicesID,
parent: podsID,
renderer: render.PodServiceRenderer,
Name: "services",
Name: "Services",
Options: []APITopologyOptionGroup{unmanagedFilter},
HideIfEmpty: true,
},
@@ -260,14 +260,14 @@ func MakeRegistry() *Registry {
id: ecsServicesID,
parent: ecsTasksID,
renderer: render.ECSServiceRenderer,
Name: "services",
Name: "Services",
Options: []APITopologyOptionGroup{unmanagedFilter},
HideIfEmpty: true,
},
APITopologyDesc{
id: swarmServicesID,
renderer: render.SwarmServiceRenderer,
Name: "services",
Name: "Services",
Rank: 3,
Options: []APITopologyOptionGroup{unmanagedFilter},
HideIfEmpty: true,

View File

@@ -51,7 +51,7 @@ func TestAPITopology(t *testing.T) {
}
// TODO: add ECS nodes in report fixture
if topology.Name == "Tasks" || topology.Name == "services" {
if topology.Name == "Tasks" || topology.Name == "Services" {
continue
}

View File

@@ -2,11 +2,13 @@
import React from 'react';
import { connect } from 'react-redux';
import { List as makeList, Map as makeMap } from 'immutable';
import capitalize from 'lodash/capitalize';
import NodeDetailsTable from '../components/node-details/node-details-table';
import { clickNode, sortOrderChanged } from '../actions/app-actions';
import { shownNodesSelector } from '../selectors/node-filters';
import { trackAnalyticsEvent } from '../utils/tracking-utils';
import { findTopologyById } from '../utils/topology-utils';
import { TABLE_VIEW_MODE } from '../constants/naming';
import { windowHeightSelector } from '../selectors/canvas';
@@ -18,7 +20,15 @@ const IGNORED_COLUMNS = ['docker_container_ports', 'docker_container_id', 'docke
'docker_container_command', 'docker_container_networks'];
function getColumns(nodes) {
function topologyLabel(topologies, id) {
const topology = findTopologyById(topologies, id);
if (!topology) {
return capitalize(id);
}
return topology.get('fullName');
}
function getColumns(nodes, topologies) {
const metricColumns = nodes
.toList()
.flatMap((n) => {
@@ -43,11 +53,12 @@ function getColumns(nodes) {
.toList()
.sortBy(m => m.get('label'));
const relativesColumns = nodes
.toList()
.flatMap((n) => {
const metadata = (n.get('parents') || makeList())
.map(m => makeMap({ id: m.get('topologyId'), label: m.get('topologyId') }));
.map(m => makeMap({ id: m.get('topologyId'), label: topologyLabel(topologies, m.get('topologyId')) }));
return metadata;
})
.toSet()
@@ -108,7 +119,7 @@ class NodesGrid extends React.Component {
render() {
const {
nodes, gridSortedBy, gridSortedDesc, searchNodeMatches, searchQuery, windowHeight
nodes, gridSortedBy, gridSortedDesc, searchNodeMatches, searchQuery, windowHeight, topologies
} = this.props;
const height =
this.tableRef ? windowHeight - this.tableRef.getBoundingClientRect().top - 30 : 0;
@@ -131,7 +142,7 @@ class NodesGrid extends React.Component {
.toList()
.filter(n => !(searchQuery && searchNodeMatches.get(n.get('id'), makeMap()).isEmpty()))
.toJS(),
columns: getColumns(nodes)
columns: getColumns(nodes, topologies)
};
return (
@@ -167,6 +178,7 @@ function mapStateToProps(state) {
searchQuery: state.get('searchQuery'),
selectedNodeId: state.get('selectedNodeId'),
windowHeight: windowHeightSelector(state),
topologies: state.get('topologies'),
};
}

View File

@@ -91,7 +91,7 @@ class NodeDetailsImageStatus extends React.PureComponent {
return (
<div className="node-details-content-section image-status">
<div className="node-details-content-section-header">
Container Image Status
Container image status
{containers &&
<div>
<a

View File

@@ -245,13 +245,11 @@ a {
}
&-label, .pause-text {
text-transform: uppercase;
margin: 0 0.25em;
}
&-versionupdate {
margin-right: 0.5em;
text-transform: uppercase;
}
&-tools {
@@ -318,7 +316,6 @@ a {
&-label {
font-size: $font-size-small;
text-transform: uppercase;
}
}
@@ -327,7 +324,6 @@ a {
&-item {
&-label {
font-size: $font-size-tiny;
text-transform: uppercase;
}
}
}
@@ -646,7 +642,6 @@ a {
}
&-more {
text-transform: uppercase;
font-size: $font-size-tiny;
color: $color-turquoise;
margin-top: -2px;
@@ -716,7 +711,6 @@ a {
span {
font-size: $font-size-normal;
margin-left: 0;
text-transform: uppercase;
}
}
@@ -776,7 +770,6 @@ a {
&-more {
@extend .btn-opacity;
padding: 0 2px;
text-transform: uppercase;
cursor: pointer;
font-size: $font-size-tiny;
font-weight: bold;
@@ -835,7 +828,6 @@ a {
margin: 16px 0;
&-header {
text-transform: uppercase;
font-size: $font-size-small;
color: $text-tertiary-color;
padding: 4px 0;
@@ -877,7 +869,6 @@ a {
&-label {
color: $text-secondary-color;
text-transform: uppercase;
font-size: $font-size-tiny;
}
}
@@ -892,7 +883,6 @@ a {
&-label {
color: $text-secondary-color;
text-transform: uppercase;
font-size: $font-size-small;
.fa {
@@ -919,10 +909,6 @@ a {
display: flex;
color: inherit;
.label {
text-transform: uppercase;
}
.node-details-health-item {
width: auto;
}
@@ -941,7 +927,6 @@ a {
color: $text-secondary-color;
padding: 0 0.5em 0 0;
white-space: nowrap;
text-transform: uppercase;
font-size: $font-size-tiny;
&::after {
@@ -974,7 +959,6 @@ a {
color: $text-secondary-color;
padding: 0 0.5em 0 0;
white-space: nowrap;
text-transform: uppercase;
font-size: $font-size-tiny;
&::after {
@@ -1014,7 +998,6 @@ a {
}
&-header {
text-transform: uppercase;
color: $text-tertiary-color;
font-size: $font-size-tiny;
text-align: right;
@@ -1030,7 +1013,7 @@ a {
}
&-sorter {
margin: 0 0.25em;
margin: 0 0.35em;
}
&:first-child {
@@ -1193,7 +1176,6 @@ a {
font-weight: bold;
padding-right: 20px;
text-align: right;
text-transform: uppercase;
}
}
@@ -1293,7 +1275,6 @@ a {
font-size: $font-size-tiny;
font-weight: bold;
text-transform: uppercase;
&:hover {
opacity: 1;
@@ -1345,7 +1326,6 @@ a {
}
.link {
text-transform: uppercase;
font-weight: bold;
cursor: pointer;
float: right;
@@ -1374,7 +1354,6 @@ a {
padding: 0px 0;
margin-top: 4px;
text-align: right;
text-transform: uppercase;
cursor: pointer;
color: $text-secondary-color;
font-size: $font-size-small;
@@ -1391,7 +1370,6 @@ a {
margin-right: 0.5em;
&-label {
text-transform: uppercase;
margin-right: 0.25em;
}
@@ -1421,7 +1399,6 @@ a {
}
.status {
text-transform: uppercase;
padding: 2px 12px;
border-radius: $border-radius-soft;
color: $text-secondary-color;
@@ -1509,7 +1486,6 @@ a {
&-action {
background-color: transparent;
text-transform: uppercase;
&-selected, &:not([disabled]):hover {
background-color: $background-darker-secondary-color;
@@ -1676,7 +1652,6 @@ a {
&-hint {
font-size: $font-size-tiny;
text-transform: uppercase;
transition: opacity 0.3s 0.5s $base-ease;
opacity: 1;
}
@@ -1811,7 +1786,6 @@ a {
h2 {
margin: 0;
text-transform: uppercase;
font-size: $font-size-large;
}
}
@@ -1845,7 +1819,6 @@ a {
align-items: stretch;
h2 {
text-transform: uppercase;
line-height: 150%;
font-size: $font-size-large;
color: $color-primary-lavender;
@@ -1854,7 +1827,6 @@ a {
}
h3 {
text-transform: uppercase;
font-size: $font-size-normal;
color: $color-primary-lavender;
padding: 4px 0;
@@ -1918,7 +1890,6 @@ a {
flex-direction: column;
&-current-topology {
text-transform: uppercase;
color: $color-primary-lavender;
}

View File

@@ -25,14 +25,14 @@ const (
var (
taskMetadata = report.MetadataTemplates{
Cluster: {ID: Cluster, Label: "Cluster", From: report.FromLatest, Priority: 0},
CreatedAt: {ID: CreatedAt, Label: "Created At", From: report.FromLatest, Priority: 1, Datatype: report.DateTime},
CreatedAt: {ID: CreatedAt, Label: "Created at", From: report.FromLatest, Priority: 1, Datatype: report.DateTime},
TaskFamily: {ID: TaskFamily, Label: "Family", From: report.FromLatest, Priority: 2},
}
serviceMetadata = report.MetadataTemplates{
Cluster: {ID: Cluster, Label: "Cluster", From: report.FromLatest, Priority: 0},
CreatedAt: {ID: CreatedAt, Label: "Created At", From: report.FromLatest, Priority: 1, Datatype: report.DateTime},
ServiceDesiredCount: {ID: ServiceDesiredCount, Label: "Desired Tasks", From: report.FromLatest, Priority: 2, Datatype: report.Number},
ServiceRunningCount: {ID: ServiceRunningCount, Label: "Running Tasks", From: report.FromLatest, Priority: 3, Datatype: report.Number},
CreatedAt: {ID: CreatedAt, Label: "Created at", From: report.FromLatest, Priority: 1, Datatype: report.DateTime},
ServiceDesiredCount: {ID: ServiceDesiredCount, Label: "Desired tasks", From: report.FromLatest, Priority: 2, Datatype: report.Number},
ServiceRunningCount: {ID: ServiceRunningCount, Label: "Running tasks", From: report.FromLatest, Priority: 3, Datatype: report.Number},
}
)
@@ -212,13 +212,13 @@ func (Reporter) Report() (report.Report, error) {
serviceTopology.Controls.AddControls([]report.Control{
{
ID: ScaleDown,
Human: "Scale Down",
Human: "Scale down",
Icon: "fa-minus",
Rank: 0,
},
{
ID: ScaleUp,
Human: "Scale Up",
Human: "Scale up",
Icon: "fa-plus",
Rank: 1,
},

View File

@@ -24,7 +24,7 @@ const (
ImageTableID = "image_table"
ServiceName = report.DockerServiceName
StackNamespace = report.DockerStackNamespace
DefaultNamespace = "No Stack"
DefaultNamespace = "No stack"
)
// Exposed for testing
@@ -63,18 +63,18 @@ var (
ImageName: " Name",
ImageTag: " Tag",
ImageSize: "Size",
ImageVirtualSize: "Virtual Size",
ImageVirtualSize: "Virtual size",
},
},
LabelPrefix: {
ID: LabelPrefix,
Label: "Docker Labels",
Label: "Docker labels",
Type: report.PropertyListType,
Prefix: LabelPrefix,
},
EnvPrefix: {
ID: EnvPrefix,
Label: "Environment Variables",
Label: "Environment variables",
Type: report.PropertyListType,
Prefix: EnvPrefix,
},
@@ -83,7 +83,7 @@ var (
ContainerImageTableTemplates = report.TableTemplates{
ImageLabelPrefix: {
ID: ImageLabelPrefix,
Label: "Docker Labels",
Label: "Docker labels",
Type: report.PropertyListType,
Prefix: ImageLabelPrefix,
},
@@ -141,8 +141,8 @@ var (
}
SwarmServiceMetadataTemplates = report.MetadataTemplates{
ServiceName: {ID: ServiceName, Label: "Service Name", From: report.FromLatest, Priority: 0},
StackNamespace: {ID: StackNamespace, Label: "Stack Namespace", From: report.FromLatest, Priority: 1},
ServiceName: {ID: ServiceName, Label: "Service name", From: report.FromLatest, Priority: 0},
StackNamespace: {ID: StackNamespace, Label: "Stack namespace", From: report.FromLatest, Priority: 1},
}
)

View File

@@ -37,12 +37,12 @@ const (
// Exposed for testing.
var (
MetadataTemplates = report.MetadataTemplates{
KernelVersion: {ID: KernelVersion, Label: "Kernel Version", From: report.FromLatest, Priority: 1},
KernelVersion: {ID: KernelVersion, Label: "Kernel version", From: report.FromLatest, Priority: 1},
Uptime: {ID: Uptime, Label: "Uptime", From: report.FromLatest, Priority: 2, Datatype: report.Duration},
HostName: {ID: HostName, Label: "Hostname", From: report.FromLatest, Priority: 11},
OS: {ID: OS, Label: "OS", From: report.FromLatest, Priority: 12},
LocalNetworks: {ID: LocalNetworks, Label: "Local Networks", From: report.FromSets, Priority: 13},
ScopeVersion: {ID: ScopeVersion, Label: "Scope Version", From: report.FromLatest, Priority: 14},
LocalNetworks: {ID: LocalNetworks, Label: "Local networks", From: report.FromSets, Priority: 13},
ScopeVersion: {ID: ScopeVersion, Label: "Scope version", From: report.FromLatest, Priority: 14},
}
MetricTemplates = report.MetricTemplates{

View File

@@ -56,8 +56,8 @@ var (
NodeType: {ID: NodeType, Label: "Type", From: report.FromLatest, Priority: 1},
Namespace: {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2},
Created: {ID: Created, Label: "Created", From: report.FromLatest, Datatype: report.DateTime, Priority: 3},
ObservedGeneration: {ID: ObservedGeneration, Label: "Observed Gen.", From: report.FromLatest, Datatype: report.Number, Priority: 4},
DesiredReplicas: {ID: DesiredReplicas, Label: "Desired Replicas", From: report.FromLatest, Datatype: report.Number, Priority: 5},
ObservedGeneration: {ID: ObservedGeneration, Label: "Observed gen.", From: report.FromLatest, Datatype: report.Number, Priority: 4},
DesiredReplicas: {ID: DesiredReplicas, Label: "Desired replicas", From: report.FromLatest, Datatype: report.Number, Priority: 5},
report.Pod: {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: report.Number, Priority: 6},
Strategy: {ID: Strategy, Label: "Strategy", From: report.FromLatest, Priority: 7},
}
@@ -68,7 +68,7 @@ var (
NodeType: {ID: NodeType, Label: "Type", From: report.FromLatest, Priority: 1},
Namespace: {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2},
Created: {ID: Created, Label: "Created", From: report.FromLatest, Datatype: report.DateTime, Priority: 3},
DesiredReplicas: {ID: DesiredReplicas, Label: "Desired Replicas", From: report.FromLatest, Datatype: report.Number, Priority: 4},
DesiredReplicas: {ID: DesiredReplicas, Label: "Desired replicas", From: report.FromLatest, Datatype: report.Number, Priority: 4},
report.Pod: {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: report.Number, Priority: 5},
}
@@ -78,8 +78,8 @@ var (
NodeType: {ID: NodeType, Label: "Type", From: report.FromLatest, Priority: 1},
Namespace: {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2},
Created: {ID: Created, Label: "Created", From: report.FromLatest, Datatype: report.DateTime, Priority: 3},
ObservedGeneration: {ID: ObservedGeneration, Label: "Observed Gen.", From: report.FromLatest, Datatype: report.Number, Priority: 4},
DesiredReplicas: {ID: DesiredReplicas, Label: "Desired Replicas", From: report.FromLatest, Datatype: report.Number, Priority: 5},
ObservedGeneration: {ID: ObservedGeneration, Label: "Observed gen.", From: report.FromLatest, Datatype: report.Number, Priority: 4},
DesiredReplicas: {ID: DesiredReplicas, Label: "Desired replicas", From: report.FromLatest, Datatype: report.Number, Priority: 5},
report.Pod: {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: report.Number, Priority: 6},
}
@@ -90,7 +90,7 @@ var (
Namespace: {ID: Namespace, Label: "Namespace", From: report.FromLatest, Priority: 2},
Created: {ID: Created, Label: "Created", From: report.FromLatest, Datatype: report.DateTime, Priority: 3},
Schedule: {ID: Schedule, Label: "Schedule", From: report.FromLatest, Priority: 4},
LastScheduled: {ID: LastScheduled, Label: "Last Scheduled", From: report.FromLatest, Datatype: report.DateTime, Priority: 5},
LastScheduled: {ID: LastScheduled, Label: "Last scheduled", From: report.FromLatest, Datatype: report.DateTime, Priority: 5},
Suspended: {ID: Suspended, Label: "Suspended", From: report.FromLatest, Priority: 6},
ActiveJobs: {ID: ActiveJobs, Label: "# Jobs", From: report.FromLatest, Datatype: report.Number, Priority: 7},
report.Pod: {ID: report.Pod, Label: "# Pods", From: report.FromCounters, Datatype: report.Number, Priority: 8},
@@ -101,7 +101,7 @@ var (
TableTemplates = report.TableTemplates{
LabelPrefix: {
ID: LabelPrefix,
Label: "Kubernetes Labels",
Label: "Kubernetes labels",
Type: report.PropertyListType,
Prefix: LabelPrefix,
},
@@ -110,13 +110,13 @@ var (
ScalingControls = []report.Control{
{
ID: ScaleDown,
Human: "Scale Down",
Human: "Scale down",
Icon: "fa-minus",
Rank: 0,
},
{
ID: ScaleUp,
Human: "Scale Up",
Human: "Scale up",
Icon: "fa-plus",
Rank: 1,
},

View File

@@ -63,11 +63,11 @@ var (
WeaveProtocol: {ID: WeaveProtocol, Label: "Protocol", From: report.FromLatest, Priority: 2},
WeavePeerName: {ID: WeavePeerName, Label: "Name", From: report.FromLatest, Priority: 3},
WeaveEncryption: {ID: WeaveEncryption, Label: "Encryption", From: report.FromLatest, Priority: 4},
WeavePeerDiscovery: {ID: WeavePeerDiscovery, Label: "Peer Discovery", From: report.FromLatest, Priority: 5},
WeavePeerDiscovery: {ID: WeavePeerDiscovery, Label: "Peer discovery", From: report.FromLatest, Priority: 5},
WeaveTargetCount: {ID: WeaveTargetCount, Label: "Targets", From: report.FromLatest, Priority: 6},
WeaveConnectionCount: {ID: WeaveConnectionCount, Label: "Connections", From: report.FromLatest, Priority: 8},
WeavePeerCount: {ID: WeavePeerCount, Label: "Peers", From: report.FromLatest, Priority: 7},
WeaveTrustedSubnets: {ID: WeaveTrustedSubnets, Label: "Trusted Subnets", From: report.FromSets, Priority: 9},
WeaveTrustedSubnets: {ID: WeaveTrustedSubnets, Label: "Trusted subnets", From: report.FromSets, Priority: 9},
}
weaveTableTemplates = report.TableTemplates{
@@ -78,7 +78,7 @@ var (
FixedRows: map[string]string{
WeaveIPAMStatus: "Status",
WeaveIPAMRange: "Range",
WeaveIPAMDefaultSubnet: "Default Subnet",
WeaveIPAMDefaultSubnet: "Default subnet",
},
},
WeaveDNSTableID: {
@@ -107,7 +107,7 @@ var (
Type: report.PropertyListType,
FixedRows: map[string]string{
WeavePluginStatus: "Status",
WeavePluginDriver: "Driver Name",
WeavePluginDriver: "Driver name",
},
},
WeaveConnectionsMulticolumnTablePrefix: {

View File

@@ -32,7 +32,7 @@ var (
MetricTemplates = report.MetricTemplates{
CPUUsage: {ID: CPUUsage, Label: "CPU", Format: report.PercentFormat, Priority: 1},
MemoryUsage: {ID: MemoryUsage, Label: "Memory", Format: report.FilesizeFormat, Priority: 2},
OpenFilesCount: {ID: OpenFilesCount, Label: "Open Files", Format: report.IntegerFormat, Priority: 3},
OpenFilesCount: {ID: OpenFilesCount, Label: "Open files", Format: report.IntegerFormat, Priority: 3},
}
)

View File

@@ -181,7 +181,7 @@ var nodeSummaryGroupSpecs = []struct {
{
topologyID: report.ContainerImage,
NodeSummaryGroup: NodeSummaryGroup{
Label: "Container Images",
Label: "Container images",
Columns: []Column{},
},
},

View File

@@ -65,7 +65,7 @@ func TestMakeDetailedHostNode(t *testing.T) {
},
{
ID: "local_networks",
Label: "Local Networks",
Label: "Local networks",
Value: "10.10.10.0/24",
Priority: 13,
},
@@ -129,7 +129,7 @@ func TestMakeDetailedHostNode(t *testing.T) {
Nodes: []detailed.NodeSummary{process1NodeSummary, process2NodeSummary},
},
{
Label: "Container Images",
Label: "Container images",
TopologyID: "containers-by-image",
Columns: []detailed.Column{},
Nodes: []detailed.NodeSummary{containerImageNodeSummary},

View File

@@ -429,13 +429,13 @@ func TestNodeTables(t *testing.T) {
{
ID: docker.EnvPrefix,
Type: report.PropertyListType,
Label: "Environment Variables",
Label: "Environment variables",
Rows: []report.Row{},
},
{
ID: docker.LabelPrefix,
Type: report.PropertyListType,
Label: "Docker Labels",
Label: "Docker labels",
Rows: []report.Row{
{
ID: "label_label1",