146 Commits

Author SHA1 Message Date
Becky Siegel
8e098c6bf5 Allow diff file picker to not text transform gr-button text
Also fixes flex alignment

Change-Id: Ied7c3905e4d00c17c1627cdc5979549e00ade3b6
2017-10-01 15:51:57 +00:00
Becky Siegel
104e707c8e Merge "Update gr-button to use paper button" 2017-10-01 13:36:55 +00:00
Becky Siegel
16721e6c8b Update gr-button to use paper button
Mostly styling updates but notable changes:
- Common color in theme.html, should be used by all buttons and links.
- CSS mixin to style gr-button passed to paper button (used in
  gr-label-score-row, gr-linked-chip)
- Some things that look like buttons but aren't exactly buttons get
  text-transform uppercase to appear like a button.
- Primary and secondary buttons are both the same color, but for now
- have not removed secondary so that it's possible to style them
  differently if we decide to.

Change-Id: Ib5ef3b0fc4883cd6dfc5c38e6d954925101d531f
2017-10-01 14:06:55 +01:00
Becky Siegel
fd7c71f1db Implement gr-dropdown-list in patch range select
This also moves the change reloading logic back to the change view,
where it gets updated patch ranges via a two-way data binding.

Change-Id: Ib09ad1a176ba96bac77a513d344226df029aef7b
2017-10-01 12:27:44 +01:00
Kasper Nilsson
ce67e2a921 Refactor file path truncation into behavior
Change-Id: I21af00d3efc28291aa6918fde643cc6c77a7d05c
2017-10-01 11:05:12 +01:00
Wyatt Allen
ed628d7f37 Show blame in diff
With this change a blame column is added to the left side of diff
tables. The column is empty and hidden until blame is loaded. A button
is added to the change view to trigger a load of the blame for that
diff, as well as a unload it if already loaded. In this stage, the blame
information is non-interactive and only displays the SHA, date and
commit author.

Feature: Issue 6075
Change-Id: Ifcb951265d0e6339094e6b7c9574ec9c69e60b51
2017-09-27 18:55:42 -04:00
Wyatt Allen
1bd466a24b Handle cursor positions that don't yield addresses
The gr-diff-cursor#getAddress method returns null when it has no
position or no address corresponds to it's position. However, the
gr-diff-view#_onLineSelected method did not account for this case and
attempted to use null addresses to construct URLs when moving the cursor
to a "File" line of a diff.

With this change, the diff view neither uses line number nor the diff
side when constructing URLs if the cursor does not yield an address.

Change-Id: I628658295bca1f49e0c2d3484e2e0d01e71bcd91
2017-09-15 12:12:55 -07:00
Becky Siegel
89fe0501e1 Utilize gr-patch-range-select in the change view
Slight refactoring required in order to satisfy both use cases:
- Fire an event when patch range changes and let parent element
  handle it.
- Support comment strings
- availablePatches becomes an array of objects instead of an
  array of integers.

Change-Id: Ia8da9296f41eb2d45c9358d03fbec3940273ad9d
2017-09-14 13:47:38 -07:00
Becky Siegel
1a09820022 Update bold fonts to Roboto Medium
Bold fonts were inconsistent across platforms and new design specs use
Roboto Medium instead, so switching all currently bold fonts to use
that.

Change-Id: Ibfc5ffc3fc33517acb85acc0194215b4d7864cae
2017-09-08 16:06:35 -07:00
Wyatt Allen
c27b01dc3e Add download attribute to diff view download link
Bug: Issue 7168
Change-Id: I0786720e54d166856a0ece05fdc9f15a4b9de19f
2017-09-07 10:40:13 -07:00
Wyatt Allen
fd6a9478e5 Preserve URL line numbers specified by @
Some URLs (for example, comment links in Gerrit emails) specify the line
number following an @-sign rather than in the hash using an octothorp
because the URL is already mostly inside a hash (for backward
compatibility with the GWT UI). When these URLs do not include the
project name (as they currently do not in Gerrit emails) the project is
loaded and the parsed route is "upgraded" to include the project.

