Change screen: Show abbreviated commit sha1 in patch set dropdown

Add the sha hash of each patchset in dropdown menu as it was in the old
UI.

Bug: Issue 8513
Change-Id: I9e2f63ff083717ddc096b95e9a0927f5d0446385
This commit is contained in:
Dhruv Srivastava
2019-10-07 14:47:50 +02:00
committed by David Ostrovsky
parent 2067997ce5
commit bb40298008
4 changed files with 61 additions and 47 deletions

View File

@@ -136,6 +136,7 @@ limitations under the License.
* * num {number} The number identifying the patch set * * num {number} The number identifying the patch set
* * desc {!string} Optional patch set description * * desc {!string} Optional patch set description
* * wip {boolean} If true, this patch set was never subject to review. * * wip {boolean} If true, this patch set was never subject to review.
* * sha {string} hash of the commit
* *
* The wip property is determined by the change's current work_in_progress * The wip property is determined by the change's current work_in_progress
* property and its log of change messages. * property and its log of change messages.
@@ -148,14 +149,18 @@ limitations under the License.
if (!change) { return []; } if (!change) { return []; }
let patchNums = []; let patchNums = [];
if (change.revisions && Object.keys(change.revisions).length) { if (change.revisions && Object.keys(change.revisions).length) {
const revisions = Object.keys(change.revisions).map(sha => {
return Object.assign({sha}, change.revisions[sha]);
});
patchNums = patchNums =
Gerrit.PatchSetBehavior.sortRevisions(Object.values(change.revisions)) Gerrit.PatchSetBehavior.sortRevisions(revisions)
.map(e => { .map(e => {
// TODO(kaspern): Mark which patchset an edit was made on, if an // TODO(kaspern): Mark which patchset an edit was made on, if an
// edit exists -- perhaps with a temporary description. // edit exists -- perhaps with a temporary description.
return { return {
num: e._number, num: e._number,
desc: e.description, desc: e.description,
sha: e.sha,
}; };
}); });
} }

View File

