From 9d1ab1e9bd474e467c75cf7a1f7b728d6832075c Mon Sep 17 00:00:00 2001
From: Filipa Lacerda <filipa@gitlab.com>
Date: Fri, 17 Mar 2017 23:07:37 +0000
Subject: [PATCH] Add error state to commits and merge requests pipelines table

---
 .../commit/pipelines/pipelines_table.js         | 17 +++++++++++------
 .../vue_pipelines_index/pipelines.js            |  3 ++-
 2 files changed, 13 insertions(+), 7 deletions(-)

diff --git a/app/assets/javascripts/commit/pipelines/pipelines_table.js b/app/assets/javascripts/commit/pipelines/pipelines_table.js
index 832c4b1bd2a..29ee3e5e67b 100644
--- a/app/assets/javascripts/commit/pipelines/pipelines_table.js
+++ b/app/assets/javascripts/commit/pipelines/pipelines_table.js
@@ -5,6 +5,7 @@ import PipelinesTableComponent from '../../vue_shared/components/pipelines_table
 import PipelinesService from '../../vue_pipelines_index/services/pipelines_service';
 import PipelineStore from '../../vue_pipelines_index/stores/pipelines_store';
 import eventHub from '../../vue_pipelines_index/event_hub';
+import ErrorState from '../../vue_pipelines_index/components/error_state';
 import '../../lib/utils/common_utils';
 import '../../vue_shared/vue_resource_interceptor';
 
@@ -22,6 +23,7 @@ import '../../vue_shared/vue_resource_interceptor';
 export default Vue.component('pipelines-table', {
   components: {
     'pipelines-table-component': PipelinesTableComponent,
+    'error-state': ErrorState,
   },
 
   /**
@@ -39,9 +41,16 @@ export default Vue.component('pipelines-table', {
       store,
       state: store.state,
       isLoading: false,
+      hasError: false,
     };
   },
 
+  computed: {
+    shouldRenderErrorState() {
+      return this.hasError && !this.pageRequest;
+    },
+  },
+
   /**
    * When the component is about to be mounted, tell the service to fetch the data
    *
@@ -80,6 +89,7 @@ export default Vue.component('pipelines-table', {
           this.isLoading = false;
         })
         .catch(() => {
+          this.hasError = true;
           this.isLoading = false;
           new Flash('An error occurred while fetching the pipelines, please reload the page again.');
         });
@@ -92,12 +102,7 @@ export default Vue.component('pipelines-table', {
         <i class="fa fa-spinner fa-spin"></i>
       </div>
 
-      <div class="blank-state blank-state-no-icon"
-        v-if="!isLoading && state.pipelines.length === 0">
-        <h2 class="blank-state-title js-blank-state-title">
-          No pipelines to show
-        </h2>
-      </div>
+      <error-state v-if="shouldRenderErrorState" />
 
       <div class="table-holder pipelines"
         v-if="!isLoading && state.pipelines.length > 0">
diff --git a/app/assets/javascripts/vue_pipelines_index/pipelines.js b/app/assets/javascripts/vue_pipelines_index/pipelines.js
index 64b8be78bc1..87242ff0369 100644
--- a/app/assets/javascripts/vue_pipelines_index/pipelines.js
+++ b/app/assets/javascripts/vue_pipelines_index/pipelines.js
@@ -163,6 +163,7 @@ export default {
           this.pageRequest = false;
         })
         .catch(() => {
+          this.hasError = true;
           this.pageRequest = false;
           new Flash('An error occurred while fetching the pipelines, please reload the page again.');
         });
@@ -196,7 +197,7 @@ export default {
         <i class="fa fa-spinner fa-spin" aria-hidden="true"></i>
       </div>
 
-      <empty-state v-if="shouldRenderEmptyState" />
+      <empty-state v-if="shouldRenderEmptyState" :helpPagePath="helpPagePath" />
 
       <error-state v-if="shouldRenderErrorState" />
 
-- 
GitLab