However, when generating the upgrade URL, the `_generateUrl` method
looks for the `lineNum` and `leftSide` properties to generate the
address. While the address specified by the @-sign is properly converted
to an octothorp-hash before this point, it appears on the properties
object as `hash`, and is thus ignored by `_generateUrl`.

With this change, instead of passing the raw hash through the app params
and parsing it in the `gr-diff-view`, the hash is parsed into its
`leftSide` and `lineNum` values and attached to the `app.params` by the
router. In this way, the location is preserved through URL upgrade, the
param format used in navigation matches that used in URL generation and
the diff view no longer parses the route.

Bug: Issue 7087
Change-Id: Idb2e3cccf2884fae742247cf1ebbde1ad97e53ab
2017-08-29 12:42:39 -07:00
Wyatt Allen
aea9974693 Update diff line hash via Gerrit.Nav
Formerly, the gr-diff-view generated and updated the URL hash that
indicates the location of the diff cursor, regardless of the hash
generation scheme implemented in _generateUrl. With this change, the
diff view uses the _generateUrl for the cursor-location-specific URL.

Change-Id: Ia70a298f114c9eae9cdc5b0a8f73d7ecab55896e
2017-08-23 09:36:24 -07:00
Kasper Nilsson
eb7e7b80cf Centralize URL upgrading to within router
To prevent redundant (and sometimes incorrect) change/diff loads, this
change moves the logic for rewriting the URL schema to within the
router.

This has the drawback of adding a step -- and a potential API call --
between initial URL interpretation and first render, but ensures that
render will be correct. This only occurs when legacy routes are used.

Bug: Issue 7027
Change-Id: Ia1571e2f946f6d9e334626b6b0fd4a8c0c81f35d
2017-08-15 20:50:11 +00:00
Becky Siegel
8d92d53db5 Annotation updates
Change-Id: I146f76b9dcc1a92e18acec01481ad280fb431868
2017-08-12 11:49:52 -07:00
Kasper Nilsson
5f1f0c6f4e Disable reviewed checkbox in diff view for edit
Modifying the reviewed state of an edit patchset is an illogical action,
and should be disabled.

This change adds an _editLoaded property to gr-diff-view to
conditionally hide the reviewed checkbox. In addition, attempts to
modify the reviewed state are treated as a no-op.

TODO: Further utilize this approach to conditionally show buttons for
modifying an edit patchset. Will be done in a later change.

Bug: Issue 4437
Change-Id: I0ea98e49c5ec66e73f45fef9db5e3849d6e594df
2017-08-10 14:54:57 -07:00
David Ostrovsky
e6a6f44f8c Render change edits on change and diff screens
ORIGINALLY: Iafd4b80af53624027c347f0f443b4cdfde292e29

This change makes the change view and the diff view change edit aware.
Mutation operations on edit itself, like editing files in editor, are
beyond the scope of this change.

Change edits must be fetched with a separate change edit endpoint and
merged into the change.revisions object. The _number of an editInfo is
'edit'. It has a special property called 'basePatchNum' that marks
which patch set the edit is based on. In patch set selectors, the edit
is sorted right after its basePatchNum.

Alternative implementation considerations:

It could be easier to handle edits on the Polygerrit UI, if

  GET /changes/<id>/detail endpoint

would optionally include the change edit in the resulting
change.revsions map.

TODOs:
* Overwrite change.current_revision with change edit commit in some
  use cases
* Mark the change edit as Change Edit in the header of the change view
* Allow for modification of the edit in the change/diff view
* Disable commenting on files in edit patchsets
* Modify file list rows to have appropriate actions when edit is
  selected (e.g. allow revert, disable marking as reviewed)
* Identify and whitelist valid change/revision actions for an edit 

