tftsr-devops_investigation/src/config/defaultColumns.ts
Shaun Arman dbf4c48ccc feat(tables): implement configurable columns infrastructure
Create infrastructure for user-configurable table columns:
- Add useColumnConfig hook with localStorage persistence
- Create ColumnConfigModal for show/hide column UI
- Create QuickActionColumn for icon-based quick actions
- Define DEFAULT_COLUMNS config for all 42 resource types
- Implement in PodList as proof of concept
- Add Checkbox component to UI library
- Add restarts, ip, node fields to PodInfo interface

Features:
- Per-resource column visibility settings
- Show/Hide all, Reset to defaults buttons
- LocalStorage persistence across sessions
- Settings gear icon in table header
- FreeLens-compatible default hidden columns (IP, Node, QoS by default hidden)

Implementation status:
-  Core infrastructure complete
-  Proof of concept in PodList
-  Rollout to remaining 41 resource lists (mechanical work)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
2026-06-09 14:37:04 -05:00

369 lines
7.0 KiB
TypeScript

import type { ColumnConfig } from "@/hooks/useColumnConfig";
/**
* Default column visibility configuration for each resource type
* Based on FreeLens patterns: commonly used columns visible by default,
* detailed/technical columns hidden by default
*/
export const DEFAULT_COLUMNS: Record<string, ColumnConfig> = {
// Workloads
pods: {
name: true,
namespace: true,
ready: true,
status: true,
restarts: true,
age: true,
ip: false, // Hidden by default - too detailed
node: false, // Hidden by default - too detailed
qos: false, // Hidden by default - rarely needed
cpu: false, // Hidden by default - metrics optional
memory: false, // Hidden by default - metrics optional
actions: true,
},
deployments: {
name: true,
namespace: true,
ready: true,
upToDate: true,
available: true,
age: true,
conditions: false, // Hidden by default - verbose
images: false, // Hidden by default - too detailed
actions: true,
},
statefulsets: {
name: true,
namespace: true,
ready: true,
replicas: true,
age: true,
actions: true,
},
daemonsets: {
name: true,
namespace: true,
desired: true,
current: true,
ready: true,
upToDate: true,
available: true,
age: true,
actions: true,
},
jobs: {
name: true,
namespace: true,
completions: true,
duration: true,
age: true,
labels: false, // Hidden by default - verbose
actions: true,
},
cronjobs: {
name: true,
namespace: true,
schedule: true,
active: true,
lastSchedule: true,
age: true,
timezone: false, // Hidden by default - rarely set
labels: false, // Hidden by default - verbose
actions: true,
},
replicasets: {
name: true,
namespace: true,
desired: true,
current: true,
ready: true,
age: true,
labels: false, // Hidden by default - verbose
actions: true,
},
replicationcontrollers: {
name: true,
namespace: true,
desired: true,
current: true,
ready: true,
age: true,
actions: true,
},
// Network
services: {
name: true,
namespace: true,
type: true,
clusterIP: true,
externalIP: true,
ports: true,
age: true,
selector: false, // Hidden by default - too detailed
actions: true,
},
ingresses: {
name: true,
namespace: true,
hosts: true,
addresses: true,
ports: true,
age: true,
rules: false, // Hidden by default - verbose
tls: false, // Hidden by default - technical
actions: true,
},
networkpolicies: {
name: true,
namespace: true,
podSelector: true,
age: true,
policyTypes: false, // Hidden by default - technical
actions: true,
},
endpoints: {
name: true,
namespace: true,
endpoints: true,
age: true,
actions: true,
},
endpointslices: {
name: true,
namespace: true,
addressType: true,
endpoints: true,
age: true,
ports: false, // Hidden by default - verbose
actions: true,
},
ingressclasses: {
name: true,
controller: true,
age: true,
parameters: false, // Hidden by default - rarely used
actions: true,
},
// Config
configmaps: {
name: true,
namespace: true,
data: true,
age: true,
actions: true,
},
secrets: {
name: true,
namespace: true,
type: true,
data: true,
age: true,
actions: true,
},
resourcequotas: {
name: true,
namespace: true,
age: true,
scopes: false, // Hidden by default - technical
actions: true,
},
limitranges: {
name: true,
namespace: true,
age: true,
actions: true,
},
horizontalpodautoscalers: {
name: true,
namespace: true,
reference: true,
minPods: true,
maxPods: true,
replicas: true,
age: true,
targets: false, // Hidden by default - verbose
actions: true,
},
poddisruptionbudgets: {
name: true,
namespace: true,
minAvailable: true,
maxUnavailable: true,
age: true,
allowedDisruptions: false, // Hidden by default - calculated
actions: true,
},
priorityclasses: {
name: true,
value: true,
globalDefault: true,
age: true,
description: false, // Hidden by default - verbose
actions: true,
},
runtimeclasses: {
name: true,
handler: true,
age: true,
actions: true,
},
leases: {
name: true,
namespace: true,
holder: true,
age: true,
actions: true,
},
mutatingwebhookconfigurations: {
name: true,
webhooks: true,
age: true,
actions: true,
},
validatingwebhookconfigurations: {
name: true,
webhooks: true,
age: true,
actions: true,
},
// Storage
persistentvolumes: {
name: true,
capacity: true,
accessModes: true,
reclaimPolicy: true,
status: true,
claim: true,
storageClass: true,
age: true,
volumeMode: false, // Hidden by default - rarely changed
actions: true,
},
persistentvolumeclaims: {
name: true,
namespace: true,
status: true,
volume: true,
capacity: true,
accessModes: true,
storageClass: true,
age: true,
volumeMode: false, // Hidden by default - rarely changed
actions: true,
},
storageclasses: {
name: true,
provisioner: true,
reclaimPolicy: true,
volumeBindingMode: true,
age: true,
allowVolumeExpansion: false, // Hidden by default - technical
parameters: false, // Hidden by default - verbose
actions: true,
},
// RBAC
serviceaccounts: {
name: true,
namespace: true,
secrets: true,
age: true,
actions: true,
},
roles: {
name: true,
namespace: true,
age: true,
actions: true,
},
clusterroles: {
name: true,
age: true,
aggregationRule: false, // Hidden by default - technical
actions: true,
},
rolebindings: {
name: true,
namespace: true,
role: true,
age: true,
subjects: false, // Hidden by default - verbose
actions: true,
},
clusterrolebindings: {
name: true,
role: true,
age: true,
subjects: false, // Hidden by default - verbose
actions: true,
},
// Cluster
nodes: {
name: true,
status: true,
roles: true,
age: true,
version: true,
internalIP: false, // Hidden by default - technical
externalIP: false, // Hidden by default - technical
osImage: false, // Hidden by default - verbose
kernelVersion: false, // Hidden by default - verbose
containerRuntime: false, // Hidden by default - technical
cpu: false, // Hidden by default - metrics optional
memory: false, // Hidden by default - metrics optional
actions: true,
},
namespaces: {
name: true,
status: true,
age: true,
labels: false, // Hidden by default - verbose
actions: true,
},
events: {
namespace: true,
lastSeen: true,
type: true,
reason: true,
object: true,
message: true,
source: false, // Hidden by default - verbose
count: false, // Hidden by default - technical
},
};