Page MenuHomePhabricator

Roughly implement milestone columns on workboards

Authored by epriestley on Feb 2 2016, 11:36 PM.
Referenced Files
F11408825: D15171.diff
Mon, Dec 5, 5:40 AM
Unknown Object (File)
Tue, Nov 29, 7:47 PM
Unknown Object (File)
Tue, Nov 29, 7:47 PM
Unknown Object (File)
Tue, Nov 29, 7:47 PM
Unknown Object (File)
Tue, Nov 29, 7:47 PM
Unknown Object (File)
Tue, Nov 29, 7:47 PM
Unknown Object (File)
Wed, Nov 16, 3:51 PM
Unknown Object (File)
Wed, Nov 16, 3:51 PM
"Yellow Medal" token, awarded by Luke081515.2.



Ref T10010. These aren't perfect but I think (?) they aren't horribly broken.

  • When a project is a parent project, destroy (as far as the user can tell) any custom columns.
  • When a project has milestones, automatically generate columns on the project's workboard (if it has a workboard).
  • When you move tasks between milestones, add the proper milestone tag.
  • When you move tasks out of milestones back into the backlog, add the proper parent project tag.
  • (Plenty of UI / design stuff to adjust.)
Test Plan
  • Dragged stuff between milestone columns.
  • Used a normal workboard.
  • Wasn't able to find any egregiously bad cases that did anything terrible.

Screen Shot 2016-02-02 at 3.31.47 PM.png (907×1 px, 104 KB)

Diff Detail

rP Phabricator
Lint Not Applicable
Tests Not Applicable

Event Timeline

epriestley retitled this revision from to Roughly implement milestone columns on workboards.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: chad.
chad edited edge metadata.

Feel duplicative to show the iteration tag on the iteration column? Also, add a CSS class for columns that are milestones?

This revision is now accepted and ready to land.Feb 3 2016, 12:03 AM

Yeah, I wouldn't plan to keep the tag on it. Other stuff off the top of my head:

  • Icon in the header has whack spacing.
  • TODO about alterning descendants.
  • You can probably reorder these but it won't actually work? I didn't actually try.
  • Names are probably editable but I don't think that really makes sense.
  • Header should maybe be linked to iteration project page / workboard?
  • If sub-thing is disabled maybe column auto-hides? Might be messy-ish / have weird interactions with milestones.
epriestley edited edge metadata.
  • Stick a class on it (feel free to swap this to whatever).

I'm probably not going to make too much more progress tonight so I'm going to hold this until I get started tomorrow, since some of the edges here are still a bit rough.

After sleeping on this, I'm a little bit unsatisfied about the approach I'm taking to set up column positions.

The big issue is that a lot of logic is happening at read time (i.e., when you look at the board), and it has a lot of potential side-effect writes, and none of that logic is separated or isolated. There's also an existing, similar block of logic in PhabricatorProjectColumnPositionQuery which isn't integrated with the new stuff, and feels a bit awkward now.

I think about 90% of this change is good, but I want to chew on my approach a bit more and develop a clearer picture of the path forward, since I'm not completely confident in this approach. In particular, I think a better approach might be:

  • Pull the layout/write logic out of PhabricatorProjectColumnPositionQuery (make it a simple dumb query like most other queries).
  • Pull the layout/write logic out of the board view.
  • Put all the layout/write logic in some new FancyBoardLayoutThing.
  • Don't actually do writes when looking at boards.
  • Run the same logic, then do writes only when moving cards.

I'm going to hold this for now and maybe pursue some adjacent changes to see if that clarifies the direction.

chad requested changes to this revision.Feb 3 2016, 3:23 PM
chad edited edge metadata.
This revision now requires changes to proceed.Feb 3 2016, 3:23 PM
epriestley edited edge metadata.
  • Same change, more or less.
  • Better code, probably?
  • Parent project workboard columns are no longer destroyed.
  • Subproject columns are just not shown. This is a little bit unintuitive, but seems fine for now. They can be shown eventually if/when multiple cards work, or perhaps remain hidden forever, although I tend not to favor this.
  • Add some unit tests.
chad edited edge metadata.
This revision is now accepted and ready to land.Feb 4 2016, 12:32 AM
This revision was automatically updated to reflect the committed changes.