summaryrefslogtreecommitdiff
path: root/app/assets/javascripts
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2017-02-09 11:18:21 +0000
committerFilipa Lacerda <filipa@gitlab.com>2017-02-09 11:18:21 +0000
commit6077dea7b1f6fb857f786d86cd7cf9e5204ec9a9 (patch)
tree0cc84619357997fe390d2117acc513ffd7f9ab1e /app/assets/javascripts
parentacb68ae69e382a7bd949386f14d2d27f6cada086 (diff)
downloadgitlab-ce-6077dea7b1f6fb857f786d86cd7cf9e5204ec9a9.tar.gz
Remove store from global namespace, use CSJ instead
Diffstat (limited to 'app/assets/javascripts')
-rw-r--r--app/assets/javascripts/environments/components/environment.js.es612
-rw-r--r--app/assets/javascripts/environments/environments_bundle.js.es67
-rw-r--r--app/assets/javascripts/environments/stores/environments_store.js.es6120
-rw-r--r--app/assets/javascripts/vue_shared/vue_resource_interceptor.js.es62
4 files changed, 65 insertions, 76 deletions
diff --git a/app/assets/javascripts/environments/components/environment.js.es6 b/app/assets/javascripts/environments/components/environment.js.es6
index 073fbdffe21..f07b650ca9f 100644
--- a/app/assets/javascripts/environments/components/environment.js.es6
+++ b/app/assets/javascripts/environments/components/environment.js.es6
@@ -7,18 +7,12 @@ window.Vue = require('vue');
window.Vue.use(require('vue-resource'));
require('../services/environments_service');
require('./environment_item');
+const Store = require('../stores/environments_store');
(() => {
window.gl = window.gl || {};
gl.environmentsList.EnvironmentsComponent = Vue.component('environment-component', {
- props: {
- store: {
- type: Object,
- required: true,
- default: () => ({}),
- },
- },
components: {
'environment-item': gl.environmentsList.EnvironmentItem,
@@ -26,9 +20,11 @@ require('./environment_item');
data() {
const environmentsData = document.querySelector('#environments-list-view').dataset;
+ const store = new Store();
return {
- state: this.store.state,
+ store,
+ state: store.state,
visibility: 'available',
isLoading: false,
cssContainerClass: environmentsData.cssClass,
diff --git a/app/assets/javascripts/environments/environments_bundle.js.es6 b/app/assets/javascripts/environments/environments_bundle.js.es6
index 05c59d92fd4..912f50aeec1 100644
--- a/app/assets/javascripts/environments/environments_bundle.js.es6
+++ b/app/assets/javascripts/environments/environments_bundle.js.es6
@@ -1,5 +1,4 @@
window.Vue = require('vue');
-require('./stores/environments_store');
require('./components/environment');
require('../vue_shared/vue_resource_interceptor');
@@ -9,14 +8,8 @@ $(() => {
if (gl.EnvironmentsListApp) {
gl.EnvironmentsListApp.$destroy(true);
}
- const Store = gl.environmentsList.EnvironmentsStore;
gl.EnvironmentsListApp = new gl.environmentsList.EnvironmentsComponent({
el: document.querySelector('#environments-list-view'),
-
- propsData: {
- store: Store.create(),
- },
-
});
});
diff --git a/app/assets/javascripts/environments/stores/environments_store.js.es6 b/app/assets/javascripts/environments/stores/environments_store.js.es6
index c05f353647c..52bd6b94551 100644
--- a/app/assets/javascripts/environments/stores/environments_store.js.es6
+++ b/app/assets/javascripts/environments/stores/environments_store.js.es6
@@ -1,68 +1,68 @@
-/* eslint-disable no-param-reassign */
-(() => {
- window.gl = window.gl || {};
- window.gl.environmentsList = window.gl.environmentsList || {};
+/**
+ * Environments Store.
+ *
+ * Stores received environments, count of stopped environments and count of
+ * available environments.
+ */
+class EnvironmentsStore {
+ constructor() {
+ this.state = {};
+ this.state.environments = [];
+ this.state.stoppedCounter = 0;
+ this.state.availableCounter = 0;
+ this.state.filteredEnvironments = [];
- gl.environmentsList.EnvironmentsStore = {
- state: {},
+ return this;
+ }
- create() {
- this.state.environments = [];
- this.state.stoppedCounter = 0;
- this.state.availableCounter = 0;
- this.state.filteredEnvironments = [];
+ /**
+ *
+ * Stores the received environments.
+ *
+ * Each environment has the following schema
+ * { name: String, size: Number, latest: Object }
+ *
+ * If the `size` is bigger than 1, it means it should be rendered as a folder.
+ * In those cases we add `isFolder` key in order to render it properly.
+ *
+ * @param {Array} environments
+ * @returns {Array}
+ */
+ storeEnvironments(environments = []) {
+ const filteredEnvironments = environments.map((env) => {
+ if (env.size > 1) {
+ return Object.assign({}, env, { isFolder: true });
+ }
- return this;
- },
+ return env;
+ });
- /**
- *
- * Stores the received environments.
- *
- * Each environment has the following schema
- * { name: String, size: Number, latest: Object }
- *
- * If the `size` is bigger than 1, it means it should be rendered as a folder.
- * In those cases we add `isFolder` key in order to render it properly.
- *
- * @param {Array} environments
- * @returns {Array}
- */
- storeEnvironments(environments = []) {
- const filteredEnvironments = environments.map((env) => {
- if (env.size > 1) {
- return Object.assign({}, env, { isFolder: true });
- }
+ this.state.environments = filteredEnvironments;
- return env;
- });
+ return filteredEnvironments;
+ }
- this.state.environments = filteredEnvironments;
+ /**
+ * Stores the number of available environments.
+ *
+ * @param {Number} count = 0
+ * @return {Number}
+ */
+ storeAvailableCount(count = 0) {
+ this.state.availableCounter = count;
+ return count;
+ }
- return filteredEnvironments;
- },
+ /**
+ * Stores the number of closed environments.
+ *
+ * @param {Number} count = 0
+ * @return {Number}
+ */
+ storeStoppedCount(count = 0) {
+ this.state.stoppedCounter = count;
+ return count;
+ }
+}
- /**
- * Stores the number of available environments.
- *
- * @param {Number} count = 0
- * @return {Number}
- */
- storeAvailableCount(count = 0) {
- this.state.availableCounter = count;
- return count;
- },
-
- /**
- * Stores the number of closed environments.
- *
- * @param {Number} count = 0
- * @return {Number}
- */
- storeStoppedCount(count = 0) {
- this.state.stoppedCounter = count;
- return count;
- },
-
- };
-})();
+module.exports = EnvironmentsStore;
diff --git a/app/assets/javascripts/vue_shared/vue_resource_interceptor.js.es6 b/app/assets/javascripts/vue_shared/vue_resource_interceptor.js.es6
index a575ae3e441..d3229f9f730 100644
--- a/app/assets/javascripts/vue_shared/vue_resource_interceptor.js.es6
+++ b/app/assets/javascripts/vue_shared/vue_resource_interceptor.js.es6
@@ -6,7 +6,7 @@ Vue.http.interceptors.push((request, next) => {
Vue.activeResources = Vue.activeResources ? Vue.activeResources + 1 : 1;
next((response) => {
- if (typeof response.data === 'string' && response.status !== 500) {
+ if (typeof response.data === 'string') {
response.data = JSON.parse(response.data);
}