mirror of https://github.com/rancher/dashboard.git
Remove ununused component, tweaks, update ResourceTabs events to be super ok
This commit is contained in:
parent
11eda663bf
commit
cb87aa3b6e
|
|
@ -1,50 +0,0 @@
|
|||
<script>
|
||||
import {
|
||||
STATE, NAME, WORKLOAD_IMAGES, WORKLOAD_ENDPOINTS, TYPE, AGE
|
||||
} from '@shell/config/table-headers';
|
||||
import { WORKLOAD_TYPES } from '@shell/config/types';
|
||||
import ResourceTable from '@shell/components/ResourceTable';
|
||||
|
||||
export default {
|
||||
components: { ResourceTable },
|
||||
props: {
|
||||
filter: {
|
||||
type: Function,
|
||||
required: true
|
||||
}
|
||||
},
|
||||
async fetch() {
|
||||
// Enumerating instead of using Object.values() because it looks like we don't want to include replica sets for this.
|
||||
const types = [
|
||||
WORKLOAD_TYPES.DEPLOYMENT,
|
||||
WORKLOAD_TYPES.CRON_JOB,
|
||||
WORKLOAD_TYPES.DAEMON_SET,
|
||||
WORKLOAD_TYPES.JOB,
|
||||
WORKLOAD_TYPES.STATEFUL_SET
|
||||
];
|
||||
const allWorkloadsNested = await Promise.all(types.map((type) => this.$store.dispatch('cluster/findAll', { type }))); // TODO: RC
|
||||
const allWorkloads = allWorkloadsNested.flat();
|
||||
|
||||
this.relatedWorkloadRows = allWorkloads.filter(this.filter);
|
||||
},
|
||||
data() {
|
||||
const relatedWorkloadHeaders = [STATE, NAME, WORKLOAD_IMAGES, WORKLOAD_ENDPOINTS, TYPE, AGE];
|
||||
|
||||
return {
|
||||
relatedWorkloadRows: [],
|
||||
relatedWorkloadHeaders,
|
||||
schema: this.$store.getters['cluster/schemaFor'](WORKLOAD_TYPES.DEPLOYMENT)
|
||||
};
|
||||
},
|
||||
};
|
||||
</script>
|
||||
|
||||
<template>
|
||||
<div>
|
||||
<ResourceTable
|
||||
:schema="schema"
|
||||
:rows="relatedWorkloadRows"
|
||||
:headers="relatedWorkloadHeaders"
|
||||
/>
|
||||
</div>
|
||||
</template>
|
||||
|
|
@ -120,7 +120,8 @@ export default defineComponent({
|
|||
}
|
||||
|
||||
if (!this.paginate) {
|
||||
await this.$store.dispatch(`${ this.inStore }/findAll`, { type: this.resourceType }); // TODO: RC
|
||||
// The resource won't be paginated and component expects everything up front
|
||||
await this.$store.dispatch(`${ this.inStore }/findAll`, { type: this.resourceType });
|
||||
}
|
||||
},
|
||||
|
||||
|
|
@ -154,7 +155,8 @@ export default defineComponent({
|
|||
|
||||
methods: {
|
||||
/**
|
||||
* Typeof LabelSelectPaginateFn
|
||||
* Make the request to fetch the resource given the state of the label select (filter, page, page size, etc see LabelSelectPaginateFn)
|
||||
* opts: Typeof LabelSelectPaginateFn
|
||||
*/
|
||||
async paginateType(opts: LabelSelectPaginateFnOptions): Promise<LabelSelectPaginateFnResponse> {
|
||||
if (this.paginatedResourceSettings?.overrideRequest) {
|
||||
|
|
|
|||
|
|
@ -36,7 +36,9 @@ export default {
|
|||
},
|
||||
|
||||
async fetch() {
|
||||
const hash = await allHash({ allResources: this.$store.dispatch('cluster/findAll', { type: this.type }) }); // TODO: RC
|
||||
// TODO: RC find all 10417, update comment
|
||||
// https://github.com/rancher/dashboard/issues/10417 require in order to scale application of labelSelects
|
||||
const hash = await allHash({ allResources: this.$store.dispatch('cluster/findAll', { type: this.type }) });
|
||||
|
||||
this.allResources = hash.allResources;
|
||||
|
||||
|
|
|
|||
|
|
@ -8,10 +8,11 @@ import Tab from '@shell/components/Tabbed/Tab';
|
|||
import CreateEditView from '@shell/mixins/create-edit-view';
|
||||
import Conditions from '@shell/components/form/Conditions';
|
||||
import { EVENT } from '@shell/config/types';
|
||||
import SortableTable from '@shell/components/SortableTable';
|
||||
import PaginatedResourceTable from '@shell/components/PaginatedResourceTable.vue';
|
||||
import { _VIEW } from '@shell/config/query-params';
|
||||
import RelatedResources from '@shell/components/RelatedResources';
|
||||
import { isConditionReadyAndWaiting } from '@shell/plugins/dashboard-store/resource-class';
|
||||
import { PaginationParamFilter } from '@shell/types/store/pagination.types';
|
||||
|
||||
export default {
|
||||
|
||||
|
|
@ -21,7 +22,7 @@ export default {
|
|||
Tabbed,
|
||||
Tab,
|
||||
Conditions,
|
||||
SortableTable,
|
||||
PaginatedResourceTable,
|
||||
RelatedResources,
|
||||
},
|
||||
|
||||
|
|
@ -71,10 +72,10 @@ export default {
|
|||
const inStore = this.$store.getters['currentStore'](EVENT);
|
||||
|
||||
return {
|
||||
hasEvents: this.$store.getters[`${ inStore }/schemaFor`](EVENT), // @TODO be smarter about which resources actually ever have events
|
||||
allEvents: [],
|
||||
eventSchema: this.$store.getters[`${ inStore }/schemaFor`](EVENT), // @TODO be smarter about which resources actually ever have events
|
||||
EVENT,
|
||||
selectedTab: this.defaultTab,
|
||||
didLoadEvents: false,
|
||||
// didLoadEvents: false,
|
||||
inStore,
|
||||
showConditions: false,
|
||||
};
|
||||
|
|
@ -92,7 +93,7 @@ export default {
|
|||
|
||||
computed: {
|
||||
showEvents() {
|
||||
return this.isView && this.needEvents && this.hasEvents;
|
||||
return this.isView && this.needEvents && this.eventSchema;
|
||||
},
|
||||
showRelated() {
|
||||
return this.isView && this.needRelated;
|
||||
|
|
@ -128,18 +129,6 @@ export default {
|
|||
},
|
||||
];
|
||||
},
|
||||
events() {
|
||||
return this.allEvents.filter((event) => {
|
||||
return event.involvedObject?.uid === this.value?.metadata?.uid;
|
||||
}).map((event) => {
|
||||
return {
|
||||
reason: (`${ event.reason || this.t('generic.unknown') }${ event.count > 1 ? ` (${ event.count })` : '' }`).trim(),
|
||||
message: event.message || this.t('generic.unknown'),
|
||||
date: event.lastTimestamp || event.firstTimestamp || event.metadata.creationTimestamp,
|
||||
eventType: event.eventType
|
||||
};
|
||||
});
|
||||
},
|
||||
conditionsHaveIssues() {
|
||||
if (this.showConditions) {
|
||||
return this.value.status?.conditions?.filter((cond) => !isConditionReadyAndWaiting(cond)).some((cond) => cond.error);
|
||||
|
|
@ -153,16 +142,6 @@ export default {
|
|||
// Ensures we only fetch events and show the table when the events tab has been activated
|
||||
tabChange(neu) {
|
||||
this.selectedTab = neu?.selectedName;
|
||||
|
||||
if (!this.didLoadEvents && this.selectedTab === 'events') {
|
||||
const inStore = this.$store.getters['currentStore'](EVENT);
|
||||
|
||||
// TODO: RC
|
||||
this.$store.dispatch(`${ inStore }/findAll`, { type: EVENT }).then((events) => {
|
||||
this.allEvents = events;
|
||||
this.didLoadEvents = true;
|
||||
});
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
|
|
@ -181,6 +160,54 @@ export default {
|
|||
this.showConditions = this.$store.getters[`${ this.inStore }/pathExistsInSchema`](this.value.type, 'status.conditions');
|
||||
}
|
||||
},
|
||||
|
||||
/**
|
||||
* Filter out hidden repos from list of all repos
|
||||
*/
|
||||
filterRowsLocal(rows) {
|
||||
return rows.filter((event) => event.involvedObject?.uid === this.value?.metadata?.uid);
|
||||
},
|
||||
|
||||
/**
|
||||
* Filter out hidden repos via api
|
||||
*
|
||||
* pagination: PaginationArgs
|
||||
* returns: PaginationArgs
|
||||
*/
|
||||
filterRowsApi(pagination) {
|
||||
if (!pagination.filters) {
|
||||
pagination.filters = [];
|
||||
}
|
||||
|
||||
const field = `involvedObject.uid`; // Pending API Support - https://github.com/rancher/rancher/issues/48603
|
||||
|
||||
// of type PaginationParamFilter
|
||||
let existing = null;
|
||||
|
||||
for (let i = 0; i < pagination.filters.length; i++) {
|
||||
const filter = pagination.filters[i];
|
||||
|
||||
if (!!filter.fields.find((f) => f.field === field)) {
|
||||
existing = filter;
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
const required = PaginationParamFilter.createSingleField({
|
||||
field,
|
||||
exact: true,
|
||||
value: this.value.metadata.uid,
|
||||
equals: true
|
||||
});
|
||||
|
||||
if (!!existing) {
|
||||
Object.assign(existing, required);
|
||||
} else {
|
||||
pagination.filters.push(required);
|
||||
}
|
||||
|
||||
return pagination;
|
||||
}
|
||||
}
|
||||
};
|
||||
</script>
|
||||
|
|
@ -209,15 +236,12 @@ export default {
|
|||
name="events"
|
||||
:weight="-2"
|
||||
>
|
||||
<SortableTable
|
||||
<PaginatedResourceTable
|
||||
v-if="selectedTab === 'events'"
|
||||
:rows="events"
|
||||
:headers="eventHeaders"
|
||||
key-field="id"
|
||||
:search="false"
|
||||
:table-actions="false"
|
||||
:row-actions="false"
|
||||
default-sort-by="date"
|
||||
:schema="eventSchema"
|
||||
:local-filter="filterRowsLocal"
|
||||
:api-filter="filterRowsApi"
|
||||
:use-query-params-for-simple-filtering="false"
|
||||
/>
|
||||
</Tab>
|
||||
|
||||
|
|
|
|||
|
|
@ -157,6 +157,7 @@ class StevePaginationUtils extends NamespaceProjectFilters {
|
|||
{ field: '_type' },
|
||||
{ field: 'reason' },
|
||||
{ field: 'involvedObject.kind' },
|
||||
// { field: 'involvedObject.uid' }, // Pending API Support - https://github.com/rancher/rancher/issues/48603
|
||||
{ field: 'message' },
|
||||
],
|
||||
[CATALOG.CLUSTER_REPO]: [
|
||||
|
|
|
|||
Loading…
Reference in New Issue