From 9fda94b630f83d458cb4d2fa3dba76b0e7104121 Mon Sep 17 00:00:00 2001 From: Andrew Nesbitt Date: Wed, 24 Jun 2020 15:39:35 +0100 Subject: [PATCH] Collabs package page --- README.md | 21 +++++++++++++++++++++ app/controllers/packages_controller.rb | 15 +++++++++++++++ app/views/packages/collabs.html.erb | 13 +++++++++++++ config/routes.rb | 1 + 4 files changed, 50 insertions(+) create mode 100644 app/views/packages/collabs.html.erb diff --git a/README.md b/README.md index eedfea25..9baea2c0 100644 --- a/README.md +++ b/README.md @@ -244,6 +244,27 @@ For each package it shows: It also has a basic package search function. +Packages are filterable by: +- Organization +- Platform (package manager) + +### [Collab Packages](https://ecosystem-research.herokuapp.com/collabs/packages) + +The [Packages](https://ecosystem-research.herokuapp.com/collabs/packages) view is a list of all packages owned by collaborator that have been published from collaborator repositories. + +For each package it shows: +- name +- platform (package manager) +- description +- latest release number +- Dependent collab repositories +- org icon + +It also has a basic package search function. + +Packages are filterable by: +- Organization +- Platform (package manager) ## Data model diff --git a/app/controllers/packages_controller.rb b/app/controllers/packages_controller.rb index ba165264..c09fd3c3 100644 --- a/app/controllers/packages_controller.rb +++ b/app/controllers/packages_controller.rb @@ -14,6 +14,21 @@ def index @orgs = @orgs_scope.joins(:organization).group('organizations.name').count end + def collabs + @scope = Package.external.includes(:repository) + + @scope = @scope.exclude_platform(params[:exclude_platform]) if params[:exclude_platform].present? + @scope = @scope.platform(params[:platform]) if params[:platform].present? + + @orgs_scope = @scope + @scope = @scope.exclude_org(params[:exclude_org]) if params[:exclude_org].present? + @scope = @scope.org(params[:org]) if params[:org].present? + + @pagy, @packages = pagy(@scope.order('collab_dependent_repos_count DESC, dependent_repos_count DESC, created_at DESC')) + @platforms = @scope.unscope(where: :platform).group(:platform).count + @orgs = @orgs_scope.joins(:organization).group('organizations.name').count + end + def show @package = Package.find(params[:id]) direct = params[:direct] == 'false' ? false : true diff --git a/app/views/packages/collabs.html.erb b/app/views/packages/collabs.html.erb new file mode 100644 index 00000000..b72a491e --- /dev/null +++ b/app/views/packages/collabs.html.erb @@ -0,0 +1,13 @@ +

Collab Packages

+ +
+
+ +
+
+ +<%= render @packages %> +<%== pagy_bootstrap_nav(@pagy) if @pagy.pages > 1 %> diff --git a/config/routes.rb b/config/routes.rb index 51cda39e..a6f4acab 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -10,6 +10,7 @@ end resources :repositories + get 'collabs/packages', to: 'packages#collabs', as: :collab_packages get 'collabs/repositories', to: 'repositories#collab_repositories', as: :collab_repositories get 'collabs/events', to: 'repositories#collab_events', as: :collab_events get 'events', to: 'repositories#events'