filter provider spec in output / cluster output pages

Signed-off-by: andy.lee <andy.lee@suse.com>
This commit is contained in:
andy.lee 2024-12-10 22:02:15 +08:00
parent 59aec78631
commit c86b4b0466
No known key found for this signature in database
GPG Key ID: 10911689462678C7

View File

@ -74,7 +74,6 @@ export default {
if (this.isCreate) { if (this.isCreate) {
this.value.metadata.namespace = 'default'; this.value.metadata.namespace = 'default';
} }
set(this.value, 'spec', this.value.spec || {}); set(this.value, 'spec', this.value.spec || {});
const providers = PROVIDERS.map((provider) => ({ const providers = PROVIDERS.map((provider) => ({
@ -83,14 +82,6 @@ export default {
label: this.t(provider.labelKey) label: this.t(provider.labelKey)
})); }));
if (this.mode !== _VIEW) {
this.value['spec'] = this.value.spec || {};
providers.forEach((provider) => {
this.value.spec[provider.name] = this.value.spec[provider.name] || clone(provider.default);
});
}
const selectedProviders = providers.filter((provider) => { const selectedProviders = providers.filter((provider) => {
const specProvider = this.value.spec[provider.name]; const specProvider = this.value.spec[provider.name];
const correctedSpecProvider = provider.name === 'forward' ? specProvider?.servers?.[0] || {} : specProvider; const correctedSpecProvider = provider.name === 'forward' ? specProvider?.servers?.[0] || {} : specProvider;
@ -98,7 +89,12 @@ export default {
return !isEmpty(correctedSpecProvider) && !isEqual(correctedSpecProvider, provider.default); return !isEmpty(correctedSpecProvider) && !isEqual(correctedSpecProvider, provider.default);
}); });
const selectedProvider = selectedProviders?.[0]?.value || providers[0].value; const selectedProvider = selectedProviders?.[0]?.value || providers[0].value; // selected provider name
const selectedProviderDefault = providers.find((p) => p.name === selectedProvider)?.default || providers[0].default;
if (this.mode !== _VIEW) {
this.$set(this.value.spec, selectedProvider, this.value.spec[selectedProvider] || clone(selectedProviderDefault));
}
return { return {
bufferYaml: '', bufferYaml: '',
@ -129,6 +125,18 @@ export default {
outputTypeOptions() { outputTypeOptions() {
return OUTPUT_TYPE; return OUTPUT_TYPE;
}, },
outputProvider: {
get() {
return this.selectedProvider;
},
set(newProvider) {
this.selectedProvider = newProvider;
const providerDefaultSpec = this.providers.find((p) => p.name === newProvider)?.default || {};
this.value.spec = { [newProvider]: this.value.spec[newProvider] || clone(providerDefaultSpec) };
}
},
}, },
created() { created() {
@ -142,8 +150,6 @@ export default {
this.$refs.tabbed.select(provider.name); this.$refs.tabbed.select(provider.name);
}, },
willSave() { willSave() {
this.value.spec = { [this.selectedProvider]: this.value.spec[this.selectedProvider] };
const bufferJson = jsyaml.load(this.bufferYaml); const bufferJson = jsyaml.load(this.bufferYaml);
if (!isEmpty(bufferJson)) { if (!isEmpty(bufferJson)) {
@ -236,7 +242,7 @@ export default {
<div class="row"> <div class="row">
<div class="col span-6"> <div class="col span-6">
<LabeledSelect <LabeledSelect
v-model:value="selectedProvider" v-model:value="outputProvider"
label="Output" label="Output"
:options="providers" :options="providers"
:mode="mode" :mode="mode"