Update global search, so it will be able to search through shared inventories

This commit is contained in:
Mojca Lorber 2019-07-24 17:39:51 +02:00 committed by Urban Rotnik
parent 171cdb319b
commit 7d4941015f
6 changed files with 60 additions and 2 deletions

View file

@ -0,0 +1,16 @@
@import "constants";
.fas-custom {
background-repeat: no-repeat;
background-size: 18px;
display: inline-block;
fill: $color-silver-chalice;
height: 18px;
position: relative;
top: 5px;
width: 18px;
path {
fill: inherit;
}
}

View file

@ -164,6 +164,22 @@
.repository-search {
padding-left: 15px;
.fas-custom {
fill: $brand-primary;
}
&.active {
.fas-custom {
fill: $color-white !important;
}
}
&.disabled {
.fas-custom {
fill: $color-silver-chalice;
}
}
}
}

View file

@ -1,4 +1,5 @@
class SearchController < ApplicationController
include IconsHelper
before_action :load_vars, only: :index
def index
@ -130,9 +131,12 @@ class SearchController < ApplicationController
team_results = {}
team_results[:count] = 0
team_results[:repositories] = {}
team.repositories.each do |repository|
Repository.accessible_by_teams(team).each do |repository|
repository_results = {}
repository_results[:id] = repository.id
if (shared_repo = repository.team_repositories.where(team: team).take)
repository_results[:shared] = shared_repo[:permission_level]
end
repository_results[:count] = 0
search_results.each do |result|
if repository.id == result.id

View file

