summaryrefslogtreecommitdiff
path: root/app/assets/javascripts/environments
diff options
context:
space:
mode:
authorFilipa Lacerda <filipa@gitlab.com>2016-10-24 16:56:13 +0100
committerFilipa Lacerda <filipa@gitlab.com>2016-11-16 11:57:58 +0000
commit98a0f72dd3717c0177271583a19973ce463b5191 (patch)
tree0ad4a339a8d192e8be313395f320a3d8dac1ce84 /app/assets/javascripts/environments
parent9c41191a002c088ecb269b1e69606000be9be005 (diff)
downloadgitlab-ce-98a0f72dd3717c0177271583a19973ce463b5191.tar.gz
Properly filter all environments
Diffstat (limited to 'app/assets/javascripts/environments')
-rw-r--r--app/assets/javascripts/environments/environments_bundle.js.es627
-rw-r--r--app/assets/javascripts/environments/stores/environmnets_store.js.es61
2 files changed, 15 insertions, 13 deletions
diff --git a/app/assets/javascripts/environments/environments_bundle.js.es6 b/app/assets/javascripts/environments/environments_bundle.js.es6
index 4dc4ac2c99b..f8cefabefa4 100644
--- a/app/assets/javascripts/environments/environments_bundle.js.es6
+++ b/app/assets/javascripts/environments/environments_bundle.js.es6
@@ -15,19 +15,20 @@ $(() => {
gl.EnvironmentsListApp.$destroy(true);
}
- const filters = {
- stopped (environments) {
- return environments.filter((env) => env.state === 'stopped')
- },
- available (environments) {
- return environments.filter((env) => env.state === 'available')
- }
+ const filterEnvironments = (environments = [], filter = "") => {
+ return environments.filter((env) => {
+ if (env.children) {
+ return env.children.filter((child) => child.state === filter).length;
+ } else {
+ return env.state === filter;
+ };
+ });
};
gl.EnvironmentsListApp = new Vue({
el: '#environments-list-view',
-
+
components: {
'item': gl.environmentsList.EnvironmentItem
},
@@ -41,15 +42,15 @@ $(() => {
computed: {
filteredEnvironments () {
- return filters[this.visibility](this.state.environments);
+ return filterEnvironments(this.state.environments, this.visibility);
},
-
+
countStopped () {
- return filters['stopped'](this.state.environments).length;
+ return filterEnvironments(this.state.environments, 'stopped').length;
},
-
+
counAvailable () {
- return filters['available'](this.state.environments).length;
+ return filterEnvironments(this.state.environments, 'available').length;
}
},
diff --git a/app/assets/javascripts/environments/stores/environmnets_store.js.es6 b/app/assets/javascripts/environments/stores/environmnets_store.js.es6
index f48e8d4c49a..72267b97255 100644
--- a/app/assets/javascripts/environments/stores/environmnets_store.js.es6
+++ b/app/assets/javascripts/environments/stores/environmnets_store.js.es6
@@ -63,6 +63,7 @@
return element.environment_type === environment.environment_type;
});
+
data["vue-isChildren"] = true;
if (occurs !== undefined) {