summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEzekiel Kigbo <ekigbo@gitlab.com>2019-05-16 19:29:08 -0500
committerEzekiel Kigbo <ekigbo@gitlab.com>2019-05-16 20:23:35 -0500
commit06a70c481a399b871ad7c026bed57aa238f9b16f (patch)
tree1f657ad823763340992878cb6ce316537793fb7e
parent352e11c6ae5f0337bb33a5914305ec11bf94c68a (diff)
downloadgitlab-ce-56992-refactor-project-list.tar.gz
WIP: Load ci pipeline data56992-refactor-project-list
-rw-r--r--app/assets/javascripts/vue_shared/components/projects_list/project_ci_pipeline_status.vue8
-rw-r--r--app/assets/javascripts/vue_shared/components/projects_list/project_list_item.vue8
-rw-r--r--app/helpers/projects_helper.rb12
-rw-r--r--app/views/shared/projects/_list.html.haml2
4 files changed, 20 insertions, 10 deletions
diff --git a/app/assets/javascripts/vue_shared/components/projects_list/project_ci_pipeline_status.vue b/app/assets/javascripts/vue_shared/components/projects_list/project_ci_pipeline_status.vue
index 705366ab568..dd2b825c3e4 100644
--- a/app/assets/javascripts/vue_shared/components/projects_list/project_ci_pipeline_status.vue
+++ b/app/assets/javascripts/vue_shared/components/projects_list/project_ci_pipeline_status.vue
@@ -1,6 +1,6 @@
<script>
import { s__, sprintf } from '~/locale';
-import Icon from '~/vue_shared/components/icon.vue';
+import CIIcon from '~/vue_shared/components/ci_icon.vue';
// TODO: should this poll for latest status?
// - status = local_assigns.fetch(:status)
@@ -11,7 +11,7 @@ import Icon from '~/vue_shared/components/icon.vue';
export default {
components: {
- Icon,
+ CIIcon,
},
props: {
status: {
@@ -65,8 +65,8 @@ export default {
</script>
<template>
<div class="icon-wrapper pipeline-status">
- <span class="{{cssClasses}}" :title="title" data-placement="{{tooltipPlacement}}">
- <icon :name="iconName" :size="size" css-classes="append-right-4"/>
+ <span :class="cssClasses" :title="title" data-placement="tooltipPlacement">
+ <ci-icon :status="iconName" :borderless="true" :size="size" css-classes="append-right-4"/>
</span>
</div>
</template>
diff --git a/app/assets/javascripts/vue_shared/components/projects_list/project_list_item.vue b/app/assets/javascripts/vue_shared/components/projects_list/project_list_item.vue
index 67679bc421d..076ef12b0e6 100644
--- a/app/assets/javascripts/vue_shared/components/projects_list/project_list_item.vue
+++ b/app/assets/javascripts/vue_shared/components/projects_list/project_list_item.vue
@@ -6,6 +6,7 @@ import ProjectCounts from './project_counts.vue';
import ProjectAccess from './project_access.vue';
import ProjectTitle from './project_title.vue';
import ProjectVisibilityLevel from './project_visibility_level.vue';
+import ProjectCiPipelineStatus from './project_ci_pipeline_status.vue';
/**
* Renders a project list item
@@ -19,6 +20,7 @@ export default {
ProjectAccess,
ProjectTitle,
ProjectVisibilityLevel,
+ ProjectCiPipelineStatus,
},
props: {
isExploreProjectsTab: {
@@ -204,6 +206,11 @@ export default {
visibilityDescription() {
return this.project.visibility.description || null;
},
+ hasPipelineAccess() {
+ // TODO: need to check this condition
+ // There should be prop for pipeline status access
+ return this.project.status && true;
+ },
},
};
</script>
@@ -242,6 +249,7 @@ export default {
:forks-count="totals.forksCount"
:merge-requests-count="totals.mergeRequestsCount"
/>
+ <project-ci-pipeline-status v-if="hasPipelineAccess"/>
<div class="updated-note">
<span>
Updated
diff --git a/app/helpers/projects_helper.rb b/app/helpers/projects_helper.rb
index a8acba98bdb..7909f5452b2 100644
--- a/app/helpers/projects_helper.rb
+++ b/app/helpers/projects_helper.rb
@@ -632,24 +632,26 @@ module ProjectsHelper
!project.repository.gitlab_ci_yml
end
- def project_additional_fields(project)
+ def project_additional_fields(project, current_user)
+ # has_pipeline_status_access = pipeline_status && can?(current_user, :read_cross_project) && project.pipeline_status.has_status? && can?(current_user, :read_build, project),
additional_fields = {
# TODO: namespace is not always correct
# for cases where we are the owner we should have the 'owner' object available
- namespace: project.namespace,
+ namespace: project.namespace,
open_merge_requests_count: project.open_merge_requests_count,
open_issues_count: project.open_issues_count,
+ # status: project.commit.last_pipeline.detailed_status(current_user),
+ # owner: project.owner,
visibility: {
level: project.visibility_level,
description: visibility_icon_description(project)
}
- # owner: project.owner
}
project.as_json.merge(additional_fields)
end
- def projects_data_json(projects)
- projects = projects.to_a.map { |project| project_additional_fields(project) }
+ def projects_data_json(projects, current_user)
+ projects = projects.to_a.map { |project| project_additional_fields(project, current_user) }
projects.to_json.html_safe
end
diff --git a/app/views/shared/projects/_list.html.haml b/app/views/shared/projects/_list.html.haml
index 294aee9822b..2c53f8c6cf6 100644
--- a/app/views/shared/projects/_list.html.haml
+++ b/app/views/shared/projects/_list.html.haml
@@ -32,7 +32,7 @@
-# maybe load merge request count here
- if Feature.enabled?(:vue_projects_list)
-# Mount vue app
- %ul.vjs-projects-list{ class: css_classes, data: { projects: projects_data_json(projects) } }
+ %ul.vjs-projects-list{ class: css_classes, data: { projects: projects_data_json(projects, current_user) } }
= paginate_collection(projects, remote: remote) unless skip_pagination
- else
%ul.projects-list{ class: css_classes }