@ -0,0 +1,15 @@
# frozen_string_literal: true
# rubocop:disable Metrics/LineLength
module IconsHelper
def draw_custom_icon(icon)
case icon
when 'shared-edit'
icon = '<path fill="#A0A0A0" fill-rule="evenodd" d="M6.6 8.922c-.688 0-1.34-.172-1.925-.515a3.478 3.478 0 0 1-1.41-1.41 3.758 3.758 0 0 1-.515-1.925c0-.687.172-1.306.516-1.925.343-.584.79-1.065 1.409-1.41A3.758 3.758 0 0 1 6.6 1.223a3.85 3.85 0 0 1 1.925.516 3.955 3.955 0 0 1 1.41 1.41 3.85 3.85 0 0 1 .515 1.924c0 .688-.172 1.34-.516 1.925-.343.619-.825 1.066-1.409 1.41a3.85 3.85 0 0 1-1.925.515zm2.647 1.1c.687 0 1.34.207 1.96.55.618.344 1.1.825 1.443 1.444.344.619.55 1.272.55 1.96v.996c0 .482-.172.86-.481 1.169a1.557 1.557 0 0 1-1.169.481h-9.9c-.481 0-.86-.137-1.169-.481-.343-.31-.481-.687-.481-1.169v-.997c0-.687.172-1.34.516-1.959.343-.619.825-1.1 1.443-1.444.62-.343 1.272-.55 1.994-.55h.275c.756.378 1.547.55 2.372.55a5.43 5.43 0 0 0 2.372-.55h.275zm7.253-1.1c-.928 0-1.719-.31-2.338-.962-.653-.619-.962-1.41-.962-2.338 0-.894.31-1.684.963-2.337a3.216 3.216 0 0 1 2.337-.963c.894 0 1.684.344 2.337.963.62.653.963 1.443.963 2.337 0 .928-.344 1.719-.963 2.338a3.193 3.193 0 0 1-2.337.962zm1.65 1.1c.583 0 1.116.124 1.642.37-.71.036-1.328.33-1.799.801l-3.714 3.714.021-.932c0-.618-.138-1.237-.378-1.822a6.032 6.032 0 0 0-.997-1.615 3.849 3.849 0 0 1 1.925-.516h.138a4.034 4.034 0 0 0 1.512.275c.481 0 .962-.069 1.512-.275h.138zm-5.675 9.282l5.307-5.307 2.443 2.444-5.307 5.306-2.176.248c-.152.02-.286-.019-.382-.133-.114-.096-.152-.23-.133-.382l.248-2.176zM22 14.284a.943.943 0 0 0-.267-.65l-1.146-1.145a.943.943 0 0 0-.648-.267.877.877 0 0 0-.65.268l-1.088 1.088 2.444 2.443 1.088-1.088a.877.877 0 0 0 .267-.65z" clip-rule="evenodd"/>'
when 'shared-read'
icon = '<path fill="#A0A0A0" fill-rule="evenodd" d="M6.6 8.922c-.688 0-1.34-.172-1.925-.515a3.478 3.478 0 0 1-1.41-1.41 3.758 3.758 0 0 1-.515-1.925c0-.687.172-1.306.516-1.925.343-.584.79-1.065 1.409-1.41A3.758 3.758 0 0 1 6.6 1.223a3.85 3.85 0 0 1 1.925.516 3.955 3.955 0 0 1 1.41 1.41 3.85 3.85 0 0 1 .515 1.924c0 .688-.172 1.34-.516 1.925-.343.619-.825 1.066-1.409 1.41a3.85 3.85 0 0 1-1.925.515zm2.647 1.1c.687 0 1.34.207 1.96.55.618.344 1.1.825 1.443 1.444.281.506.47 1.036.53 1.588a7.217 7.217 0 0 0-2.564 2.568 2.64 2.64 0 0 0-.218.45H1.65c-.481 0-.86-.137-1.169-.481-.343-.31-.481-.687-.481-1.169v-.997c0-.687.172-1.34.516-1.959.343-.619.825-1.1 1.443-1.444.62-.343 1.272-.55 1.994-.55h.275c.756.378 1.547.55 2.372.55a5.43 5.43 0 0 0 2.372-.55h.275zm11.43 3.546c.442.263.85.562 1.22.898.068-.18.103-.376.103-.594a3.85 3.85 0 0 0-.516-1.925 3.955 3.955 0 0 0-1.409-1.41 3.849 3.849 0 0 0-1.925-.515h-.137a4.156 4.156 0 0 1-1.513.275c-.481 0-.997-.069-1.512-.275h-.138c-.688 0-1.306.172-1.925.516.412.481.756 1.031.997 1.615.125.306.223.62.288.94a7.268 7.268 0 0 1 2.748-.527c1.326 0 2.577.34 3.704.994l.014.008zM16.5 8.922c-.928 0-1.719-.31-2.338-.962-.653-.619-.962-1.41-.962-2.338 0-.894.31-1.684.963-2.337a3.216 3.216 0 0 1 2.337-.963c.894 0 1.684.344 2.337.963.62.653.963 1.443.963 2.337 0 .928-.344 1.719-.963 2.338a3.193 3.193 0 0 1-2.337.962zm5.347 8.6a.932.932 0 0 0-.119-.407 5.658 5.658 0 0 0-1.986-1.969 5.473 5.473 0 0 0-2.784-.747 5.428 5.428 0 0 0-2.784.747 5.39 5.39 0 0 0-1.986 1.97.75.75 0 0 0-.119.407c0 .152.034.288.12.407a5.148 5.148 0 0 0 1.985 1.97c.85.509 1.766.746 2.784.746 1.002 0 1.936-.237 2.784-.747a5.39 5.39 0 0 0 1.986-1.969.818.818 0 0 0 .12-.407zm-3.734 2.004a2.303 2.303 0 0 1-1.155.305c-.424 0-.814-.101-1.154-.305a2.264 2.264 0 0 1-.849-.849 2.214 2.214 0 0 1-.305-1.154c0-.408.101-.798.305-1.155.204-.34.492-.628.849-.831.34-.204.73-.323 1.154-.323.408 0 .798.119 1.155.323.34.203.628.492.831.831.204.357.323.747.323 1.155 0 .424-.119.815-.323 1.154a2.346 2.346 0 0 1-.831.849zm.085-3.242c.339.34.526.764.526 1.239 0 .492-.187.916-.526 1.256-.34.34-.764.51-1.24.51-.492 0-.916-.17-1.256-.51-.34-.34-.51-.764-.51-1.256 0-.289.069-.56.205-.832 0 .204.067.39.203.526a.73.73 0 0 0 .527.204.691.691 0 0 0 .509-.204.745.745 0 0 0 .22-.526.706.706 0 0 0-.22-.51.706.706 0 0 0-.51-.22c.255-.136.527-.204.832-.204.476 0 .9.187 1.24.527z" clip-rule="evenodd"/>'
end
('<svg class="fas-custom" xmlns="http://www.w3.org/2000/svg" fill="none" viewBox="0 0 22 22">' + icon + '</svg>').html_safe
end
end
# rubocop:enable Metrics/LineLength

View file

@ -41,7 +41,9 @@ class Repository < ApplicationRecord
repository = nil,
options = {}
)
repositories = repository || Repository.where(team: user.teams)
teams = user.teams.select(:id)
repositories = repository ||
Repository.accessible_by_teams(teams)
includes_json = { repository_cells: Extends::REPOSITORY_SEARCH_INCLUDES }
searchable_attributes = ['repository_rows.name', 'users.full_name'] +

View file

@ -233,6 +233,11 @@
search_id: @search_id}.to_query %>">
<span class="badge pull-right"><%= values[:count] %></span>
<%= repository %>
<% if values[:shared] == 'write' %>
<%= draw_custom_icon('shared-edit') %>
<% elsif values[:shared] == 'read' %>
<%= draw_custom_icon('shared-read') %>
<% end %>
</a>
</li>
<% end %>