diff options
Diffstat (limited to 'app/assets/javascripts/ci_variable_list/store')
6 files changed, 56 insertions, 0 deletions
diff --git a/app/assets/javascripts/ci_variable_list/store/actions.js b/app/assets/javascripts/ci_variable_list/store/actions.js index f3a629b84ee..a22fa03e16d 100644 --- a/app/assets/javascripts/ci_variable_list/store/actions.js +++ b/app/assets/javascripts/ci_variable_list/store/actions.js @@ -153,3 +153,22 @@ export const fetchEnvironments = ({ dispatch, state }) => { createFlash(__('There was an error fetching the environments information.')); }); }; + +export const setEnvironmentScope = ({ commit, dispatch }, environment) => { + commit(types.SET_ENVIRONMENT_SCOPE, environment); + dispatch('setSelectedEnvironment', environment); +}; + +export const addWildCardScope = ({ commit, dispatch }, environment) => { + commit(types.ADD_WILD_CARD_SCOPE, environment); + commit(types.SET_ENVIRONMENT_SCOPE, environment); + dispatch('setSelectedEnvironment', environment); +}; + +export const resetSelectedEnvironment = ({ commit }) => { + commit(types.RESET_SELECTED_ENVIRONMENT); +}; + +export const setSelectedEnvironment = ({ commit }, environment) => { + commit(types.SET_SELECTED_ENVIRONMENT, environment); +}; diff --git a/app/assets/javascripts/ci_variable_list/store/getters.js b/app/assets/javascripts/ci_variable_list/store/getters.js new file mode 100644 index 00000000000..14b728302f9 --- /dev/null +++ b/app/assets/javascripts/ci_variable_list/store/getters.js @@ -0,0 +1,9 @@ +/* eslint-disable import/prefer-default-export */ +// Disabling import/prefer-default-export can be +// removed once a second getter is added to this file +import { uniq } from 'lodash'; + +export const joinedEnvironments = state => { + const scopesFromVariables = (state.variables || []).map(variable => variable.environment_scope); + return uniq(state.environments.concat(scopesFromVariables)).sort(); +}; diff --git a/app/assets/javascripts/ci_variable_list/store/index.js b/app/assets/javascripts/ci_variable_list/store/index.js index db4ba95b3c2..83802f6a36f 100644 --- a/app/assets/javascripts/ci_variable_list/store/index.js +++ b/app/assets/javascripts/ci_variable_list/store/index.js @@ -1,6 +1,7 @@ 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'; @@ -10,6 +11,7 @@ export default (initialState = {}) => new Vuex.Store({ actions, mutations, + getters, state: { ...state(), ...initialState, diff --git a/app/assets/javascripts/ci_variable_list/store/mutation_types.js b/app/assets/javascripts/ci_variable_list/store/mutation_types.js index 240066d0f22..0b41c20bce7 100644 --- a/app/assets/javascripts/ci_variable_list/store/mutation_types.js +++ b/app/assets/javascripts/ci_variable_list/store/mutation_types.js @@ -20,3 +20,7 @@ export const RECEIVE_UPDATE_VARIABLE_ERROR = 'RECEIVE_UPDATE_VARIABLE_ERROR'; export const REQUEST_ENVIRONMENTS = 'REQUEST_ENVIRONMENTS'; export const RECEIVE_ENVIRONMENTS_SUCCESS = 'RECEIVE_ENVIRONMENTS_SUCCESS'; +export const SET_ENVIRONMENT_SCOPE = 'SET_ENVIRONMENT_SCOPE'; +export const ADD_WILD_CARD_SCOPE = 'ADD_WILD_CARD_SCOPE'; +export const RESET_SELECTED_ENVIRONMENT = 'RESET_SELECTED_ENVIRONMENT'; +export const SET_SELECTED_ENVIRONMENT = 'SET_SELECTED_ENVIRONMENT'; diff --git a/app/assets/javascripts/ci_variable_list/store/mutations.js b/app/assets/javascripts/ci_variable_list/store/mutations.js index c75eb4a91fd..7ee7d7bdc26 100644 --- a/app/assets/javascripts/ci_variable_list/store/mutations.js +++ b/app/assets/javascripts/ci_variable_list/store/mutations.js @@ -83,4 +83,25 @@ export default { state.variableBeingEdited = null; state.showInputValue = false; }, + + [types.SET_ENVIRONMENT_SCOPE](state, environment) { + if (state.variableBeingEdited) { + state.variableBeingEdited.environment_scope = environment; + } else { + state.variable.environment_scope = environment; + } + }, + + [types.ADD_WILD_CARD_SCOPE](state, environment) { + state.environments.push(environment); + state.environments.sort(); + }, + + [types.RESET_SELECTED_ENVIRONMENT](state) { + state.selectedEnvironment = ''; + }, + + [types.SET_SELECTED_ENVIRONMENT](state, environment) { + state.selectedEnvironment = environment; + }, }; diff --git a/app/assets/javascripts/ci_variable_list/store/state.js b/app/assets/javascripts/ci_variable_list/store/state.js index 5166321d6a7..8c0b9c6966f 100644 --- a/app/assets/javascripts/ci_variable_list/store/state.js +++ b/app/assets/javascripts/ci_variable_list/store/state.js @@ -21,4 +21,5 @@ export default () => ({ environments: [], typeOptions: [displayText.variableText, displayText.fileText], variableBeingEdited: null, + selectedEnvironment: '', }); |