Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGitLab Bot <gitlab-bot@gitlab.com>2020-01-15 21:08:34 +0300
committerGitLab Bot <gitlab-bot@gitlab.com>2020-01-15 21:08:34 +0300
commit571d993b49313dd806bd3f6af16d36c26d9d28ca (patch)
tree06bd12c4b56b97881aef8a00d4d46698de1eb63f /app/assets/javascripts/error_tracking
parent9044365a91112d426fbbfba07eca595652bbe2df (diff)
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/assets/javascripts/error_tracking')
-rw-r--r--app/assets/javascripts/error_tracking/components/error_details.vue70
-rw-r--r--app/assets/javascripts/error_tracking/details.js4
-rw-r--r--app/assets/javascripts/error_tracking/services/index.js3
-rw-r--r--app/assets/javascripts/error_tracking/store/actions.js19
-rw-r--r--app/assets/javascripts/error_tracking/store/details/state.js2
-rw-r--r--app/assets/javascripts/error_tracking/store/index.js7
-rw-r--r--app/assets/javascripts/error_tracking/store/mutation_types.js2
-rw-r--r--app/assets/javascripts/error_tracking/store/mutations.js10
8 files changed, 98 insertions, 19 deletions
diff --git a/app/assets/javascripts/error_tracking/components/error_details.vue b/app/assets/javascripts/error_tracking/components/error_details.vue
index 23a1ec4e367..43e18486ae9 100644
--- a/app/assets/javascripts/error_tracking/components/error_details.vue
+++ b/app/assets/javascripts/error_tracking/components/error_details.vue
@@ -30,6 +30,14 @@ export default {
},
mixins: [timeagoMixin],
props: {
+ listPath: {
+ type: String,
+ required: true,
+ },
+ issueUpdatePath: {
+ type: String,
+ required: true,
+ },
issueId: {
type: String,
required: true,
@@ -81,7 +89,14 @@ export default {
};
},
computed: {
- ...mapState('details', ['error', 'loading', 'loadingStacktrace', 'stacktraceData']),
+ ...mapState('details', [
+ 'error',
+ 'loading',
+ 'loadingStacktrace',
+ 'stacktraceData',
+ 'updatingResolveStatus',
+ 'updatingIgnoreStatus',
+ ]),
...mapGetters('details', ['stacktrace']),
reported() {
return sprintf(
@@ -137,12 +152,15 @@ export default {
this.startPollingStacktrace(this.issueStackTracePath);
},
methods: {
- ...mapActions('details', ['startPollingDetails', 'startPollingStacktrace']),
+ ...mapActions('details', ['startPollingDetails', 'startPollingStacktrace', 'updateStatus']),
trackClickErrorLinkToSentryOptions,
createIssue() {
this.issueCreationInProgress = true;
this.$refs.sentryIssueForm.submit();
},
+ updateIssueStatus(status) {
+ this.updateStatus({ endpoint: this.issueUpdatePath, redirectUrl: this.listPath, status });
+ },
formatDate(date) {
return `${this.timeFormatted(date)} (${dateFormat(date, 'UTC:yyyy-mm-dd h:MM:ssTT Z')})`;
},
@@ -158,24 +176,42 @@ export default {
<div v-else-if="showDetails" class="error-details">
<div class="top-area align-items-center justify-content-between py-3">
<span v-if="!loadingStacktrace && stacktrace" v-html="reported"></span>
- <form ref="sentryIssueForm" :action="projectIssuesPath" method="POST">
- <gl-form-input class="hidden" name="issue[title]" :value="issueTitle" />
- <input name="issue[description]" :value="issueDescription" type="hidden" />
- <gl-form-input
- :value="GQLerror.id"
- class="hidden"
- name="issue[sentry_issue_attributes][sentry_issue_identifier]"
+ <div class="d-inline-flex">
+ <loading-button
+ :label="__('Ignore')"
+ :loading="updatingIgnoreStatus"
+ @click="updateIssueStatus('ignored')"
/>
- <gl-form-input :value="csrfToken" class="hidden" name="authenticity_token" />
<loading-button
- v-if="!error.gitlab_issue"
- class="btn-success"
- :label="__('Create issue')"
- :loading="issueCreationInProgress"
- data-qa-selector="create_issue_button"
- @click="createIssue"
+ class="btn-outline-info ml-2"
+ :label="__('Resolve')"
+ :loading="updatingResolveStatus"
+ @click="updateIssueStatus('resolved')"
/>
- </form>
+ <form
+ ref="sentryIssueForm"
+ :action="projectIssuesPath"
+ method="POST"
+ class="d-inline-block ml-2"
+ >
+ <gl-form-input class="hidden" name="issue[title]" :value="issueTitle" />
+ <input name="issue[description]" :value="issueDescription" type="hidden" />
+ <gl-form-input
+ :value="GQLerror.id"
+ class="hidden"
+ name="issue[sentry_issue_attributes][sentry_issue_identifier]"
+ />
+ <gl-form-input :value="csrfToken" class="hidden" name="authenticity_token" />
+ <loading-button
+ v-if="!error.gitlab_issue"
+ class="btn-success"
+ :label="__('Create issue')"
+ :loading="issueCreationInProgress"
+ data-qa-selector="create_issue_button"
+ @click="createIssue"
+ />
+ </form>
+ </div>
</div>
<div>
<tooltip-on-truncate :title="GQLerror.title" truncate-target="child" placement="top">
diff --git a/app/assets/javascripts/error_tracking/details.js b/app/assets/javascripts/error_tracking/details.js
index b9761cdf2c1..c18298dec4f 100644
--- a/app/assets/javascripts/error_tracking/details.js
+++ b/app/assets/javascripts/error_tracking/details.js
@@ -25,6 +25,8 @@ export default () => {
const {
issueId,
projectPath,
+ listPath,
+ issueUpdatePath,
issueDetailsPath,
issueStackTracePath,
projectIssuesPath,
@@ -34,6 +36,8 @@ export default () => {
props: {
issueId,
projectPath,
+ listPath,
+ issueUpdatePath,
issueDetailsPath,
issueStackTracePath,
projectIssuesPath,
diff --git a/app/assets/javascripts/error_tracking/services/index.js b/app/assets/javascripts/error_tracking/services/index.js
index 3b3f8311d67..3fb317c17f5 100644
--- a/app/assets/javascripts/error_tracking/services/index.js
+++ b/app/assets/javascripts/error_tracking/services/index.js
@@ -4,4 +4,7 @@ export default {
getSentryData({ endpoint, params }) {
return axios.get(endpoint, { params });
},
+ updateErrorStatus(endpoint, status) {
+ return axios.put(endpoint, { status });
+ },
};
diff --git a/app/assets/javascripts/error_tracking/store/actions.js b/app/assets/javascripts/error_tracking/store/actions.js
new file mode 100644
index 00000000000..bb8b039b5df
--- /dev/null
+++ b/app/assets/javascripts/error_tracking/store/actions.js
@@ -0,0 +1,19 @@
+import service from './../services';
+import * as types from './mutation_types';
+import createFlash from '~/flash';
+import { visitUrl } from '~/lib/utils/url_utility';
+import { __ } from '~/locale';
+
+export function updateStatus({ commit }, { endpoint, redirectUrl, status }) {
+ const type =
+ status === 'resolved' ? types.SET_UPDATING_RESOLVE_STATUS : types.SET_UPDATING_IGNORE_STATUS;
+ commit(type, true);
+
+ return service
+ .updateErrorStatus(endpoint, status)
+ .then(() => visitUrl(redirectUrl))
+ .catch(() => createFlash(__('Failed to update issue status')))
+ .finally(() => commit(type, false));
+}
+
+export default () => {};
diff --git a/app/assets/javascripts/error_tracking/store/details/state.js b/app/assets/javascripts/error_tracking/store/details/state.js
index 95fb0ba0558..52b0297607d 100644
--- a/app/assets/javascripts/error_tracking/store/details/state.js
+++ b/app/assets/javascripts/error_tracking/store/details/state.js
@@ -3,4 +3,6 @@ export default () => ({
stacktraceData: {},
loading: true,
loadingStacktrace: true,
+ updatingResolveStatus: false,
+ updatingIgnoreStatus: false,
});
diff --git a/app/assets/javascripts/error_tracking/store/index.js b/app/assets/javascripts/error_tracking/store/index.js
index ad05eecef6c..75aa78d9c07 100644
--- a/app/assets/javascripts/error_tracking/store/index.js
+++ b/app/assets/javascripts/error_tracking/store/index.js
@@ -1,6 +1,9 @@
import Vue from 'vue';
import Vuex from 'vuex';
+import * as actions from './actions';
+import mutations from './mutations';
+
import * as listActions from './list/actions';
import listMutations from './list/mutations';
import listState from './list/state';
@@ -24,8 +27,8 @@ export const createStore = () =>
details: {
namespaced: true,
state: detailsState(),
- actions: detailsActions,
- mutations: detailsMutations,
+ actions: { ...actions, ...detailsActions },
+ mutations: { ...mutations, ...detailsMutations },
getters: detailsGetters,
},
},
diff --git a/app/assets/javascripts/error_tracking/store/mutation_types.js b/app/assets/javascripts/error_tracking/store/mutation_types.js
new file mode 100644
index 00000000000..30aebacbedd
--- /dev/null
+++ b/app/assets/javascripts/error_tracking/store/mutation_types.js
@@ -0,0 +1,2 @@
+export const SET_UPDATING_RESOLVE_STATUS = 'SET_UPDATING_RESOLVE_STATUS';
+export const SET_UPDATING_IGNORE_STATUS = 'SET_UPDATING_IGNORE_STATUS';
diff --git a/app/assets/javascripts/error_tracking/store/mutations.js b/app/assets/javascripts/error_tracking/store/mutations.js
new file mode 100644
index 00000000000..c7a7e46df40
--- /dev/null
+++ b/app/assets/javascripts/error_tracking/store/mutations.js
@@ -0,0 +1,10 @@
+import * as types from './mutation_types';
+
+export default {
+ [types.SET_UPDATING_IGNORE_STATUS](state, updating) {
+ state.updatingIgnoreStatus = updating;
+ },
+ [types.SET_UPDATING_RESOLVE_STATUS](state, updating) {
+ state.updatingResolveStatus = updating;
+ },
+};