Time tracking front end
What does this MR do?
This MR is a 99% complete version of the front-end for the issuable timetracking feature.
Specifically, it:
- instantiates a new Vue component (
<time-tracking>
) in the issuable sidebar - initializes polling for issuable data
- introduces an abstraction for pubsub against a vue resource (
SubbableResource
) - introduces a class for configuring and controlling
setInterval
(SmartInterval
) - introduces a custom Vue directive for forcing Bootstrap tooltips to update dynamically
Other important notes for reviewers
This feature was written with future improvements to Issuable pages in mind. At this point, it will be fairly straightforward to:
- move the parent Vue instance to the top of the sidebar
- refactor Issuable sidebar blocks into Vue components
- update them automatically against a shared
IssuableResource
Pre-compiled templates were avoided and initialization is still handled from the script tags in the DOM for the time being. It seemed to me that making such architectural improvements should happen with the rest of the sidebar blocks, which are not EE-specific.
A few notes on integration with the backend:
There are a number of pieces that were difficult to finalize without actual integration with the backend. There will be a new MR to work out integration issues soon.
At this point, I need feedback on the code, with the assumption that some things don't work yet. We'll need to do another round of review and testing once the backend has been merged in.
Items to resolve after integration with backend:
-
remove all mocking code -
moving code for the parent Vue instance to a separate file, initializing from the DOM -
subscribe to updates from successful gfm note submission -
properly wire up Vue component unit test -
properly instantiate time-tracking component props -
ensure polling is configured for desired UX
Designs: https://gitlab.com/gitlab-org/gitlab-design/tree/master/progress/taurie/time-tracking
Merge request reports
Activity
Added 1 commit:
- dfe48af4 - Initialize IssuableResource and TimeTrackerDisplay in sidebar.
Added 2 commits:
Added 1 commit:
- edfd2aaf - Style estimate-only, spent-only, and nothing states.
Added 1 commit:
- 69a866fc - Finish collapsed state, adding abbrev filter.
- Resolved by username-removed-408230
Added 1 commit:
- 574b2f22 - Follow SRP, move SmartInterval out of SubbableResource.
- Resolved by username-removed-408230