Skip to content

Add new filtered search to issue boards [RUN ALL RSPEC] [RUN AS-IF-FOSS]

Scott Stern requested to merge ss/filtered-search-issue-boards into master

What does this MR do?

What this MR includes

  1. This MR adds the new gl-filtered-search to Project/Group Issue boards with ONLY the Author, Assignee, and Labels tokens. (note: this is behind the :issue_boards_filter_search FF)
  2. It "abstracts" the store/url param logic to its own component board_filtered_search

Repro:

  • Feature.enable(:epic_boards)
  • Feature.enable(:boards_filtered_search)
  • Feature.enable(:issue_boards_filtered_search)
  • Go to group -> epic boards (functionality shouldnt change here)
  • Go to group/project issue boards (notice the new filtered search with ONLY Author, Assignee, and Labels

Next steps

  1. We will need to add the remainder of the tokens supported in project/group issue boards (including issue types)
  2. Move shared param logic out into a scoped-slot (ie like a HOC, something like with_board_filter_params) so it can be reused in other places in the codebase and moved out of board_filtered_search.vue. Currently we have param logic in filtered_search_mixin and issues_list/utils. We should consider how we want to merge them for unified and reusable functionality.

Additional Considerations

  1. Splitting Project/Group query logic it has been agreed upon in slack to split the queries and namespace them instead of having the logic inside of the query (as we do in board_labels.query)..slack conversation
  2. I added the issue_board_filters function to be able to use in other areas where we will be using graphql to fetch tokens. This seemed like the best approach for now but open to suggestions
  3. We have all of the project path/group path and boardType logic coming from the store, i thought it would be better to add this as props and pass it down instead of doing the logic in the haml template but if we want to remove that and put it in shared/issuable/_search.html.haml thats totally fine with me
  4. shared/issuable/_search.html.haml has A LOT of group and ee logic in there. I added another conditional to render the new filtered search for issue boards. However, I am going to make tickets on how to get this split up and moved into the board single app instead of mounting another application
  5. Not all graphql queries are available for issue boards, which is a main reason we put this behind a feature flag
  6. Spoke with @gweaver and project/group path with graphql queries need to be revised and documentation needs to be updated..slack conversation
  7. A project should include all assets from the project -> parent group -> and subgroups
  8. A group should return values for its group and subgroups

Screenshots (strongly suggested)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

Does this MR contain changes to processing or storing of credentials or tokens, authorization and authentication methods or other items described in the security review guidelines? If not, then delete this Security section.

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Scott Stern

Merge request reports