go-gitea / gitea

Git with a cup of tea! Painless self-hosted all-in-one software development service, including Git hosting, code review, team collaboration, package registry and CI/CD
https://gitea.com
MIT License
44k stars 5.4k forks source link

Project board card filtering #21846

Open techknowlogick opened 1 year ago

techknowlogick commented 1 year ago

Feature Description

As a developer of a large software project I’d like to be able to filter project boards to see the status of tickets that are relevant to my contribution area. A real life example would be: If we had a project board for a specific Gitea release, and my area of focus was the project board feature, I could use this filtering to track the status of tickets for the project board with still being able to have an overall board that a release manager would be able to have a fuller view.

Screenshots

Mockups of what this might look like are:

board1 board2

By default all issues would appear on the project board, however if you’d like to only have issues with a specific label (or multiple labels) you could either click on the label attached to the card, or use the multi-select dropdown. Once a label (or multiple labels) has been selected, then only the issues with those labels would show (as seen in the second screenshot).

In Gitea currently, this filtering exists on the issue/pr list pages, and generates a URL that can be shared to show others the filtered view (or bookmarked for quick access).

Other implementations: In GitHub's project boards, they have a search box that allows for the same filtering that they have on the issues/pr list. image

image

You can read more about their filters here:
https://docs.github.com/en/github-ae@latest/issues/organizing-your-work-with-project-boards/tracking-work-with-project-boards/filtering-cards-on-a-project-board

JIRA also has filtering based on a query language for their project boards

Implementation Details

The filtering for issues would be in the ViewProject function (https://github.com/go-gitea/gitea/blob/main/routers/web/repo/projects.go#L275), and the filtering concept could be taken from https://github.com/go-gitea/gitea/blob/main/routers/web/repo/issue.go#L263

There is a difficulty though, when items on the board are moved, they send a request to the "move" endpoint, and that request contains the sort and location of each issue in the board, but if the server side filtering is applied, then the issues that are filtered out wouldn't be included. A quick/naive way to address this, would be to apply the filtering client side.

KlavsKlavsen commented 1 year ago

This seems to be a duplkcate of https://github.com/go-gitea/gitea/issues/14670 ?

almereyda commented 10 months ago

Grouping cards by a certain property to display them visually distinct in Swimlanes seems to be a different, but related idea than not displaying cards that do not match the filter.

The present PR in #27117, which supersedes #21963, seems to address the filtering case as expected and is currently undergoing review.