Bug: Issue 4437
Change-Id: Ia4690d20954de730cd625ac76920e849beb12f7c
2017-08-08 13:44:50 -07:00
Kasper Nilsson
7c33466e9a Merge "Modify reply dialog to wait for comment save" 2017-08-02 22:37:06 +00:00
Viktar Donich
b574c495b9 Merge "Document need for async title-change" 2017-08-02 22:06:09 +00:00
Kasper Nilsson
6873549786 Modify reply dialog to wait for comment save
Previously, opening the reply dialog was disabled when draft comments
were pending save. Now, the reply dialog is fully enabled, and will
silently wait for pending comments to be saved before proceeding with
any save/send operations.

Moreover, when diff drafts are in the process of saving, a label is
displayed below the comments list. When they finish saving, the list is
updated with the diff comments.

Change-Id: I2777f9e15b052e606aa210b5372dc7a89a076345
2017-08-02 21:21:06 +00:00
Kasper Nilsson
43cfea89e0 Merge "Harden gr-formatted-text agains slow/failed project configs" 2017-08-02 20:38:32 +00:00
Wyatt Allen
f0eb4bbf53 Harden gr-formatted-text agains slow/failed project configs
Formerly, if a formatted text component tried to render without the
project config (used by inner linked text components) it would
temporarily fall-back to rendering the unformatted (and un-linkified)
text via `.textContent` -- mirroring the behavior of gr-linked-text.

The result is formatted text elements (when rendered without a project
config) appear as one long line of text. Unlike linkification, however,
text can be accurately formatted with or without the project config --
so this disruptive, poor UX is unnecessary.

The formatted text component is updated to format text when the project
config has not provided, and to re-render when the config has been
provided.

In order to propagate project config loads to the formatted text
components hosted by diff comments, the REST calls must be made by the
diff thread component. To make this call, the thread must have the
project's name, so gr-diff-builder is updated to provide this name to
thread components.

Bug: Issue 6686
Change-Id: I8d09c740930500e99cb5f87b92f4d72f3f50a9ce
2017-08-01 16:14:45 -07:00
Wyatt Allen
c61ba25b11 Coalesce request for drafts with login check
Because requests for a user's draft diff comments is always nested
within a check for whether a user is logged in, these can be combined
into the same REST API interface call. The updated call is given a JSDoc
to describe the additional functionality and call sites are simplified.

Change-Id: Idc0cc6298c7287579ba76e7cc35701e62142bca3
2017-08-01 14:18:39 -07:00
Wyatt Allen
dc8782d762 Centralized comment requests
Formerly, gr-diff would make its own REST calls for diff comments in the
patch range and path being viewed. However, these calls by the diff view
were redundant to the more general comment requests made by either
gr-diff-view (which requests all comments to support skipping to the
next file with comments) or gr-change-view (which requests comments
individually for each inline diff).

With this change, the diff component no longer loads comments for
itself, but is rather provided the comments from its host view via a
public property. In this way the host view can load the more-general
comment data, and filter it down for the diff view's params.

Introduces the gr-comment-api component to simplify loading and
filtering diff comments for use by diff views. By using this new
component:
* The diff view makes only one request for comments (including drafts
  and robot comments) to support skipping to the next comment and
  displaying comments in the diff view.
* The change view makes only one request for comments for all inline
  diffs.

Bug: Issue 5299
Change-Id: Ia14a01619f1f9881aa0d253fd3f49af9a17f3dce
2017-08-01 14:15:38 -07:00
Wyatt Allen
e9bd3e286d Document need for async title-change
Better documentation for the fix in Ia32e76023c.

