Page MenuHomePhabricator

improve handling of panels that do not always return results
Closed, ResolvedPublic

Description

The default phabricator homepage (PhabricatorHomeMainController) had some niceties around the handling of defaults. For example with dashbaords creating a panel with 'Unbreak Now!' tickets looks like:

Unbreak Now!

Tasks (2)

or with no results

Unbreak Now!

While the home page app will print

No "Unbreak Now!" Tasks: Nothing appears to be critically broken right now.

and move the results to the bottom. I liked the 'Unbreak Now!' behavior on the home page because it made the meaning of 'Unbreak Now!' culturally special, it is going to show up for everyone in the company. I credit that with rarely seeing 'Unbreak Now!' abused for "I think whatever I am working on is most important so you should drop what you are doing" cross-team requests, and such priority abuse tends to get shot down quickly. It's also nice that it gets out of the way when nothing is broken as just having a panel with 'Unbreak Now!' (or whatever) floating around is a bit unsightly and potentially confusing (what is broken?). Possible solutions include some combination of:

  • Query panels (optionally?) hidden with no results
  • Query panels move with no results (this is maybe super complicated/confusing?)
  • Alt text to show when the panel has no results.

Event Timeline

cburroughs updated the task description. (Show Details)
cburroughs added a project: Dashboards.
cburroughs added a subscriber: cburroughs.

PhabricatorHomeMainController is synchronous, DashboardPanel is asynchronous. This makes changing any behavior fairly difficult. We don't like to hide things, either. So ... we're at make the fallback smaller, which may or may not be something everyone agrees is correct.

Is this request specifically about just Unbreak Now?

The "Unbreak Now!" case is the only one I consider important. Similar behavior might be nice for "Needs Triage" + viewerprojects(). I can't think of any case that does not involve tasks since I expect the common case for audits, reviews, feeds, etc to be that there are results.

eadler added a project: Restricted Project.Jan 11 2016, 9:36 PM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Jan 11 2016, 9:42 PM
cburroughs moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Apr 20 2016, 3:57 PM
eadler moved this task from Restricted Project Column to Restricted Project Column on the Restricted Project board.Jul 4 2016, 9:15 PM
epriestley added a subscriber: jcarrillo7.
epriestley added a subscriber: epriestley.

T12233 is an essentially identical case, although it discusses other analogous use cases (hide/shrink "Audits" if empty; hide/shrink "Reviews" if empty).

While the number (>0) of query results would decide whether a given panel is shown or not, also exposing the actual number of results would be IMHO interesting in the context of tabbed panels, so that each tab title could be shown as demonstrated in the mock-up below (please excuse my non-designer-ish CSS skills):

pasted_file (159×881 px, 14 KB)

The result count could even include some kind of priority where applicable, so that the background color would indicate the urgency of the items in this tab.

I'm leaning here towards making empty buckets just disappear, and if all buckets are empty, No audits need your attention.

I went back and forth on this, because I like the clarity of the empty buckets, but with Maniphest (which has its own bucket UI), we don't show each individual Priority, and this hasn't seemed to confuse users.

We can also shrink/hide buckets from the panel context but keep them from the ApplicationSearch context. I think that's desirable -- if you go to /differential/ it's probably good to see all the bucket headers? Just not so good if you have a "Stuff to Review" panel on your home page.