diff --git a/src/dispatch/static/dispatch/src/signal/InstanceEntityPopover.vue b/src/dispatch/static/dispatch/src/signal/InstanceEntityPopover.vue new file mode 100644 index 000000000000..9af4126f5917 --- /dev/null +++ b/src/dispatch/static/dispatch/src/signal/InstanceEntityPopover.vue @@ -0,0 +1,48 @@ + + + diff --git a/src/dispatch/static/dispatch/src/signal/TableInstance.vue b/src/dispatch/static/dispatch/src/signal/TableInstance.vue index 78f5ff401e6e..5c9904862279 100644 --- a/src/dispatch/static/dispatch/src/signal/TableInstance.vue +++ b/src/dispatch/static/dispatch/src/signal/TableInstance.vue @@ -8,77 +8,77 @@ - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + @@ -92,6 +92,7 @@ import RawSignalViewer from "@/signal/RawSignalViewer.vue" import RouterUtils from "@/router/utils" import SignalPopover from "@/signal/SignalPopover.vue" import TableFilterDialog from "@/signal/TableFilterDialog.vue" +import InstanceEntityPopover from "@/signal/InstanceEntityPopover.vue" export default { name: "SignalInstanceTable", @@ -101,14 +102,18 @@ export default { RawSignalViewer, SignalPopover, TableFilterDialog, + InstanceEntityPopover, }, data() { return { + activeView: "triggers", headers: [ { title: "Case", value: "case", sortable: false }, + { title: "Status", value: "filter_action", sortable: true }, { title: "Signal Definition", value: "signal", sortable: false }, - { title: "Filter Action", value: "filter_action", sortable: true }, + { title: "Entities", value: "entities", sortable: true }, + { title: "Snoozes", value: "signal.filters", sortable: false }, { title: "Project", value: "signal.project.display_name", sortable: true }, { title: "Created At", value: "created_at" }, { title: "", value: "data-table-actions", sortable: false, align: "end" }, @@ -149,6 +154,27 @@ export default { methods: { ...mapActions("signal", ["getAllInstances"]), + + /** + * Count the snooze filters for a given signal definition. Counts all + * active snoozes by default, with the option to count expired snoozes instead. + * @param signal_filters: The definition's filters. + * @param count_expired: If true, count expired snoozes instead of active ones. + */ + getSnoozes(signal_filters, count_expired = false) { + let snoozes = 0 + for (let filter of signal_filters) { + if (filter.action === "snooze") { + let filter_is_expired = filter.expiration && new Date() >= new Date(filter.expiration) + if (!count_expired && !filter_is_expired) { + snoozes++ + } else if (count_expired && filter_is_expired) { + snoozes++ + } + } + } + return snoozes + }, }, created() {