mirror of
https://github.com/harvester/harvester-ui-extension.git
synced 2025-12-13 13:11:43 +00:00
102 lines
2.0 KiB
Vue
102 lines
2.0 KiB
Vue
<script>
|
|
import debounce from 'lodash/debounce';
|
|
|
|
import LabeledSelect from '@shell/components/form/LabeledSelect';
|
|
import { LabeledInput } from '@components/Form/LabeledInput';
|
|
|
|
import { NETWORK_ATTACHMENT } from '@shell/config/types';
|
|
import { _EDIT } from '@shell/config/query-params';
|
|
import Priority from './Priority';
|
|
|
|
export default {
|
|
components: {
|
|
LabeledSelect,
|
|
LabeledInput,
|
|
Priority,
|
|
},
|
|
|
|
props: {
|
|
value: {
|
|
type: Object,
|
|
default: () => {
|
|
return {};
|
|
},
|
|
},
|
|
mode: {
|
|
type: String,
|
|
default: _EDIT,
|
|
},
|
|
},
|
|
|
|
data() {
|
|
const selector = this.value || {
|
|
network: '',
|
|
priority: 0,
|
|
scope: [],
|
|
};
|
|
|
|
return { selector };
|
|
},
|
|
|
|
computed: {
|
|
networkOptions() {
|
|
const networks = this.$store.getters['harvester/all'](NETWORK_ATTACHMENT) || [];
|
|
|
|
return [{
|
|
label: this.t('generic.none'),
|
|
value: '',
|
|
}, ...networks.map(n => ({
|
|
label: n.id,
|
|
value: n.id,
|
|
}))];
|
|
},
|
|
},
|
|
|
|
created() {
|
|
this.queueUpdate = debounce(this.update, 500);
|
|
},
|
|
|
|
methods: {
|
|
update() {
|
|
if ( this.isView ) {
|
|
return;
|
|
}
|
|
|
|
this.$emit('update:value', this.selector);
|
|
}
|
|
},
|
|
};
|
|
</script>
|
|
|
|
<template>
|
|
<div>
|
|
<div class="row mb-20">
|
|
<div class="col span-6">
|
|
<LabeledSelect
|
|
v-model:value="selector.network"
|
|
:label="t('harvester.ipPool.network.label')"
|
|
:options="networkOptions"
|
|
:mode="mode"
|
|
@update:value="queueUpdate"
|
|
/>
|
|
</div>
|
|
<div class="col span-6">
|
|
<LabeledInput
|
|
v-model.number="selector.priority"
|
|
:label="t('harvester.ipPool.priority.label')"
|
|
:mode="mode"
|
|
type="number"
|
|
min="0"
|
|
@update:value="update"
|
|
/>
|
|
</div>
|
|
</div>
|
|
<Priority
|
|
v-model:value="selector.scope"
|
|
class="col span-12"
|
|
:mode="mode"
|
|
@update:value="update"
|
|
/>
|
|
</div>
|
|
</template>
|