Change-Id: Ia272196248fc2acdec7041137e1d452ff70d0f06
2017-07-31 16:30:32 -07:00
Wyatt Allen
6310b167fa Merge "Make dropdown arrow non selectable" 2017-07-28 17:35:36 +00:00
Jean-François Geyelin
b880740359 Make dropdown arrow non selectable
Change-Id: I7c2ec54822a91b10a5de64327f433049f01e8fb1
2017-07-28 17:31:29 +00:00
Kasper Nilsson
49e3d1f47f Merge changes I7b542ddb,Ie9bea7f9
* changes:
  Call Gerrit.Nav.upgradeUrl from valid views
  Add function upgradeUrl to gr-navigation
2017-07-28 17:00:05 +00:00
Wyatt Allen
68e1e21b69 Fire diff-view title-change event in an async
Formerly, the title-change event was fired too early, and failed to
set the actual title.

Change-Id: Ia32e76023c426cf6b8a3ad1456490885fb22bd67
2017-07-25 20:27:19 +00:00
Kasper Nilsson
9060cfd1a5 Replace patchNum compare with utility function
In preparation for implementation of in-app editing, the instances of
parseInt(patchNum) must be swapped out, as a patchNum may now be either
a number or a string.

This change adds the patchNumEquals function to gr-patch-set-behavior,
and uses it everywhere patchNum is compared.

Bug: Issue 4437
Change-Id: Ib1176508cd88d60c79e952b99dd5f57b994baa77
2017-07-25 09:51:04 -07:00
Kasper Nilsson
f89608d903 Call Gerrit.Nav.upgradeUrl from valid views
The migration to project-based URLs has made evident the need for some
alias in gr-navigation to `history.replaceState`. This change calls
the function `upgradeUrl` within gr-diff-view and gr-change-view iff the
project returned by getChangeDetail differs from the one set on
app.params.

Bug: Issue 6708
Change-Id: I7b542ddb989527b6a89ccdfd79846808835ed5a3
2017-07-24 15:12:13 -07:00
Kasper Nilsson
3c2e121c9d Add more fields to Gerrit.Nav.View and utilize in app
Previously, the app relied on string matching of the view tag names in
order to perform view-based actions (e.g. routing).

This change refactors those instances to utilise the Gerrit.Nav.View
enum.

Bug: Issue 6708
Change-Id: If0212fde93e0167e3207af19006beee1a602df60
2017-07-19 17:02:08 -07:00
Becky Siegel
05d1253d8d Get hash from router instead of location
Previously, there was an issue where nagivating between diffs would
use the hash from the previous diff because the url had not been
updated when _paramsChanged was calls. Instead of getting the hash
from window.location, let the router handle it and pass it in as a
param.

Bug: Issue 6702
Change-Id: I03cb59e0f55813b0973eaf949e9e0958946d094e
2017-07-19 10:22:10 -07:00
Kasper Nilsson
daba503058 Merge "Only truncate file path in page title" 2017-07-13 18:00:02 +00:00
Kasper Nilsson
f2749236b2 Only truncate file path in page title
Uses util.truncatePath to compute an appropriately short page title.

Bug: Issue 6709
Change-Id: Id742a122a20011ac82ade865d3ea579179c38c1d
2017-07-12 20:41:42 +00:00
Kasper Nilsson
68406c48b0 Merge "Fix typo" 2017-07-12 20:31:58 +00:00
Kasper Nilsson
143a4279e1 Fix typo
Change-Id: I8f2f3fa9b4f346f951ba99a805641162573a690a
2017-07-12 12:47:14 -07:00
Kasper Nilsson
de211a56a2 Remove alert-based error reporting
Migrates all alert calls to toasts. Also corrects one test that checked
for an alert on the window.

