summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/issue_show
diff options
context:
space:
mode:
Diffstat (limited to 'app/assets/javascripts/issue_show')
-rw-r--r--app/assets/javascripts/issue_show/components/app.vue18
-rw-r--r--app/assets/javascripts/issue_show/components/fields/description.vue10
-rw-r--r--app/assets/javascripts/issue_show/components/fields/description_template.vue2
-rw-r--r--app/assets/javascripts/issue_show/components/incidents/incident_tabs.vue12
-rw-r--r--app/assets/javascripts/issue_show/incident.js17
-rw-r--r--app/assets/javascripts/issue_show/issue.js2
-rw-r--r--app/assets/javascripts/issue_show/utils/parse_data.js2
7 files changed, 41 insertions, 22 deletions
diff --git a/app/assets/javascripts/issue_show/components/app.vue b/app/assets/javascripts/issue_show/components/app.vue
index 61e5db0970a..d569ad573a2 100644
--- a/app/assets/javascripts/issue_show/components/app.vue
+++ b/app/assets/javascripts/issue_show/components/app.vue
@@ -250,7 +250,7 @@ export default {
this.poll = new Poll({
resource: this.service,
method: 'getData',
- successCallback: res => this.store.updateState(res.data),
+ successCallback: (res) => this.store.updateState(res.data),
errorCallback(err) {
throw new Error(err);
},
@@ -294,8 +294,8 @@ export default {
updateStoreState() {
return this.service
.getData()
- .then(res => res.data)
- .then(data => {
+ .then((res) => res.data)
+ .then((data) => {
this.store.updateState(data);
})
.catch(() => {
@@ -320,7 +320,7 @@ export default {
requestTemplatesAndShowForm() {
return this.service
.loadTemplates(this.issuableTemplateNamesPath)
- .then(res => {
+ .then((res) => {
this.updateAndShowForm(res.data);
})
.catch(() => {
@@ -345,9 +345,9 @@ export default {
updateIssuable() {
return this.service
.updateIssuable(this.store.formState)
- .then(res => res.data)
- .then(data => this.checkForSpam(data))
- .then(data => {
+ .then((res) => res.data)
+ .then((data) => this.checkForSpam(data))
+ .then((data) => {
if (!window.location.pathname.includes(data.web_url)) {
visitUrl(data.web_url);
}
@@ -384,8 +384,8 @@ export default {
deleteIssuable(payload) {
return this.service
.deleteIssuable(payload)
- .then(res => res.data)
- .then(data => {
+ .then((res) => res.data)
+ .then((data) => {
// Stop the poll so we don't get 404's with the issuable not existing
this.poll.stop();
diff --git a/app/assets/javascripts/issue_show/components/fields/description.vue b/app/assets/javascripts/issue_show/components/fields/description.vue
index 0de0060615b..8d417e32d62 100644
--- a/app/assets/javascripts/issue_show/components/fields/description.vue
+++ b/app/assets/javascripts/issue_show/components/fields/description.vue
@@ -1,12 +1,13 @@
<script>
import updateMixin from '../../mixins/update';
-import markdownField from '../../../vue_shared/components/markdown/field.vue';
+import markdownField from '~/vue_shared/components/markdown/field.vue';
+import glFeatureFlagsMixin from '~/vue_shared/mixins/gl_feature_flags_mixin';
export default {
components: {
markdownField,
},
- mixins: [updateMixin],
+ mixins: [glFeatureFlagsMixin(), updateMixin],
props: {
formState: {
type: Object,
@@ -52,10 +53,9 @@ export default {
id="issue-description"
ref="textarea"
v-model="formState.description"
- class="note-textarea js-gfm-input js-autosize markdown-area
- qa-description-textarea"
+ class="note-textarea js-gfm-input js-autosize markdown-area qa-description-textarea"
dir="auto"
- data-supports-quick-actions="true"
+ :data-supports-quick-actions="!glFeatures.tributeAutocomplete"
:aria-label="__('Description')"
:placeholder="__('Write a comment or drag your files hereā€¦')"
@keydown.meta.enter="updateIssuable"
diff --git a/app/assets/javascripts/issue_show/components/fields/description_template.vue b/app/assets/javascripts/issue_show/components/fields/description_template.vue
index ea6e03404e7..71299381aae 100644
--- a/app/assets/javascripts/issue_show/components/fields/description_template.vue
+++ b/app/assets/javascripts/issue_show/components/fields/description_template.vue
@@ -34,7 +34,7 @@ export default {
mounted() {
// Create the editor for the template
const editor = document.querySelector('.detail-page-description .note-textarea') || {};
- editor.setValue = val => {
+ editor.setValue = (val) => {
this.formState.description = val;
};
editor.getValue = () => this.formState.description;
diff --git a/app/assets/javascripts/issue_show/components/incidents/incident_tabs.vue b/app/assets/javascripts/issue_show/components/incidents/incident_tabs.vue
index c593fa33973..f9f06c3ad5a 100644
--- a/app/assets/javascripts/issue_show/components/incidents/incident_tabs.vue
+++ b/app/assets/javascripts/issue_show/components/incidents/incident_tabs.vue
@@ -6,7 +6,6 @@ import createFlash from '~/flash';
import { s__ } from '~/locale';
import AlertDetailsTable from '~/vue_shared/components/alert_details_table.vue';
import Tracking from '~/tracking';
-
import getAlert from './graphql/queries/get_alert.graphql';
import { trackIncidentDetailsViewsOptions } from '~/incidents/constants';
@@ -17,8 +16,9 @@ export default {
GlTab,
GlTabs,
HighlightBar,
+ MetricsTab: () => import('ee_component/issue_show/components/incidents/metrics_tab.vue'),
},
- inject: ['fullPath', 'iid'],
+ inject: ['fullPath', 'iid', 'uploadMetricsFeatureAvailable'],
apollo: {
alert: {
query: getAlert,
@@ -67,7 +67,13 @@ export default {
<highlight-bar :alert="alert" />
<description-component v-bind="$attrs" />
</gl-tab>
- <gl-tab v-if="alert" class="alert-management-details" :title="s__('Incident|Alert details')">
+ <metrics-tab v-if="uploadMetricsFeatureAvailable" data-testid="metrics-tab" />
+ <gl-tab
+ v-if="alert"
+ class="alert-management-details"
+ :title="s__('Incident|Alert details')"
+ data-testid="alert-details-tab"
+ >
<alert-details-table :alert="alert" :loading="loading" />
</gl-tab>
</gl-tabs>
diff --git a/app/assets/javascripts/issue_show/incident.js b/app/assets/javascripts/issue_show/incident.js
index 618fb551f28..ccac38811b5 100644
--- a/app/assets/javascripts/issue_show/incident.js
+++ b/app/assets/javascripts/issue_show/incident.js
@@ -12,7 +12,17 @@ export default function initIssuableApp(issuableData = {}) {
defaultClient: createDefaultClient(),
});
- const { iid, projectNamespace, projectPath, slaFeatureAvailable } = issuableData;
+ const {
+ canUpdate,
+ iid,
+ projectNamespace,
+ projectPath,
+ projectId,
+ slaFeatureAvailable,
+ uploadMetricsFeatureAvailable,
+ } = issuableData;
+
+ const fullPath = `${projectNamespace}/${projectPath}`;
return new Vue({
el: document.getElementById('js-issuable-app'),
@@ -21,9 +31,12 @@ export default function initIssuableApp(issuableData = {}) {
issuableApp,
},
provide: {
- fullPath: `${projectNamespace}/${projectPath}`,
+ canUpdate,
+ fullPath,
iid,
+ projectId,
slaFeatureAvailable: parseBoolean(slaFeatureAvailable),
+ uploadMetricsFeatureAvailable: parseBoolean(uploadMetricsFeatureAvailable),
},
render(createElement) {
return createElement('issuable-app', {
diff --git a/app/assets/javascripts/issue_show/issue.js b/app/assets/javascripts/issue_show/issue.js
index 8260460828b..83fd1355f26 100644
--- a/app/assets/javascripts/issue_show/issue.js
+++ b/app/assets/javascripts/issue_show/issue.js
@@ -57,6 +57,6 @@ export function initIssueHeaderActions(store) {
reportAbusePath: el.dataset.reportAbusePath,
submitAsSpamPath: el.dataset.submitAsSpamPath,
},
- render: createElement => createElement(HeaderActions),
+ render: (createElement) => createElement(HeaderActions),
});
}
diff --git a/app/assets/javascripts/issue_show/utils/parse_data.js b/app/assets/javascripts/issue_show/utils/parse_data.js
index 12f38005366..d5e7d2a8807 100644
--- a/app/assets/javascripts/issue_show/utils/parse_data.js
+++ b/app/assets/javascripts/issue_show/utils/parse_data.js
@@ -4,7 +4,7 @@ import { sanitize } from '~/lib/dompurify';
// We currently load + parse the data from the issue app and related merge request
let cachedParsedData;
-export const parseIssuableData = el => {
+export const parseIssuableData = (el) => {
try {
if (cachedParsedData) return cachedParsedData;