@@ -899,17 +899,17 @@ limitations under the License.
test('patch set from revisions', () => { test('patch set from revisions', () => {
const expected = [ const expected = [
{num: 4, desc: 'test'}, {num: 4, desc: 'test', sha: 'rev4'},
{num: 3, desc: 'test'}, {num: 3, desc: 'test', sha: 'rev3'},
{num: 2, desc: 'test'}, {num: 2, desc: 'test', sha: 'rev2'},
{num: 1, desc: 'test'}, {num: 1, desc: 'test', sha: 'rev1'},
]; ];
const patchNums = element.computeAllPatchSets({ const patchNums = element.computeAllPatchSets({
revisions: { revisions: {
rev3: {_number: 3, description: 'test'}, rev3: {_number: 3, description: 'test', date: 3},
rev1: {_number: 1, description: 'test'}, rev1: {_number: 1, description: 'test', date: 1},
rev4: {_number: 4, description: 'test'}, rev4: {_number: 4, description: 'test', date: 4},
rev2: {_number: 2, description: 'test'}, rev2: {_number: 2, description: 'test', date: 2},
}, },
}); });
assert.equal(patchNums.length, expected.length); assert.equal(patchNums.length, expected.length);

View File

@@ -61,6 +61,10 @@
behaviors: [Gerrit.PatchSetBehavior], behaviors: [Gerrit.PatchSetBehavior],
_getShaForPatch(patch) {
return patch.sha.substring(0, 10);
},
_computeBaseDropdownContent(availablePatches, patchNum, _sortedRevisions, _computeBaseDropdownContent(availablePatches, patchNum, _sortedRevisions,
changeComments, revisionInfo) { changeComments, revisionInfo) {
const parentCounts = revisionInfo.getParentCountMap(); const parentCounts = revisionInfo.getParentCountMap();
@@ -73,7 +77,7 @@
for (const basePatch of availablePatches) { for (const basePatch of availablePatches) {
const basePatchNum = basePatch.num; const basePatchNum = basePatch.num;
const entry = this._createDropdownEntry(basePatchNum, 'Patchset ', const entry = this._createDropdownEntry(basePatchNum, 'Patchset ',
_sortedRevisions, changeComments); _sortedRevisions, changeComments, this._getShaForPatch(basePatch));
dropdownContent.push(Object.assign({}, entry, { dropdownContent.push(Object.assign({}, entry, {
disabled: this._computeLeftDisabled( disabled: this._computeLeftDisabled(
basePatch.num, patchNum, _sortedRevisions), basePatch.num, patchNum, _sortedRevisions),
@@ -111,7 +115,7 @@
const patchNum = patch.num; const patchNum = patch.num;
const entry = this._createDropdownEntry( const entry = this._createDropdownEntry(
patchNum, patchNum === 'edit' ? '' : 'Patchset ', _sortedRevisions, patchNum, patchNum === 'edit' ? '' : 'Patchset ', _sortedRevisions,
changeComments); changeComments, this._getShaForPatch(patch));
dropdownContent.push(Object.assign({}, entry, { dropdownContent.push(Object.assign({}, entry, {
disabled: this._computeRightDisabled(basePatchNum, patchNum, disabled: this._computeRightDisabled(basePatchNum, patchNum,
_sortedRevisions), _sortedRevisions),
@@ -120,12 +124,17 @@
return dropdownContent; return dropdownContent;
}, },
_createDropdownEntry(patchNum, prefix, sortedRevisions, changeComments) { _computeText(patchNum, prefix, changeComments, sha) {
return `${prefix}${patchNum}` +
`${this._computePatchSetCommentsString(changeComments, patchNum)}`
+ (` | ${sha}`);
},
_createDropdownEntry(patchNum, prefix, sortedRevisions, changeComments,
sha) {
const entry = { const entry = {
triggerText: `${prefix}${patchNum}`, triggerText: `${prefix}${patchNum}`,
text: `${prefix}${patchNum}` + text: this._computeText(patchNum, prefix, changeComments, sha),
`${this._computePatchSetCommentsString(
changeComments, patchNum)}`,
mobileText: this._computeMobileText(patchNum, changeComments, mobileText: this._computeMobileText(patchNum, changeComments,
sortedRevisions), sortedRevisions),
bottomText: `${this._computePatchSetDescription( bottomText: `${this._computePatchSetDescription(

View File

@@ -118,10 +118,10 @@ limitations under the License.
test('_computeBaseDropdownContent', () => { test('_computeBaseDropdownContent', () => {
const availablePatches = [ const availablePatches = [
{num: 'edit'}, {num: 'edit', sha: '1'},
{num: 3}, {num: 3, sha: '2'},
{num: 2}, {num: 2, sha: '3'},
{num: 1}, {num: 1, sha: '4'},
]; ];
const revisions = [ const revisions = [
{ {
@@ -145,7 +145,7 @@ limitations under the License.
{ {
disabled: true, disabled: true,
triggerText: 'Patchset edit', triggerText: 'Patchset edit',
text: 'Patchset edit', text: 'Patchset edit | 1',
mobileText: 'edit', mobileText: 'edit',
bottomText: '', bottomText: '',
value: 'edit', value: 'edit',
@@ -153,7 +153,7 @@ limitations under the License.
{ {
disabled: true, disabled: true,
triggerText: 'Patchset 3', triggerText: 'Patchset 3',
text: 'Patchset 3', text: 'Patchset 3 | 2',
mobileText: '3', mobileText: '3',
bottomText: '', bottomText: '',
value: 3, value: 3,
@@ -162,7 +162,7 @@ limitations under the License.
{ {
disabled: true, disabled: true,
triggerText: 'Patchset 2', triggerText: 'Patchset 2',
text: 'Patchset 2', text: 'Patchset 2 | 3',
mobileText: '2 description', mobileText: '2 description',
bottomText: 'description', bottomText: 'description',
value: 2, value: 2,
@@ -170,7 +170,7 @@ limitations under the License.
{ {
disabled: true, disabled: true,
triggerText: 'Patchset 1', triggerText: 'Patchset 1',
text: 'Patchset 1', text: 'Patchset 1 | 4',
mobileText: '1', mobileText: '1',
bottomText: '', bottomText: '',
value: 1, value: 1,
@@ -195,10 +195,10 @@ limitations under the License.
]; ];
element.revisionInfo = getInfo(element.revisions); element.revisionInfo = getInfo(element.revisions);
element.availablePatches = [ element.availablePatches = [
{num: 1}, {num: 1, sha: '1'},
{num: 2}, {num: 2, sha: '2'},
{num: 3}, {num: 3, sha: '3'},
{num: 'edit'}, {num: 'edit', sha: '4'},
]; ];
element.patchNum = 2; element.patchNum = 2;
element.basePatchNum = 'PARENT'; element.basePatchNum = 'PARENT';
@@ -221,10 +221,10 @@ limitations under the License.
]; ];
element.revisionInfo = getInfo(element.revisions); element.revisionInfo = getInfo(element.revisions);
element.availablePatches = [ element.availablePatches = [
{num: 'edit'}, {num: 'edit', sha: '1'},
{num: 3}, {num: 3, sha: '2'},
{num: 2}, {num: 2, sha: '3'},
{num: 1}, {num: 1, sha: '4'},
]; ];
element.patchNum = 2; element.patchNum = 2;
element.basePatchNum = 'PARENT'; element.basePatchNum = 'PARENT';
@@ -248,10 +248,10 @@ limitations under the License.
]; ];
element.revisionInfo = getInfo(element.revisions); element.revisionInfo = getInfo(element.revisions);
element.availablePatches = [ element.availablePatches = [
{num: 1}, {num: 1, sha: '1'},
{num: 2}, {num: 2, sha: '2'},
{num: 3}, {num: 3, sha: '3'},
{num: 'edit'}, {num: 'edit', sha: '4'},
]; ];
element.patchNum = 2; element.patchNum = 2;
element.basePatchNum = 'PARENT'; element.basePatchNum = 'PARENT';
@@ -272,10 +272,10 @@ limitations under the License.
]; ];
element.revisionInfo = getInfo(element.revisions); element.revisionInfo = getInfo(element.revisions);
element.availablePatches = [ element.availablePatches = [
{num: 1}, {num: 1, sha: '1'},
{num: 2}, {num: 2, sha: '2'},
{num: 3}, {num: 3, sha: '3'},
{num: 'edit'}, {num: 'edit', sha: '4'},
]; ];
element.patchNum = 2; element.patchNum = 2;
element.basePatchNum = 'PARENT'; element.basePatchNum = 'PARENT';
@@ -291,10 +291,10 @@ limitations under the License.
test('_computePatchDropdownContent', () => { test('_computePatchDropdownContent', () => {
const availablePatches = [ const availablePatches = [
{num: 'edit'}, {num: 'edit', sha: '1'},
{num: 3}, {num: 3, sha: '2'},
{num: 2}, {num: 2, sha: '3'},
{num: 1}, {num: 1, sha: '4'},
]; ];
const basePatchNum = 1; const basePatchNum = 1;
const sortedRevisions = [ const sortedRevisions = [
@@ -308,7 +308,7 @@ limitations under the License.
{ {
disabled: false, disabled: false,
triggerText: 'edit', triggerText: 'edit',
text: 'edit', text: 'edit | 1',
mobileText: 'edit', mobileText: 'edit',
bottomText: '', bottomText: '',
value: 'edit', value: 'edit',
@@ -316,7 +316,7 @@ limitations under the License.
{ {
disabled: false, disabled: false,
triggerText: 'Patchset 3', triggerText: 'Patchset 3',
text: 'Patchset 3', text: 'Patchset 3 | 2',
mobileText: '3', mobileText: '3',
bottomText: '', bottomText: '',
value: 3, value: 3,
@@ -325,7 +325,7 @@ limitations under the License.
{ {
disabled: false, disabled: false,
triggerText: 'Patchset 2', triggerText: 'Patchset 2',
text: 'Patchset 2', text: 'Patchset 2 | 3',
mobileText: '2 description', mobileText: '2 description',
bottomText: 'description', bottomText: 'description',
value: 2, value: 2,
@@ -333,7 +333,7 @@ limitations under the License.
{ {
disabled: true, disabled: true,
triggerText: 'Patchset 1', triggerText: 'Patchset 1',
text: 'Patchset 1', text: 'Patchset 1 | 4',
mobileText: '1', mobileText: '1',
bottomText: '', bottomText: '',
value: 1, value: 1,