Skip to content
This repository was archived by the owner on Sep 3, 2025. It is now read-only.

Commit 30aea19

Browse files
authored
enhancement(ui): allow multiple assignee and participants (#5443)
1 parent 19872d9 commit 30aea19

File tree

4 files changed

+17
-27
lines changed

4 files changed

+17
-27
lines changed

src/dispatch/static/dispatch/src/case/TableFilterDialog.vue

Lines changed: 3 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -46,20 +46,19 @@
4646
<v-list-item>
4747
<v-card class="mx-auto">
4848
<v-card-title>Case Participant</v-card-title>
49-
<v-card-subtitle>Show only cases with this participant</v-card-subtitle>
49+
<v-card-subtitle>Show only cases with these participant(s)</v-card-subtitle>
5050
<participant-select
5151
class="ml-10 mr-5"
5252
v-model="local_participant"
5353
label="Participant"
54-
hint="Show only cases with this participant"
54+
hint="Show only cases with these participant(s)"
5555
:project="local_project"
5656
clearable
57-
:rules="[only_one]"
5857
/>
5958
<v-checkbox
6059
class="ml-10 mr-5"
6160
v-model="local_participant_is_assignee"
62-
label="And this participant is the Assignee"
61+
label="And these participant(s) are the Assignee"
6362
:disabled="local_participant == null"
6463
/>
6564
</v-card>
@@ -138,19 +137,9 @@ const numFilters = computed(() => {
138137
])
139138
})
140139
141-
const only_one = (value) => {
142-
if (value && value.length > 1) {
143-
return "Only one is allowed"
144-
}
145-
return true
146-
}
147-
148140
const applyFilters = () => {
149141
let filtered_participant = null
150142
let filtered_assignee = null
151-
if (Array.isArray(local_participant.value)) {
152-
local_participant.value = local_participant.value[0]
153-
}
154143
if (local_participant_is_assignee.value) {
155144
filtered_assignee = local_participant.value
156145
filtered_participant = null

src/dispatch/static/dispatch/src/incident/TableFilterDialog.vue

Lines changed: 3 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -66,20 +66,19 @@
6666
<v-list-item>
6767
<v-card class="mx-auto">
6868
<v-card-title>Incident Participant</v-card-title>
69-
<v-card-subtitle>Show only incidents with this participant</v-card-subtitle>
69+
<v-card-subtitle>Show only incidents with these participant(s)</v-card-subtitle>
7070
<participant-select
7171
class="ml-10 mr-5"
7272
v-model="local_participant"
7373
label="Participant"
74-
hint="Show only incidents with this participant"
74+
hint="Show only incidents with these participant(s)"
7575
:project="local_project"
7676
clearable
77-
:rules="[only_one]"
7877
/>
7978
<v-checkbox
8079
class="ml-10 mr-5"
8180
v-model="local_participant_is_commander"
82-
label="And this participant is the Incident Commander"
81+
label="And these participant(s) are the Incident Commander"
8382
:disabled="local_participant == null"
8483
/>
8584
</v-card>
@@ -149,12 +148,6 @@ export default {
149148
local_tag_type: [],
150149
local_participant_is_commander: false,
151150
local_participant: null,
152-
only_one: (value) => {
153-
if (value && value.length > 1) {
154-
return "Only one is allowed"
155-
}
156-
return true
157-
},
158151
}
159152
},
160153
@@ -201,9 +194,6 @@ export default {
201194
this.tag = this.local_tag
202195
this.tag_all = this.local_tag_all
203196
this.tag_type = this.local_tag_type
204-
if (Array.isArray(this.local_participant)) {
205-
this.local_participant = this.local_participant[0]
206-
}
207197
this.participant = this.local_participant
208198
if (this.local_participant_is_commander) {
209199
this.commander = this.local_participant

src/dispatch/static/dispatch/src/router/utils.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,16 @@ export default {
1818
if (has(flatFilters, key)) {
1919
if (typeof item === "string" || item instanceof String) {
2020
flatFilters[key].push(item)
21+
} else if (Array.isArray(value)) {
22+
flatFilters[key].push(item.individual.email)
2123
} else {
2224
flatFilters[key].push(item.email)
2325
}
2426
} else {
2527
if (typeof item === "string" || item instanceof String) {
2628
flatFilters[key] = [item]
29+
} else if (Array.isArray(value)) {
30+
flatFilters[key] = [item.individual.email]
2731
} else {
2832
flatFilters[key] = [item.email]
2933
}

src/dispatch/static/dispatch/src/search/utils.js

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -144,6 +144,13 @@ export default {
144144
op: "==",
145145
value: value.email,
146146
})
147+
} else if (["commander", "participant", "assignee"].includes(key)) {
148+
subFilter.push({
149+
model: toPascalCase(key),
150+
field: "email",
151+
op: "==",
152+
value: value.individual.email,
153+
})
147154
} else if (has(value, "id")) {
148155
subFilter.push({
149156
model: toPascalCase(key),

0 commit comments

Comments
 (0)