mirror of
https://gitlab.com/Chill-Projet/chill-bundles.git
synced 2025-06-14 14:24:24 +00:00
Fusionner les utilisateurs/goupes en une "Card"
This commit is contained in:
parent
3f9745d8cf
commit
ab850b7b70
@ -1,6 +1,7 @@
|
|||||||
<template>
|
<template>
|
||||||
<span class="chill-entity entity-user">
|
<span class="chill-entity entity-user">
|
||||||
{{ user.label }}
|
{{ user.label }}
|
||||||
|
{{ user }}
|
||||||
<span class="user-job" v-if="user.user_job !== null">({{ user.user_job.label.fr }})</span> <span class="main-scope" v-if="user.main_scope !== null">({{ user.main_scope.name.fr }})</span> <span v-if="user.isAbsent" class="badge bg-danger rounded-pill" :title="Absent">A</span>
|
<span class="user-job" v-if="user.user_job !== null">({{ user.user_job.label.fr }})</span> <span class="main-scope" v-if="user.main_scope !== null">({{ user.main_scope.name.fr }})</span> <span v-if="user.isAbsent" class="badge bg-danger rounded-pill" :title="Absent">A</span>
|
||||||
</span>
|
</span>
|
||||||
</template>
|
</template>
|
||||||
|
@ -68,8 +68,9 @@ interface AddPersonEvent extends TicketHistory<"add_person", PersonHistory> {};
|
|||||||
interface AddCommentEvent extends TicketHistory<"add_comment", Comment> {};
|
interface AddCommentEvent extends TicketHistory<"add_comment", Comment> {};
|
||||||
interface SetMotiveEvent extends TicketHistory<"set_motive", MotiveHistory> {};
|
interface SetMotiveEvent extends TicketHistory<"set_motive", MotiveHistory> {};
|
||||||
interface AddAddressee extends TicketHistory<"add_addressee", AddresseeHistory> {};
|
interface AddAddressee extends TicketHistory<"add_addressee", AddresseeHistory> {};
|
||||||
|
interface RemoveAddressee extends TicketHistory<"remove_addressee", AddresseeHistory> {};
|
||||||
|
|
||||||
type TicketHistoryLine = AddPersonEvent | AddCommentEvent | SetMotiveEvent | AddAddressee;
|
type TicketHistoryLine = AddPersonEvent | AddCommentEvent | SetMotiveEvent | AddAddressee | RemoveAddressee;
|
||||||
|
|
||||||
export interface Ticket {
|
export interface Ticket {
|
||||||
type: "ticket_ticket",
|
type: "ticket_ticket",
|
||||||
|
@ -52,17 +52,27 @@
|
|||||||
</div>
|
</div>
|
||||||
<div class="col-md-6 col-sm-12">
|
<div class="col-md-6 col-sm-12">
|
||||||
<h3 class="text-primary">{{ $t("banner.speaker") }}</h3>
|
<h3 class="text-primary">{{ $t("banner.speaker") }}</h3>
|
||||||
|
|
||||||
<h2>
|
<h2>
|
||||||
|
<!-- Not rendering correctly -->
|
||||||
|
<!-- <user-render-box-badge
|
||||||
|
v-for="user in ticket.currentAddressees.filter((addressee) => addressee.type == 'user')"
|
||||||
|
:user="user"
|
||||||
|
:key="user.id"
|
||||||
|
/> -->
|
||||||
<span
|
<span
|
||||||
class="badge text-bg-light m-1"
|
class="badge text-bg-light m-1"
|
||||||
v-for="addressee in ticket.currentAddressees"
|
v-for="user_group in ticket.currentAddressees.filter((addressee) => addressee.type == 'user') as Array<User>"
|
||||||
:key="addressee.id"
|
:key="user_group.id"
|
||||||
>
|
>
|
||||||
{{
|
{{ user_group.label }}
|
||||||
typeof addressee.label == "string"
|
</span>
|
||||||
? addressee.label
|
<span
|
||||||
: addressee.label.fr
|
class="badge text-bg-light m-1"
|
||||||
}}
|
v-for="user_group in ticket.currentAddressees.filter((addressee) => addressee.type == 'user_group') as Array<UserGroup>"
|
||||||
|
:key="user_group.id"
|
||||||
|
>
|
||||||
|
{{ user_group.label.fr }}
|
||||||
</span>
|
</span>
|
||||||
</h2>
|
</h2>
|
||||||
</div>
|
</div>
|
||||||
@ -71,7 +81,7 @@
|
|||||||
</Teleport>
|
</Teleport>
|
||||||
<div class="container-xxl pt-1" style="padding-bottom: 55px">
|
<div class="container-xxl pt-1" style="padding-bottom: 55px">
|
||||||
<ticket-selector-component :tickets="[]" />
|
<ticket-selector-component :tickets="[]" />
|
||||||
<ticket-history-list-component :history="ticket.history" />
|
<ticket-history-list-component :history="ticketHistory" />
|
||||||
</div>
|
</div>
|
||||||
<action-toolbar-component />
|
<action-toolbar-component />
|
||||||
</template>
|
</template>
|
||||||
@ -81,6 +91,11 @@ import { computed, defineComponent, inject, onMounted, ref } from "vue";
|
|||||||
import { useStore } from "vuex";
|
import { useStore } from "vuex";
|
||||||
|
|
||||||
// Types
|
// Types
|
||||||
|
import {
|
||||||
|
DateTime,
|
||||||
|
User,
|
||||||
|
UserGroup,
|
||||||
|
} from "../../../../../../ChillMainBundle/Resources/public/types";
|
||||||
import { Motive, Ticket } from "../../types";
|
import { Motive, Ticket } from "../../types";
|
||||||
|
|
||||||
// Components
|
// Components
|
||||||
@ -88,7 +103,6 @@ import TicketSelectorComponent from "./components/TicketSelectorComponent.vue";
|
|||||||
import TicketHistoryListComponent from "./components/TicketHistoryListComponent.vue";
|
import TicketHistoryListComponent from "./components/TicketHistoryListComponent.vue";
|
||||||
import ActionToolbarComponent from "./components/ActionToolbarComponent.vue";
|
import ActionToolbarComponent from "./components/ActionToolbarComponent.vue";
|
||||||
import UserRenderBoxBadge from "../../../../../../ChillMainBundle/Resources/public/vuejs/_components/Entity/UserRenderBoxBadge.vue";
|
import UserRenderBoxBadge from "../../../../../../ChillMainBundle/Resources/public/vuejs/_components/Entity/UserRenderBoxBadge.vue";
|
||||||
import { DateTime } from "../../../../../../ChillMainBundle/Resources/public/types";
|
|
||||||
|
|
||||||
export default defineComponent({
|
export default defineComponent({
|
||||||
name: "App",
|
name: "App",
|
||||||
@ -107,6 +121,9 @@ export default defineComponent({
|
|||||||
|
|
||||||
const motives = computed(() => store.getters.getMotives as Motive[]);
|
const motives = computed(() => store.getters.getMotives as Motive[]);
|
||||||
const ticket = computed(() => store.getters.getTicket as Ticket);
|
const ticket = computed(() => store.getters.getTicket as Ticket);
|
||||||
|
const ticketHistory = computed(
|
||||||
|
() => store.getters.getDistinctAddressesHistory
|
||||||
|
);
|
||||||
|
|
||||||
function getSince(createdAt: DateTime) {
|
function getSince(createdAt: DateTime) {
|
||||||
const today = new Date();
|
const today = new Date();
|
||||||
@ -127,6 +144,7 @@ export default defineComponent({
|
|||||||
});
|
});
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
ticketHistory,
|
||||||
headline,
|
headline,
|
||||||
motives,
|
motives,
|
||||||
ticket,
|
ticket,
|
||||||
|
@ -1,19 +1,17 @@
|
|||||||
<template>
|
<template>
|
||||||
<div class="col-12" v-if="addressee.type == 'user_group'">
|
<div class="col-12" >
|
||||||
<i class="fa fa-paper-plane"></i>
|
<i class="fa fa-paper-plane" v-if="event_type === 'add_addressee'"></i>
|
||||||
<span class="mx-1">
|
<i class="fa fa-paper-plane-o" v-else></i>
|
||||||
|
<span class="mx-1" v-if="addressee.type == 'user_group'">
|
||||||
{{
|
{{
|
||||||
$t("history.transfert_user_group", {
|
$t(`history.${event_type}_user_group`, {
|
||||||
user_group: addressee.label.fr,
|
user_group: addressee.label.fr,
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
</span>
|
</span>
|
||||||
</div>
|
<span class="mx-1" v-else-if="addressee.type == 'user'">
|
||||||
<div class="col-12" v-if="addressee.type == 'user'">
|
|
||||||
<i class="fa fa-paper-plane"></i>
|
|
||||||
<span class="mx-1">
|
|
||||||
{{
|
{{
|
||||||
$t("history.transfert_user", {
|
$t(`history.${event_type}_user`, {
|
||||||
user: addressee.username,
|
user: addressee.username,
|
||||||
})
|
})
|
||||||
}}
|
}}
|
||||||
@ -35,8 +33,11 @@ export default defineComponent({
|
|||||||
type: Object as PropType<AddresseeHistory>,
|
type: Object as PropType<AddresseeHistory>,
|
||||||
required: true,
|
required: true,
|
||||||
},
|
},
|
||||||
|
event_type: {
|
||||||
|
type: String,
|
||||||
|
required: true,
|
||||||
|
},
|
||||||
},
|
},
|
||||||
|
|
||||||
setup(props, ctx) {
|
setup(props, ctx) {
|
||||||
return {
|
return {
|
||||||
addressee: ref(props.addresseeHistory.addressee as UserGroupOrUser),
|
addressee: ref(props.addresseeHistory.addressee as UserGroupOrUser),
|
||||||
|
@ -4,32 +4,47 @@
|
|||||||
v-for="history_line in history"
|
v-for="history_line in history"
|
||||||
:key="history.indexOf(history_line)"
|
:key="history.indexOf(history_line)"
|
||||||
>
|
>
|
||||||
<div class="card-header">
|
<template v-if="!Array.isArray(history_line)">
|
||||||
<span class="fw-bold fst-italic">
|
<div class="card-header">
|
||||||
{{ formatDate(history_line.at) }}
|
<span class="fw-bold fst-italic">
|
||||||
</span>
|
{{ formatDate(history_line.at) }}
|
||||||
<span class="badge bg-white text-black mx-1">{{
|
</span>
|
||||||
history_line.by.username
|
<span class="badge bg-white text-black mx-1">{{
|
||||||
}}</span>
|
history_line.by.username
|
||||||
</div>
|
}}</span>
|
||||||
<div class="card-body row fst-italic">
|
</div>
|
||||||
<ticket-history-person-component
|
<div class="card-body row fst-italic">
|
||||||
:personHistory="history_line.data"
|
<ticket-history-person-component
|
||||||
v-if="history_line.event_type == 'add_person'"
|
:personHistory="history_line.data"
|
||||||
/>
|
v-if="history_line.event_type == 'add_person'"
|
||||||
<ticket-history-motive-component
|
/>
|
||||||
:motiveHistory="history_line.data"
|
<ticket-history-motive-component
|
||||||
v-else-if="history_line.event_type == 'set_motive'"
|
:motiveHistory="history_line.data"
|
||||||
/>
|
v-else-if="history_line.event_type == 'set_motive'"
|
||||||
<ticket-history-comment-component
|
/>
|
||||||
:commentHistory="history_line.data"
|
<ticket-history-comment-component
|
||||||
v-else-if="history_line.event_type == 'add_comment'"
|
:commentHistory="history_line.data"
|
||||||
/>
|
v-else-if="history_line.event_type == 'add_comment'"
|
||||||
<ticket-history-addressee-component
|
/>
|
||||||
:addresseeHistory="history_line.data"
|
</div>
|
||||||
v-else-if="history_line.event_type == 'add_addressee'"
|
</template>
|
||||||
/>
|
<template v-else>
|
||||||
</div>
|
<div class="card-header">
|
||||||
|
<span class="fw-bold fst-italic">
|
||||||
|
{{ formatDate(history_line[0].at) }}
|
||||||
|
</span>
|
||||||
|
<span class="badge bg-white text-black mx-1">{{
|
||||||
|
history_line[0].by.username
|
||||||
|
}}</span>
|
||||||
|
</div>
|
||||||
|
<div
|
||||||
|
class="card-body row fst-italic"
|
||||||
|
v-for="addressee in history_line"
|
||||||
|
:key="history_line.indexOf(addressee)"
|
||||||
|
>
|
||||||
|
<ticket-history-addressee-component :addresseeHistory="addressee.data" :event_type="addressee.event_type"/>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
|
@ -10,8 +10,10 @@ const messages = {
|
|||||||
user: "Prise en charge par {username}",
|
user: "Prise en charge par {username}",
|
||||||
motive: "Motif indiqué: {motive}",
|
motive: "Motif indiqué: {motive}",
|
||||||
comment: "Commentaire: {comment}",
|
comment: "Commentaire: {comment}",
|
||||||
transfert_user_group: "Transferé au groupe: {user_group}",
|
add_addressee_user_group: "Groupe {user_group} transferé",
|
||||||
transfert_user: "Transferé vers l'utilisateur: {user}",
|
remove_addressee_user_group: "Groupe {user_group} retiré",
|
||||||
|
add_addressee_user: " Utilisateur {user} Transferé",
|
||||||
|
remove_addressee_user: "Utilisateur {user} retiré",
|
||||||
},
|
},
|
||||||
comment: {
|
comment: {
|
||||||
title: "Commentaire",
|
title: "Commentaire",
|
||||||
|
@ -14,7 +14,24 @@ export const moduleTicket: Module<State, RootState> ={
|
|||||||
getters: {
|
getters: {
|
||||||
getTicket(state) {
|
getTicket(state) {
|
||||||
return state.ticket;
|
return state.ticket;
|
||||||
}
|
},
|
||||||
|
getDistinctAddressesHistory(state) {
|
||||||
|
const addresseeHistory = state.ticket.history.reduce((result, item) => {
|
||||||
|
const { datetime } = item.at;
|
||||||
|
if (!["add_addressee","remove_addressee"].includes(item.event_type)) {
|
||||||
|
result[datetime] = item
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!result[datetime]) {
|
||||||
|
result[datetime] = [];
|
||||||
|
}
|
||||||
|
result[datetime].push(item);
|
||||||
|
return result;
|
||||||
|
}, {} as any);
|
||||||
|
return Object.values(addresseeHistory) as Array<Ticket["history"]>;
|
||||||
|
}
|
||||||
|
|
||||||
},
|
},
|
||||||
mutations: {
|
mutations: {
|
||||||
setTicket(state, ticket) {
|
setTicket(state, ticket) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user