diff options
author | Ezekiel Kigbo <ekigbo@gitlab.com> | 2019-05-16 19:29:08 -0500 |
---|---|---|
committer | Ezekiel Kigbo <ekigbo@gitlab.com> | 2019-05-16 20:23:35 -0500 |
commit | 06a70c481a399b871ad7c026bed57aa238f9b16f (patch) | |
tree | 1f657ad823763340992878cb6ce316537793fb7e | |
parent | 352e11c6ae5f0337bb33a5914305ec11bf94c68a (diff) | |
download | gitlab-ce-56992-refactor-project-list.tar.gz |
WIP: Load ci pipeline data56992-refactor-project-list
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 } |