diff --git a/shell/config/product/explorer.js b/shell/config/product/explorer.js index 2a3ac30764..57dbc351c5 100644 --- a/shell/config/product/explorer.js +++ b/shell/config/product/explorer.js @@ -18,7 +18,7 @@ import { STORAGE_CLASS_PROVISIONER, PERSISTENT_VOLUME_SOURCE, HPA_REFERENCE, MIN_REPLICA, MAX_REPLICA, CURRENT_REPLICA, ACCESS_KEY, DESCRIPTION, EXPIRES, EXPIRY_STATE, SUB_TYPE, AGE_NORMAN, SCOPE_NORMAN, PERSISTENT_VOLUME_CLAIM, RECLAIM_POLICY, PV_REASON, WORKLOAD_HEALTH_SCALE, POD_RESTARTS, - DURATION, + DURATION, MESSAGE, REASON, LAST_SEEN_TIME, EVENT_TYPE, } from '@shell/config/table-headers'; import { DSL } from '@shell/store/type-map'; @@ -192,8 +192,8 @@ export function init(store) { ]); headers(INGRESS, [STATE, NAME_COL, NAMESPACE_COL, INGRESS_TARGET, INGRESS_DEFAULT_BACKEND, INGRESS_CLASS, AGE]); headers(SERVICE, [STATE, NAME_COL, NAMESPACE_COL, TARGET_PORT, SELECTOR, SPEC_TYPE, AGE]); + headers(EVENT, [STATE, { ...LAST_SEEN_TIME, defaultSort: true }, EVENT_TYPE, REASON, 'Object', 'Subobject', 'Source', MESSAGE, 'First Seen', 'Count', NAME_COL, NAMESPACE_COL]); headers(HPA, [STATE, NAME_COL, HPA_REFERENCE, MIN_REPLICA, MAX_REPLICA, CURRENT_REPLICA, AGE]); - headers(WORKLOAD, [STATE, NAME_COL, NAMESPACE_COL, TYPE, WORKLOAD_IMAGES, WORKLOAD_ENDPOINTS, POD_RESTARTS, AGE, WORKLOAD_HEALTH_SCALE]); headers(WORKLOAD_TYPES.DEPLOYMENT, [STATE, NAME_COL, NAMESPACE_COL, WORKLOAD_IMAGES, WORKLOAD_ENDPOINTS, 'Ready', 'Up-to-date', 'Available', POD_RESTARTS, AGE, WORKLOAD_HEALTH_SCALE]); headers(WORKLOAD_TYPES.DAEMON_SET, [STATE, NAME_COL, NAMESPACE_COL, WORKLOAD_IMAGES, WORKLOAD_ENDPOINTS, 'Ready', 'Current', 'Desired', POD_RESTARTS, AGE, WORKLOAD_HEALTH_SCALE]); diff --git a/shell/config/table-headers.js b/shell/config/table-headers.js index c4aba937c7..23a221a7b4 100644 --- a/shell/config/table-headers.js +++ b/shell/config/table-headers.js @@ -446,6 +446,13 @@ export const SUB_TYPE = { width: 120, }; +export const EVENT_TYPE = { + name: 'type', + labelKey: 'tableHeaders.type', + value: 'eventType', + sort: 'eventType', +}; + export const STATUS = { name: 'status', labelKey: 'tableHeaders.status', @@ -453,6 +460,12 @@ export const STATUS = { sort: ['status'], width: 175 }; +export const LAST_SEEN_TIME = { + name: 'lastSeen', + labelKey: 'tableHeaders.lastSeen', + value: 'lastSeen', + sort: 'lastTimestamp:desc' +}; export const LAST_HEARTBEAT_TIME = { name: 'lastHeartbeatTime', labelKey: 'tableHeaders.lastSeen', diff --git a/shell/models/event.js b/shell/models/event.js index ca9dc6383a..19279b54e3 100644 --- a/shell/models/event.js +++ b/shell/models/event.js @@ -24,4 +24,11 @@ export default class K8sEvent extends SteveModel { get eventType() { return this._type; } + + get lastSeen() { + const schema = this.$getters['schemaFor'](this.type); + const rowValueGetter = this.$rootGetters['type-map/rowValueGetter']; + + return schema && rowValueGetter ? rowValueGetter(schema, 'Last Seen')(this) : null; + } }