Consider children values as wanted when validating a form

This commit is contained in:
nemunaire 2020-10-08 12:03:30 +02:00
parent d0cd1c5b96
commit 0dce870998
9 changed files with 61 additions and 7 deletions

View File

@ -32,7 +32,7 @@
-->
<template>
<component v-if="services[service._svctype]" :is="displayFormat === 'grid' ? 'b-card' : 'b-list-group'" :class="displayFormat !== 'list' ? 'card-hover' : ''" :style="displayFormat === 'grid' ? 'width: 32%; min-width: 225px; margin-bottom: 1em; cursor: pointer;' : displayFormat === 'records' ? 'margin-bottom: .5em; cursor: pointer;' : ''" no-body>
<component :is="displayFormat === 'grid' ? 'b-card' : 'b-list-group'" v-if="services[service._svctype]" :class="displayFormat !== 'list' ? 'card-hover' : ''" :style="displayFormat === 'grid' ? 'width: 32%; min-width: 225px; margin-bottom: 1em; cursor: pointer;' : displayFormat === 'records' ? 'margin-bottom: .5em; cursor: pointer;' : ''" no-body>
<b-card-body v-if="displayFormat === 'grid'" @click="$emit('showServiceWindow', service)">
<b-badge v-for="(categorie, idcat) in services[service._svctype].categories" :key="idcat" variant="gray" class="float-right ml-1">
{{ categorie }}

View File

@ -32,7 +32,7 @@
-->
<template>
<h-resource-value v-model="service.Service" :edit="edit" :edit-toolbar="editToolbar" :services="services" :type="service._svctype" @deleteService="deleteService($event)" @saveService="saveService($event)" />
<h-resource-value ref="myChild" v-model="service.Service" :edit="edit" :edit-toolbar="editToolbar" :services="services" :type="service._svctype" @deleteService="deleteService($event)" @saveService="saveService($event)" />
</template>
<script>
@ -91,6 +91,10 @@ export default {
})
},
saveChildrenValues () {
this.$refs.myChild.saveChildrenValues()
},
saveService (cbSuccess, cbFail) {
if (this.service.Service === undefined) {
this.deleteService()

View File

@ -32,7 +32,7 @@
-->
<template>
<component :is="itemComponent" :value="value" :edit="edit" :edit-toolbar="editToolbar" :index="index" :services="services" :specs="specs" :type="type" @input="$emit('input', $event)" @deleteService="$emit('deleteService', $event)" @saveService="$emit('saveService', $event)" />
<component :is="itemComponent" ref="myChild" :value="value" :edit="edit" :edit-toolbar="editToolbar" :index="index" :services="services" :specs="specs" :type="type" @input="$emit('input', $event)" @deleteService="$emit('deleteService', $event)" @saveService="$emit('saveService', $event)" />
</template>
<script>
@ -111,6 +111,10 @@ export default {
} else {
this.itemComponent = HResourceValueInput
}
},
saveChildrenValues () {
this.$refs.myChild.saveChildrenValues()
}
}
}

View File

@ -86,6 +86,10 @@ export default {
this.$emit('input', val)
}
}
},
methods: {
saveChildrenValues () {}
}
}
</script>

View File

@ -102,6 +102,10 @@ export default {
}
}
}
},
methods: {
saveChildrenValues () {}
}
}
</script>

View File

@ -207,6 +207,20 @@ export default {
this.$emit('saveService')
},
saveChildrenValues () {
for (const key in this.editChildrenKeys) {
if (this.editChildrenKeys[key]) {
this.saveObject(key)
}
}
for (const key in this.editKeys) {
if (this.editKeys[key]) {
this.rename(key)
}
}
},
saveObject (key) {
var vm = this
this.$emit('saveService', function () {

View File

@ -46,6 +46,7 @@
</template>
<h-resource-value
v-if="value[spec.id]"
ref="fieldsTabs"
v-model="value[spec.id]"
:edit="editChildren"
:edit-toolbar="editToolbar"
@ -83,6 +84,7 @@
<h-resource-value
v-for="(spec, index) in service_specs.fields"
:key="index"
ref="fieldsElseCase"
:edit="editChildren"
:index="index"
:services="services"
@ -190,6 +192,20 @@ export default {
)
},
saveChildrenValues () {
if (this.$refs.fieldsTabs) {
this.$refs.fieldsTabs.forEach(function (field) {
field.saveChildrenValues()
})
}
if (this.$refs.fieldsElseCase) {
this.$refs.fieldsElseCase.forEach(function (field) {
field.saveChildrenValues()
})
}
},
saveObject () {
var vm = this
this.$emit('saveService', function () {

View File

@ -194,6 +194,12 @@ export default {
this.$emit('saveService')
},
saveChildrenValues () {
this.tmp_values.forEach(function (row, idx) {
this.saveRow({ item: row })
}, this)
},
saveRow (row) {
if (this.service_specs && this.service_specs.fields) {
var val = {}

View File

@ -88,7 +88,7 @@
<p>
Fill the information for the {{ services[modal.svcSelected].name }} at <span class="text-monospace">{{ modal.dn | fqdn(domain.domain) }}</span>:
</p>
<h-resource-value v-model="modal.svcData" edit :services="services" :type="modal.svcSelected" @input="modal.svcData = $event" />
<h-resource-value ref="addModalResources" v-model="modal.svcData" edit :services="services" :type="modal.svcSelected" @input="modal.svcData = $event" />
</div>
</form>
</b-modal>
@ -111,7 +111,7 @@
</b-button>
</template>
<form v-if="modal && modal.svcData" id="updSvcForm" @submit.stop.prevent="handleUpdateSvc">
<h-resource-value v-model="modal.svcData.Service" edit :services="services" :type="modal.svcData._svctype" @input="modal.svcData.Service = $event" @saveService="fakeSaveService" />
<h-resource-value ref="updModalResources" v-model="modal.svcData.Service" edit :services="services" :type="modal.svcData._svctype" @input="modal.svcData.Service = $event" @saveService="fakeSaveService" />
</form>
</b-modal>
@ -443,8 +443,8 @@ export default {
} else if (this.modal.step === 1 && this.modal.svcSelected !== null) {
this.modal.step = 2
} else if (this.modal.step === 2 && this.modal.svcSelected !== null) {
ZoneApi
.addZoneService(this.domain.domain, this.zoneId, this.modal.dn, { Service: this.modal.svcData, _svctype: this.modal.svcSelected })
this.$refs.addModalResources.saveChildrenValues()
ZoneApi.addZoneService(this.domain.domain, this.zoneId, this.modal.dn, { Service: this.modal.svcData, _svctype: this.modal.svcSelected })
.then(
(response) => {
this.myServices = response.data
@ -469,6 +469,8 @@ export default {
handleUpdateSvc (bvModalEvt) {
bvModalEvt.preventDefault()
this.$refs.updModalResources.saveChildrenValues()
this.updateServiceInProgress = true
ZoneApi.updateZoneService(this.domain.domain, this.zoneId, this.modal.svcData)
.then(