-
-
-
{{ subTitle }}
-
+
+
+
+
+ {{ icon }}
+
+
+
+ {{ subTitle }}
+
{{ title }}
- {{ supTitle }}
-
-
+
{{ supTitle }}
+
+
diff --git a/src/dispatch/static/dispatch/src/components/circle/VCircle.js b/src/dispatch/static/dispatch/src/components/circle/VCircle.js
deleted file mode 100644
index 57eaf3564950..000000000000
--- a/src/dispatch/static/dispatch/src/components/circle/VCircle.js
+++ /dev/null
@@ -1,40 +0,0 @@
-import "./VCircle.styl"
-import Colorable from "vuetify/es5/mixins/colorable"
-export default {
- mixins: [Colorable],
-
- props: {
- text: String,
- small: Boolean,
- large: Boolean,
- medium: Boolean,
- dot: Boolean,
- pill: Boolean,
- ring: Boolean,
- },
- computed: {
- classes() {
- const classes = {
- "circle-sm": this.small,
- "circle-lg": this.medium,
- "circle-xl": this.large,
- "circle-ring": this.ring,
- "circle-dot": this.dot,
- "circle-pill": this.pill,
- "theme--light": this.light,
- "theme--dark": this.dark,
- }
- return classes
- },
- },
- render(h) {
- const data = {
- staticClass: "circle",
- class: this.classes,
- attrs: { tabindex: this.disabled ? -1 : 0 },
- on: this.$listeners,
- }
-
- return h("span", data, [this.$slots.default])
- },
-}
diff --git a/src/dispatch/static/dispatch/src/components/circle/VCircle.styl b/src/dispatch/static/dispatch/src/components/circle/VCircle.styl
deleted file mode 100644
index 19166053cf94..000000000000
--- a/src/dispatch/static/dispatch/src/components/circle/VCircle.styl
+++ /dev/null
@@ -1,95 +0,0 @@
-.circle
- border-radius 3px
- padding .25em .4em
- font-weight 400
- line-height 1.3
- font-size 85%
- &:empty
- display inline-block
- vertical-align inherit
-
-.circle-pill
- color: #fff
- padding-right: .6em;
- padding-left: .6em;
- border-radius 10rem
-
-.circle-sm
- line-height 1.2
- padding-top 1px
- padding-bottom 2px
- font-size 75%
-
-.circle-lg
- line-height 1.5
- padding 5px 7px
- font-size 95%
-
-.circle-xl
- line-height 1.7
- padding 7px 9px
- font-size 100%
-
-.circle-dot
- width 8px
- height 8px
- padding 0
- border-radius 100%
- vertical-align middle
- &.circle-sm
- width 6px
- height 6px
- &.circle-lg
- width 10px
- height 10px
- &.circle-xl
- width 12px
- height 12px
-
-.circle-ring
- position relative
- width 10px
- height 10px
- padding 0
- border-radius 100%
- vertical-align middle
- &::after
- content ''
- position absolute
- top 2px
- left 2px
- width 6px
- height 6px
- border-radius 50%
- background-color #fff
- -webkit-transform scale(1)
- transform scale(1)
- -webkit-transition .3s
- transition .3s
- &.circle-sm
- width 8px
- height 8px
- &::after
- width 4px
- height 4px
- &.circle-lg
- width 12px
- height 12px
- &::after
- width 8px
- height 8px
- &.circle-xl
- width 14px
- height 14px
- &::after
- width 10px
- height 10px
- &.fill
- &::after
- -webkit-transform scale(0)
- transform scale(0)
-
-.circle-bold
- text-transform uppercase
- font-weight 500
- letter-spacing 1px
\ No newline at end of file
diff --git a/src/dispatch/static/dispatch/src/components/layouts/BasicLayout.vue b/src/dispatch/static/dispatch/src/components/layouts/BasicLayout.vue
index ab02eb607acb..81004709c0ea 100644
--- a/src/dispatch/static/dispatch/src/components/layouts/BasicLayout.vue
+++ b/src/dispatch/static/dispatch/src/components/layouts/BasicLayout.vue
@@ -3,12 +3,14 @@
-
-
- D I S P A T C H
-
+
+
+
+ D I S P A T C H
+
+
-
+
diff --git a/src/dispatch/static/dispatch/src/components/layouts/DefaultLayout.vue b/src/dispatch/static/dispatch/src/components/layouts/DefaultLayout.vue
index d1eea6f36e35..c6549d802235 100644
--- a/src/dispatch/static/dispatch/src/components/layouts/DefaultLayout.vue
+++ b/src/dispatch/static/dispatch/src/components/layouts/DefaultLayout.vue
@@ -9,7 +9,7 @@
-
+
diff --git a/src/dispatch/static/dispatch/src/dashboard/DashboardCard.vue b/src/dispatch/static/dispatch/src/dashboard/DashboardCard.vue
index 076ae4efcd17..7a4c0fb00097 100644
--- a/src/dispatch/static/dispatch/src/dashboard/DashboardCard.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/DashboardCard.vue
@@ -1,12 +1,12 @@
-
+
{{ title }}
diff --git a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentHeatmapCard.vue b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentHeatmapCard.vue
index bb0bd5ddfd05..419b481c486a 100644
--- a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentHeatmapCard.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentHeatmapCard.vue
@@ -20,7 +20,7 @@ export default {
name: "IncidentHeatMapChartCard",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -79,7 +79,7 @@ export default {
let series = []
let weekdays = this.weekdays
- forEach(this.value, function (value, key) {
+ forEach(this.modelValue, function (value, key) {
let grouping = key
let dayCounts = map(
groupBy(value, function (item) {
@@ -114,7 +114,7 @@ export default {
return series
},
categoryData() {
- return Object.keys(this.value)
+ return Object.keys(this.modelValue)
},
weekdays() {
return [...Array(7).keys()].map((i) => locale.localize.day(i, { width: "abbreviated" }))
diff --git a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentMeanResponseTimeCard.vue b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentMeanResponseTimeCard.vue
index def645069689..1d4c17b095c8 100644
--- a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentMeanResponseTimeCard.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentMeanResponseTimeCard.vue
@@ -19,7 +19,7 @@ export default {
name: "IncidentMeanResponseTimeCard",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -50,7 +50,7 @@ export default {
computed: {
series() {
let series = { name: "Mean Response Time", data: [] }
- forEach(this.value, function (value) {
+ forEach(this.modelValue, function (value) {
// we filter out active incidents
value = value.filter((v) => v.status !== "Active")
@@ -79,7 +79,7 @@ export default {
},
},
xaxis: {
- categories: Object.keys(this.value) || [],
+ categories: Object.keys(this.modelValue) || [],
title: {
text: this.interval,
},
diff --git a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentOverview.vue b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentOverview.vue
index 487140c7dc4a..ff46adbfe263 100644
--- a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentOverview.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentOverview.vue
@@ -1,129 +1,134 @@
-
+
-
-
+
+
Share View
-
-
+
+
-
-
-
-
-
-
-
+
+
+
+
+
+
+
-
-
+
+
-
-
+
+
-
+
-
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
-
+
diff --git a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentSeverityBarChartCard.vue b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentSeverityBarChartCard.vue
index 0cff26c5d92c..cd8f7443d6dc 100644
--- a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentSeverityBarChartCard.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentSeverityBarChartCard.vue
@@ -19,7 +19,7 @@ export default {
name: "IncidentSeverityBarChartCard",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -113,14 +113,14 @@ export default {
},
series() {
let series = DashboardUtils.createCountedSeriesData(
- this.value,
+ this.modelValue,
"incident_severity.name",
this.severities
)
return series
},
categoryData() {
- return Object.keys(this.value)
+ return Object.keys(this.modelValue)
},
},
}
diff --git a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTagsTreemapCard.vue b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTagsTreemapCard.vue
index 935034f4e407..ce5171a944b6 100644
--- a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTagsTreemapCard.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTagsTreemapCard.vue
@@ -17,7 +17,7 @@ export default {
name: "IncidentTreeMapCard",
props: {
- value: {
+ modelValue: {
type: Array,
default: function () {
return []
@@ -57,7 +57,7 @@ export default {
series() {
// get all possible tags
let allTags = []
- forEach(this.value, function (value) {
+ forEach(this.modelValue, function (value) {
allTags.push(...value.tags)
})
diff --git a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTypeBarChartCard.vue b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTypeBarChartCard.vue
index b243ee3c0a0d..dcff287320d2 100644
--- a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTypeBarChartCard.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentTypeBarChartCard.vue
@@ -19,7 +19,7 @@ export default {
name: "IncidentTypeBarChartCard",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -96,10 +96,14 @@ export default {
}
},
series() {
- return DashboardUtils.createCountedSeriesData(this.value, "incident_type.name", this.types)
+ return DashboardUtils.createCountedSeriesData(
+ this.modelValue,
+ "incident_type.name",
+ this.types
+ )
},
categoryData() {
- return Object.keys(this.value)
+ return Object.keys(this.modelValue)
},
},
}
diff --git a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentsDrillDownSheet.vue b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentsDrillDownSheet.vue
index e65495207a72..645d1112572a 100644
--- a/src/dispatch/static/dispatch/src/dashboard/incident/IncidentsDrillDownSheet.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/incident/IncidentsDrillDownSheet.vue
@@ -1,13 +1,14 @@
-
+
-
-
- Details
-
-
- close
-
+
+ Details
+
+
+
+ mdi-close
+
+
@@ -31,7 +32,7 @@ export default {
methods: {
hideSheet() {
- this.$emit("input", false)
+ this.$emit("update:modelValue", false)
},
},
diff --git a/src/dispatch/static/dispatch/src/dashboard/task/TaskDialogFilter.vue b/src/dispatch/static/dispatch/src/dashboard/task/TaskDialogFilter.vue
index 83a996eb6fcb..a6ae900c0c95 100644
--- a/src/dispatch/static/dispatch/src/dashboard/task/TaskDialogFilter.vue
+++ b/src/dispatch/static/dispatch/src/dashboard/task/TaskDialogFilter.vue
@@ -1,46 +1,37 @@
-
-
- Filter
+
+
+ Filter
- Dashboard Task Filters
+ Dashboard Task Filters
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
- Apply Filters
+ Apply Filters
diff --git a/src/dispatch/static/dispatch/src/data/source/DeleteDialog.vue b/src/dispatch/static/dispatch/src/data/source/DeleteDialog.vue
index 1bc9c10e43d9..c6e38a1578ae 100644
--- a/src/dispatch/static/dispatch/src/data/source/DeleteDialog.vue
+++ b/src/dispatch/static/dispatch/src/data/source/DeleteDialog.vue
@@ -2,17 +2,15 @@
- Delete Source?
+ Delete Source?
-
- Are you sure you would like to delete this source?
-
+ Are you sure you would like to delete this source?
- Cancel
- Delete
+ Cancel
+ Delete
diff --git a/src/dispatch/static/dispatch/src/data/source/Detail.vue b/src/dispatch/static/dispatch/src/data/source/Detail.vue
index a3f13db03631..ea1444410e4f 100644
--- a/src/dispatch/static/dispatch/src/data/source/Detail.vue
+++ b/src/dispatch/static/dispatch/src/data/source/Detail.vue
@@ -1,16 +1,16 @@
-
+
{{ name }}
Status: {{ source_status.name }}
-
-
-
+
+
+
mdi-dots-vertical
@@ -25,8 +25,7 @@
-
-
+
Details
Queries
@@ -34,12 +33,12 @@
-
-
-
-
-
-
+
+
+
+
+
+
diff --git a/src/dispatch/static/dispatch/src/data/source/DetailsTab.vue b/src/dispatch/static/dispatch/src/data/source/DetailsTab.vue
index 27000c001ac2..805d13acbd47 100644
--- a/src/dispatch/static/dispatch/src/data/source/DetailsTab.vue
+++ b/src/dispatch/static/dispatch/src/data/source/DetailsTab.vue
@@ -3,30 +3,29 @@
-
+
Documentation
-
- save
+
+ mdi-content-save
-
View
Edit
-
-
-
+
+
+
-
-
-
+
+
+
- mdi-language-markdown
- Styling with markdown supported
+ mdi-language-markdown
+ Styling with markdown supported
-
-
+
+
-
-
- Basic Information
-
+
+ Basic Information
{{ description }}
-
+
Data Last Loaded At
- {{ data_last_loaded_at | formatRelativeDate }}
+ {{ formatRelativeDate(data_last_loaded_at) }}
@@ -124,8 +121,9 @@
diff --git a/src/dispatch/static/dispatch/src/incident/ExecutiveReportSheet.vue b/src/dispatch/static/dispatch/src/incident/ExecutiveReportSheet.vue
index 74993d686879..b28b02d70a5d 100644
--- a/src/dispatch/static/dispatch/src/incident/ExecutiveReportSheet.vue
+++ b/src/dispatch/static/dispatch/src/incident/ExecutiveReportSheet.vue
@@ -1,46 +1,45 @@
-
+
-
-
- New
-
-
- save
-
-
- close
-
+
+ New
+
+
+
+ mdi-content-save
+
+
+ mdi-close
+
+
Details
-
+
-
+
-
+
diff --git a/src/dispatch/static/dispatch/src/incident/IncidentReportDialog.vue b/src/dispatch/static/dispatch/src/incident/IncidentReportDialog.vue
index 2d09cc2a8938..de062c42d6b7 100644
--- a/src/dispatch/static/dispatch/src/incident/IncidentReportDialog.vue
+++ b/src/dispatch/static/dispatch/src/incident/IncidentReportDialog.vue
@@ -1,38 +1,38 @@
-
- Latest Incident Reports
+
+ Latest Incident Reports
-
- Description
+
+ Description
{{ item.description }}
-
+
- Last Tactical Report
+ Last Tactical Report
-
As of {{ item.last_tactical_report.created_at | formatRelativeDate }}
-
Conditions
+
As of {{ formatRelativeDate(item.last_tactical_report.created_at) }}
+
Conditions
{{ item.last_tactical_report.details.conditions }}
-
Actions
+
Actions
{{ item.last_tactical_report.details.actions }}
-
Needs
+
Needs
{{ item.last_tactical_report.details.needs }}
No tactical report available.
-
+
- Last Executive Report
+ Last Executive Report
-
As of {{ item.last_executive_report.created_at | formatRelativeDate }}
-
Current Status
+
As of {{ formatRelativeDate(item.last_executive_report.created_at) }}
+
Current Status
{{ item.last_executive_report.details.current_status }}
-
Overview
+
Overview
{{ item.last_executive_report.details.overview }}
-
Next Steps
+
Next Steps
{{ item.last_executive_report.details.next_steps }}
No executive report available.
@@ -42,6 +42,8 @@
diff --git a/src/dispatch/static/dispatch/src/incident/IncidentSelect.vue b/src/dispatch/static/dispatch/src/incident/IncidentSelect.vue
index 2f99e17d4b43..1bb236acf769 100644
--- a/src/dispatch/static/dispatch/src/incident/IncidentSelect.vue
+++ b/src/dispatch/static/dispatch/src/incident/IncidentSelect.vue
@@ -4,41 +4,34 @@
:label="label"
:loading="loading"
:menu-props="{ maxHeight: '400' }"
- :search-input.sync="search"
- @update:search-input="getFilteredData({ q: $event })"
- item-text="name"
+ v-model:search="search"
+ @update:search="getFilteredData({ q: $event })"
+ item-title="name"
item-value="id"
clearable
v-model="incident"
>
-
-
- No incidents matching
- "{{ search }}"
-
-
+
+ No incidents matching
+ "{{ search }}"
+
-
- {{ item.name }}
-
-
+
- {{ data.item.name }}
+ {{ data.item.raw.name }}
-
- {{ data.item.description }}
+
+ {{ data.item.raw.description }}
-
+
-
- Load More
-
+ Load More
@@ -53,7 +46,7 @@ import IncidentApi from "@/incident/api"
export default {
name: "IncidentSelect",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -81,11 +74,11 @@ export default {
computed: {
incident: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
if (typeof value !== "string") {
- this.$emit("input", value)
+ this.$emit("update:modelValue", value)
}
},
},
diff --git a/src/dispatch/static/dispatch/src/incident/IncidentSummaryTable.vue b/src/dispatch/static/dispatch/src/incident/IncidentSummaryTable.vue
index d3effe43f8b4..00bbece37fd4 100644
--- a/src/dispatch/static/dispatch/src/incident/IncidentSummaryTable.vue
+++ b/src/dispatch/static/dispatch/src/incident/IncidentSummaryTable.vue
@@ -1,50 +1,47 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- {{ item.project.name }}
-
-
-
-
-
- {{ item.reported_at | formatRelativeDate }}
-
- {{ item.reported_at | formatDate }}
-
-
-
-
-
-
- mdi-dots-vertical
-
-
-
-
- View / Edit
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+ {{ formatRelativeDate(value) }}
+
+ {{ formatDate(value) }}
+
+
+
+
+
+
+
+
+
+ View / Edit
+
+
+
+
+
diff --git a/src/dispatch/static/dispatch/src/incident/ResourcesTab.vue b/src/dispatch/static/dispatch/src/incident/ResourcesTab.vue
index b478fb9ecb6e..c560918b777f 100644
--- a/src/dispatch/static/dispatch/src/incident/ResourcesTab.vue
+++ b/src/dispatch/static/dispatch/src/incident/ResourcesTab.vue
@@ -1,64 +1,49 @@
-
- Ticket
- {{ ticket.description }}
-
-
-
- open_in_new
-
-
+ Ticket
+ {{ ticket.description }}
+
+
+ mdi-open-in-new
+
-
- Video Conference
- {{ conference.description }}
-
-
-
- open_in_new
-
-
+ Video Conference
+ {{ conference.description }}
+
+
+ mdi-open-in-new
+
-
- Conversation
- {{ conversation.description }}
-
-
-
- open_in_new
-
-
+ Conversation
+ {{ conversation.description }}
+
+
+ mdi-open-in-new
+
-
- Storage
- {{ storage.description }}
-
-
-
- open_in_new
-
-
+ Storage
+ {{ storage.description }}
+
+
+ mdi-open-in-new
+
-
- {{ document.resource_type | deslug }}
- {{ document.description }}
-
-
-
- open_in_new
-
-
+ {{ deslug(document.resource_type) }}
+ {{ document.description }}
+
+
+ mdi-open-in-new
+
@@ -72,27 +57,21 @@
"
>
-
- Recreate Missing Resources
- Initiate a retry for creating any missing or unsuccesfully created
- resource(s).
-
-
-
- refresh
-
-
+ Recreate Missing Resources
+ Initiate a retry for creating any missing or unsuccesfully created
+ resource(s).
+
+ refresh
+
-
- Creating resources...
- Initiate a retry for creating any missing or unsuccesfully created
- resource(s).
-
+ Creating resources...
+ Initiate a retry for creating any missing or unsuccesfully created
+ resource(s).
@@ -101,10 +80,15 @@
diff --git a/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityCombobox.vue b/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityCombobox.vue
index 8f79f202d603..dfc26c0e6ef5 100644
--- a/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityCombobox.vue
+++ b/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityCombobox.vue
@@ -3,48 +3,44 @@
:items="items"
:label="label"
:loading="loading"
- :search-input.sync="search"
- @update:search-input="getFilteredData()"
+ v-model:search="search"
+ @update:search="getFilteredData()"
chips
clearable
- deletable-chips
+ closable-chips
hide-selected
- item-text="id"
+ item-title="id"
multiple
no-filter
v-model="incidentPriority"
+ :menu-props="{ maxWidth: 0 }"
>
-
-
- No incident priorities matching "
- {{ search }}".
-
-
+
+ No incident priorities matching "{{ search }}".
+
-
-
- {{ item.project.name }}/ {{ item.name }}
+
+
+ {{ item.raw.project.name }}/ {{ item.raw.name }}
-
-
+
+
- {{ data.item.project.name }}/{{ data.item.name }}
+ {{ item.raw.project.name }}/{{ item.raw.name }}
-
- {{ data.item.description }}
+
+ {{ item.raw.description }}
-
+
-
- Load More
-
+ Load More
@@ -59,7 +55,7 @@ import IncidentPriorityApi from "@/incident/priority/api"
export default {
name: "IncidentPriorityComboBox",
props: {
- value: {
+ modelValue: {
type: Array,
default: function () {
return []
@@ -90,7 +86,7 @@ export default {
computed: {
incidentPriority: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
this.search = null
@@ -100,7 +96,7 @@ export default {
}
return true
})
- this.$emit("input", incidentPriorities)
+ this.$emit("update:modelValue", incidentPriorities)
},
},
},
@@ -160,11 +156,6 @@ export default {
getFilteredData: debounce(function () {
this.fetchData()
}, 500),
- remove(index) {
- const value = cloneDeep(this.value)
- value.splice(index, 1)
- this.$emit("input", value)
- },
},
created() {
diff --git a/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityMultiSelect.vue b/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityMultiSelect.vue
index 9384986aaec4..672346774251 100644
--- a/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityMultiSelect.vue
+++ b/src/dispatch/static/dispatch/src/incident/priority/IncidentPriorityMultiSelect.vue
@@ -2,7 +2,7 @@
-
-
-
- {{ data.item.name }}
- {{ data.item.description }}
-
-
-
-
+ />
diff --git a/src/dispatch/static/dispatch/src/incident/type/IncidentTypeMultiSelect.vue b/src/dispatch/static/dispatch/src/incident/type/IncidentTypeMultiSelect.vue
index ffc84f654449..c36241c00262 100644
--- a/src/dispatch/static/dispatch/src/incident/type/IncidentTypeMultiSelect.vue
+++ b/src/dispatch/static/dispatch/src/incident/type/IncidentTypeMultiSelect.vue
@@ -3,7 +3,7 @@
v-model="incident_types"
:items="items"
:menu-props="{ maxHeight: '400' }"
- item-text="name"
+ item-title="name"
label="Add Incident Types"
multiple
chips
@@ -22,7 +22,7 @@ export default {
name: "IncidentTypeMultiSelect",
props: {
- value: {
+ modelValue: {
type: Array,
default: function () {
return []
@@ -50,10 +50,10 @@ export default {
computed: {
incident_types: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
- this.$emit("input", value)
+ this.$emit("update:modelValue", value)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/incident/type/IncidentTypeSelect.vue b/src/dispatch/static/dispatch/src/incident/type/IncidentTypeSelect.vue
index 5a4bbfdbea1c..43a6b6bc7a1b 100644
--- a/src/dispatch/static/dispatch/src/incident/type/IncidentTypeSelect.vue
+++ b/src/dispatch/static/dispatch/src/incident/type/IncidentTypeSelect.vue
@@ -3,29 +3,27 @@
v-model="incident_type"
:items="items"
:menu-props="{ maxHeight: '400' }"
- item-text="name"
+ item-title="name"
:label="label"
return-object
:loading="loading"
>
-
-
+
+
- {{ data.item.project.name }}/{{ data.item.name }}
+ {{ item.raw.project.name }}/{{ item.raw.name }}
- {{ data.item.name }}
+ {{ item.raw.name }}
-
- {{ data.item.description }}
+
+ {{ item.raw.description }}
-
+
-
- Load More
-
+ Load More
@@ -41,7 +39,7 @@ export default {
name: "IncidentTypeSelect",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -71,10 +69,10 @@ export default {
computed: {
incident_type: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
- this.$emit("input", value)
+ this.$emit("update:modelValue", value)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/incident/type/NewEditSheet.vue b/src/dispatch/static/dispatch/src/incident/type/NewEditSheet.vue
index 8a662b9714cc..888d5fb4dca0 100644
--- a/src/dispatch/static/dispatch/src/incident/type/NewEditSheet.vue
+++ b/src/dispatch/static/dispatch/src/incident/type/NewEditSheet.vue
@@ -1,63 +1,59 @@
-
-
+
+
-
-
- Edit
- New
- Incident Type
-
-
- save
-
-
- close
-
+
+ Edit
+ New
+ Incident Type
+
+
+
+ mdi-content-save
+
+
+ mdi-close
+
+
-
+
-
-
-
- Details
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+ Details
+
+
+
+
+
+
+
+
-
-
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
-
+
+
-
+
diff --git a/src/dispatch/static/dispatch/src/incident_role/Table.vue b/src/dispatch/static/dispatch/src/incident_role/Table.vue
index 1ec04ebec168..ae8eec14f340 100644
--- a/src/dispatch/static/dispatch/src/incident_role/Table.vue
+++ b/src/dispatch/static/dispatch/src/incident_role/Table.vue
@@ -1,42 +1,38 @@
-
-
-
-
-
-
-
-
-
-
- Role policies defined below control the user resolution for a incident role. It uses
- incident characteristics (e.g IncidentType, IncidentPriority, etc.,) and the order of
- the policies to determine the correct user.
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+ Role policies defined below control the user resolution for a incident role. It uses
+ incident characteristics (e.g IncidentType, IncidentPriority, etc.,) and the order of the
+ policies to determine the correct user.
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/dispatch/static/dispatch/src/project/ProjectCombobox.vue b/src/dispatch/static/dispatch/src/project/ProjectCombobox.vue
index b53854751fa7..2179d8cc1022 100644
--- a/src/dispatch/static/dispatch/src/project/ProjectCombobox.vue
+++ b/src/dispatch/static/dispatch/src/project/ProjectCombobox.vue
@@ -3,44 +3,38 @@
:items="items"
:label="label"
:loading="loading"
- :search-input.sync="search"
- @update:search-input="getFilteredData()"
+ v-model:search="search"
+ @update:search="getFilteredData()"
chips
clearable
- deletable-chips
+ closable-chips
hide-selected
- item-text="name"
+ :hide-no-data="!search"
+ item-title="name"
item-value="id"
multiple
no-filter
v-model="project"
+ :menu-props="{ maxWidth: 0 }"
>
-
-
-
- No Projects matching "
- {{ search }}".
-
-
+
+
+ No Projects matching "{{ search }}".
+
-
-
-
- {{ data.item.name }}
-
- {{ data.item.description }}
-
-
-
+
+
+
+ {{ item.raw.description }}
+
+
-
- Load More
-
+ Load More
@@ -56,7 +50,7 @@ export default {
name: "ProjectComboBox",
props: {
- value: {
+ modelValue: {
type: Array,
default: function () {
return []
@@ -83,7 +77,7 @@ export default {
computed: {
project: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
this.search = null
@@ -93,7 +87,7 @@ export default {
}
return true
})
- this.$emit("input", _projects)
+ this.$emit("update:modelValue", _projects)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/project/ProjectMenuSelect.vue b/src/dispatch/static/dispatch/src/project/ProjectMenuSelect.vue
index 7fbea097d5e0..32b85b2af6ae 100644
--- a/src/dispatch/static/dispatch/src/project/ProjectMenuSelect.vue
+++ b/src/dispatch/static/dispatch/src/project/ProjectMenuSelect.vue
@@ -4,20 +4,18 @@
:items="items"
:menu-props="{ maxHeight: '400' }"
label="Project"
- item-text="name"
+ item-title="name"
return-object
hide-details
:loading="loading"
- outlined
- dense
+ density="compact"
>
-
-
- {{ data.item.name }}
-
- {{ data.item.description }}
+
+
+
+ {{ item.description }}
-
+
@@ -29,7 +27,7 @@ export default {
name: "ProjectMenuSelect",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -47,10 +45,10 @@ export default {
computed: {
project: {
get() {
- return this.value
+ return this.modelValue
},
set(value) {
- this.$emit("input", value)
+ this.$emit("update:modelValue", value)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/project/ProjectSelect.vue b/src/dispatch/static/dispatch/src/project/ProjectSelect.vue
index 58c4dae7d9d1..fb7622d7b5e4 100644
--- a/src/dispatch/static/dispatch/src/project/ProjectSelect.vue
+++ b/src/dispatch/static/dispatch/src/project/ProjectSelect.vue
@@ -4,35 +4,31 @@
:label="label"
:loading="loading"
:menu-props="{ maxHeight: '400' }"
- :search-input.sync="search"
- @update:search-input="getFilteredData({ q: $event })"
- item-text="name"
+ v-model:search="search"
+ @update:search="getFilteredData({ q: $event })"
+ item-title="name"
item-value="id"
v-model="project"
>
-
-
- No projects matching
- "{{ search }}"
-
-
+
+ No projects matching
+ "{{ search }}"
+
-
- {{ data.item.name }}
-
- {{ data.item.description }}
+
+ {{ data.item.raw.name }}
+
+ {{ data.item.raw.description }}
-
+
-
- Load More
-
+ Load More
@@ -46,7 +42,7 @@ export default {
name: "ProjectSelect",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -71,10 +67,10 @@ export default {
computed: {
project: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
- this.$emit("input", value)
+ this.$emit("update:modelValue", value)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/project/Table.vue b/src/dispatch/static/dispatch/src/project/Table.vue
index 54fbacd24d07..05af02067f58 100644
--- a/src/dispatch/static/dispatch/src/project/Table.vue
+++ b/src/dispatch/static/dispatch/src/project/Table.vue
@@ -4,33 +4,33 @@
- Projects
+ Projects
-
- New
+
+ New
-
+
-
@@ -40,9 +40,9 @@
-
-
-
+
+
+
mdi-dots-vertical
@@ -56,7 +56,7 @@
-
+
@@ -81,11 +81,11 @@ export default {
data() {
return {
headers: [
- { text: "Name", value: "name", sortable: true },
- { text: "Description", value: "description", sortable: false },
- { text: "Annual Employee Cost", value: "annual_employee_cost", sortable: false },
- { text: "Business Year Hours", value: "business_year_hours", sortable: false },
- { text: "", value: "data-table-actions", sortable: false, align: "end" },
+ { title: "Name", value: "name", sortable: true },
+ { title: "Description", value: "description", sortable: false },
+ { title: "Annual Employee Cost", value: "annual_employee_cost", sortable: false },
+ { title: "Business Year Hours", value: "business_year_hours", sortable: false },
+ { title: "", key: "data-table-actions", sortable: false, align: "end" },
],
}
},
diff --git a/src/dispatch/static/dispatch/src/router/config.js b/src/dispatch/static/dispatch/src/router/config.js
index ae897a62eecf..df77f94e7bea 100644
--- a/src/dispatch/static/dispatch/src/router/config.js
+++ b/src/dispatch/static/dispatch/src/router/config.js
@@ -26,15 +26,10 @@ if (registrationEnabled) {
}
export const publicRoute = [
- {
- path: "*",
- meta: { title: "Dispatch" },
- component: () => import("@/views/error/NotFound.vue"),
- },
{
path: "/:organization/auth/",
component: BasicLayout,
- meta: { title: "Auth", icon: "view_compact", group: "auth" },
+ meta: { title: "Auth", icon: "mdi-view-comfy-outline", group: "auth" },
children: authPages,
},
{
@@ -54,9 +49,14 @@ export const publicRoute = [
name: "PKCEImplicityCallback",
meta: { requiresAuth: true },
},
+ {
+ path: "/:pathMatch(.*)*",
+ meta: { title: "Dispatch" },
+ component: () => import("@/views/error/NotFound.vue"),
+ },
]
-// NOTE: The order in which routes are added to the list matters when evaluated. For example, /incidents/report will take precendence over /incidents/:name.
+// NOTE: The order in which routes are added to the list matters when evaluated. For example, /incidents/report will take precedence over /incidents/:name.
export const protectedRoute = [
{
path: "/",
@@ -531,7 +531,7 @@ export const protectedRoute = [
component: DefaultLayout,
meta: {
title: "Search",
- icon: "view_compact",
+ icon: "mdi-view-comfy-outline",
group: "search",
noMenu: true,
requiresAuth: true,
diff --git a/src/dispatch/static/dispatch/src/router/index.js b/src/dispatch/static/dispatch/src/router/index.js
index 4b6df51dca40..9721f118d143 100644
--- a/src/dispatch/static/dispatch/src/router/index.js
+++ b/src/dispatch/static/dispatch/src/router/index.js
@@ -1,5 +1,4 @@
-import Vue from "vue"
-import Router from "vue-router"
+import { createRouter, createWebHistory } from "vue-router"
import { publicRoute, protectedRoute } from "./config"
import store from "@/store"
@@ -10,29 +9,28 @@ import userSettings from "@/auth/userSettings"
const routes = protectedRoute.concat(publicRoute)
-Vue.use(Router)
-
-const router = new Router({
- mode: "history",
+const router = createRouter({
+ history: createWebHistory(),
linkActiveClass: "active",
- routes: routes,
+ routes,
})
const authProviderSlug =
import.meta.env.VITE_DISPATCH_AUTHENTICATION_PROVIDER_SLUG || "dispatch-auth-provider-basic"
-const originalPush = Router.prototype.push
-Router.prototype.push = function push(location, onResolve, onReject) {
- if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
- return originalPush.call(this, location).catch((err) => {
- if (Router.isNavigationFailure(err)) {
- // resolve err
- return err
- }
- // rethrow error
- return Promise.reject(err)
- })
-}
+// TODO
+// const originalPush = Router.prototype.push
+// Router.prototype.push = function push(location, onResolve, onReject) {
+// if (onResolve || onReject) return originalPush.call(this, location, onResolve, onReject)
+// return originalPush.call(this, location).catch((err) => {
+// if (Router.isNavigationFailure(err)) {
+// // resolve err
+// return err
+// }
+// // rethrow error
+// return Promise.reject(err)
+// })
+// }
// router guards
router.beforeEach((to, from, next) => {
diff --git a/src/dispatch/static/dispatch/src/search/DeleteDialog.vue b/src/dispatch/static/dispatch/src/search/DeleteDialog.vue
index 99ef02a4c14c..1c2e06dc3227 100644
--- a/src/dispatch/static/dispatch/src/search/DeleteDialog.vue
+++ b/src/dispatch/static/dispatch/src/search/DeleteDialog.vue
@@ -2,17 +2,15 @@
- Delete Search Filter?
+ Delete Search Filter?
-
- Are you sure you would like to delete this search filter?
-
+ Are you sure you would like to delete this search filter?
- Cancel
- Delete
+ Cancel
+ Delete
diff --git a/src/dispatch/static/dispatch/src/search/EditDialog.vue b/src/dispatch/static/dispatch/src/search/EditDialog.vue
index 4148b049663d..783b491e33d4 100644
--- a/src/dispatch/static/dispatch/src/search/EditDialog.vue
+++ b/src/dispatch/static/dispatch/src/search/EditDialog.vue
@@ -1,136 +1,108 @@
-
+
-
-
- Edit
- Search Filter
-
+
+ Edit
+ Search Filter
+
- save
+ mdi-content-save
-
- close
+
+ mdi-close
-
+
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
Individuals
-
-
-
-
-
-
-
+
+
+
Teams
-
-
-
- {{ team.name }}
-
-
-
+
+ {{ team.name }}
+
Services
-
-
-
- {{ service.name }}
-
-
-
+
+ {{ service.name }}
+
Notifications
-
-
-
- {{ notification.name }}
-
-
-
+
+ {{ notification.name }}
+
-
+
diff --git a/src/dispatch/static/dispatch/src/signal/NewEditDialog.vue b/src/dispatch/static/dispatch/src/signal/NewEditDialog.vue
index d3ff59f0b4b7..b690b0f8f1d5 100644
--- a/src/dispatch/static/dispatch/src/signal/NewEditDialog.vue
+++ b/src/dispatch/static/dispatch/src/signal/NewEditDialog.vue
@@ -1,30 +1,32 @@
-
-
+
+
-
-
- Edit
- New
- Signal Definition
-
-
- save
-
-
- close
-
+
+ Edit
+ New
+ Signal Definition
+
+
+
+ mdi-content-save
+
+
+ mdi-close
+
+
-
+
@@ -32,93 +34,73 @@
v-model="enabled"
label="Enabled"
hint="Determines whether this signal definition is currently active and should be used to process signals."
+ persistent-hint
/>
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
-
+
-
-
- Case Configuration
-
-
-
- help_outline
-
- The following options allow you to configure the type of case that Dispatch will
- create when it encounters this signal.
-
-
+
+
+ Case Configuration
+
+
+
+ mdi-help-circle-outline
+
+ The following options allow you to configure the type of case that Dispatch will
+ create when it encounters this signal.
+
+
+
@@ -152,6 +135,7 @@
v-model="create_case"
label="Create Case"
hint="Determines whether this signal is eligible for case creation (signals could still be associated with existing cases via SignalFilters)."
+ persistent-hint
/>
@@ -165,26 +149,22 @@
/>
-
+
-
+
-
-
-
+
-
-
- Entity Configuration
-
-
-
- help_outline
-
- The follow options allow you to control which entities should be pulled from the
- signal.
-
-
+
+
+ Entity Configuration
+
+
+
+ mdi-help-circle-outline
+
+ The follow options allow you to control which entities should be pulled from the
+ signal.
+
+
+
-
-
- Filter(s)
-
-
-
- help_outline
-
- Defines a signal filter allowing you to take either a "Snooze" or "Deduplication"
- action for any match signal matching the filter.
-
-
+
+
+ Filter(s)
+
+
+
+ mdi-help-circle-outline
+
+ Defines a signal filter allowing you to take either a "Snooze" or "Deduplication"
+ action for any match signal matching the filter.
+
+
+
-
-
- Workflow(s)
-
-
-
- help_outline
-
- Defines a workflow.
-
-
+
+
+ Workflow(s)
+
+
+
+ mdi-help-circle-outline
+
+ Defines a workflow.
+
+
+
-
+
-
+
diff --git a/src/dispatch/static/dispatch/src/tag/TagSummaryTable.vue b/src/dispatch/static/dispatch/src/tag/TagSummaryTable.vue
index af72931a025d..d6e8ceb823a4 100644
--- a/src/dispatch/static/dispatch/src/tag/TagSummaryTable.vue
+++ b/src/dispatch/static/dispatch/src/tag/TagSummaryTable.vue
@@ -1,37 +1,30 @@
-
-
-
-
-
-
-
-
- {{ item.project.name }}
-
-
-
- {{ item.tag_type.name }}
-
-
-
-
-
- mdi-dots-vertical
-
-
-
-
- View / Edit
-
-
- Delete
-
-
-
-
-
-
+
+
+
+
+
+
+
+ {{ value }}
+
+
+
+
+
+
+
+
+
+ View / Edit
+
+
+ Delete
+
+
+
+
+
diff --git a/src/dispatch/static/dispatch/src/tag_type/TagTypeSelect.vue b/src/dispatch/static/dispatch/src/tag_type/TagTypeSelect.vue
index 82a62778a988..565a8e0ffe66 100644
--- a/src/dispatch/static/dispatch/src/tag_type/TagTypeSelect.vue
+++ b/src/dispatch/static/dispatch/src/tag_type/TagTypeSelect.vue
@@ -3,26 +3,22 @@
v-model="tag_type"
:items="items"
:menu-props="{ maxHeight: '400' }"
- item-text="name"
+ item-title="name"
label="Type"
return-object
:loading="loading"
>
-
-
- {{ data.item.name }}
-
- {{ data.item.description }}
-
-
-
+
+ {{ data.item.raw.name }}
+
+ {{ data.item.raw.description }}
+
+
-
- Load More
-
+ Load More
@@ -38,7 +34,7 @@ export default {
name: "TagTypeSelect",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -62,10 +58,10 @@ export default {
computed: {
tag_type: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
- this.$emit("input", value)
+ this.$emit("update:modelValue", value)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/task/AssigneeCombobox.vue b/src/dispatch/static/dispatch/src/task/AssigneeCombobox.vue
index 9fec44d6c13b..1aba0c35b75e 100644
--- a/src/dispatch/static/dispatch/src/task/AssigneeCombobox.vue
+++ b/src/dispatch/static/dispatch/src/task/AssigneeCombobox.vue
@@ -2,11 +2,11 @@
-
-
- No individuals matching "
- {{ search }}".
-
-
+
+ No individuals matching "
+ {{ search }}".
+
@@ -36,7 +34,7 @@ import { map } from "lodash"
export default {
name: "AssigneeComboBox",
props: {
- value: {
+ modelValue: {
type: Array,
default: function () {
return []
@@ -62,7 +60,7 @@ export default {
computed: {
assignee: {
get() {
- return map(this.value, function (item) {
+ return map(this.modelValue, function (item) {
return item["individual"]
})
},
@@ -73,7 +71,7 @@ export default {
}
return item
})
- this.$emit("input", wrapped)
+ this.$emit("update:modelValue", wrapped)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/task/BulkEditSheet.vue b/src/dispatch/static/dispatch/src/task/BulkEditSheet.vue
index acdd136fb52e..5584a742f25d 100644
--- a/src/dispatch/static/dispatch/src/task/BulkEditSheet.vue
+++ b/src/dispatch/static/dispatch/src/task/BulkEditSheet.vue
@@ -1,30 +1,24 @@
-
-
+
+
-
- {{ selected.length }} selected
-
+ {{ selected.length }} selected
-
-
-
-
+
+
mdi-check
Mark Resolved
-
-
-
+
mdi-close
Mark Open
-
+
diff --git a/src/dispatch/static/dispatch/src/task/DeleteDialog.vue b/src/dispatch/static/dispatch/src/task/DeleteDialog.vue
index 0a719f0b06de..0faa00d48d11 100644
--- a/src/dispatch/static/dispatch/src/task/DeleteDialog.vue
+++ b/src/dispatch/static/dispatch/src/task/DeleteDialog.vue
@@ -2,17 +2,15 @@
- Delete Task?
+ Delete Task?
-
- Are you sure you would like to delete this task?
-
+ Are you sure you would like to delete this task?
- Cancel
- Delete
+ Cancel
+ Delete
diff --git a/src/dispatch/static/dispatch/src/task/NewEditSheet.vue b/src/dispatch/static/dispatch/src/task/NewEditSheet.vue
index b21613e24937..b67cbb63c5c9 100644
--- a/src/dispatch/static/dispatch/src/task/NewEditSheet.vue
+++ b/src/dispatch/static/dispatch/src/task/NewEditSheet.vue
@@ -1,99 +1,88 @@
-
-
+
+
-
-
- Edit
- New
- Task
-
-
- save
-
-
- close
-
+
+ Edit
+ New
+ Task
+
+
+
+ mdi-content-save
+
+
+ mdi-close
+
+
-
+
-
-
-
-
-
-
-
-
+
+
+
+
+
+
-
-
+
+
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
@@ -102,37 +91,35 @@
-
-
+
+
-
+
diff --git a/src/dispatch/static/dispatch/src/workflow/RunModal.vue b/src/dispatch/static/dispatch/src/workflow/RunModal.vue
index d0e94dd37e04..64b1c443e78e 100644
--- a/src/dispatch/static/dispatch/src/workflow/RunModal.vue
+++ b/src/dispatch/static/dispatch/src/workflow/RunModal.vue
@@ -2,22 +2,20 @@
- Run Workflow
+ Run Workflow
-
-
-
- Workflow Details
- {{ workflow.name }} - {{ workflow.resource_id }}
-
+
+
+ Workflow Details
+ {{ workflow.name }} - {{ workflow.resource_id }}
-
+
Status
@@ -37,7 +35,7 @@
- Close
+ Close
@@ -55,8 +53,8 @@
- Cancel
- Run
+ Cancel
+ Run
@@ -70,14 +68,6 @@ import WorkflowSelect from "@/workflow/WorkflowSelect.vue"
import WorkflowParametersInput from "@/workflow/WorkflowParametersInput.vue"
export default {
name: "WorkflowRunModal",
- props: {
- value: {
- type: Object,
- default: function () {
- return {}
- },
- },
- },
data() {
return {}
diff --git a/src/dispatch/static/dispatch/src/workflow/Table.vue b/src/dispatch/static/dispatch/src/workflow/Table.vue
index 1fedd774515e..163de7de2efb 100644
--- a/src/dispatch/static/dispatch/src/workflow/Table.vue
+++ b/src/dispatch/static/dispatch/src/workflow/Table.vue
@@ -4,7 +4,7 @@
-
+
Workflows extend Dispatch into existing workflow orchestration systems and can be used
nearly anything as long as they report back their status to Dispatch.
@@ -20,38 +20,35 @@
-
+
-
-
- {{ item.plugin_instance.plugin.title }}
-
-
-
+
+
-
-
-
+
+
+
mdi-dots-vertical
@@ -62,7 +59,7 @@
-
+
@@ -88,12 +85,17 @@ export default {
data() {
return {
headers: [
- { text: "Name", value: "name", sortable: true },
- { text: "Description", value: "description", sortable: false },
- { text: "Enabled", value: "enabled", sortable: true },
- { text: "ResourceId", value: "resource_id", sortable: true },
- { text: "Plugin", value: "plugin_instance", sortable: true },
- { text: "", value: "data-table-actions", sortable: false, align: "end" },
+ { title: "Name", value: "name", sortable: true },
+ { title: "Description", value: "description", sortable: false },
+ { title: "Enabled", value: "enabled", sortable: true },
+ { title: "ResourceId", value: "resource_id", sortable: true },
+ {
+ title: "Plugin",
+ key: "plugin_instance",
+ value: "plugin_instance.plugin.title",
+ sortable: true,
+ },
+ { title: "", key: "data-table-actions", sortable: false, align: "end" },
],
}
},
@@ -110,11 +112,10 @@ export default {
"table.rows.items",
"table.rows.total",
]),
- ...mapFields("route", ["query"]),
},
created() {
- this.project = [{ name: this.query.project }]
+ this.project = [{ name: this.$route.query.project }]
this.getAll()
diff --git a/src/dispatch/static/dispatch/src/workflow/TableFilterDialog.vue b/src/dispatch/static/dispatch/src/workflow/TableFilterDialog.vue
index 251ae80dcc92..3180692ac499 100644
--- a/src/dispatch/static/dispatch/src/workflow/TableFilterDialog.vue
+++ b/src/dispatch/static/dispatch/src/workflow/TableFilterDialog.vue
@@ -1,15 +1,15 @@
-
-
- Filter
+
+
+ Filter
- Column Filters
+ Column Filters
-
+
@@ -19,7 +19,6 @@ import { sum } from "lodash"
import { mapFields } from "vuex-map-fields"
export default {
name: "WorkflowTableFilterDialog",
- components: {},
data() {
return {
display: false,
diff --git a/src/dispatch/static/dispatch/src/workflow/WorkflowCombobox.vue b/src/dispatch/static/dispatch/src/workflow/WorkflowCombobox.vue
index 71a26c7e4125..f257f441461f 100644
--- a/src/dispatch/static/dispatch/src/workflow/WorkflowCombobox.vue
+++ b/src/dispatch/static/dispatch/src/workflow/WorkflowCombobox.vue
@@ -2,23 +2,18 @@
-
-
-
+
+
+
{{ item ? item.name : "Unknown" }}
@@ -27,25 +22,28 @@
-
- {{ initials(item) }}
-
-
- {{ item ? item.name : "Unknown" }}
- {{ item ? item.type : "Unknown" }}
-
-
-
+
+
+ {{ initials(item) }}
+
+
+
+ {{ item ? item.name : "Unknown" }}
+ {{ item ? item.type : "Unknown" }}
+
+
+
mdi-close-circle
-
+
-
+
mdi-text-box
-
+
+
{{ item ? item.description : "Unknown" }}
@@ -57,28 +55,26 @@
-
+
diff --git a/src/dispatch/static/dispatch/src/workflow/WorkflowParametersEntityInput.vue b/src/dispatch/static/dispatch/src/workflow/WorkflowParametersEntityInput.vue
index 4bed25a20324..49819e0e4aca 100644
--- a/src/dispatch/static/dispatch/src/workflow/WorkflowParametersEntityInput.vue
+++ b/src/dispatch/static/dispatch/src/workflow/WorkflowParametersEntityInput.vue
@@ -1,12 +1,12 @@
- Workflow Parameters
+ Workflow Parameters
-
-
-
- add
+
+
+
+ mdi-plus
Add Parameters
@@ -15,9 +15,11 @@
-
-
- remove
+
+
+
+ mdi-minus
+
Remove Item
@@ -25,16 +27,16 @@
@@ -53,7 +55,7 @@ export default {
components: { EntityTypeSelect },
props: {
- value: {
+ modelValue: {
type: Array,
default: function () {
return []
@@ -64,7 +66,7 @@ export default {
computed: {
parameters: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
},
},
@@ -72,19 +74,19 @@ export default {
methods: {
addItem() {
this.parameters.push({ key: null, value: null })
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
removeItem(idx) {
this.parameters.splice(idx, 1)
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
updateItemKey(idx, event) {
this.parameters[idx]["key"] = event
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
updateItemValue(idx, event) {
this.parameters[idx]["value"] = event["name"]
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
},
}
diff --git a/src/dispatch/static/dispatch/src/workflow/WorkflowParametersInput.vue b/src/dispatch/static/dispatch/src/workflow/WorkflowParametersInput.vue
index 3c618ab9fa4d..a25b8576b0f3 100644
--- a/src/dispatch/static/dispatch/src/workflow/WorkflowParametersInput.vue
+++ b/src/dispatch/static/dispatch/src/workflow/WorkflowParametersInput.vue
@@ -1,12 +1,12 @@
- Workflow Parameters
+ Workflow Parameters
-
-
-
- add
+
+
+
+ mdi-plus
Add Parameters
@@ -15,9 +15,11 @@
-
-
- remove
+
+
+ mdi-minus
Remove Item
@@ -25,16 +27,16 @@
@@ -49,10 +51,8 @@ import { cloneDeep } from "lodash"
export default {
name: "WorkflowParameterInput",
- components: {},
-
props: {
- value: {
+ modelValue: {
type: Array,
default: function () {
return []
@@ -63,7 +63,7 @@ export default {
computed: {
parameters: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
},
},
@@ -71,19 +71,19 @@ export default {
methods: {
addItem() {
this.parameters.push({ key: null, value: null })
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
removeItem(idx) {
this.parameters.splice(idx, 1)
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
updateItemKey(idx, event) {
this.parameters[idx]["key"] = event
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
updateItemValue(idx, event) {
this.parameters[idx]["value"] = event
- this.$emit("input", this.parameters)
+ this.$emit("update:modelValue", this.parameters)
},
},
}
diff --git a/src/dispatch/static/dispatch/src/workflow/WorkflowSelect.vue b/src/dispatch/static/dispatch/src/workflow/WorkflowSelect.vue
index debb682a6073..fab340259c3d 100644
--- a/src/dispatch/static/dispatch/src/workflow/WorkflowSelect.vue
+++ b/src/dispatch/static/dispatch/src/workflow/WorkflowSelect.vue
@@ -2,21 +2,19 @@
-
-
- {{ data.item.name }}
-
- {{ data.item.description }}
-
-
-
+
+ {{ data.item.raw.name }}
+
+ {{ data.item.raw.description }}
+
+
@@ -30,7 +28,7 @@ import WorkflowApi from "@/workflow/api"
export default {
name: "WorkflowSelect",
props: {
- value: {
+ modelValue: {
type: Object,
default: function () {
return {}
@@ -52,10 +50,10 @@ export default {
computed: {
workflow: {
get() {
- return cloneDeep(this.value)
+ return cloneDeep(this.modelValue)
},
set(value) {
- this.$emit("input", value)
+ this.$emit("update:modelValue", value)
},
},
},
diff --git a/src/dispatch/static/dispatch/src/workflow/store.js b/src/dispatch/static/dispatch/src/workflow/store.js
index dc36097f447e..3a86b46db5dc 100644
--- a/src/dispatch/static/dispatch/src/workflow/store.js
+++ b/src/dispatch/static/dispatch/src/workflow/store.js
@@ -11,7 +11,7 @@ const getDefaultSelectedState = () => {
resource_id: null,
parameters: [],
project: null,
- plugin_instance: { title: null, slug: null },
+ plugin_instance: null,
name: null,
id: null,
loading: false,
diff --git a/src/dispatch/static/dispatch/vite.config.js b/src/dispatch/static/dispatch/vite.config.js
index 4cfe9f931756..cec4a9c31111 100644
--- a/src/dispatch/static/dispatch/vite.config.js
+++ b/src/dispatch/static/dispatch/vite.config.js
@@ -1,7 +1,7 @@
import { defineConfig } from "vite"
-import vue2 from "@vitejs/plugin-vue2"
+import vue from "@vitejs/plugin-vue"
+import vuetify from "vite-plugin-vuetify"
import monacoEditorPlugin from "vite-plugin-monaco-editor"
-import { VuetifyResolver } from "unplugin-vue-components/resolvers"
import Components from "unplugin-vue-components/vite"
@@ -9,14 +9,26 @@ import path from "path"
export default defineConfig({
plugins: [
- vue2(),
+ vue(),
+ vuetify(),
monacoEditorPlugin({ languageWorkers: ["json"] }),
- Components({
- resolvers: [
- // Vuetify
- VuetifyResolver(),
- ],
- }),
+ Components(),
+ {
+ resolveId(id) {
+ if (id.includes("vee-validate")) {
+ return "virtual:vee-validate"
+ }
+ },
+ load(id) {
+ if (id.includes("vee-validate")) {
+ return `
+ let ValidationObserver, ValidationProvider, extend, localize, setInteractionMode, configure, mapFields, ErrorMessage, required, email;
+ extend = localize = setInteractionMode = configure = mapFields = required = email = () => {}
+ ValidationObserver = ValidationProvider = (_, { slots }) => slots.default({ errors: [], messages: [] })
+ export { ValidationObserver, ValidationProvider, extend, localize, setInteractionMode, configure, mapFields, ErrorMessage, required, email };`
+ }
+ },
+ },
],
server: {
port: 8080,