Bug: Issue 6701
Change-Id: I4d41790f63edc15873014df4f98013ac2bb2af7c
2017-07-12 11:04:48 -07:00
Wyatt Allen
de9cb0be99 Update usage of <iron-dropdown> for future-compatibility with Polymer 2
Change-Id: I1be81cdbdd385175601e639fcf71c4946bf01128
2017-07-10 21:25:26 +00:00
Wyatt Allen
7fe1ac89a9 Merge "Shorten long pathnames in page title" 2017-07-06 23:58:17 +00:00
Wyatt Allen
830c9354eb Merge "Allow user selection of file path in diff view" 2017-07-06 23:51:02 +00:00
Kasper Nilsson
67fc619449 Shorten long pathnames in page title
Split the path at the last slash to provide only the basename as the
page title in diff-view.

Bug: Issue 4955
Change-Id: I242d38f5823415a53f837ad7d1a5b97bd16c6fa6
2017-07-06 16:32:17 -07:00
Kasper Nilsson
6f79c9b700 Allow user selection of file path in diff view
Bug: Issue 4798
Change-Id: I7c8276d7339931ffbf0d9c34cbc8ccaa8af40f9b
2017-07-06 16:16:20 -07:00
Wyatt Allen
c310f4fbab Update URL generation in gr-diff-view
Bug: Issue 6446
Change-Id: I21be5ac4e3e89390745a6f04582cbfb9dc6535a3
2017-07-06 15:28:42 -07:00
Becky Siegel
8e174ab23a Update gr-select for Polymer 2
Polymer2 does not support type extension. As such, elements that rely on
it are  updated.

Instead of
<select is="gr-select"><select>

This will now be..
<gr-select>
  <select></select>
</gr-select>

This is similar to the implementation of iron-input, except that is more
complex, as it is supporting both type extention and non-type extension.
https://github.com/PolymerElements/iron-input/blob/master/iron-input.html

Bug: Issue 6371
Change-Id: I31091ff24791a9dc073b3325c7b0daa1580b69ef
2017-07-05 14:12:44 -07:00
Thomas Shafer
88c179781a Replace "attached" with observers
This allows for the functions which rely on the properties to be called when
the properties are set.

Change-Id: I306550a246c4c535ae5f165ce3fbe5282eea25f2
2017-06-27 12:24:00 -07:00
Viktar Donich
168bbc96a4 Add a setting to disable diff panel floating
window.PANEL_FLOATING_DISABLED=true prevents diff header detaching from
the page flow and sticking to the window top border.

Change-Id: Idafab7f73fb52a9165b7610ae609e0a8fe52bbd9
2017-06-19 14:50:09 -07:00
Kasper Nilsson
a19706d995 Limit height of diff view file dropdown
When the file list was very long, it could be hidden partially behind
horizontal scrollbars, and was generally difficult to use.

Limiting the dropdown content height to 70vh ensures the content stays
on screen.

Bug: Issue 6375
Change-Id: I3d8b22e6d829816821ef8f1d1343141721d07654
2017-06-19 10:30:17 -07:00
Mike Samuel
e07c4b2ea1 Add polygerrit-ui/app/test/common-test-setup.html
This is a partial roll-forward of c/106190

This replaces all loads of iron-test-helpers with a load of a file
that wraps it, and adds that file to test files that do not currently
load iron-test-helpers.

A future CL will also install polymer-resin via common-test-helpers.html.

I tested by running

$ WCT_ARGS="-l chrome" ./polygerrit-ui/app/run_test.sh

Change-Id: Ifb3cd2c8db13d724f57e56e7e78045470d103a43
2017-06-05 22:10:12 +00:00
Becky Siegel
b159a7f5cc Update styles for shadow dom
- Create a shared style module that is included in every custom element
- Add the shared style module to each existing element

Change-Id: I1ee382955afe4ff630548a6640e7c4d03688849d
2017-06-02 14:54:03 -07:00
Wyatt Allen
c601abccc3 Revert "Polygerrit now loads polymer-resin"
This reverts commit 0895052c01ac5ac657a9763d2ad9967d9ae55c18.

Reason for revert: issue 6387

Change-Id: I14e00addeab53606952aa3ea2d45a74eac7a9d8a
2017-06-02 09:37:37 -07:00