AddPersons: allow creation of person or thirdparty depending on allowed types

This commit is contained in:
nobohan 2022-02-14 11:12:37 +01:00
parent f8888462f1
commit 1c3f6c7c1e
5 changed files with 21 additions and 9 deletions

View File

@ -11,7 +11,7 @@ and this project adheres to
## Unreleased ## Unreleased
* AddPersons: remove ul-li html tags from AddPersons (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/419) * AddPersons: remove ul-li html tags from AddPersons (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/419)
* [person]: AddPersons: allow creation of person or thirdparty only (no users) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/422) * [person]: AddPersons: allow creation of person or thirdparty only (no users) (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/422)
* [person]: AddPersons: allow creation of person or thirdparty depending on allowed types (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/422)
<!-- write down unreleased development here --> <!-- write down unreleased development here -->
* fix normalisation of accompanying course requestor api (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/378) * fix normalisation of accompanying course requestor api (https://gitlab.com/champs-libres/departement-de-la-vendee/chill/-/issues/378)

View File

@ -1,6 +1,6 @@
<template> <template>
<ul class="nav nav-tabs"> <ul class="nav nav-tabs">
<li class="nav-item"> <li v-if="allowedTypes.includes('person')" class="nav-item">
<a class="nav-link" :class="{ active: isActive('person') }"> <a class="nav-link" :class="{ active: isActive('person') }">
<label for="person"> <label for="person">
<input type="radio" name="person" id="person" v-model="radioType" value="person"> <input type="radio" name="person" id="person" v-model="radioType" value="person">
@ -8,7 +8,7 @@
</label> </label>
</a> </a>
</li> </li>
<li class="nav-item"> <li v-if="allowedTypes.includes('thirdparty')" class="nav-item">
<a class="nav-link" :class="{ active: isActive('thirdparty') }"> <a class="nav-link" :class="{ active: isActive('thirdparty') }">
<label for="thirdparty"> <label for="thirdparty">
<input type="radio" name="thirdparty" id="thirdparty" v-model="radioType" value="thirdparty"> <input type="radio" name="thirdparty" id="thirdparty" v-model="radioType" value="thirdparty">
@ -38,11 +38,10 @@
<script> <script>
import OnTheFlyPerson from 'ChillPersonAssets/vuejs/_components/OnTheFly/Person.vue'; import OnTheFlyPerson from 'ChillPersonAssets/vuejs/_components/OnTheFly/Person.vue';
import OnTheFlyThirdparty from 'ChillThirdPartyAssets/vuejs/_components/OnTheFly/ThirdParty.vue'; import OnTheFlyThirdparty from 'ChillThirdPartyAssets/vuejs/_components/OnTheFly/ThirdParty.vue';
import { postPerson } from "ChillPersonAssets/vuejs/_api/OnTheFly";
export default { export default {
name: "OnTheFlyCreate", name: "OnTheFlyCreate",
props: ['action'], props: ['action', 'allowedTypes'],
components: { components: {
OnTheFlyPerson, OnTheFlyPerson,
OnTheFlyThirdparty OnTheFlyThirdparty

View File

@ -54,6 +54,7 @@
<template v-slot:body v-else> <template v-slot:body v-else>
<on-the-fly-create <on-the-fly-create
:action="action" :action="action"
:allowedTypes="allowedTypes"
ref="castNew"> ref="castNew">
</on-the-fly-create> </on-the-fly-create>
</template> </template>
@ -90,7 +91,7 @@ export default {
OnTheFlyThirdparty, OnTheFlyThirdparty,
OnTheFlyCreate OnTheFlyCreate
}, },
props: ['type', 'id', 'action', 'buttonText', 'displayBadge', 'isDead', 'parent'], props: ['type', 'id', 'action', 'buttonText', 'displayBadge', 'isDead', 'parent', 'allowedTypes'],
emits: ['saveFormOnTheFly'], emits: ['saveFormOnTheFly'],
data() { data() {
return { return {
@ -129,6 +130,13 @@ export default {
return 'action.create'; return 'action.create';
} }
}, },
titleCreate() {
return this.allowedTypes.every(t => t === 'person')
? 'onthefly.create.title.person'
: this.allowedTypes.every(t => t === 'thirdparty')
? 'onthefly.create.title.thirdparty'
: 'onthefly.create.title.default'
},
titleModal() { titleModal() {
switch (this.action) { switch (this.action) {
case 'show': case 'show':
@ -136,7 +144,7 @@ export default {
case 'edit': case 'edit':
return 'onthefly.edit.' + this.type; return 'onthefly.edit.' + this.type;
case 'create': case 'create':
return 'onthefly.create.title'; return this.titleCreate;
} }
}, },
titleMessage() { titleMessage() {

View File

@ -9,11 +9,15 @@ const ontheflyMessages = {
}, },
edit: { edit: {
person: "Modifier un usager", person: "Modifier un usager",
thirdparty: "Modifier un tiers" thirdparty: "Modifier un tiers",
}, },
create: { create: {
button: "Créer \"{q}\"", button: "Créer \"{q}\"",
title: "Création d'un nouvel usager ou d'un tiers professionnel", title: {
default: "Création d'un nouvel usager ou d'un tiers professionnel",
person: "Création d'un nouvel usager",
thirdparty: "Création d'un nouveau tiers professionnel",
},
person: "un nouvel usager", person: "un nouvel usager",
thirdparty: "un nouveau tiers professionnel" thirdparty: "un nouveau tiers professionnel"
}, },

View File

@ -64,6 +64,7 @@
<on-the-fly <on-the-fly
v-if="queryLength >= 3 && (options.type.includes('person') || options.type.includes('thirdparty'))" v-if="queryLength >= 3 && (options.type.includes('person') || options.type.includes('thirdparty'))"
:buttonText="$t('onthefly.create.button', {q: query})" :buttonText="$t('onthefly.create.button', {q: query})"
:allowedTypes="options.type"
action="create" action="create"
@saveFormOnTheFly="saveFormOnTheFly" @saveFormOnTheFly="saveFormOnTheFly"
ref="onTheFly"> ref="onTheFly">