From b16a070193978296be52957cb326c61d6238b670 Mon Sep 17 00:00:00 2001
From: Justin Ho
Date: Wed, 17 Jun 2020 21:19:09 +0700
Subject: [PATCH 1/6] Add Vuex state to integration form
Add state for override and overrideAvailable to disable all
form fields
---
.../javascripts/integrations/edit/index.js | 2 ++
.../integrations/edit/store/actions.js | 6 ++++++
.../integrations/edit/store/getters.js | 2 ++
.../integrations/edit/store/index.js | 17 +++++++++++++++++
.../integrations/edit/store/mutation_types.js | 2 ++
.../integrations/edit/store/mutations.js | 11 +++++++++++
.../integrations/edit/store/state.js | 4 ++++
7 files changed, 44 insertions(+)
create mode 100644 app/assets/javascripts/integrations/edit/store/actions.js
create mode 100644 app/assets/javascripts/integrations/edit/store/getters.js
create mode 100644 app/assets/javascripts/integrations/edit/store/index.js
create mode 100644 app/assets/javascripts/integrations/edit/store/mutation_types.js
create mode 100644 app/assets/javascripts/integrations/edit/store/mutations.js
create mode 100644 app/assets/javascripts/integrations/edit/store/state.js
diff --git a/app/assets/javascripts/integrations/edit/index.js b/app/assets/javascripts/integrations/edit/index.js
index d35f11e43b3965..eda0efb558751a 100644
--- a/app/assets/javascripts/integrations/edit/index.js
+++ b/app/assets/javascripts/integrations/edit/index.js
@@ -1,4 +1,5 @@
import Vue from 'vue';
+import { createStore } from './store';
import { parseBoolean } from '~/lib/utils/common_utils';
import IntegrationForm from './components/integration_form.vue';
@@ -37,6 +38,7 @@ export default el => {
return new Vue({
el,
+ store: createStore(),
render(createElement) {
return createElement(IntegrationForm, {
props: {
diff --git a/app/assets/javascripts/integrations/edit/store/actions.js b/app/assets/javascripts/integrations/edit/store/actions.js
new file mode 100644
index 00000000000000..0ba69515e0ece9
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/store/actions.js
@@ -0,0 +1,6 @@
+import * as types from './mutation_types';
+
+export const setOverride = ({ commit }, override) => commit(types.SET_OVERRIDE, override);
+
+export const setOverrideAvailable = ({ commit }, overrideAvailable) =>
+ commit(types.SET_OVERRIDE_AVAILABLE, overrideAvailable);
diff --git a/app/assets/javascripts/integrations/edit/store/getters.js b/app/assets/javascripts/integrations/edit/store/getters.js
new file mode 100644
index 00000000000000..072d219e52813d
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/store/getters.js
@@ -0,0 +1,2 @@
+// eslint-disable-next-line import/prefer-default-export
+export const disableForm = state => state.overrideAvailable && !state.override;
diff --git a/app/assets/javascripts/integrations/edit/store/index.js b/app/assets/javascripts/integrations/edit/store/index.js
new file mode 100644
index 00000000000000..b570f2495f6099
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/store/index.js
@@ -0,0 +1,17 @@
+import Vue from 'vue';
+import Vuex from 'vuex';
+import * as actions from './actions';
+import * as getters from './getters';
+import mutations from './mutations';
+import state from './state';
+
+Vue.use(Vuex);
+
+export const createStore = () =>
+ new Vuex.Store({
+ actions,
+ getters,
+ mutations,
+ state,
+ });
+export default createStore();
diff --git a/app/assets/javascripts/integrations/edit/store/mutation_types.js b/app/assets/javascripts/integrations/edit/store/mutation_types.js
new file mode 100644
index 00000000000000..bb880a394893de
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/store/mutation_types.js
@@ -0,0 +1,2 @@
+export const SET_OVERRIDE = 'SET_OVERRIDE';
+export const SET_OVERRIDE_AVAILABLE = 'SET_OVERRIDE_AVAILABLE';
diff --git a/app/assets/javascripts/integrations/edit/store/mutations.js b/app/assets/javascripts/integrations/edit/store/mutations.js
new file mode 100644
index 00000000000000..fa71c60d37ef11
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/store/mutations.js
@@ -0,0 +1,11 @@
+import * as types from './mutation_types';
+
+export default {
+ [types.SET_OVERRIDE](state, override) {
+ state.override = override;
+ },
+
+ [types.SET_OVERRIDE_AVAILABLE](state, overrideAvailable) {
+ state.overrideAvailable = overrideAvailable;
+ },
+};
diff --git a/app/assets/javascripts/integrations/edit/store/state.js b/app/assets/javascripts/integrations/edit/store/state.js
new file mode 100644
index 00000000000000..0c92cd9f4498af
--- /dev/null
+++ b/app/assets/javascripts/integrations/edit/store/state.js
@@ -0,0 +1,4 @@
+export default () => ({
+ override: false,
+ overrideAvailable: true, // TODO: Should default to false and be passed from the backend
+});
--
GitLab
From 28d65da6f2698621f6a138ad773700c4340cafaa Mon Sep 17 00:00:00 2001
From: Justin Ho
Date: Wed, 17 Jun 2020 21:21:07 +0700
Subject: [PATCH 2/6] Add OverrideDropdown to toggle state
---
.../edit/components/integration_form.vue | 6 ++
.../edit/components/override_dropdown.vue | 56 +++++++++++++++++++
2 files changed, 62 insertions(+)
create mode 100644 app/assets/javascripts/integrations/edit/components/override_dropdown.vue
diff --git a/app/assets/javascripts/integrations/edit/components/integration_form.vue b/app/assets/javascripts/integrations/edit/components/integration_form.vue
index 12e2ce88b3cef0..88aedc421749e9 100644
--- a/app/assets/javascripts/integrations/edit/components/integration_form.vue
+++ b/app/assets/javascripts/integrations/edit/components/integration_form.vue
@@ -1,5 +1,8 @@
+
+
+
+ {{ __('This integration has multiple settings available.') }}
+
+
+ {{ option.text }}
+
+
+
+
--
GitLab
From a33369530ab2b6d488fb433a988219faadba7303 Mon Sep 17 00:00:00 2001
From: Justin Ho
Date: Wed, 17 Jun 2020 21:24:18 +0700
Subject: [PATCH 3/6] Disable form fields when not overriding
Apply to all form components
---
.../edit/components/active_toggle.vue | 5 +++++
.../edit/components/dynamic_field.vue | 3 +++
.../edit/components/jira_trigger_fields.vue | 21 ++++++++++++++++---
.../edit/components/trigger_fields.vue | 9 +++++++-
4 files changed, 34 insertions(+), 4 deletions(-)
diff --git a/app/assets/javascripts/integrations/edit/components/active_toggle.vue b/app/assets/javascripts/integrations/edit/components/active_toggle.vue
index dc89e139320917..ffb5f7cf2e7516 100644
--- a/app/assets/javascripts/integrations/edit/components/active_toggle.vue
+++ b/app/assets/javascripts/integrations/edit/components/active_toggle.vue
@@ -1,4 +1,5 @@
diff --git a/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
index 71ce9fe104ada5..5444cd5a7121bd 100644
--- a/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
+++ b/app/assets/javascripts/integrations/edit/components/jira_issues_fields.vue
@@ -89,8 +89,8 @@ export default {
}}
-
-
+
+
{{ s__('JiraService|Enable Jira issues') }}
{{
diff --git a/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue b/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue
index 193afa29d6a014..1d3354c66515b5 100644
--- a/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue
+++ b/app/assets/javascripts/integrations/edit/components/jira_trigger_fields.vue
@@ -56,7 +56,7 @@ export default {
};
},
computed: {
- ...mapGetters(['disableForm']),
+ ...mapGetters(['isInheriting']),
showEnableComments() {
return this.triggerCommit || this.triggerMergeRequest;
},
@@ -75,21 +75,17 @@ export default {
)
"
>
-
-
+
+
{{ __('Commit') }}
-
-
+ type="hidden"
+ :value="triggerMergeRequest || false"
+ />
+
{{ __('Merge request') }}
@@ -99,12 +95,12 @@ export default {
:label="s__('Integrations|Comment settings:')"
data-testid="comment-settings"
>
-
-
+ type="hidden"
+ :value="enableComments || false"
+ />
+
{{ s__('Integrations|Enable comments') }}
@@ -114,13 +110,18 @@ export default {
:label="s__('Integrations|Comment detail:')"
data-testid="comment-detail"
>
+
{{ commentDetailOption.label }}
@@ -141,13 +142,17 @@ export default {
}}
-
-
+
+
{{ __('Commit') }}
-
-
+
+
{{ __('Merge request') }}
@@ -159,8 +164,12 @@ export default {
-
-
+
+
{{ s__('Integrations|Enable comments') }}
@@ -168,12 +177,18 @@ export default {
+
{{ commentDetailOption.label }}
diff --git a/app/assets/javascripts/integrations/edit/components/override_dropdown.vue b/app/assets/javascripts/integrations/edit/components/override_dropdown.vue
index 4922640420a4b0..0ae2f26743458a 100644
--- a/app/assets/javascripts/integrations/edit/components/override_dropdown.vue
+++ b/app/assets/javascripts/integrations/edit/components/override_dropdown.vue
@@ -1,42 +1,44 @@