mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-08-12 02:39:51 +00:00
Add translations for current user in pick entity component
This commit is contained in:
parent
b2b1865837
commit
b130dbdcdc
@ -2,19 +2,19 @@
|
|||||||
<ul :class="listClasses" v-if="picked.length && displayPicked">
|
<ul :class="listClasses" v-if="picked.length && displayPicked">
|
||||||
<li v-for="p in picked" @click="removeEntity(p)" :key="p.type + p.id">
|
<li v-for="p in picked" @click="removeEntity(p)" :key="p.type + p.id">
|
||||||
<!-- todo: use translations-->
|
<!-- todo: use translations-->
|
||||||
<span v-if="'me' === p" class="chill_denomination">utilisateur courant</span>
|
<span v-if="'me' === p" class="chill_denomination">{{ trans(USER_CURRENT_USER) }}</span>
|
||||||
<span v-else class="chill_denomination">{{ p.text }}</span>
|
<span v-else class="chill_denomination">{{ p.text }}</span>
|
||||||
</li>
|
</li>
|
||||||
</ul>
|
</ul>
|
||||||
<ul class="record_actions">
|
<ul class="record_actions">
|
||||||
<li>
|
<li class="btn btn-sm btn-misc">
|
||||||
<label class="flex items-center gap-2">
|
<label class="flex items-center gap-2">
|
||||||
<input
|
<input
|
||||||
ref="itsMeCheckbox"
|
ref="itsMeCheckbox"
|
||||||
:type="multiple ? 'checkbox' : 'radio'"
|
:type="multiple ? 'checkbox' : 'radio'"
|
||||||
@change="selectItsMe"
|
@change="selectItsMe"
|
||||||
/>
|
/>
|
||||||
Utilisateur courant {{ currentUser }}
|
{{ trans(USER_CURRENT_USER) }}
|
||||||
</label>
|
</label>
|
||||||
</li>
|
</li>
|
||||||
<li class="add-persons">
|
<li class="add-persons">
|
||||||
@ -36,137 +36,69 @@
|
|||||||
</ul>
|
</ul>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script>
|
<script setup>
|
||||||
|
import { ref, computed } from 'vue';
|
||||||
import AddPersons from "ChillPersonAssets/vuejs/_components/AddPersons.vue";
|
import AddPersons from "ChillPersonAssets/vuejs/_components/AddPersons.vue";
|
||||||
import { appMessages } from "./i18n";
|
import { appMessages } from "./i18n";
|
||||||
import { trans } from "translator";
|
import { trans, USER_CURRENT_USER } from "translator";
|
||||||
|
|
||||||
export default {
|
const props = defineProps({
|
||||||
name: "PickEntity",
|
multiple: Boolean,
|
||||||
props: {
|
types: Array,
|
||||||
multiple: {
|
picked: Array,
|
||||||
type: Boolean,
|
uniqid: String,
|
||||||
required: true,
|
removableIfSet: { type: Boolean, default: true },
|
||||||
},
|
displayPicked: { type: Boolean, default: true },
|
||||||
types: {
|
suggested: { type: Array, default: () => [] },
|
||||||
type: Array,
|
label: String,
|
||||||
required: true,
|
isCurrentUserPicker: { type: Boolean, default: false }
|
||||||
},
|
|
||||||
picked: {
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
uniqid: {
|
|
||||||
type: String,
|
|
||||||
required: true,
|
|
||||||
},
|
|
||||||
removableIfSet: {
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
displayPicked: {
|
|
||||||
// display picked entities.
|
|
||||||
type: Boolean,
|
|
||||||
default: true,
|
|
||||||
},
|
|
||||||
suggested: {
|
|
||||||
type: Array,
|
|
||||||
default: [],
|
|
||||||
},
|
|
||||||
label: {
|
|
||||||
type: String,
|
|
||||||
required: false,
|
|
||||||
},
|
|
||||||
isCurrentUserPicker: {
|
|
||||||
type: Boolean,
|
|
||||||
default: false
|
|
||||||
}
|
|
||||||
},
|
|
||||||
emits: ["addNewEntity", "removeEntity", "addNewEntityProcessEnded"],
|
|
||||||
components: {
|
|
||||||
AddPersons,
|
|
||||||
},
|
|
||||||
data() {
|
|
||||||
return {
|
|
||||||
key: "",
|
|
||||||
};
|
|
||||||
},
|
|
||||||
computed: {
|
|
||||||
addPersonsOptions() {
|
|
||||||
return {
|
|
||||||
uniq: !this.multiple,
|
|
||||||
type: this.types,
|
|
||||||
priority: null,
|
|
||||||
button: {
|
|
||||||
size: "btn-sm",
|
|
||||||
class: "btn-submit",
|
|
||||||
},
|
|
||||||
};
|
|
||||||
},
|
|
||||||
translatedListOfTypes() {
|
|
||||||
if (this.label !== "") {
|
|
||||||
return this.label;
|
|
||||||
}
|
|
||||||
|
|
||||||
let trans = [];
|
|
||||||
this.types.forEach((t) => {
|
|
||||||
if (this.$props.multiple) {
|
|
||||||
trans.push(appMessages.fr.pick_entity[t].toLowerCase());
|
|
||||||
} else {
|
|
||||||
trans.push(
|
|
||||||
appMessages.fr.pick_entity[t + "_one"].toLowerCase(),
|
|
||||||
);
|
|
||||||
}
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (this.$props.multiple) {
|
const emit = defineEmits(["addNewEntity", "removeEntity", "addNewEntityProcessEnded"]);
|
||||||
return (
|
|
||||||
appMessages.fr.pick_entity.modal_title + trans.join(", ")
|
const itsMeCheckbox = ref(null);
|
||||||
|
const addPersons = ref(null);
|
||||||
|
|
||||||
|
const addPersonsOptions = computed(() => ({
|
||||||
|
uniq: !props.multiple,
|
||||||
|
type: props.types,
|
||||||
|
priority: null,
|
||||||
|
button: { size: "btn-sm", class: "btn-submit" },
|
||||||
|
}));
|
||||||
|
|
||||||
|
const translatedListOfTypes = computed(() => {
|
||||||
|
if (props.label) return props.label;
|
||||||
|
let trans = props.types.map(t =>
|
||||||
|
props.multiple ? appMessages.fr.pick_entity[t].toLowerCase() : appMessages.fr.pick_entity[t + "_one"].toLowerCase()
|
||||||
);
|
);
|
||||||
} else {
|
return props.multiple ? appMessages.fr.pick_entity.modal_title + trans.join(", ") : appMessages.fr.pick_entity.modal_title_one + trans.join(", ");
|
||||||
return (
|
});
|
||||||
appMessages.fr.pick_entity.modal_title_one +
|
|
||||||
trans.join(", ")
|
const listClasses = computed(() => ({
|
||||||
);
|
|
||||||
}
|
|
||||||
},
|
|
||||||
listClasses() {
|
|
||||||
console.log(this.isCurrentUserPicker)
|
|
||||||
return {
|
|
||||||
"list-suggest": true,
|
"list-suggest": true,
|
||||||
"remove-items": this.$props.removableIfSet,
|
"remove-items": props.removableIfSet,
|
||||||
|
}));
|
||||||
|
|
||||||
|
const selectItsMe = (event) => {
|
||||||
|
event.target.checked ? addNewSuggested('me') : removeEntity('me');
|
||||||
};
|
};
|
||||||
},
|
|
||||||
},
|
const addNewSuggested = (entity) => {
|
||||||
methods: {
|
emit("addNewEntity", { entity });
|
||||||
selectItsMe(event) {
|
};
|
||||||
if (event.target.checked) {
|
|
||||||
this.addNewSuggested('me')
|
const addNewEntity = ({ selected, modal }) => {
|
||||||
} else {
|
selected.forEach(item => emit("addNewEntity", { entity: item.result }));
|
||||||
this.removeEntity('me')
|
addPersons.value?.resetSearch();
|
||||||
}
|
|
||||||
},
|
|
||||||
addNewSuggested(entity) {
|
|
||||||
this.$emit("addNewEntity", { entity: entity });
|
|
||||||
},
|
|
||||||
addNewEntity({ selected, modal }) {
|
|
||||||
selected.forEach((item) => {
|
|
||||||
this.$emit("addNewEntity", { entity: item.result });
|
|
||||||
}, this);
|
|
||||||
this.$refs.addPersons.resetSearch(); // to cast child method
|
|
||||||
modal.showModal = false;
|
modal.showModal = false;
|
||||||
this.$emit("addNewEntityProcessEnded");
|
emit("addNewEntityProcessEnded");
|
||||||
},
|
};
|
||||||
removeEntity(entity) {
|
|
||||||
if (!this.$props.removableIfSet) {
|
const removeEntity = (entity) => {
|
||||||
return;
|
if (!props.removableIfSet) return;
|
||||||
|
if (entity === 'me' && itsMeCheckbox.value) {
|
||||||
|
itsMeCheckbox.value.checked = false;
|
||||||
}
|
}
|
||||||
if ('me' === entity) {
|
emit("removeEntity", { entity });
|
||||||
if (this.$refs.itsMeCheckbox) {
|
|
||||||
this.$refs.itsMeCheckbox.checked = false;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
this.$emit("removeEntity", { entity: entity });
|
|
||||||
},
|
|
||||||
},
|
|
||||||
};
|
};
|
||||||
</script>
|
</script>
|
||||||
|
@ -68,11 +68,8 @@ class ReferrerFilter implements FilterInterface
|
|||||||
{
|
{
|
||||||
$builder
|
$builder
|
||||||
->add('accepted_referrers', PickUserOrMeDynamicType::class, [
|
->add('accepted_referrers', PickUserOrMeDynamicType::class, [
|
||||||
'multiple' => false,
|
|
||||||
])
|
|
||||||
/* ->add('accepted_referrers', PickUserDynamicType::class, [
|
|
||||||
'multiple' => true,
|
'multiple' => true,
|
||||||
])*/
|
])
|
||||||
->add('date_calc', PickRollingDateType::class, [
|
->add('date_calc', PickRollingDateType::class, [
|
||||||
'label' => 'export.filter.course.by_referrer.Computation date for referrer',
|
'label' => 'export.filter.course.by_referrer.Computation date for referrer',
|
||||||
'required' => true,
|
'required' => true,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user